aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Documentation/ABI/testing/sysfs-devices-cache_disable18
-rw-r--r--Documentation/ABI/testing/sysfs-devices-system-cpu156
-rw-r--r--Documentation/cputopology.txt47
-rw-r--r--Documentation/fb/framebuffer.txt6
-rw-r--r--Documentation/filesystems/caching/fscache.txt110
-rw-r--r--Documentation/filesystems/caching/netfs-api.txt21
-rw-r--r--Documentation/filesystems/ext4.txt8
-rw-r--r--Documentation/filesystems/ocfs2.txt6
-rw-r--r--Documentation/hwmon/sysfs-interface57
-rw-r--r--Documentation/i2c/busses/i2c-piix42
-rw-r--r--Documentation/slow-work.txt160
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt2
-rw-r--r--Documentation/thermal/sysfs-api.txt389
-rw-r--r--Documentation/trace/ftrace.txt2
-rw-r--r--Documentation/vm/hwpoison.txt136
-rw-r--r--Documentation/vm/page-types.c2
-rw-r--r--MAINTAINERS267
-rw-r--r--Makefile4
-rw-r--r--arch/alpha/boot/tools/objstrip.c2
-rw-r--r--arch/alpha/include/asm/fcntl.h2
-rw-r--r--arch/alpha/include/asm/thread_info.h31
-rw-r--r--arch/alpha/kernel/core_marvel.c2
-rw-r--r--arch/alpha/kernel/core_titan.c2
-rw-r--r--arch/alpha/kernel/irq.c2
-rw-r--r--arch/alpha/kernel/irq_alpha.c2
-rw-r--r--arch/alpha/kernel/irq_i8259.c2
-rw-r--r--arch/alpha/kernel/irq_pyxis.c2
-rw-r--r--arch/alpha/kernel/irq_srm.c2
-rw-r--r--arch/alpha/kernel/sys_alcor.c2
-rw-r--r--arch/alpha/kernel/sys_cabriolet.c2
-rw-r--r--arch/alpha/kernel/sys_dp264.c4
-rw-r--r--arch/alpha/kernel/sys_eb64p.c2
-rw-r--r--arch/alpha/kernel/sys_eiger.c2
-rw-r--r--arch/alpha/kernel/sys_jensen.c2
-rw-r--r--arch/alpha/kernel/sys_marvel.c6
-rw-r--r--arch/alpha/kernel/sys_mikasa.c2
-rw-r--r--arch/alpha/kernel/sys_noritake.c2
-rw-r--r--arch/alpha/kernel/sys_rawhide.c2
-rw-r--r--arch/alpha/kernel/sys_ruffian.c2
-rw-r--r--arch/alpha/kernel/sys_rx164.c2
-rw-r--r--arch/alpha/kernel/sys_sable.c2
-rw-r--r--arch/alpha/kernel/sys_takara.c2
-rw-r--r--arch/alpha/kernel/sys_titan.c2
-rw-r--r--arch/alpha/kernel/sys_wildfire.c2
-rw-r--r--arch/arm/configs/ams_delta_defconfig24
-rw-r--r--arch/arm/configs/kirkwood_defconfig260
-rw-r--r--arch/arm/configs/n8x0_defconfig2
-rw-r--r--arch/arm/configs/omap3_pandora_defconfig49
-rw-r--r--arch/arm/configs/omap_3430sdp_defconfig9
-rw-r--r--arch/arm/configs/orion5x_defconfig278
-rw-r--r--arch/arm/configs/u300_defconfig94
-rw-r--r--arch/arm/include/asm/cacheflush.h5
-rw-r--r--arch/arm/include/asm/elf.h3
-rw-r--r--arch/arm/include/asm/kmap_types.h6
-rw-r--r--arch/arm/include/asm/tlbflush.h3
-rw-r--r--arch/arm/include/asm/unistd.h9
-rw-r--r--arch/arm/kernel/entry-armv.S35
-rw-r--r--arch/arm/kernel/entry-header.S15
-rw-r--r--arch/arm/kernel/head-common.S2
-rw-r--r--arch/arm/kernel/process.c9
-rw-r--r--arch/arm/kernel/signal.c45
-rw-r--r--arch/arm/kernel/signal.h4
-rw-r--r--arch/arm/kernel/smp_scu.c4
-rw-r--r--arch/arm/kernel/traps.c8
-rw-r--r--arch/arm/kernel/unwind.c9
-rw-r--r--arch/arm/mach-at91/Kconfig20
-rw-r--r--arch/arm/mach-at91/at91sam9g45_devices.c2
-rw-r--r--arch/arm/mach-at91/board-sam9g20ek-2slot-mmc.c23
-rw-r--r--arch/arm/mach-at91/include/mach/cpu.h9
-rw-r--r--arch/arm/mach-ep93xx/core.c1
-rw-r--r--arch/arm/mach-ep93xx/edb93xx.c2
-rw-r--r--arch/arm/mach-ep93xx/include/mach/platform.h1
-rw-r--r--arch/arm/mach-ep93xx/micro9.c1
-rw-r--r--arch/arm/mach-integrator/include/mach/memory.h1
-rw-r--r--arch/arm/mach-kirkwood/addr-map.c2
-rw-r--r--arch/arm/mach-kirkwood/common.c10
-rw-r--r--arch/arm/mach-kirkwood/include/mach/bridge-regs.h3
-rw-r--r--arch/arm/mach-kirkwood/include/mach/io.h2
-rw-r--r--arch/arm/mach-kirkwood/include/mach/kirkwood.h1
-rw-r--r--arch/arm/mach-kirkwood/openrd_base-setup.c12
-rw-r--r--arch/arm/mach-kirkwood/pcie.c6
-rw-r--r--arch/arm/mach-ks8695/include/mach/regs-switch.h2
-rw-r--r--arch/arm/mach-mmp/include/mach/mfp-pxa910.h2
-rw-r--r--arch/arm/mach-mv78xx0/common.c2
-rw-r--r--arch/arm/mach-mv78xx0/include/mach/mv78xx0.h1
-rw-r--r--arch/arm/mach-mx2/clock_imx27.c8
-rw-r--r--arch/arm/mach-mx2/pcm038.c96
-rw-r--r--arch/arm/mach-mx2/pcm970-baseboard.c2
-rw-r--r--arch/arm/mach-mx25/devices.c19
-rw-r--r--arch/arm/mach-mx25/mx25pdk.c25
-rw-r--r--arch/arm/mach-mx3/clock-imx35.c2
-rw-r--r--arch/arm/mach-mx3/clock.c2
-rw-r--r--arch/arm/mach-mx3/devices.c24
-rw-r--r--arch/arm/mach-mx3/devices.h6
-rw-r--r--arch/arm/mach-mx3/mm.c2
-rw-r--r--arch/arm/mach-omap1/board-ams-delta.c6
-rw-r--r--arch/arm/mach-omap1/board-generic.c8
-rw-r--r--arch/arm/mach-omap1/board-innovator.c20
-rw-r--r--arch/arm/mach-omap1/board-palmte.c8
-rw-r--r--arch/arm/mach-omap1/board-palmtt.c8
-rw-r--r--arch/arm/mach-omap1/board-palmz71.c8
-rw-r--r--arch/arm/mach-omap1/board-sx1.c8
-rw-r--r--arch/arm/mach-omap1/board-voiceblue.c8
-rw-r--r--arch/arm/mach-omap1/serial.c26
-rw-r--r--arch/arm/mach-omap2/Kconfig12
-rw-r--r--arch/arm/mach-omap2/board-3430sdp.c2
-rw-r--r--arch/arm/mach-omap2/board-4430sdp.c4
-rw-r--r--arch/arm/mach-omap2/board-ldp.c2
-rw-r--r--arch/arm/mach-omap2/board-omap3beagle.c2
-rw-r--r--arch/arm/mach-omap2/board-omap3evm.c2
-rw-r--r--arch/arm/mach-omap2/board-omap3pandora.c80
-rw-r--r--arch/arm/mach-omap2/board-rx51-peripherals.c2
-rw-r--r--arch/arm/mach-omap2/board-rx51.c1
-rw-r--r--arch/arm/mach-omap2/board-zoom2.c89
-rw-r--r--arch/arm/mach-omap2/clock34xx.c2
-rw-r--r--arch/arm/mach-omap2/clock34xx.h4
-rw-r--r--arch/arm/mach-omap2/gpmc.c4
-rw-r--r--arch/arm/mach-omap2/io.c2
-rw-r--r--arch/arm/mach-omap2/mailbox.c2
-rw-r--r--arch/arm/mach-omap2/pm34xx.c7
-rw-r--r--arch/arm/mach-omap2/serial.c10
-rw-r--r--arch/arm/mach-pxa/cm-x300.c38
-rw-r--r--arch/arm/mach-pxa/colibri-pxa320.c4
-rw-r--r--arch/arm/mach-pxa/cpufreq-pxa2xx.c1
-rw-r--r--arch/arm/mach-pxa/cpufreq-pxa3xx.c2
-rw-r--r--arch/arm/mach-pxa/hx4700.c2
-rw-r--r--arch/arm/mach-pxa/include/mach/entry-macro.S1
-rw-r--r--arch/arm/mach-pxa/irq.c11
-rw-r--r--arch/arm/mach-pxa/palmtc.c8
-rw-r--r--arch/arm/mach-pxa/spitz.c80
-rw-r--r--arch/arm/mach-realview/Kconfig5
-rw-r--r--arch/arm/mach-realview/core.c42
-rw-r--r--arch/arm/mach-realview/core.h6
-rw-r--r--arch/arm/mach-realview/include/mach/board-pb1176.h5
-rw-r--r--arch/arm/mach-realview/include/mach/board-pb11mp.h12
-rw-r--r--arch/arm/mach-realview/include/mach/memory.h49
-rw-r--r--arch/arm/mach-realview/include/mach/platform.h15
-rw-r--r--arch/arm/mach-realview/include/mach/system.h10
-rw-r--r--arch/arm/mach-realview/platsmp.c5
-rw-r--r--arch/arm/mach-realview/realview_eb.c1
-rw-r--r--arch/arm/mach-realview/realview_pb1176.c24
-rw-r--r--arch/arm/mach-realview/realview_pb11mp.c17
-rw-r--r--arch/arm/mach-realview/realview_pba8.c1
-rw-r--r--arch/arm/mach-realview/realview_pbx.c21
-rw-r--r--arch/arm/mach-s3c2410/gpio.c1
-rw-r--r--arch/arm/mach-s3c2410/include/mach/dma.h7
-rw-r--r--arch/arm/mach-s3c2440/Kconfig1
-rw-r--r--arch/arm/mach-s3c2440/mach-mini2440.c4
-rw-r--r--arch/arm/mach-s3c6400/include/mach/dma.h7
-rw-r--r--arch/arm/mach-s3c6410/Kconfig1
-rw-r--r--arch/arm/mach-s3c6410/mach-smdk6410.c3
-rw-r--r--arch/arm/mach-u300/core.c2
-rw-r--r--arch/arm/mm/Kconfig5
-rw-r--r--arch/arm/mm/context.c5
-rw-r--r--arch/arm/mm/dma-mapping.c4
-rw-r--r--arch/arm/mm/flush.c31
-rw-r--r--arch/arm/mm/init.c20
-rw-r--r--arch/arm/mm/mmu.c7
-rw-r--r--arch/arm/mm/proc-v6.S7
-rw-r--r--arch/arm/mm/proc-v7.S14
-rw-r--r--arch/arm/oprofile/op_model_v6.c3
-rw-r--r--arch/arm/plat-omap/cpu-omap.c2
-rw-r--r--arch/arm/plat-omap/dma.c32
-rw-r--r--arch/arm/plat-omap/gpio.c2
-rw-r--r--arch/arm/plat-omap/include/mach/keypad.h5
-rw-r--r--arch/arm/plat-omap/iommu.c2
-rw-r--r--arch/arm/plat-pxa/include/plat/mfp.h2
-rw-r--r--arch/arm/plat-pxa/mfp.c4
-rw-r--r--arch/arm/plat-s3c24xx/adc.c2
-rw-r--r--arch/arm/plat-s3c24xx/cpu.c10
-rw-r--r--arch/arm/plat-s3c24xx/dma.c6
-rw-r--r--arch/arm/plat-s3c24xx/gpio.c1
-rw-r--r--arch/arm/plat-s3c24xx/include/plat/cpu-freq-core.h9
-rw-r--r--arch/arm/plat-s3c24xx/include/plat/s3c2410.h1
-rw-r--r--arch/arm/plat-s3c64xx/dma.c76
-rw-r--r--arch/arm/plat-s3c64xx/include/plat/regs-clock.h4
-rw-r--r--arch/arm/plat-s3c64xx/s3c6400-clock.c3
-rw-r--r--arch/arm/tools/mach-types119
-rw-r--r--arch/avr32/mach-at32ap/include/mach/cpu.h3
-rw-r--r--arch/blackfin/kernel/bfin_dma_5xx.c9
-rw-r--r--arch/blackfin/kernel/cplb-mpu/cplbinit.c2
-rw-r--r--arch/blackfin/kernel/process.c2
-rw-r--r--arch/blackfin/kernel/ptrace.c2
-rw-r--r--arch/blackfin/mach-bf518/include/mach/anomaly.h18
-rw-r--r--arch/blackfin/mach-bf527/include/mach/anomaly.h20
-rw-r--r--arch/blackfin/mach-bf533/include/mach/anomaly.h18
-rw-r--r--arch/blackfin/mach-bf537/include/mach/anomaly.h18
-rw-r--r--arch/blackfin/mach-bf538/include/mach/anomaly.h18
-rw-r--r--arch/blackfin/mach-bf548/include/mach/anomaly.h23
-rw-r--r--arch/blackfin/mach-bf561/atomic.S14
-rw-r--r--arch/blackfin/mach-bf561/include/mach/anomaly.h25
-rw-r--r--arch/blackfin/mach-common/arch_checks.c5
-rw-r--r--arch/blackfin/mach-common/smp.c6
-rw-r--r--arch/frv/kernel/signal.c2
-rw-r--r--arch/ia64/include/asm/spinlock.h62
-rw-r--r--arch/ia64/include/asm/spinlock_types.h2
-rw-r--r--arch/ia64/kernel/mca.c104
-rw-r--r--arch/ia64/kernel/unaligned.c6
-rw-r--r--arch/ia64/mm/tlb.c24
-rw-r--r--arch/ia64/pci/pci.c9
-rw-r--r--arch/ia64/sn/kernel/io_common.c8
-rw-r--r--arch/ia64/sn/kernel/sn2/sn_hwperf.c7
-rw-r--r--arch/m32r/Kconfig3
-rw-r--r--arch/m32r/boot/compressed/Makefile18
-rw-r--r--arch/m32r/boot/compressed/misc.c143
-rw-r--r--arch/m32r/kernel/smp.c2
-rw-r--r--arch/m32r/kernel/time.c6
-rw-r--r--arch/m32r/kernel/vmlinux.lds.S2
-rw-r--r--arch/m68k/Kconfig6
-rw-r--r--arch/mips/Kconfig26
-rw-r--r--arch/mips/alchemy/common/irq.c34
-rw-r--r--arch/mips/alchemy/mtx-1/board_setup.c3
-rw-r--r--arch/mips/ar7/platform.c9
-rw-r--r--arch/mips/bcm47xx/prom.c2
-rw-r--r--arch/mips/bcm63xx/Makefile2
-rw-r--r--arch/mips/bcm63xx/boards/board_bcm963xx.c3
-rw-r--r--arch/mips/bcm63xx/cpu.c3
-rw-r--r--arch/mips/bcm63xx/dev-uart.c2
-rw-r--r--arch/mips/bcm63xx/dev-wdt.c37
-rw-r--r--arch/mips/bcm63xx/setup.c4
-rw-r--r--arch/mips/cavium-octeon/octeon-irq.c224
-rw-r--r--arch/mips/cavium-octeon/smp.c5
-rw-r--r--arch/mips/configs/rbtx49xx_defconfig252
-rw-r--r--arch/mips/include/asm/dma-mapping.h11
-rw-r--r--arch/mips/include/asm/fixmap.h4
-rw-r--r--arch/mips/include/asm/gcmpregs.h18
-rw-r--r--arch/mips/include/asm/gic.h188
-rw-r--r--arch/mips/include/asm/mach-ar7/ar7.h3
-rw-r--r--arch/mips/include/asm/mach-au1x00/gpio-au1000.h2
-rw-r--r--arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h6
-rw-r--r--arch/mips/include/asm/mach-ip27/topology.h4
-rw-r--r--arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h3
-rw-r--r--arch/mips/include/asm/mman.h1
-rw-r--r--arch/mips/include/asm/mmu_context.h13
-rw-r--r--arch/mips/include/asm/setup.h2
-rw-r--r--arch/mips/include/asm/smtc_ipi.h1
-rw-r--r--arch/mips/include/asm/spram.h10
-rw-r--r--arch/mips/include/asm/system.h15
-rw-r--r--arch/mips/include/asm/thread_info.h9
-rw-r--r--arch/mips/jazz/irq.c2
-rw-r--r--arch/mips/kernel/cevt-bcm1480.c2
-rw-r--r--arch/mips/kernel/cevt-ds1287.c2
-rw-r--r--arch/mips/kernel/cevt-gt641xx.c2
-rw-r--r--arch/mips/kernel/cevt-r4k.c2
-rw-r--r--arch/mips/kernel/cevt-sb1250.c2
-rw-r--r--arch/mips/kernel/cevt-smtc.c3
-rw-r--r--arch/mips/kernel/cevt-txx9.c2
-rw-r--r--arch/mips/kernel/cpu-probe.c8
-rw-r--r--arch/mips/kernel/head.S1
-rw-r--r--arch/mips/kernel/i8253.c2
-rw-r--r--arch/mips/kernel/irq-gic.c114
-rw-r--r--arch/mips/kernel/linux32.c6
-rw-r--r--arch/mips/kernel/scall64-o32.S4
-rw-r--r--arch/mips/kernel/smtc.c34
-rw-r--r--arch/mips/kernel/spram.c5
-rw-r--r--arch/mips/kernel/syscall.c4
-rw-r--r--arch/mips/kernel/vpe.c2
-rw-r--r--arch/mips/loongson/common/irq.c1
-rw-r--r--arch/mips/math-emu/cp1emu.c41
-rw-r--r--arch/mips/math-emu/dp_simple.c13
-rw-r--r--arch/mips/math-emu/sp_simple.c11
-rw-r--r--arch/mips/mm/dma-default.c7
-rw-r--r--arch/mips/mm/init.c6
-rw-r--r--arch/mips/mti-malta/malta-amon.c7
-rw-r--r--arch/mips/mti-malta/malta-int.c119
-rw-r--r--arch/mips/mti-malta/malta-memory.c3
-rw-r--r--arch/mips/mti-malta/malta-pci.c27
-rw-r--r--arch/mips/nxp/pnx8550/common/int.c2
-rw-r--r--arch/mips/nxp/pnx8550/common/time.c4
-rw-r--r--arch/mips/oprofile/op_model_loongson2.c2
-rw-r--r--arch/mips/rb532/devices.c3
-rw-r--r--arch/mips/rb532/prom.c2
-rw-r--r--arch/mips/sgi-ip27/ip27-timer.c2
-rw-r--r--arch/mips/sni/time.c2
-rw-r--r--arch/mips/txx9/generic/setup.c9
-rw-r--r--arch/parisc/include/asm/fcntl.h2
-rw-r--r--arch/parisc/kernel/unwind.c2
-rw-r--r--arch/parisc/kernel/vmlinux.lds.S6
-rw-r--r--arch/powerpc/Kconfig4
-rw-r--r--arch/powerpc/boot/addRamDisk.c6
-rw-r--r--arch/powerpc/boot/dts/cm5200.dts1
-rw-r--r--arch/powerpc/boot/dts/digsy_mtc.dts1
-rw-r--r--arch/powerpc/boot/dts/lite5200.dts2
-rw-r--r--arch/powerpc/boot/dts/lite5200b.dts2
-rw-r--r--arch/powerpc/boot/dts/media5200.dts2
-rw-r--r--arch/powerpc/boot/dts/motionpro.dts1
-rw-r--r--arch/powerpc/boot/dts/mpc5121ads.dts3
-rw-r--r--arch/powerpc/boot/dts/mpc8377_wlan.dts2
-rw-r--r--arch/powerpc/boot/dts/mpc8569mds.dts4
-rw-r--r--arch/powerpc/boot/dts/mucmc52.dts332
-rw-r--r--arch/powerpc/boot/dts/pcm030.dts2
-rw-r--r--arch/powerpc/boot/dts/pcm032.dts2
-rw-r--r--arch/powerpc/boot/dts/sbc8548.dts17
-rw-r--r--arch/powerpc/boot/dts/tqm5200.dts1
-rw-r--r--arch/powerpc/boot/dts/uc101.dts284
-rw-r--r--arch/powerpc/configs/52xx/cm5200_defconfig136
-rw-r--r--arch/powerpc/configs/52xx/lite5200b_defconfig153
-rw-r--r--arch/powerpc/configs/52xx/motionpro_defconfig146
-rw-r--r--arch/powerpc/configs/52xx/pcm030_defconfig142
-rw-r--r--arch/powerpc/configs/52xx/tqm5200_defconfig148
-rw-r--r--arch/powerpc/configs/83xx/asp8347_defconfig60
-rw-r--r--arch/powerpc/configs/83xx/kmeter1_defconfig46
-rw-r--r--arch/powerpc/configs/83xx/mpc8313_rdb_defconfig73
-rw-r--r--arch/powerpc/configs/83xx/mpc8315_rdb_defconfig76
-rw-r--r--arch/powerpc/configs/83xx/mpc832x_mds_defconfig62
-rw-r--r--arch/powerpc/configs/83xx/mpc832x_rdb_defconfig66
-rw-r--r--arch/powerpc/configs/83xx/mpc834x_itx_defconfig60
-rw-r--r--arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig58
-rw-r--r--arch/powerpc/configs/83xx/mpc834x_mds_defconfig58
-rw-r--r--arch/powerpc/configs/83xx/mpc836x_mds_defconfig64
-rw-r--r--arch/powerpc/configs/83xx/mpc836x_rdk_defconfig60
-rw-r--r--arch/powerpc/configs/83xx/mpc837x_mds_defconfig64
-rw-r--r--arch/powerpc/configs/83xx/mpc837x_rdb_defconfig70
-rw-r--r--arch/powerpc/configs/83xx/sbc834x_defconfig61
-rw-r--r--arch/powerpc/configs/85xx/ksi8560_defconfig61
-rw-r--r--arch/powerpc/configs/85xx/mpc8540_ads_defconfig57
-rw-r--r--arch/powerpc/configs/85xx/mpc8560_ads_defconfig63
-rw-r--r--arch/powerpc/configs/85xx/mpc85xx_cds_defconfig58
-rw-r--r--arch/powerpc/configs/85xx/sbc8548_defconfig53
-rw-r--r--arch/powerpc/configs/85xx/sbc8560_defconfig57
-rw-r--r--arch/powerpc/configs/85xx/socrates_defconfig68
-rw-r--r--arch/powerpc/configs/85xx/stx_gp3_defconfig77
-rw-r--r--arch/powerpc/configs/85xx/tqm8540_defconfig59
-rw-r--r--arch/powerpc/configs/85xx/tqm8541_defconfig64
-rw-r--r--arch/powerpc/configs/85xx/tqm8548_defconfig64
-rw-r--r--arch/powerpc/configs/85xx/tqm8555_defconfig64
-rw-r--r--arch/powerpc/configs/85xx/tqm8560_defconfig64
-rw-r--r--arch/powerpc/configs/85xx/xes_mpc85xx_defconfig76
-rw-r--r--arch/powerpc/configs/86xx/gef_ppc9a_defconfig74
-rw-r--r--arch/powerpc/configs/86xx/gef_sbc310_defconfig72
-rw-r--r--arch/powerpc/configs/86xx/gef_sbc610_defconfig80
-rw-r--r--arch/powerpc/configs/86xx/mpc8610_hpcd_defconfig64
-rw-r--r--arch/powerpc/configs/86xx/mpc8641_hpcn_defconfig65
-rw-r--r--arch/powerpc/configs/86xx/sbc8641d_defconfig66
-rw-r--r--arch/powerpc/configs/adder875_defconfig48
-rw-r--r--arch/powerpc/configs/c2k_defconfig77
-rw-r--r--arch/powerpc/configs/ep8248e_defconfig49
-rw-r--r--arch/powerpc/configs/ep88xc_defconfig47
-rw-r--r--arch/powerpc/configs/linkstation_defconfig72
-rw-r--r--arch/powerpc/configs/mgcoge_defconfig51
-rw-r--r--arch/powerpc/configs/mgsuvd_defconfig45
-rw-r--r--arch/powerpc/configs/mpc5200_defconfig192
-rw-r--r--arch/powerpc/configs/mpc7448_hpc2_defconfig58
-rw-r--r--arch/powerpc/configs/mpc8272_ads_defconfig52
-rw-r--r--arch/powerpc/configs/mpc83xx_defconfig90
-rw-r--r--arch/powerpc/configs/mpc85xx_defconfig98
-rw-r--r--arch/powerpc/configs/mpc85xx_smp_defconfig99
-rw-r--r--arch/powerpc/configs/mpc866_ads_defconfig54
-rw-r--r--arch/powerpc/configs/mpc86xx_defconfig70
-rw-r--r--arch/powerpc/configs/mpc885_ads_defconfig47
-rw-r--r--arch/powerpc/configs/pasemi_defconfig628
-rw-r--r--arch/powerpc/configs/ppc64e_defconfig2199
-rw-r--r--arch/powerpc/configs/pq2fads_defconfig55
-rw-r--r--arch/powerpc/configs/prpmc2800_defconfig67
-rw-r--r--arch/powerpc/configs/storcenter_defconfig54
-rw-r--r--arch/powerpc/include/asm/kmap_types.h11
-rw-r--r--arch/powerpc/kernel/entry_64.S41
-rw-r--r--arch/powerpc/kernel/pci_64.c2
-rw-r--r--arch/powerpc/kernel/perf_event.c17
-rw-r--r--arch/powerpc/kernel/process.c2
-rw-r--r--arch/powerpc/kernel/setup_64.c1
-rw-r--r--arch/powerpc/kernel/time.c15
-rw-r--r--arch/powerpc/kernel/vdso.c11
-rw-r--r--arch/powerpc/kernel/vdso32/vdso32.lds.S4
-rw-r--r--arch/powerpc/kvm/timing.h4
-rw-r--r--arch/powerpc/mm/mmu_context_nohash.c4
-rw-r--r--arch/powerpc/platforms/52xx/mpc5200_simple.c2
-rw-r--r--arch/powerpc/platforms/82xx/ep8248e.c15
-rw-r--r--arch/powerpc/platforms/iseries/Makefile11
-rw-r--r--arch/powerpc/platforms/iseries/dt.c56
-rw-r--r--arch/powerpc/platforms/pseries/msi.c2
-rw-r--r--arch/powerpc/platforms/pseries/xics.c9
-rw-r--r--arch/powerpc/xmon/xmon.c20
-rw-r--r--arch/s390/include/asm/cputime.h6
-rw-r--r--arch/s390/kernel/early.c9
-rw-r--r--arch/s390/kernel/entry.S8
-rw-r--r--arch/s390/kernel/entry64.S8
-rw-r--r--arch/s390/kernel/ipl.c7
-rw-r--r--arch/s390/kernel/smp.c7
-rw-r--r--arch/s390/kernel/swsusp_asm64.S2
-rw-r--r--arch/sh/Kconfig5
-rw-r--r--arch/sh/Makefile3
-rw-r--r--arch/sh/boards/mach-rsk/devices-rsk7203.c4
-rw-r--r--arch/sh/boards/mach-rsk/setup.c23
-rw-r--r--arch/sh/boot/Makefile6
-rw-r--r--arch/sh/include/asm/rwsem.h2
-rw-r--r--arch/sh/kernel/cpu/irq/imask.c2
-rw-r--r--arch/sh/kernel/cpu/irq/intc-sh5.c2
-rw-r--r--arch/sh/kernel/dwarf.c24
-rw-r--r--arch/sh/kernel/irq.c3
-rw-r--r--arch/sh/kernel/sh_ksyms_32.c14
-rw-r--r--arch/sh/mm/Kconfig2
-rw-r--r--arch/sh/mm/cache-sh4.c5
-rw-r--r--arch/sparc/boot/btfixupprep.c8
-rw-r--r--arch/sparc/boot/piggyback_32.c10
-rw-r--r--arch/sparc/boot/piggyback_64.c2
-rw-r--r--arch/sparc/include/asm/system_64.h4
-rw-r--r--arch/sparc/kernel/prom_common.c4
-rw-r--r--arch/sparc/kernel/visemul.c2
-rw-r--r--arch/sparc/mm/init_64.h2
-rw-r--r--arch/x86/Kconfig4
-rw-r--r--arch/x86/Kconfig.cpu2
-rw-r--r--arch/x86/Makefile1
-rw-r--r--arch/x86/boot/setup.ld3
-rw-r--r--arch/x86/ia32/ia32entry.S5
-rw-r--r--arch/x86/include/asm/amd_iommu.h1
-rw-r--r--arch/x86/include/asm/desc.h2
-rw-r--r--arch/x86/include/asm/dma-mapping.h10
-rw-r--r--arch/x86/include/asm/processor.h2
-rw-r--r--arch/x86/include/asm/topology.h1
-rw-r--r--arch/x86/include/asm/uv/uv_hub.h23
-rw-r--r--arch/x86/kernel/acpi/processor.c3
-rw-r--r--arch/x86/kernel/acpi/realmode/wakeup.lds.S3
-rw-r--r--arch/x86/kernel/amd_iommu.c2
-rw-r--r--arch/x86/kernel/amd_iommu_init.c24
-rw-r--r--arch/x86/kernel/apic/x2apic_uv_x.c8
-rw-r--r--arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c23
-rw-r--r--arch/x86/kernel/cpu/cpufreq/longhaul.c2
-rw-r--r--arch/x86/kernel/cpu/cpufreq/powernow-k8.c2
-rw-r--r--arch/x86/kernel/cpu/cpufreq/speedstep-ich.c19
-rw-r--r--arch/x86/kernel/cpu/mcheck/mce.c3
-rw-r--r--arch/x86/kernel/cpu/mtrr/cleanup.c2
-rw-r--r--arch/x86/kernel/crash_dump_32.c19
-rw-r--r--arch/x86/kernel/efi.c2
-rw-r--r--arch/x86/kernel/microcode_amd.c6
-rw-r--r--arch/x86/kernel/pci-dma.c6
-rw-r--r--arch/x86/kernel/process_64.c5
-rw-r--r--arch/x86/kernel/reboot.c8
-rw-r--r--arch/x86/kernel/setup.c7
-rw-r--r--arch/x86/kernel/tlb_uv.c9
-rw-r--r--arch/x86/kernel/vmlinux.lds.S3
-rw-r--r--arch/x86/kvm/x86.c4
-rw-r--r--arch/x86/mm/ioremap.c24
-rw-r--r--arch/x86/xen/enlighten.c14
-rw-r--r--block/blk-core.c2
-rw-r--r--block/cfq-iosched.c19
-rw-r--r--crypto/async_tx/Kconfig5
-rw-r--r--crypto/async_tx/async_pq.c74
-rw-r--r--crypto/async_tx/async_raid6_recov.c100
-rw-r--r--crypto/async_tx/async_xor.c33
-rw-r--r--crypto/gcm.c107
-rw-r--r--drivers/acpi/acpica/acconfig.h4
-rw-r--r--drivers/acpi/acpica/acpredef.h5
-rw-r--r--drivers/acpi/acpica/exregion.c35
-rw-r--r--drivers/acpi/blacklist.c17
-rw-r--r--drivers/acpi/power_meter.c6
-rw-r--r--drivers/acpi/proc.c2
-rw-r--r--drivers/acpi/processor_core.c2
-rw-r--r--drivers/acpi/processor_throttling.c6
-rw-r--r--drivers/acpi/sleep.c32
-rw-r--r--drivers/acpi/video.c8
-rw-r--r--drivers/ata/ahci.c40
-rw-r--r--drivers/ata/libata-core.c9
-rw-r--r--drivers/ata/sata_fsl.c84
-rw-r--r--drivers/ata/sata_via.c1
-rw-r--r--drivers/base/bus.c17
-rw-r--r--drivers/base/driver.c2
-rw-r--r--drivers/base/platform.c6
-rw-r--r--drivers/base/power/main.c1
-rw-r--r--drivers/base/power/runtime.c16
-rw-r--r--drivers/block/aoe/aoecmd.c23
-rw-r--r--drivers/block/cciss.c16
-rw-r--r--drivers/block/loop.c2
-rw-r--r--drivers/bluetooth/btusb.c5
-rw-r--r--drivers/char/Kconfig6
-rw-r--r--drivers/char/agp/intel-agp.c19
-rw-r--r--drivers/char/hvc_xen.c25
-rw-r--r--drivers/char/keyboard.c2
-rw-r--r--drivers/char/tty_port.c10
-rw-r--r--drivers/char/vt_ioctl.c6
-rw-r--r--drivers/cpufreq/cpufreq.c48
-rw-r--r--drivers/cpufreq/cpufreq_conservative.c4
-rw-r--r--drivers/cpufreq/cpufreq_ondemand.c4
-rw-r--r--drivers/cpuidle/cpuidle.c5
-rw-r--r--drivers/crypto/padlock-aes.c4
-rw-r--r--drivers/dma/Kconfig2
-rw-r--r--drivers/dma/dmaengine.c10
-rw-r--r--drivers/dma/ioat/dca.c6
-rw-r--r--drivers/dma/ioat/dma.h4
-rw-r--r--drivers/dma/ioat/dma_v2.c2
-rw-r--r--drivers/dma/ioat/dma_v3.c44
-rw-r--r--drivers/dma/ioat/hw.h2
-rw-r--r--drivers/dma/ioat/registers.h4
-rw-r--r--drivers/dma/shdma.c12
-rw-r--r--drivers/edac/amd64_edac.c6
-rw-r--r--drivers/edac/i5000_edac.c7
-rw-r--r--drivers/edac/i5400_edac.c89
-rw-r--r--drivers/edac/mpc85xx_edac.c2
-rw-r--r--drivers/firewire/ohci.c41
-rw-r--r--drivers/gpio/gpiolib.c8
-rw-r--r--drivers/gpio/langwell_gpio.c11
-rw-r--r--drivers/gpio/twl4030-gpio.c5
-rw-r--r--drivers/gpu/drm/Kconfig1
-rw-r--r--drivers/gpu/drm/drm_crtc_helper.c1
-rw-r--r--drivers/gpu/drm/drm_edid.c21
-rw-r--r--drivers/gpu/drm/drm_fb_helper.c50
-rw-r--r--drivers/gpu/drm/drm_gem.c2
-rw-r--r--drivers/gpu/drm/drm_mm.c9
-rw-r--r--drivers/gpu/drm/i915/i915_debugfs.c4
-rw-r--r--drivers/gpu/drm/i915/i915_dma.c3
-rw-r--r--drivers/gpu/drm/i915/i915_drv.c5
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h53
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c10
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h30
-rw-r--r--drivers/gpu/drm/i915/i915_suspend.c341
-rw-r--r--drivers/gpu/drm/i915/intel_bios.c14
-rw-r--r--drivers/gpu/drm/i915/intel_crt.c4
-rw-r--r--drivers/gpu/drm/i915/intel_display.c193
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c2
-rw-r--r--drivers/gpu/drm/i915/intel_hdmi.c26
-rw-r--r--drivers/gpu/drm/i915/intel_lvds.c35
-rw-r--r--drivers/gpu/drm/radeon/Makefile2
-rw-r--r--drivers/gpu/drm/radeon/atom.c1
-rw-r--r--drivers/gpu/drm/radeon/atombios.h2
-rw-r--r--drivers/gpu/drm/radeon/atombios_crtc.c357
-rw-r--r--drivers/gpu/drm/radeon/mkregtable.c12
-rw-r--r--drivers/gpu/drm/radeon/r100.c42
-rw-r--r--drivers/gpu/drm/radeon/r300.c2
-rw-r--r--drivers/gpu/drm/radeon/r420.c2
-rw-r--r--drivers/gpu/drm/radeon/r500_reg.h9
-rw-r--r--drivers/gpu/drm/radeon/r520.c2
-rw-r--r--drivers/gpu/drm/radeon/r600.c108
-rw-r--r--drivers/gpu/drm/radeon/r600_blit.c58
-rw-r--r--drivers/gpu/drm/radeon/r600_blit_kms.c5
-rw-r--r--drivers/gpu/drm/radeon/r600_cs.c18
-rw-r--r--drivers/gpu/drm/radeon/r600d.h14
-rw-r--r--drivers/gpu/drm/radeon/radeon.h12
-rw-r--r--drivers/gpu/drm/radeon/radeon_agp.c12
-rw-r--r--drivers/gpu/drm/radeon/radeon_asic.h23
-rw-r--r--drivers/gpu/drm/radeon/radeon_atombios.c282
-rw-r--r--drivers/gpu/drm/radeon/radeon_benchmark.c4
-rw-r--r--drivers/gpu/drm/radeon/radeon_bios.c3
-rw-r--r--drivers/gpu/drm/radeon/radeon_clocks.c2
-rw-r--r--drivers/gpu/drm/radeon/radeon_combios.c287
-rw-r--r--drivers/gpu/drm/radeon/radeon_connectors.c211
-rw-r--r--drivers/gpu/drm/radeon/radeon_cursor.c10
-rw-r--r--drivers/gpu/drm/radeon/radeon_device.c38
-rw-r--r--drivers/gpu/drm/radeon/radeon_display.c28
-rw-r--r--drivers/gpu/drm/radeon/radeon_encoders.c125
-rw-r--r--drivers/gpu/drm/radeon/radeon_gart.c20
-rw-r--r--drivers/gpu/drm/radeon/radeon_irq_kms.c9
-rw-r--r--drivers/gpu/drm/radeon/radeon_legacy_crtc.c40
-rw-r--r--drivers/gpu/drm/radeon/radeon_legacy_encoders.c27
-rw-r--r--drivers/gpu/drm/radeon/radeon_mode.h34
-rw-r--r--drivers/gpu/drm/radeon/radeon_pm.c65
-rw-r--r--drivers/gpu/drm/radeon/radeon_reg.h6
-rw-r--r--drivers/gpu/drm/radeon/radeon_test.c6
-rw-r--r--drivers/gpu/drm/radeon/radeon_ttm.c6
-rw-r--r--drivers/gpu/drm/radeon/rs400.c2
-rw-r--r--drivers/gpu/drm/radeon/rs600.c20
-rw-r--r--drivers/gpu/drm/radeon/rs690.c2
-rw-r--r--drivers/gpu/drm/radeon/rv515.c9
-rw-r--r--drivers/gpu/drm/radeon/rv770.c59
-rw-r--r--drivers/gpu/drm/radeon/rv770d.h5
-rw-r--r--drivers/gpu/drm/ttm/ttm_tt.c1
-rw-r--r--drivers/hwmon/adt7475.c17
-rw-r--r--drivers/hwmon/dme1737.c29
-rw-r--r--drivers/hwmon/fschmd.c2
-rw-r--r--drivers/hwmon/hp_accel.c5
-rw-r--r--drivers/hwmon/it87.c5
-rw-r--r--drivers/hwmon/s3c-hwmon.c11
-rw-r--r--drivers/i2c/busses/Kconfig2
-rw-r--r--drivers/i2c/busses/i2c-imx.c86
-rw-r--r--drivers/i2c/busses/i2c-mpc.c10
-rw-r--r--drivers/i2c/busses/i2c-piix4.c8
-rw-r--r--drivers/i2c/busses/i2c-pnx.c9
-rw-r--r--drivers/i2c/chips/tsl2550.c3
-rw-r--r--drivers/i2c/i2c-core.c11
-rw-r--r--drivers/ieee802154/fakehard.c5
-rw-r--r--drivers/input/ff-core.c20
-rw-r--r--drivers/input/ff-memless.c26
-rw-r--r--drivers/input/input.c29
-rw-r--r--drivers/input/keyboard/atkbd.c49
-rw-r--r--drivers/input/keyboard/gpio_keys.c1
-rw-r--r--drivers/input/misc/Kconfig1
-rw-r--r--drivers/input/mouse/lifebook.c3
-rw-r--r--drivers/input/mouse/psmouse-base.c4
-rw-r--r--drivers/input/serio/i8042-x86ia64io.h21
-rw-r--r--drivers/input/serio/i8042.c35
-rw-r--r--drivers/isdn/hardware/eicon/maintidi.c5
-rw-r--r--drivers/isdn/hardware/eicon/message.c18
-rw-r--r--drivers/isdn/hardware/mISDN/hfcmulti.c2
-rw-r--r--drivers/isdn/hisax/amd7930_fn.c1
-rw-r--r--drivers/isdn/hisax/diva.c2
-rw-r--r--drivers/isdn/hisax/elsa_ser.c22
-rw-r--r--drivers/isdn/hisax/hfc_usb.c4
-rw-r--r--drivers/isdn/hisax/hscx_irq.c2
-rw-r--r--drivers/isdn/hisax/icc.c1
-rw-r--r--drivers/isdn/i4l/isdn_net.h6
-rw-r--r--drivers/isdn/i4l/isdn_ppp.c352
-rw-r--r--drivers/isdn/mISDN/stack.c2
-rw-r--r--drivers/leds/leds-gpio.c2
-rw-r--r--drivers/md/Makefile22
-rw-r--r--drivers/md/bitmap.c9
-rw-r--r--drivers/md/md.c48
-rw-r--r--drivers/md/raid1.c13
-rw-r--r--drivers/md/raid10.c5
-rw-r--r--drivers/md/raid5.c269
-rw-r--r--drivers/md/raid5.h14
-rw-r--r--drivers/md/raid6altivec.uc2
-rw-r--r--drivers/md/raid6int.uc2
-rw-r--r--drivers/md/raid6test/Makefile42
-rw-r--r--drivers/md/unroll.awk20
-rw-r--r--drivers/md/unroll.pl24
-rw-r--r--drivers/media/common/ir-functions.c2
-rw-r--r--drivers/media/common/tuners/tda18271-fe.c8
-rw-r--r--drivers/media/dvb/dvb-core/dvb_frontend.c1
-rw-r--r--drivers/media/dvb/dvb-usb/Kconfig2
-rw-r--r--drivers/media/dvb/dvb-usb/ce6230.c2
-rw-r--r--drivers/media/dvb/dvb-usb/cxusb.c10
-rw-r--r--drivers/media/dvb/dvb-usb/dib0700_devices.c15
-rw-r--r--drivers/media/dvb/firewire/firedtv-avc.c38
-rw-r--r--drivers/media/dvb/firewire/firedtv-fe.c8
-rw-r--r--drivers/media/dvb/frontends/dib0070.h7
-rw-r--r--drivers/media/dvb/frontends/dib7000p.c5
-rw-r--r--drivers/media/dvb/pt1/pt1.c1
-rw-r--r--drivers/media/dvb/siano/Kconfig2
-rw-r--r--drivers/media/dvb/siano/smsusb.c6
-rw-r--r--drivers/media/radio/radio-gemtek-pci.c2
-rw-r--r--drivers/media/video/bt8xx/bttv-driver.c33
-rw-r--r--drivers/media/video/davinci/vpif_display.c1
-rw-r--r--drivers/media/video/em28xx/em28xx-audio.c5
-rw-r--r--drivers/media/video/em28xx/em28xx-cards.c2
-rw-r--r--drivers/media/video/gspca/m5602/m5602_s5k4aa.c20
-rw-r--r--drivers/media/video/gspca/mr97310a.c2
-rw-r--r--drivers/media/video/gspca/ov519.c2
-rw-r--r--drivers/media/video/gspca/stv06xx/stv06xx.c3
-rw-r--r--drivers/media/video/mx1_camera.c1
-rw-r--r--drivers/media/video/mx3_camera.c1
-rw-r--r--drivers/media/video/pxa_camera.c5
-rw-r--r--drivers/media/video/s2255drv.c5
-rw-r--r--drivers/media/video/saa7134/saa7134-cards.c1
-rw-r--r--drivers/media/video/saa7134/saa7134-ts.c6
-rw-r--r--drivers/media/video/saa7134/saa7134.h1
-rw-r--r--drivers/media/video/saa7164/saa7164-cmd.c2
-rw-r--r--drivers/media/video/sh_mobile_ceu_camera.c11
-rw-r--r--drivers/media/video/soc_camera.c33
-rw-r--r--drivers/media/video/uvc/uvc_ctrl.c2
-rw-r--r--drivers/media/video/uvc/uvc_video.c3
-rw-r--r--drivers/media/video/videobuf-dma-contig.c1
-rw-r--r--drivers/mfd/twl4030-core.c2
-rw-r--r--drivers/mfd/wm831x-core.c2
-rw-r--r--drivers/mfd/wm831x-irq.c3
-rw-r--r--drivers/misc/eeprom/at24.c76
-rw-r--r--drivers/misc/sgi-gru/gruprocfs.c13
-rw-r--r--drivers/mmc/host/omap.c1
-rw-r--r--drivers/mmc/host/omap_hsmmc.c2
-rw-r--r--drivers/mmc/host/pxamci.c4
-rw-r--r--drivers/mtd/maps/Kconfig1
-rw-r--r--drivers/mtd/maps/Makefile2
-rw-r--r--drivers/mtd/maps/gpio-addr-flash.c5
-rw-r--r--drivers/mtd/maps/sa1100-flash.c4
-rw-r--r--drivers/mtd/nand/nand_base.c6
-rw-r--r--drivers/mtd/ubi/build.c3
-rw-r--r--drivers/mtd/ubi/scan.c7
-rw-r--r--drivers/mtd/ubi/scan.h2
-rw-r--r--drivers/net/Kconfig2
-rw-r--r--drivers/net/arm/ep93xx_eth.c12
-rw-r--r--drivers/net/au1000_eth.c16
-rw-r--r--drivers/net/b44.c3
-rw-r--r--drivers/net/benet/be.h2
-rw-r--r--drivers/net/benet/be_cmds.h2
-rw-r--r--drivers/net/benet/be_ethtool.c8
-rw-r--r--drivers/net/benet/be_main.c28
-rw-r--r--drivers/net/bnx2.h9
-rw-r--r--drivers/net/bonding/bond_main.c10
-rw-r--r--drivers/net/can/Kconfig60
-rw-r--r--drivers/net/can/dev.c23
-rw-r--r--drivers/net/can/sja1000/Kconfig47
-rw-r--r--drivers/net/can/usb/Kconfig10
-rw-r--r--drivers/net/can/usb/Makefile2
-rw-r--r--drivers/net/can/usb/ems_usb.c5
-rw-r--r--drivers/net/cassini.c5
-rw-r--r--drivers/net/cnic.c6
-rw-r--r--drivers/net/cxgb3/sge.c4
-rw-r--r--drivers/net/davinci_emac.c31
-rw-r--r--drivers/net/dm9000.h2
-rw-r--r--drivers/net/e100.c43
-rw-r--r--drivers/net/e1000e/defines.h2
-rw-r--r--drivers/net/e1000e/e1000.h28
-rw-r--r--drivers/net/e1000e/ethtool.c12
-rw-r--r--drivers/net/e1000e/hw.h3
-rw-r--r--drivers/net/e1000e/ich8lan.c630
-rw-r--r--drivers/net/e1000e/netdev.c50
-rw-r--r--drivers/net/e1000e/phy.c540
-rw-r--r--drivers/net/forcedeth.c5
-rw-r--r--drivers/net/fsl_pq_mdio.c1
-rw-r--r--drivers/net/ibm_newemac/emac.h4
-rw-r--r--drivers/net/ifb.c3
-rw-r--r--drivers/net/igb/igb_ethtool.c35
-rw-r--r--drivers/net/igbvf/ethtool.c30
-rw-r--r--drivers/net/ixgbe/ixgbe_ethtool.c22
-rw-r--r--drivers/net/ixgbe/ixgbe_main.c85
-rw-r--r--drivers/net/ks8851_mll.c142
-rw-r--r--drivers/net/macsonic.c117
-rw-r--r--drivers/net/macvlan.c2
-rw-r--r--drivers/net/mlx4/main.c1
-rw-r--r--drivers/net/myri10ge/myri10ge.c17
-rw-r--r--drivers/net/netxen/netxen_nic.h2
-rw-r--r--drivers/net/netxen/netxen_nic_hdr.h3
-rw-r--r--drivers/net/netxen/netxen_nic_hw.c69
-rw-r--r--drivers/net/netxen/netxen_nic_init.c10
-rw-r--r--drivers/net/netxen/netxen_nic_main.c5
-rw-r--r--drivers/net/pcmcia/pcnet_cs.c2
-rw-r--r--drivers/net/phy/mdio-gpio.c2
-rw-r--r--drivers/net/ppp_generic.c11
-rw-r--r--drivers/net/pppoe.c129
-rw-r--r--drivers/net/qlge/qlge.h1
-rw-r--r--drivers/net/qlge/qlge_main.c80
-rw-r--r--drivers/net/qlge/qlge_mpi.c25
-rw-r--r--drivers/net/r6040.c2
-rw-r--r--drivers/net/r8169.c26
-rw-r--r--drivers/net/s2io.c1
-rw-r--r--drivers/net/sfc/rx.c9
-rw-r--r--drivers/net/sfc/sfe4001.c4
-rw-r--r--drivers/net/sh_eth.c1
-rw-r--r--drivers/net/sky2.c2
-rw-r--r--drivers/net/smc91x.c2
-rw-r--r--drivers/net/smsc911x.c2
-rw-r--r--drivers/net/smsc9420.c14
-rw-r--r--drivers/net/stmmac/stmmac_main.c50
-rw-r--r--drivers/net/stmmac/stmmac_timer.c4
-rw-r--r--drivers/net/stmmac/stmmac_timer.h1
-rw-r--r--drivers/net/sungem.c10
-rw-r--r--drivers/net/tokenring/ibmtr.c11
-rw-r--r--drivers/net/usb/Kconfig2
-rw-r--r--drivers/net/usb/cdc_ether.c42
-rw-r--r--drivers/net/usb/dm9601.c4
-rw-r--r--drivers/net/usb/hso.c8
-rw-r--r--drivers/net/usb/rndis_host.c6
-rw-r--r--drivers/net/veth.c35
-rw-r--r--drivers/net/virtio_net.c20
-rw-r--r--drivers/net/wan/cosa.c1
-rw-r--r--drivers/net/wireless/airo.c5
-rw-r--r--drivers/net/wireless/ath/ath5k/base.c1
-rw-r--r--drivers/net/wireless/ath/ath5k/led.c4
-rw-r--r--drivers/net/wireless/ath/ath9k/main.c2
-rw-r--r--drivers/net/wireless/ath/ath9k/rc.c2
-rw-r--r--drivers/net/wireless/b43/dma.c15
-rw-r--r--drivers/net/wireless/b43/leds.h1
-rw-r--r--drivers/net/wireless/b43/main.c4
-rw-r--r--drivers/net/wireless/b43/rfkill.c3
-rw-r--r--drivers/net/wireless/ipw2x00/ipw2100.c6
-rw-r--r--drivers/net/wireless/ipw2x00/ipw2200.c141
-rw-r--r--drivers/net/wireless/ipw2x00/libipw.h8
-rw-r--r--drivers/net/wireless/ipw2x00/libipw_module.c42
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-1000.c1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-6000.c5
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-rs.c9
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c10
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.h2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-tx.c10
-rw-r--r--drivers/net/wireless/libertas/ethtool.c17
-rw-r--r--drivers/net/wireless/libertas/if_spi.c10
-rw-r--r--drivers/net/wireless/libertas/if_usb.c2
-rw-r--r--drivers/net/wireless/p54/p54usb.c10
-rw-r--r--drivers/net/wireless/ray_cs.c2
-rw-r--r--drivers/net/wireless/rt2x00/rt2800usb.c2
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c4
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00link.c11
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00usb.c9
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c5
-rw-r--r--drivers/net/wireless/rtl818x/rtl8187_leds.c4
-rw-r--r--drivers/net/wireless/rtl818x/rtl8187_rfkill.c1
-rw-r--r--drivers/of/of_mdio.c13
-rw-r--r--drivers/pci/dmar.c52
-rw-r--r--drivers/pci/intel-iommu.c39
-rw-r--r--drivers/pci/pcie/aspm.c6
-rw-r--r--drivers/pci/setup-bus.c13
-rw-r--r--drivers/pcmcia/cistpl.c20
-rw-r--r--drivers/pcmcia/cs.c69
-rw-r--r--drivers/pcmcia/cs_internal.h3
-rw-r--r--drivers/pcmcia/ds.c8
-rw-r--r--drivers/pcmcia/i82365.c4
-rw-r--r--drivers/pcmcia/m32r_cfc.c10
-rw-r--r--drivers/pcmcia/m32r_pcc.c10
-rw-r--r--drivers/pcmcia/m8xx_pcmcia.c15
-rw-r--r--drivers/pcmcia/pcmcia_ioctl.c2
-rw-r--r--drivers/pcmcia/pd6729.c6
-rw-r--r--drivers/pcmcia/rsrc_nonstatic.c3
-rw-r--r--drivers/pcmcia/soc_common.c5
-rw-r--r--drivers/pcmcia/socket_sysfs.c2
-rw-r--r--drivers/pcmcia/tcic.c4
-rw-r--r--drivers/pcmcia/yenta_socket.c12
-rw-r--r--drivers/platform/x86/acerhdf.c12
-rw-r--r--drivers/platform/x86/eeepc-laptop.c30
-rw-r--r--drivers/platform/x86/thinkpad_acpi.c26
-rw-r--r--drivers/pps/kapi.c20
-rw-r--r--drivers/pps/pps.c11
-rw-r--r--drivers/regulator/core.c3
-rw-r--r--drivers/regulator/fixed.c5
-rw-r--r--drivers/regulator/wm831x-isink.c2
-rw-r--r--drivers/regulator/wm831x-ldo.c6
-rw-r--r--drivers/rtc/rtc-coh901331.c11
-rw-r--r--drivers/rtc/rtc-pcf50633.c10
-rw-r--r--drivers/rtc/rtc-v3020.c2
-rw-r--r--drivers/rtc/rtc-vr41xx.c9
-rw-r--r--drivers/rtc/rtc-x1205.c6
-rw-r--r--drivers/s390/char/monreader.c1
-rw-r--r--drivers/s390/char/sclp_async.c47
-rw-r--r--drivers/s390/char/sclp_quiesce.c48
-rw-r--r--drivers/s390/net/smsgiucv.c7
-rw-r--r--drivers/s390/scsi/zfcp_aux.c11
-rw-r--r--drivers/s390/scsi/zfcp_erp.c22
-rw-r--r--drivers/s390/scsi/zfcp_ext.h1
-rw-r--r--drivers/s390/scsi/zfcp_fc.c11
-rw-r--r--drivers/s390/scsi/zfcp_fsf.c13
-rw-r--r--drivers/s390/scsi/zfcp_sysfs.c1
-rw-r--r--drivers/scsi/bfa/bfad_fwimg.c2
-rw-r--r--drivers/scsi/bfa/bfad_im.c2
-rw-r--r--drivers/scsi/dpt_i2o.c4
-rw-r--r--drivers/scsi/gdth.c2
-rw-r--r--drivers/scsi/hosts.c2
-rw-r--r--drivers/scsi/ipr.c42
-rw-r--r--drivers/scsi/ipr.h1
-rw-r--r--drivers/scsi/libsas/sas_expander.c1
-rw-r--r--drivers/scsi/pmcraid.c10
-rw-r--r--drivers/scsi/scsi_scan.c18
-rw-r--r--drivers/scsi/scsi_sysfs.c68
-rw-r--r--drivers/scsi/scsi_transport_fc.c3
-rw-r--r--drivers/scsi/sd_dif.c2
-rw-r--r--drivers/serial/8250.c2
-rw-r--r--drivers/serial/8250_pci.c86
-rw-r--r--drivers/serial/atmel_serial.c2
-rw-r--r--drivers/serial/bcm63xx_uart.c4
-rw-r--r--drivers/serial/mpc52xx_uart.c2
-rw-r--r--drivers/serial/of_serial.c1
-rw-r--r--drivers/serial/serial_cs.c8
-rw-r--r--drivers/serial/sh-sci.c2
-rw-r--r--drivers/serial/suncore.c37
-rw-r--r--drivers/serial/suncore.h5
-rw-r--r--drivers/serial/sunhv.c2
-rw-r--r--drivers/serial/sunsab.c9
-rw-r--r--drivers/serial/sunsu.c36
-rw-r--r--drivers/serial/sunzilog.c8
-rw-r--r--drivers/spi/spi_stmp.c2
-rw-r--r--drivers/spi/spi_txx9.c13
-rw-r--r--drivers/ssb/scan.c6
-rw-r--r--drivers/staging/Kconfig2
-rw-r--r--drivers/staging/Makefile1
-rw-r--r--drivers/staging/android/Kconfig1
-rw-r--r--drivers/staging/go7007/s2250-board.c4
-rw-r--r--drivers/staging/go7007/s2250-loader.h24
-rw-r--r--drivers/staging/hv/BlkVsc.c1
-rw-r--r--drivers/staging/hv/Channel.c16
-rw-r--r--drivers/staging/hv/ChannelMgmt.c2
-rw-r--r--drivers/staging/hv/ChannelMgmt.h3
-rw-r--r--drivers/staging/hv/NetVsc.c11
-rw-r--r--drivers/staging/hv/NetVsc.h1
-rw-r--r--drivers/staging/hv/StorVsc.c10
-rw-r--r--drivers/staging/hv/TODO6
-rw-r--r--drivers/staging/hv/blkvsc_drv.c1
-rw-r--r--drivers/staging/hv/netvsc_drv.c1
-rw-r--r--drivers/staging/hv/osd.h1
-rw-r--r--drivers/staging/hv/vmbus_drv.c28
-rw-r--r--drivers/staging/octeon/ethernet-mdio.c2
-rw-r--r--drivers/staging/octeon/ethernet-spi.c2
-rw-r--r--drivers/staging/octeon/ethernet.c53
-rw-r--r--drivers/staging/otus/Kconfig2
-rw-r--r--drivers/staging/panel/panel.c13
-rw-r--r--drivers/staging/rt2860/Kconfig2
-rw-r--r--drivers/staging/rt2870/Kconfig2
-rw-r--r--drivers/staging/rt3090/Kconfig2
-rw-r--r--drivers/staging/rtl8187se/Kconfig2
-rw-r--r--drivers/staging/rtl8187se/TODO3
-rw-r--r--drivers/staging/rtl8187se/ieee80211/ieee80211_crypt.c4
-rw-r--r--drivers/staging/rtl8187se/ieee80211/ieee80211_module.c4
-rw-r--r--drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c12
-rw-r--r--drivers/staging/rtl8187se/ieee80211/ieee80211_wx.c17
-rw-r--r--drivers/staging/rtl8192e/Kconfig2
-rw-r--r--drivers/staging/rtl8192e/ieee80211/ieee80211_crypt.c8
-rw-r--r--drivers/staging/rtl8192e/ieee80211/ieee80211_module.c8
-rw-r--r--drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c19
-rw-r--r--drivers/staging/rtl8192e/ieee80211/ieee80211_wx.c21
-rw-r--r--drivers/staging/rtl8192su/Kconfig2
-rw-r--r--drivers/staging/rtl8192su/TODO3
-rw-r--r--drivers/staging/rtl8192su/ieee80211/ieee80211_crypt.c4
-rw-r--r--drivers/staging/rtl8192su/ieee80211/ieee80211_module.c4
-rw-r--r--drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c15
-rw-r--r--drivers/staging/rtl8192su/ieee80211/ieee80211_wx.c17
-rw-r--r--drivers/staging/stlc45xx/Kconfig8
-rw-r--r--drivers/staging/stlc45xx/Makefile1
-rw-r--r--drivers/staging/stlc45xx/stlc45xx.c2594
-rw-r--r--drivers/staging/stlc45xx/stlc45xx.h283
-rw-r--r--drivers/staging/stlc45xx/stlc45xx_lmac.h434
-rw-r--r--drivers/staging/vt6655/TODO5
-rw-r--r--drivers/staging/vt6656/TODO5
-rw-r--r--drivers/staging/vt6656/main_usb.c1
-rw-r--r--drivers/staging/winbond/Kconfig2
-rw-r--r--drivers/staging/wlan-ng/Kconfig2
-rw-r--r--drivers/thermal/thermal_sys.c10
-rw-r--r--drivers/uio/uio_pdrv_genirq.c1
-rw-r--r--drivers/usb/class/cdc-acm.c18
-rw-r--r--drivers/usb/core/hub.c2
-rw-r--r--drivers/usb/gadget/Kconfig1
-rw-r--r--drivers/usb/gadget/amd5536udc.c49
-rw-r--r--drivers/usb/gadget/fsl_udc_core.c2
-rw-r--r--drivers/usb/host/ehci-hcd.c2
-rw-r--r--drivers/usb/host/ehci-pci.c4
-rw-r--r--drivers/usb/host/ehci-q.c16
-rw-r--r--drivers/usb/host/ehci-sched.c12
-rw-r--r--drivers/usb/host/ehci.h2
-rw-r--r--drivers/usb/host/ohci-hcd.c5
-rw-r--r--drivers/usb/host/ohci-pci.c20
-rw-r--r--drivers/usb/host/ohci-q.c18
-rw-r--r--drivers/usb/host/ohci.h9
-rw-r--r--drivers/usb/host/r8a66597-hcd.c23
-rw-r--r--drivers/usb/host/xhci-mem.c10
-rw-r--r--drivers/usb/host/xhci-ring.c7
-rw-r--r--drivers/usb/mon/mon_bin.c11
-rw-r--r--drivers/usb/musb/cppi_dma.c10
-rw-r--r--drivers/usb/musb/musb_core.c4
-rw-r--r--drivers/usb/musb/musb_gadget.c79
-rw-r--r--drivers/usb/musb/musb_gadget_ep0.c3
-rw-r--r--drivers/usb/musb/musb_host.c5
-rw-r--r--drivers/usb/serial/cp210x.c21
-rw-r--r--drivers/usb/serial/ftdi_sio.c3
-rw-r--r--drivers/usb/serial/option.c11
-rw-r--r--drivers/usb/serial/sierra.c38
-rw-r--r--drivers/video/Kconfig2
-rw-r--r--drivers/video/atafb.c6
-rw-r--r--drivers/video/atmel_lcdfb.c11
-rw-r--r--drivers/video/backlight/corgi_lcd.c5
-rw-r--r--drivers/video/backlight/lcd.c2
-rw-r--r--drivers/video/console/fbcon.c5
-rw-r--r--drivers/video/da8xx-fb.c13
-rw-r--r--drivers/video/gbefb.c2
-rw-r--r--drivers/video/msm/mddi.c1
-rw-r--r--drivers/video/msm/mddi_client_nt35399.c1
-rw-r--r--drivers/video/msm/mddi_client_toshiba.c1
-rw-r--r--drivers/video/msm/mdp.c18
-rw-r--r--drivers/video/msm/mdp_ppp.c20
-rw-r--r--drivers/video/savage/savagefb_driver.c20
-rw-r--r--drivers/video/uvesafb.c28
-rw-r--r--drivers/virtio/virtio_pci.c27
-rw-r--r--drivers/virtio/virtio_ring.c3
-rw-r--r--drivers/watchdog/pnx4008_wdt.c4
-rw-r--r--drivers/watchdog/rc32434_wdt.c4
-rw-r--r--drivers/watchdog/sbc_fitpc2_wdt.c2
-rw-r--r--firmware/Makefile6
-rw-r--r--firmware/WHENCE4
-rw-r--r--firmware/cis/PE-200.cis.ihex9
-rw-r--r--firmware/cis/SW_555_SER.cis.ihex12
-rw-r--r--firmware/cis/SW_7xx_SER.cis.ihex13
-rw-r--r--firmware/cis/SW_8xx_SER.cis.ihex13
-rw-r--r--fs/9p/cache.c14
-rw-r--r--fs/9p/vfs_dir.c93
-rw-r--r--fs/9p/vfs_inode.c5
-rw-r--r--fs/Kconfig4
-rw-r--r--fs/afs/file.c15
-rw-r--r--fs/bio.c28
-rw-r--r--fs/block_dev.c2
-rw-r--r--fs/btrfs/extent-tree.c113
-rw-r--r--fs/btrfs/extent_map.c2
-rw-r--r--fs/btrfs/free-space-cache.c2
-rw-r--r--fs/btrfs/inode.c95
-rw-r--r--fs/btrfs/root-tree.c2
-rw-r--r--fs/btrfs/transaction.c19
-rw-r--r--fs/cachefiles/interface.c32
-rw-r--r--fs/cachefiles/namei.c187
-rw-r--r--fs/cachefiles/rdwr.c130
-rw-r--r--fs/cifs/CHANGES9
-rw-r--r--fs/cifs/cifsfs.c2
-rw-r--r--fs/cifs/cifsproto.h1
-rw-r--r--fs/cifs/connect.c11
-rw-r--r--fs/cifs/dir.c8
-rw-r--r--fs/cifs/inode.c7
-rw-r--r--fs/cifs/misc.c14
-rw-r--r--fs/cifs/readdir.c7
-rw-r--r--fs/compat.c2
-rw-r--r--fs/compat_ioctl.c4
-rw-r--r--fs/exec.c8
-rw-r--r--fs/ext3/fsync.c36
-rw-r--r--fs/ext3/inode.c36
-rw-r--r--fs/ext3/super.c2
-rw-r--r--fs/ext4/ext4.h2
-rw-r--r--fs/ext4/extents.c36
-rw-r--r--fs/ext4/inode.c24
-rw-r--r--fs/ext4/namei.c16
-rw-r--r--fs/ext4/super.c20
-rw-r--r--fs/fcntl.c4
-rw-r--r--fs/fscache/Kconfig7
-rw-r--r--fs/fscache/Makefile1
-rw-r--r--fs/fscache/cache.c5
-rw-r--r--fs/fscache/cookie.c26
-rw-r--r--fs/fscache/internal.h56
-rw-r--r--fs/fscache/main.c6
-rw-r--r--fs/fscache/object-list.c432
-rw-r--r--fs/fscache/object.c104
-rw-r--r--fs/fscache/operation.c120
-rw-r--r--fs/fscache/page.c273
-rw-r--r--fs/fscache/proc.c13
-rw-r--r--fs/fscache/stats.c94
-rw-r--r--fs/fuse/dir.c7
-rw-r--r--fs/fuse/file.c5
-rw-r--r--fs/gfs2/main.c4
-rw-r--r--fs/gfs2/recovery.c2
-rw-r--r--fs/hfs/btree.c5
-rw-r--r--fs/hfsplus/wrapper.c4
-rw-r--r--fs/ioctl.c2
-rw-r--r--fs/jbd/journal.c3
-rw-r--r--fs/jbd2/journal.c2
-rw-r--r--fs/jffs2/read.c9
-rw-r--r--fs/nfs/dir.c2
-rw-r--r--fs/nfs/direct.c1
-rw-r--r--fs/nfs/fscache.c10
-rw-r--r--fs/nfs/nfs4proc.c17
-rw-r--r--fs/nfs/nfs4xdr.c1
-rw-r--r--fs/nfsd/nfs3xdr.c2
-rw-r--r--fs/nilfs2/btnode.c4
-rw-r--r--fs/nilfs2/cpfile.c2
-rw-r--r--fs/nilfs2/inode.c1
-rw-r--r--fs/nilfs2/ioctl.c39
-rw-r--r--fs/nilfs2/segment.c17
-rw-r--r--fs/ocfs2/file.c3
-rw-r--r--fs/ocfs2/ocfs2.h7
-rw-r--r--fs/ocfs2/refcounttree.c69
-rw-r--r--fs/ocfs2/super.c20
-rw-r--r--fs/ocfs2/uptodate.c5
-rw-r--r--fs/proc/array.c2
-rw-r--r--fs/proc/base.c3
-rw-r--r--fs/proc/meminfo.c2
-rw-r--r--fs/sysfs/dir.c4
-rw-r--r--fs/xfs/linux-2.6/xfs_quotaops.c2
-rw-r--r--fs/xfs/quota/xfs_qm_syscalls.c1
-rw-r--r--fs/xfs/xfs_ialloc.c1
-rw-r--r--fs/xfs/xfs_log_recover.c4
-rw-r--r--fs/xfs/xfs_trans_ail.c23
-rw-r--r--include/asm-generic/fcntl.h21
-rw-r--r--include/linux/cpufreq.h7
-rw-r--r--include/linux/device.h4
-rw-r--r--include/linux/ext3_fs_i.h8
-rw-r--r--include/linux/fb.h6
-rw-r--r--include/linux/fscache-cache.h40
-rw-r--r--include/linux/fscache.h27
-rw-r--r--include/linux/i2c-pnx.h2
-rw-r--r--include/linux/i2c.h18
-rw-r--r--include/linux/input.h4
-rw-r--r--include/linux/isdn_ppp.h2
-rw-r--r--include/linux/mfd/wm831x/regulator.h4
-rw-r--r--include/linux/moduleparam.h1
-rw-r--r--include/linux/nilfs2_fs.h9
-rw-r--r--include/linux/pci_ids.h11
-rw-r--r--include/linux/perf_event.h4
-rw-r--r--include/linux/prctl.h12
-rw-r--r--include/linux/rcutree.h6
-rw-r--r--include/linux/skbuff.h6
-rw-r--r--include/linux/slow-work.h72
-rw-r--r--include/linux/string.h2
-rw-r--r--include/linux/suspend.h21
-rw-r--r--include/linux/topology.h4
-rw-r--r--include/linux/trace_seq.h2
-rw-r--r--include/linux/vt.h4
-rw-r--r--include/net/9p/client.h7
-rw-r--r--include/net/ip_fib.h3
-rw-r--r--include/net/mac80211.h6
-rw-r--r--include/net/netfilter/nf_conntrack.h8
-rw-r--r--include/net/netfilter/nf_nat_helper.h4
-rw-r--r--include/net/sctp/structs.h3
-rw-r--r--include/pcmcia/ss.h4
-rw-r--r--include/scsi/scsi_device.h1
-rw-r--r--include/scsi/scsi_host.h29
-rw-r--r--init/Kconfig18
-rw-r--r--init/main.c11
-rw-r--r--kernel/Makefile1
-rw-r--r--kernel/cgroup.c8
-rw-r--r--kernel/exit.c4
-rw-r--r--kernel/fork.c2
-rw-r--r--kernel/futex.c20
-rw-r--r--kernel/irq/spurious.c2
-rw-r--r--kernel/kthread.c23
-rw-r--r--kernel/module.c5
-rw-r--r--kernel/params.c17
-rw-r--r--kernel/perf_event.c68
-rw-r--r--kernel/power/hibernate.c11
-rw-r--r--kernel/power/swap.c43
-rw-r--r--kernel/rcutree.c60
-rw-r--r--kernel/rcutree.h17
-rw-r--r--kernel/rcutree_plugin.h46
-rw-r--r--kernel/sched.c65
-rw-r--r--kernel/sched_fair.c74
-rw-r--r--kernel/slow-work-debugfs.c227
-rw-r--r--kernel/slow-work.c512
-rw-r--r--kernel/slow-work.h72
-rw-r--r--kernel/sys.c25
-rw-r--r--kernel/sysctl_check.c2
-rw-r--r--kernel/trace/ftrace.c8
-rw-r--r--kernel/trace/ring_buffer.c14
-rw-r--r--kernel/trace/trace.c8
-rw-r--r--kernel/trace/trace_output.c5
-rw-r--r--kernel/user.c2
-rw-r--r--kernel/workqueue.c17
-rw-r--r--lib/Kconfig.debug2
-rw-r--r--lib/dma-debug.c6
-rw-r--r--lib/radix-tree.c5
-rw-r--r--lib/string.c20
-rw-r--r--mm/Kconfig9
-rw-r--r--mm/backing-dev.c25
-rw-r--r--mm/highmem.c17
-rw-r--r--mm/ksm.c1
-rw-r--r--mm/memory-failure.c59
-rw-r--r--mm/memory.c14
-rw-r--r--mm/memory_hotplug.c24
-rw-r--r--mm/mempolicy.c13
-rw-r--r--mm/migrate.c2
-rw-r--r--mm/nommu.c6
-rw-r--r--mm/page_alloc.c7
-rw-r--r--mm/percpu.c139
-rw-r--r--mm/swapfile.c3
-rw-r--r--mm/vmscan.c14
-rw-r--r--net/8021q/vlan.c7
-rw-r--r--net/9p/client.c5
-rw-r--r--net/bluetooth/hci_conn.c1
-rw-r--r--net/bluetooth/l2cap.c13
-rw-r--r--net/bridge/br_if.c6
-rw-r--r--net/can/bcm.c19
-rw-r--r--net/core/datagram.c10
-rw-r--r--net/core/dev.c11
-rw-r--r--net/core/pktgen.c47
-rw-r--r--net/core/skbuff.c3
-rw-r--r--net/decnet/sysctl_net_decnet.c7
-rw-r--r--net/ipv4/fib_frontend.c5
-rw-r--r--net/ipv4/ip_fragment.c2
-rw-r--r--net/ipv4/ip_gre.c28
-rw-r--r--net/ipv4/ipip.c32
-rw-r--r--net/ipv4/ipmr.c4
-rw-r--r--net/ipv4/netfilter/nf_nat_core.c3
-rw-r--r--net/ipv4/netfilter/nf_nat_helper.c34
-rw-r--r--net/ipv4/raw.c24
-rw-r--r--net/ipv4/route.c8
-rw-r--r--net/ipv4/tcp.c21
-rw-r--r--net/ipv4/udp.c4
-rw-r--r--net/ipv6/udp.c4
-rw-r--r--net/mac80211/agg-rx.c4
-rw-r--r--net/mac80211/agg-tx.c38
-rw-r--r--net/mac80211/cfg.c6
-rw-r--r--net/mac80211/ht.c10
-rw-r--r--net/mac80211/ibss.c12
-rw-r--r--net/mac80211/ieee80211_i.h10
-rw-r--r--net/mac80211/mesh_hwmp.c2
-rw-r--r--net/mac80211/mlme.c3
-rw-r--r--net/mac80211/tx.c2
-rw-r--r--net/mac80211/util.c19
-rw-r--r--net/netfilter/nf_conntrack_core.c8
-rw-r--r--net/netfilter/nf_conntrack_proto_tcp.c64
-rw-r--r--net/netfilter/nf_log.c18
-rw-r--r--net/netfilter/xt_connlimit.c10
-rw-r--r--net/netfilter/xt_limit.c2
-rw-r--r--net/netfilter/xt_osf.c2
-rw-r--r--net/packet/af_packet.c5
-rw-r--r--net/rfkill/core.c1
-rw-r--r--net/rose/rose_route.c16
-rw-r--r--net/sctp/associola.c4
-rw-r--r--net/sctp/outqueue.c10
-rw-r--r--net/sctp/sm_sideeffect.c1
-rw-r--r--net/sctp/sm_statefuns.c15
-rw-r--r--net/sctp/socket.c40
-rw-r--r--net/sctp/transport.c8
-rw-r--r--net/sunrpc/addr.c18
-rw-r--r--net/sunrpc/svcsock.c10
-rw-r--r--net/wireless/core.h1
-rw-r--r--net/wireless/mlme.c9
-rw-r--r--net/wireless/sme.c24
-rwxr-xr-xscripts/checkpatch.pl84
-rw-r--r--scripts/dtc/data.c2
-rw-r--r--scripts/dtc/dtc-lexer.l2
-rw-r--r--scripts/dtc/dtc-lexer.lex.c_shipped69
-rw-r--r--scripts/dtc/libfdt/fdt_ro.c2
-rw-r--r--scripts/dtc/treesource.c2
-rw-r--r--scripts/genksyms/keywords.c_shipped95
-rw-r--r--scripts/genksyms/keywords.gperf2
-rwxr-xr-xscripts/get_maintainer.pl41
-rw-r--r--scripts/kconfig/Makefile4
-rw-r--r--scripts/kconfig/lex.zconf.c_shipped25
-rw-r--r--scripts/kconfig/streamline_config.pl12
-rw-r--r--scripts/kconfig/zconf.gperf2
-rw-r--r--scripts/kconfig/zconf.hash.c_shipped2
-rw-r--r--scripts/kconfig/zconf.l6
-rw-r--r--scripts/kconfig/zconf.tab.c_shipped379
-rw-r--r--scripts/kconfig/zconf.y13
-rw-r--r--security/integrity/ima/ima_iint.c4
-rw-r--r--sound/arm/aaci.c6
-rw-r--r--sound/core/pcm.c5
-rw-r--r--sound/core/rawmidi.c42
-rw-r--r--sound/drivers/dummy.c4
-rw-r--r--sound/drivers/pcsp/pcsp_lib.c65
-rw-r--r--sound/drivers/pcsp/pcsp_mixer.c2
-rw-r--r--sound/oss/dmasound/dmasound_core.c4
-rw-r--r--sound/oss/hex2hex.c2
-rw-r--r--sound/oss/sb_common.c4
-rw-r--r--sound/oss/sb_ess.c2
-rw-r--r--sound/parisc/harmony.c6
-rw-r--r--sound/pci/Kconfig1
-rw-r--r--sound/pci/ali5451/ali5451.c2
-rw-r--r--sound/pci/hda/hda_intel.c13
-rw-r--r--sound/pci/hda/patch_conexant.c16
-rw-r--r--sound/pci/hda/patch_nvhdmi.c2
-rw-r--r--sound/pci/hda/patch_realtek.c24
-rw-r--r--sound/pci/hda/patch_sigmatel.c70
-rw-r--r--sound/pci/ice1712/ice1712.h4
-rw-r--r--sound/pci/ice1712/prodigy_hifi.c2
-rw-r--r--sound/pci/intel8x0.c6
-rw-r--r--sound/pci/via82xx.c59
-rw-r--r--sound/pcmcia/pdaudiocf/pdaudiocf.c21
-rw-r--r--sound/pcmcia/vx/vxpocket.c21
-rw-r--r--sound/ppc/Kconfig2
-rw-r--r--sound/sh/aica.c1
-rw-r--r--sound/soc/codecs/tlv320aic23.c5
-rw-r--r--sound/soc/omap/Kconfig13
-rw-r--r--sound/soc/omap/omap-pcm.c8
-rw-r--r--sound/soc/omap/omap3evm.c2
-rw-r--r--sound/soc/omap/omap3pandora.c3
-rw-r--r--sound/soc/s3c24xx/s3c24xx-pcm.c17
-rw-r--r--sound/soc/s3c24xx/s3c64xx-i2s.c2
-rw-r--r--sound/soc/soc-core.c11
-rw-r--r--sound/soc/soc-dapm.c22
-rw-r--r--sound/usb/caiaq/audio.c16
-rw-r--r--sound/usb/caiaq/device.c2
-rw-r--r--sound/usb/usbaudio.h2
-rw-r--r--sound/usb/usbmixer.c9
-rw-r--r--tools/perf/Makefile9
-rw-r--r--tools/perf/builtin-record.c2
-rw-r--r--tools/perf/builtin-timechart.c28
-rw-r--r--tools/perf/builtin-top.c4
-rwxr-xr-xtools/perf/util/PERF-VERSION-GEN2
-rw-r--r--tools/perf/util/svghelper.c2
-rw-r--r--tools/perf/util/symbol.c6
-rw-r--r--tools/perf/util/symbol.h10
1229 files changed, 21906 insertions, 12474 deletions
diff --git a/.gitignore b/.gitignore
index b93fb7eff942..946c7ec5c922 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,6 +25,7 @@
25*.elf 25*.elf
26*.bin 26*.bin
27*.gz 27*.gz
28*.bz2
28*.lzma 29*.lzma
29*.patch 30*.patch
30*.gcno 31*.gcno
diff --git a/Documentation/ABI/testing/sysfs-devices-cache_disable b/Documentation/ABI/testing/sysfs-devices-cache_disable
deleted file mode 100644
index 175bb4f70512..000000000000
--- a/Documentation/ABI/testing/sysfs-devices-cache_disable
+++ /dev/null
@@ -1,18 +0,0 @@
1What: /sys/devices/system/cpu/cpu*/cache/index*/cache_disable_X
2Date: August 2008
3KernelVersion: 2.6.27
4Contact: mark.langsdorf@amd.com
5Description: These files exist in every cpu's cache index directories.
6 There are currently 2 cache_disable_# files in each
7 directory. Reading from these files on a supported
8 processor will return that cache disable index value
9 for that processor and node. Writing to one of these
10 files will cause the specificed cache index to be disabled.
11
12 Currently, only AMD Family 10h Processors support cache index
13 disable, and only for their L3 caches. See the BIOS and
14 Kernel Developer's Guide at
15 http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/31116-Public-GH-BKDG_3.20_2-4-09.pdf
16 for formatting information and other details on the
17 cache index disable.
18Users: joachim.deguara@amd.com
diff --git a/Documentation/ABI/testing/sysfs-devices-system-cpu b/Documentation/ABI/testing/sysfs-devices-system-cpu
new file mode 100644
index 000000000000..a703b9e9aeb9
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-devices-system-cpu
@@ -0,0 +1,156 @@
1What: /sys/devices/system/cpu/
2Date: pre-git history
3Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
4Description:
5 A collection of both global and individual CPU attributes
6
7 Individual CPU attributes are contained in subdirectories
8 named by the kernel's logical CPU number, e.g.:
9
10 /sys/devices/system/cpu/cpu#/
11
12What: /sys/devices/system/cpu/sched_mc_power_savings
13 /sys/devices/system/cpu/sched_smt_power_savings
14Date: June 2006
15Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
16Description: Discover and adjust the kernel's multi-core scheduler support.
17
18 Possible values are:
19
20 0 - No power saving load balance (default value)
21 1 - Fill one thread/core/package first for long running threads
22 2 - Also bias task wakeups to semi-idle cpu package for power
23 savings
24
25 sched_mc_power_savings is dependent upon SCHED_MC, which is
26 itself architecture dependent.
27
28 sched_smt_power_savings is dependent upon SCHED_SMT, which
29 is itself architecture dependent.
30
31 The two files are independent of each other. It is possible
32 that one file may be present without the other.
33
34 Introduced by git commit 5c45bf27.
35
36
37What: /sys/devices/system/cpu/kernel_max
38 /sys/devices/system/cpu/offline
39 /sys/devices/system/cpu/online
40 /sys/devices/system/cpu/possible
41 /sys/devices/system/cpu/present
42Date: December 2008
43Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
44Description: CPU topology files that describe kernel limits related to
45 hotplug. Briefly:
46
47 kernel_max: the maximum cpu index allowed by the kernel
48 configuration.
49
50 offline: cpus that are not online because they have been
51 HOTPLUGGED off or exceed the limit of cpus allowed by the
52 kernel configuration (kernel_max above).
53
54 online: cpus that are online and being scheduled.
55
56 possible: cpus that have been allocated resources and can be
57 brought online if they are present.
58
59 present: cpus that have been identified as being present in
60 the system.
61
62 See Documentation/cputopology.txt for more information.
63
64
65
66What: /sys/devices/system/cpu/cpu#/node
67Date: October 2009
68Contact: Linux memory management mailing list <linux-mm@kvack.org>
69Description: Discover NUMA node a CPU belongs to
70
71 When CONFIG_NUMA is enabled, a symbolic link that points
72 to the corresponding NUMA node directory.
73
74 For example, the following symlink is created for cpu42
75 in NUMA node 2:
76
77 /sys/devices/system/cpu/cpu42/node2 -> ../../node/node2
78
79
80What: /sys/devices/system/cpu/cpu#/topology/core_id
81 /sys/devices/system/cpu/cpu#/topology/core_siblings
82 /sys/devices/system/cpu/cpu#/topology/core_siblings_list
83 /sys/devices/system/cpu/cpu#/topology/physical_package_id
84 /sys/devices/system/cpu/cpu#/topology/thread_siblings
85 /sys/devices/system/cpu/cpu#/topology/thread_siblings_list
86Date: December 2008
87Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
88Description: CPU topology files that describe a logical CPU's relationship
89 to other cores and threads in the same physical package.
90
91 One cpu# directory is created per logical CPU in the system,
92 e.g. /sys/devices/system/cpu/cpu42/.
93
94 Briefly, the files above are:
95
96 core_id: the CPU core ID of cpu#. Typically it is the
97 hardware platform's identifier (rather than the kernel's).
98 The actual value is architecture and platform dependent.
99
100 core_siblings: internal kernel map of cpu#'s hardware threads
101 within the same physical_package_id.
102
103 core_siblings_list: human-readable list of the logical CPU
104 numbers within the same physical_package_id as cpu#.
105
106 physical_package_id: physical package id of cpu#. Typically
107 corresponds to a physical socket number, but the actual value
108 is architecture and platform dependent.
109
110 thread_siblings: internel kernel map of cpu#'s hardware
111 threads within the same core as cpu#
112
113 thread_siblings_list: human-readable list of cpu#'s hardware
114 threads within the same core as cpu#
115
116 See Documentation/cputopology.txt for more information.
117
118
119What: /sys/devices/system/cpu/cpuidle/current_driver
120 /sys/devices/system/cpu/cpuidle/current_governer_ro
121Date: September 2007
122Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
123Description: Discover cpuidle policy and mechanism
124
125 Various CPUs today support multiple idle levels that are
126 differentiated by varying exit latencies and power
127 consumption during idle.
128
129 Idle policy (governor) is differentiated from idle mechanism
130 (driver)
131
132 current_driver: displays current idle mechanism
133
134 current_governor_ro: displays current idle policy
135
136 See files in Documentation/cpuidle/ for more information.
137
138
139What: /sys/devices/system/cpu/cpu*/cache/index*/cache_disable_X
140Date: August 2008
141KernelVersion: 2.6.27
142Contact: mark.langsdorf@amd.com
143Description: These files exist in every cpu's cache index directories.
144 There are currently 2 cache_disable_# files in each
145 directory. Reading from these files on a supported
146 processor will return that cache disable index value
147 for that processor and node. Writing to one of these
148 files will cause the specificed cache index to be disabled.
149
150 Currently, only AMD Family 10h Processors support cache index
151 disable, and only for their L3 caches. See the BIOS and
152 Kernel Developer's Guide at
153 http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/31116-Public-GH-BKDG_3.20_2-4-09.pdf
154 for formatting information and other details on the
155 cache index disable.
156Users: joachim.deguara@amd.com
diff --git a/Documentation/cputopology.txt b/Documentation/cputopology.txt
index b41f3e58aefa..f1c5c4bccd3e 100644
--- a/Documentation/cputopology.txt
+++ b/Documentation/cputopology.txt
@@ -1,15 +1,28 @@
1 1
2Export cpu topology info via sysfs. Items (attributes) are similar 2Export CPU topology info via sysfs. Items (attributes) are similar
3to /proc/cpuinfo. 3to /proc/cpuinfo.
4 4
51) /sys/devices/system/cpu/cpuX/topology/physical_package_id: 51) /sys/devices/system/cpu/cpuX/topology/physical_package_id:
6represent the physical package id of cpu X; 6
7 physical package id of cpuX. Typically corresponds to a physical
8 socket number, but the actual value is architecture and platform
9 dependent.
10
72) /sys/devices/system/cpu/cpuX/topology/core_id: 112) /sys/devices/system/cpu/cpuX/topology/core_id:
8represent the cpu core id to cpu X; 12
13 the CPU core ID of cpuX. Typically it is the hardware platform's
14 identifier (rather than the kernel's). The actual value is
15 architecture and platform dependent.
16
93) /sys/devices/system/cpu/cpuX/topology/thread_siblings: 173) /sys/devices/system/cpu/cpuX/topology/thread_siblings:
10represent the thread siblings to cpu X in the same core; 18
19 internel kernel map of cpuX's hardware threads within the same
20 core as cpuX
21
114) /sys/devices/system/cpu/cpuX/topology/core_siblings: 224) /sys/devices/system/cpu/cpuX/topology/core_siblings:
12represent the thread siblings to cpu X in the same physical package; 23
24 internal kernel map of cpuX's hardware threads within the same
25 physical_package_id.
13 26
14To implement it in an architecture-neutral way, a new source file, 27To implement it in an architecture-neutral way, a new source file,
15drivers/base/topology.c, is to export the 4 attributes. 28drivers/base/topology.c, is to export the 4 attributes.
@@ -32,32 +45,32 @@ not defined by include/asm-XXX/topology.h:
323) thread_siblings: just the given CPU 453) thread_siblings: just the given CPU
334) core_siblings: just the given CPU 464) core_siblings: just the given CPU
34 47
35Additionally, cpu topology information is provided under 48Additionally, CPU topology information is provided under
36/sys/devices/system/cpu and includes these files. The internal 49/sys/devices/system/cpu and includes these files. The internal
37source for the output is in brackets ("[]"). 50source for the output is in brackets ("[]").
38 51
39 kernel_max: the maximum cpu index allowed by the kernel configuration. 52 kernel_max: the maximum CPU index allowed by the kernel configuration.
40 [NR_CPUS-1] 53 [NR_CPUS-1]
41 54
42 offline: cpus that are not online because they have been 55 offline: CPUs that are not online because they have been
43 HOTPLUGGED off (see cpu-hotplug.txt) or exceed the limit 56 HOTPLUGGED off (see cpu-hotplug.txt) or exceed the limit
44 of cpus allowed by the kernel configuration (kernel_max 57 of CPUs allowed by the kernel configuration (kernel_max
45 above). [~cpu_online_mask + cpus >= NR_CPUS] 58 above). [~cpu_online_mask + cpus >= NR_CPUS]
46 59
47 online: cpus that are online and being scheduled [cpu_online_mask] 60 online: CPUs that are online and being scheduled [cpu_online_mask]
48 61
49 possible: cpus that have been allocated resources and can be 62 possible: CPUs that have been allocated resources and can be
50 brought online if they are present. [cpu_possible_mask] 63 brought online if they are present. [cpu_possible_mask]
51 64
52 present: cpus that have been identified as being present in the 65 present: CPUs that have been identified as being present in the
53 system. [cpu_present_mask] 66 system. [cpu_present_mask]
54 67
55The format for the above output is compatible with cpulist_parse() 68The format for the above output is compatible with cpulist_parse()
56[see <linux/cpumask.h>]. Some examples follow. 69[see <linux/cpumask.h>]. Some examples follow.
57 70
58In this example, there are 64 cpus in the system but cpus 32-63 exceed 71In this example, there are 64 CPUs in the system but cpus 32-63 exceed
59the kernel max which is limited to 0..31 by the NR_CPUS config option 72the kernel max which is limited to 0..31 by the NR_CPUS config option
60being 32. Note also that cpus 2 and 4-31 are not online but could be 73being 32. Note also that CPUs 2 and 4-31 are not online but could be
61brought online as they are both present and possible. 74brought online as they are both present and possible.
62 75
63 kernel_max: 31 76 kernel_max: 31
@@ -67,8 +80,8 @@ brought online as they are both present and possible.
67 present: 0-31 80 present: 0-31
68 81
69In this example, the NR_CPUS config option is 128, but the kernel was 82In this example, the NR_CPUS config option is 128, but the kernel was
70started with possible_cpus=144. There are 4 cpus in the system and cpu2 83started with possible_cpus=144. There are 4 CPUs in the system and cpu2
71was manually taken offline (and is the only cpu that can be brought 84was manually taken offline (and is the only CPU that can be brought
72online.) 85online.)
73 86
74 kernel_max: 127 87 kernel_max: 127
@@ -78,4 +91,4 @@ online.)
78 present: 0-3 91 present: 0-3
79 92
80See cpu-hotplug.txt for the possible_cpus=NUM kernel start parameter 93See cpu-hotplug.txt for the possible_cpus=NUM kernel start parameter
81as well as more information on the various cpumask's. 94as well as more information on the various cpumasks.
diff --git a/Documentation/fb/framebuffer.txt b/Documentation/fb/framebuffer.txt
index b3e3a0356839..fe79e3c8847d 100644
--- a/Documentation/fb/framebuffer.txt
+++ b/Documentation/fb/framebuffer.txt
@@ -312,10 +312,8 @@ and to the following documentation:
3128. Mailing list 3128. Mailing list
313--------------- 313---------------
314 314
315There are several frame buffer device related mailing lists at SourceForge: 315There is a frame buffer device related mailing list at kernel.org:
316 - linux-fbdev-announce@lists.sourceforge.net, for announcements, 316linux-fbdev@vger.kernel.org.
317 - linux-fbdev-user@lists.sourceforge.net, for generic user support,
318 - linux-fbdev-devel@lists.sourceforge.net, for project developers.
319 317
320Point your web browser to http://sourceforge.net/projects/linux-fbdev/ for 318Point your web browser to http://sourceforge.net/projects/linux-fbdev/ for
321subscription information and archive browsing. 319subscription information and archive browsing.
diff --git a/Documentation/filesystems/caching/fscache.txt b/Documentation/filesystems/caching/fscache.txt
index 9e94b9491d89..a91e2e2095b0 100644
--- a/Documentation/filesystems/caching/fscache.txt
+++ b/Documentation/filesystems/caching/fscache.txt
@@ -235,6 +235,7 @@ proc files.
235 neg=N Number of negative lookups made 235 neg=N Number of negative lookups made
236 pos=N Number of positive lookups made 236 pos=N Number of positive lookups made
237 crt=N Number of objects created by lookup 237 crt=N Number of objects created by lookup
238 tmo=N Number of lookups timed out and requeued
238 Updates n=N Number of update cookie requests seen 239 Updates n=N Number of update cookie requests seen
239 nul=N Number of upd reqs given a NULL parent 240 nul=N Number of upd reqs given a NULL parent
240 run=N Number of upd reqs granted CPU time 241 run=N Number of upd reqs granted CPU time
@@ -250,8 +251,10 @@ proc files.
250 ok=N Number of successful alloc reqs 251 ok=N Number of successful alloc reqs
251 wt=N Number of alloc reqs that waited on lookup completion 252 wt=N Number of alloc reqs that waited on lookup completion
252 nbf=N Number of alloc reqs rejected -ENOBUFS 253 nbf=N Number of alloc reqs rejected -ENOBUFS
254 int=N Number of alloc reqs aborted -ERESTARTSYS
253 ops=N Number of alloc reqs submitted 255 ops=N Number of alloc reqs submitted
254 owt=N Number of alloc reqs waited for CPU time 256 owt=N Number of alloc reqs waited for CPU time
257 abt=N Number of alloc reqs aborted due to object death
255 Retrvls n=N Number of retrieval (read) requests seen 258 Retrvls n=N Number of retrieval (read) requests seen
256 ok=N Number of successful retr reqs 259 ok=N Number of successful retr reqs
257 wt=N Number of retr reqs that waited on lookup completion 260 wt=N Number of retr reqs that waited on lookup completion
@@ -261,6 +264,7 @@ proc files.
261 oom=N Number of retr reqs failed -ENOMEM 264 oom=N Number of retr reqs failed -ENOMEM
262 ops=N Number of retr reqs submitted 265 ops=N Number of retr reqs submitted
263 owt=N Number of retr reqs waited for CPU time 266 owt=N Number of retr reqs waited for CPU time
267 abt=N Number of retr reqs aborted due to object death
264 Stores n=N Number of storage (write) requests seen 268 Stores n=N Number of storage (write) requests seen
265 ok=N Number of successful store reqs 269 ok=N Number of successful store reqs
266 agn=N Number of store reqs on a page already pending storage 270 agn=N Number of store reqs on a page already pending storage
@@ -268,12 +272,37 @@ proc files.
268 oom=N Number of store reqs failed -ENOMEM 272 oom=N Number of store reqs failed -ENOMEM
269 ops=N Number of store reqs submitted 273 ops=N Number of store reqs submitted
270 run=N Number of store reqs granted CPU time 274 run=N Number of store reqs granted CPU time
275 pgs=N Number of pages given store req processing time
276 rxd=N Number of store reqs deleted from tracking tree
277 olm=N Number of store reqs over store limit
278 VmScan nos=N Number of release reqs against pages with no pending store
279 gon=N Number of release reqs against pages stored by time lock granted
280 bsy=N Number of release reqs ignored due to in-progress store
281 can=N Number of page stores cancelled due to release req
271 Ops pend=N Number of times async ops added to pending queues 282 Ops pend=N Number of times async ops added to pending queues
272 run=N Number of times async ops given CPU time 283 run=N Number of times async ops given CPU time
273 enq=N Number of times async ops queued for processing 284 enq=N Number of times async ops queued for processing
285 can=N Number of async ops cancelled
286 rej=N Number of async ops rejected due to object lookup/create failure
274 dfr=N Number of async ops queued for deferred release 287 dfr=N Number of async ops queued for deferred release
275 rel=N Number of async ops released 288 rel=N Number of async ops released
276 gc=N Number of deferred-release async ops garbage collected 289 gc=N Number of deferred-release async ops garbage collected
290 CacheOp alo=N Number of in-progress alloc_object() cache ops
291 luo=N Number of in-progress lookup_object() cache ops
292 luc=N Number of in-progress lookup_complete() cache ops
293 gro=N Number of in-progress grab_object() cache ops
294 upo=N Number of in-progress update_object() cache ops
295 dro=N Number of in-progress drop_object() cache ops
296 pto=N Number of in-progress put_object() cache ops
297 syn=N Number of in-progress sync_cache() cache ops
298 atc=N Number of in-progress attr_changed() cache ops
299 rap=N Number of in-progress read_or_alloc_page() cache ops
300 ras=N Number of in-progress read_or_alloc_pages() cache ops
301 alp=N Number of in-progress allocate_page() cache ops
302 als=N Number of in-progress allocate_pages() cache ops
303 wrp=N Number of in-progress write_page() cache ops
304 ucp=N Number of in-progress uncache_page() cache ops
305 dsp=N Number of in-progress dissociate_pages() cache ops
277 306
278 307
279 (*) /proc/fs/fscache/histogram 308 (*) /proc/fs/fscache/histogram
@@ -299,6 +328,87 @@ proc files.
299 jiffy range covered, and the SECS field the equivalent number of seconds. 328 jiffy range covered, and the SECS field the equivalent number of seconds.
300 329
301 330
331===========
332OBJECT LIST
333===========
334
335If CONFIG_FSCACHE_OBJECT_LIST is enabled, the FS-Cache facility will maintain a
336list of all the objects currently allocated and allow them to be viewed
337through:
338
339 /proc/fs/fscache/objects
340
341This will look something like:
342
343 [root@andromeda ~]# head /proc/fs/fscache/objects
344 OBJECT PARENT STAT CHLDN OPS OOP IPR EX READS EM EV F S | NETFS_COOKIE_DEF TY FL NETFS_DATA OBJECT_KEY, AUX_DATA
345 ======== ======== ==== ===== === === === == ===== == == = = | ================ == == ================ ================
346 17e4b 2 ACTV 0 0 0 0 0 0 7b 4 0 8 | NFS.fh DT 0 ffff88001dd82820 010006017edcf8bbc93b43298fdfbe71e50b57b13a172c0117f38472, e567634700000000000000000000000063f2404a000000000000000000000000c9030000000000000000000063f2404a
347 1693a 2 ACTV 0 0 0 0 0 0 7b 4 0 8 | NFS.fh DT 0 ffff88002db23380 010006017edcf8bbc93b43298fdfbe71e50b57b1e0162c01a2df0ea6, 420ebc4a000000000000000000000000420ebc4a0000000000000000000000000e1801000000000000000000420ebc4a
348
349where the first set of columns before the '|' describe the object:
350
351 COLUMN DESCRIPTION
352 ======= ===============================================================
353 OBJECT Object debugging ID (appears as OBJ%x in some debug messages)
354 PARENT Debugging ID of parent object
355 STAT Object state
356 CHLDN Number of child objects of this object
357 OPS Number of outstanding operations on this object
358 OOP Number of outstanding child object management operations
359 IPR
360 EX Number of outstanding exclusive operations
361 READS Number of outstanding read operations
362 EM Object's event mask
363 EV Events raised on this object
364 F Object flags
365 S Object slow-work work item flags
366
367and the second set of columns describe the object's cookie, if present:
368
369 COLUMN DESCRIPTION
370 =============== =======================================================
371 NETFS_COOKIE_DEF Name of netfs cookie definition
372 TY Cookie type (IX - index, DT - data, hex - special)
373 FL Cookie flags
374 NETFS_DATA Netfs private data stored in the cookie
375 OBJECT_KEY Object key } 1 column, with separating comma
376 AUX_DATA Object aux data } presence may be configured
377
378The data shown may be filtered by attaching the a key to an appropriate keyring
379before viewing the file. Something like:
380
381 keyctl add user fscache:objlist <restrictions> @s
382
383where <restrictions> are a selection of the following letters:
384
385 K Show hexdump of object key (don't show if not given)
386 A Show hexdump of object aux data (don't show if not given)
387
388and the following paired letters:
389
390 C Show objects that have a cookie
391 c Show objects that don't have a cookie
392 B Show objects that are busy
393 b Show objects that aren't busy
394 W Show objects that have pending writes
395 w Show objects that don't have pending writes
396 R Show objects that have outstanding reads
397 r Show objects that don't have outstanding reads
398 S Show objects that have slow work queued
399 s Show objects that don't have slow work queued
400
401If neither side of a letter pair is given, then both are implied. For example:
402
403 keyctl add user fscache:objlist KB @s
404
405shows objects that are busy, and lists their object keys, but does not dump
406their auxiliary data. It also implies "CcWwRrSs", but as 'B' is given, 'b' is
407not implied.
408
409By default all objects and all fields will be shown.
410
411
302========= 412=========
303DEBUGGING 413DEBUGGING
304========= 414=========
diff --git a/Documentation/filesystems/caching/netfs-api.txt b/Documentation/filesystems/caching/netfs-api.txt
index 2666b1ed5e9e..1902c57b72ef 100644
--- a/Documentation/filesystems/caching/netfs-api.txt
+++ b/Documentation/filesystems/caching/netfs-api.txt
@@ -641,7 +641,7 @@ data file must be retired (see the relinquish cookie function below).
641 641
642Furthermore, note that this does not cancel the asynchronous read or write 642Furthermore, note that this does not cancel the asynchronous read or write
643operation started by the read/alloc and write functions, so the page 643operation started by the read/alloc and write functions, so the page
644invalidation and release functions must use: 644invalidation functions must use:
645 645
646 bool fscache_check_page_write(struct fscache_cookie *cookie, 646 bool fscache_check_page_write(struct fscache_cookie *cookie,
647 struct page *page); 647 struct page *page);
@@ -654,6 +654,25 @@ to see if a page is being written to the cache, and:
654to wait for it to finish if it is. 654to wait for it to finish if it is.
655 655
656 656
657When releasepage() is being implemented, a special FS-Cache function exists to
658manage the heuristics of coping with vmscan trying to eject pages, which may
659conflict with the cache trying to write pages to the cache (which may itself
660need to allocate memory):
661
662 bool fscache_maybe_release_page(struct fscache_cookie *cookie,
663 struct page *page,
664 gfp_t gfp);
665
666This takes the netfs cookie, and the page and gfp arguments as supplied to
667releasepage(). It will return false if the page cannot be released yet for
668some reason and if it returns true, the page has been uncached and can now be
669released.
670
671To make a page available for release, this function may wait for an outstanding
672storage request to complete, or it may attempt to cancel the storage request -
673in which case the page will not be stored in the cache this time.
674
675
657========================== 676==========================
658INDEX AND DATA FILE UPDATE 677INDEX AND DATA FILE UPDATE
659========================== 678==========================
diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt
index bf4f4b7e11b3..6d94e0696f8c 100644
--- a/Documentation/filesystems/ext4.txt
+++ b/Documentation/filesystems/ext4.txt
@@ -134,9 +134,15 @@ ro Mount filesystem read only. Note that ext4 will
134 mount options "ro,noload" can be used to prevent 134 mount options "ro,noload" can be used to prevent
135 writes to the filesystem. 135 writes to the filesystem.
136 136
137journal_checksum Enable checksumming of the journal transactions.
138 This will allow the recovery code in e2fsck and the
139 kernel to detect corruption in the kernel. It is a
140 compatible change and will be ignored by older kernels.
141
137journal_async_commit Commit block can be written to disk without waiting 142journal_async_commit Commit block can be written to disk without waiting
138 for descriptor blocks. If enabled older kernels cannot 143 for descriptor blocks. If enabled older kernels cannot
139 mount the device. 144 mount the device. This will enable 'journal_checksum'
145 internally.
140 146
141journal=update Update the ext4 file system's journal to the current 147journal=update Update the ext4 file system's journal to the current
142 format. 148 format.
diff --git a/Documentation/filesystems/ocfs2.txt b/Documentation/filesystems/ocfs2.txt
index c2a0871280a0..c58b9f5ba002 100644
--- a/Documentation/filesystems/ocfs2.txt
+++ b/Documentation/filesystems/ocfs2.txt
@@ -20,15 +20,16 @@ Lots of code taken from ext3 and other projects.
20Authors in alphabetical order: 20Authors in alphabetical order:
21Joel Becker <joel.becker@oracle.com> 21Joel Becker <joel.becker@oracle.com>
22Zach Brown <zach.brown@oracle.com> 22Zach Brown <zach.brown@oracle.com>
23Mark Fasheh <mark.fasheh@oracle.com> 23Mark Fasheh <mfasheh@suse.com>
24Kurt Hackel <kurt.hackel@oracle.com> 24Kurt Hackel <kurt.hackel@oracle.com>
25Tao Ma <tao.ma@oracle.com>
25Sunil Mushran <sunil.mushran@oracle.com> 26Sunil Mushran <sunil.mushran@oracle.com>
26Manish Singh <manish.singh@oracle.com> 27Manish Singh <manish.singh@oracle.com>
28Tiger Yang <tiger.yang@oracle.com>
27 29
28Caveats 30Caveats
29======= 31=======
30Features which OCFS2 does not support yet: 32Features which OCFS2 does not support yet:
31 - quotas
32 - Directory change notification (F_NOTIFY) 33 - Directory change notification (F_NOTIFY)
33 - Distributed Caching (F_SETLEASE/F_GETLEASE/break_lease) 34 - Distributed Caching (F_SETLEASE/F_GETLEASE/break_lease)
34 35
@@ -70,7 +71,6 @@ commit=nrsec (*) Ocfs2 can be told to sync all its data and metadata
70 performance. 71 performance.
71localalloc=8(*) Allows custom localalloc size in MB. If the value is too 72localalloc=8(*) Allows custom localalloc size in MB. If the value is too
72 large, the fs will silently revert it to the default. 73 large, the fs will silently revert it to the default.
73 Localalloc is not enabled for local mounts.
74localflocks This disables cluster aware flock. 74localflocks This disables cluster aware flock.
75inode64 Indicates that Ocfs2 is allowed to create inodes at 75inode64 Indicates that Ocfs2 is allowed to create inodes at
76 any location in the filesystem, including those which 76 any location in the filesystem, including those which
diff --git a/Documentation/hwmon/sysfs-interface b/Documentation/hwmon/sysfs-interface
index dcbd502c8792..82def883361b 100644
--- a/Documentation/hwmon/sysfs-interface
+++ b/Documentation/hwmon/sysfs-interface
@@ -353,10 +353,20 @@ power[1-*]_average Average power use
353 Unit: microWatt 353 Unit: microWatt
354 RO 354 RO
355 355
356power[1-*]_average_interval Power use averaging interval 356power[1-*]_average_interval Power use averaging interval. A poll
357 notification is sent to this file if the
358 hardware changes the averaging interval.
357 Unit: milliseconds 359 Unit: milliseconds
358 RW 360 RW
359 361
362power[1-*]_average_interval_max Maximum power use averaging interval
363 Unit: milliseconds
364 RO
365
366power[1-*]_average_interval_min Minimum power use averaging interval
367 Unit: milliseconds
368 RO
369
360power[1-*]_average_highest Historical average maximum power use 370power[1-*]_average_highest Historical average maximum power use
361 Unit: microWatt 371 Unit: microWatt
362 RO 372 RO
@@ -365,6 +375,18 @@ power[1-*]_average_lowest Historical average minimum power use
365 Unit: microWatt 375 Unit: microWatt
366 RO 376 RO
367 377
378power[1-*]_average_max A poll notification is sent to
379 power[1-*]_average when power use
380 rises above this value.
381 Unit: microWatt
382 RW
383
384power[1-*]_average_min A poll notification is sent to
385 power[1-*]_average when power use
386 sinks below this value.
387 Unit: microWatt
388 RW
389
368power[1-*]_input Instantaneous power use 390power[1-*]_input Instantaneous power use
369 Unit: microWatt 391 Unit: microWatt
370 RO 392 RO
@@ -381,6 +403,39 @@ power[1-*]_reset_history Reset input_highest, input_lowest,
381 average_highest and average_lowest. 403 average_highest and average_lowest.
382 WO 404 WO
383 405
406power[1-*]_accuracy Accuracy of the power meter.
407 Unit: Percent
408 RO
409
410power[1-*]_alarm 1 if the system is drawing more power than the
411 cap allows; 0 otherwise. A poll notification is
412 sent to this file when the power use exceeds the
413 cap. This file only appears if the cap is known
414 to be enforced by hardware.
415 RO
416
417power[1-*]_cap If power use rises above this limit, the
418 system should take action to reduce power use.
419 A poll notification is sent to this file if the
420 cap is changed by the hardware. The *_cap
421 files only appear if the cap is known to be
422 enforced by hardware.
423 Unit: microWatt
424 RW
425
426power[1-*]_cap_hyst Margin of hysteresis built around capping and
427 notification.
428 Unit: microWatt
429 RW
430
431power[1-*]_cap_max Maximum cap that can be set.
432 Unit: microWatt
433 RO
434
435power[1-*]_cap_min Minimum cap that can be set.
436 Unit: microWatt
437 RO
438
384********** 439**********
385* Energy * 440* Energy *
386********** 441**********
diff --git a/Documentation/i2c/busses/i2c-piix4 b/Documentation/i2c/busses/i2c-piix4
index c5b37c570554..ac540c71c7eb 100644
--- a/Documentation/i2c/busses/i2c-piix4
+++ b/Documentation/i2c/busses/i2c-piix4
@@ -8,7 +8,7 @@ Supported adapters:
8 Datasheet: Only available via NDA from ServerWorks 8 Datasheet: Only available via NDA from ServerWorks
9 * ATI IXP200, IXP300, IXP400, SB600, SB700 and SB800 southbridges 9 * ATI IXP200, IXP300, IXP400, SB600, SB700 and SB800 southbridges
10 Datasheet: Not publicly available 10 Datasheet: Not publicly available
11 * AMD SB900 11 * AMD Hudson-2
12 Datasheet: Not publicly available 12 Datasheet: Not publicly available
13 * Standard Microsystems (SMSC) SLC90E66 (Victory66) southbridge 13 * Standard Microsystems (SMSC) SLC90E66 (Victory66) southbridge
14 Datasheet: Publicly available at the SMSC website http://www.smsc.com 14 Datasheet: Publicly available at the SMSC website http://www.smsc.com
diff --git a/Documentation/slow-work.txt b/Documentation/slow-work.txt
index ebc50f808ea4..9dbf4470c7e1 100644
--- a/Documentation/slow-work.txt
+++ b/Documentation/slow-work.txt
@@ -41,6 +41,13 @@ expand files, provided the time taken to do so isn't too long.
41Operations of both types may sleep during execution, thus tying up the thread 41Operations of both types may sleep during execution, thus tying up the thread
42loaned to it. 42loaned to it.
43 43
44A further class of work item is available, based on the slow work item class:
45
46 (*) Delayed slow work items.
47
48These are slow work items that have a timer to defer queueing of the item for
49a while.
50
44 51
45THREAD-TO-CLASS ALLOCATION 52THREAD-TO-CLASS ALLOCATION
46-------------------------- 53--------------------------
@@ -64,9 +71,11 @@ USING SLOW WORK ITEMS
64Firstly, a module or subsystem wanting to make use of slow work items must 71Firstly, a module or subsystem wanting to make use of slow work items must
65register its interest: 72register its interest:
66 73
67 int ret = slow_work_register_user(); 74 int ret = slow_work_register_user(struct module *module);
68 75
69This will return 0 if successful, or a -ve error upon failure. 76This will return 0 if successful, or a -ve error upon failure. The module
77pointer should be the module interested in using this facility (almost
78certainly THIS_MODULE).
70 79
71 80
72Slow work items may then be set up by: 81Slow work items may then be set up by:
@@ -93,6 +102,10 @@ Slow work items may then be set up by:
93 102
94 or: 103 or:
95 104
105 delayed_slow_work_init(&myitem, &myitem_ops);
106
107 or:
108
96 vslow_work_init(&myitem, &myitem_ops); 109 vslow_work_init(&myitem, &myitem_ops);
97 110
98 depending on its class. 111 depending on its class.
@@ -102,15 +115,92 @@ A suitably set up work item can then be enqueued for processing:
102 int ret = slow_work_enqueue(&myitem); 115 int ret = slow_work_enqueue(&myitem);
103 116
104This will return a -ve error if the thread pool is unable to gain a reference 117This will return a -ve error if the thread pool is unable to gain a reference
105on the item, 0 otherwise. 118on the item, 0 otherwise, or (for delayed work):
119
120 int ret = delayed_slow_work_enqueue(&myitem, my_jiffy_delay);
106 121
107 122
108The items are reference counted, so there ought to be no need for a flush 123The items are reference counted, so there ought to be no need for a flush
109operation. When all a module's slow work items have been processed, and the 124operation. But as the reference counting is optional, means to cancel
125existing work items are also included:
126
127 cancel_slow_work(&myitem);
128 cancel_delayed_slow_work(&myitem);
129
130can be used to cancel pending work. The above cancel function waits for
131existing work to have been executed (or prevent execution of them, depending
132on timing).
133
134
135When all a module's slow work items have been processed, and the
110module has no further interest in the facility, it should unregister its 136module has no further interest in the facility, it should unregister its
111interest: 137interest:
112 138
113 slow_work_unregister_user(); 139 slow_work_unregister_user(struct module *module);
140
141The module pointer is used to wait for all outstanding work items for that
142module before completing the unregistration. This prevents the put_ref() code
143from being taken away before it completes. module should almost certainly be
144THIS_MODULE.
145
146
147================
148HELPER FUNCTIONS
149================
150
151The slow-work facility provides a function by which it can be determined
152whether or not an item is queued for later execution:
153
154 bool queued = slow_work_is_queued(struct slow_work *work);
155
156If it returns false, then the item is not on the queue (it may be executing
157with a requeue pending). This can be used to work out whether an item on which
158another depends is on the queue, thus allowing a dependent item to be queued
159after it.
160
161If the above shows an item on which another depends not to be queued, then the
162owner of the dependent item might need to wait. However, to avoid locking up
163the threads unnecessarily be sleeping in them, it can make sense under some
164circumstances to return the work item to the queue, thus deferring it until
165some other items have had a chance to make use of the yielded thread.
166
167To yield a thread and defer an item, the work function should simply enqueue
168the work item again and return. However, this doesn't work if there's nothing
169actually on the queue, as the thread just vacated will jump straight back into
170the item's work function, thus busy waiting on a CPU.
171
172Instead, the item should use the thread to wait for the dependency to go away,
173but rather than using schedule() or schedule_timeout() to sleep, it should use
174the following function:
175
176 bool requeue = slow_work_sleep_till_thread_needed(
177 struct slow_work *work,
178 signed long *_timeout);
179
180This will add a second wait and then sleep, such that it will be woken up if
181either something appears on the queue that could usefully make use of the
182thread - and behind which this item can be queued, or if the event the caller
183set up to wait for happens. True will be returned if something else appeared
184on the queue and this work function should perhaps return, of false if
185something else woke it up. The timeout is as for schedule_timeout().
186
187For example:
188
189 wq = bit_waitqueue(&my_flags, MY_BIT);
190 init_wait(&wait);
191 requeue = false;
192 do {
193 prepare_to_wait(wq, &wait, TASK_UNINTERRUPTIBLE);
194 if (!test_bit(MY_BIT, &my_flags))
195 break;
196 requeue = slow_work_sleep_till_thread_needed(&my_work,
197 &timeout);
198 } while (timeout > 0 && !requeue);
199 finish_wait(wq, &wait);
200 if (!test_bit(MY_BIT, &my_flags)
201 goto do_my_thing;
202 if (requeue)
203 return; // to slow_work
114 204
115 205
116=============== 206===============
@@ -118,7 +208,8 @@ ITEM OPERATIONS
118=============== 208===============
119 209
120Each work item requires a table of operations of type struct slow_work_ops. 210Each work item requires a table of operations of type struct slow_work_ops.
121All members are required: 211Only ->execute() is required; the getting and putting of a reference and the
212describing of an item are all optional.
122 213
123 (*) Get a reference on an item: 214 (*) Get a reference on an item:
124 215
@@ -148,6 +239,16 @@ All members are required:
148 This should perform the work required of the item. It may sleep, it may 239 This should perform the work required of the item. It may sleep, it may
149 perform disk I/O and it may wait for locks. 240 perform disk I/O and it may wait for locks.
150 241
242 (*) View an item through /proc:
243
244 void (*desc)(struct slow_work *work, struct seq_file *m);
245
246 If supplied, this should print to 'm' a small string describing the work
247 the item is to do. This should be no more than about 40 characters, and
248 shouldn't include a newline character.
249
250 See the 'Viewing executing and queued items' section below.
251
151 252
152================== 253==================
153POOL CONFIGURATION 254POOL CONFIGURATION
@@ -172,3 +273,50 @@ The slow-work thread pool has a number of configurables:
172 is bounded to between 1 and one fewer than the number of active threads. 273 is bounded to between 1 and one fewer than the number of active threads.
173 This ensures there is always at least one thread that can process very 274 This ensures there is always at least one thread that can process very
174 slow work items, and always at least one thread that won't. 275 slow work items, and always at least one thread that won't.
276
277
278==================================
279VIEWING EXECUTING AND QUEUED ITEMS
280==================================
281
282If CONFIG_SLOW_WORK_DEBUG is enabled, a debugfs file is made available:
283
284 /sys/kernel/debug/slow_work/runqueue
285
286through which the list of work items being executed and the queues of items to
287be executed may be viewed. The owner of a work item is given the chance to
288add some information of its own.
289
290The contents look something like the following:
291
292 THR PID ITEM ADDR FL MARK DESC
293 === ===== ================ == ===== ==========
294 0 3005 ffff880023f52348 a 952ms FSC: OBJ17d3: LOOK
295 1 3006 ffff880024e33668 2 160ms FSC: OBJ17e5 OP60d3b: Write1/Store fl=2
296 2 3165 ffff8800296dd180 a 424ms FSC: OBJ17e4: LOOK
297 3 4089 ffff8800262c8d78 a 212ms FSC: OBJ17ea: CRTN
298 4 4090 ffff88002792bed8 2 388ms FSC: OBJ17e8 OP60d36: Write1/Store fl=2
299 5 4092 ffff88002a0ef308 2 388ms FSC: OBJ17e7 OP60d2e: Write1/Store fl=2
300 6 4094 ffff88002abaf4b8 2 132ms FSC: OBJ17e2 OP60d4e: Write1/Store fl=2
301 7 4095 ffff88002bb188e0 a 388ms FSC: OBJ17e9: CRTN
302 vsq - ffff880023d99668 1 308ms FSC: OBJ17e0 OP60f91: Write1/EnQ fl=2
303 vsq - ffff8800295d1740 1 212ms FSC: OBJ16be OP4d4b6: Write1/EnQ fl=2
304 vsq - ffff880025ba3308 1 160ms FSC: OBJ179a OP58dec: Write1/EnQ fl=2
305 vsq - ffff880024ec83e0 1 160ms FSC: OBJ17ae OP599f2: Write1/EnQ fl=2
306 vsq - ffff880026618e00 1 160ms FSC: OBJ17e6 OP60d33: Write1/EnQ fl=2
307 vsq - ffff880025a2a4b8 1 132ms FSC: OBJ16a2 OP4d583: Write1/EnQ fl=2
308 vsq - ffff880023cbe6d8 9 212ms FSC: OBJ17eb: LOOK
309 vsq - ffff880024d37590 9 212ms FSC: OBJ17ec: LOOK
310 vsq - ffff880027746cb0 9 212ms FSC: OBJ17ed: LOOK
311 vsq - ffff880024d37ae8 9 212ms FSC: OBJ17ee: LOOK
312 vsq - ffff880024d37cb0 9 212ms FSC: OBJ17ef: LOOK
313 vsq - ffff880025036550 9 212ms FSC: OBJ17f0: LOOK
314 vsq - ffff8800250368e0 9 212ms FSC: OBJ17f1: LOOK
315 vsq - ffff880025036aa8 9 212ms FSC: OBJ17f2: LOOK
316
317In the 'THR' column, executing items show the thread they're occupying and
318queued threads indicate which queue they're on. 'PID' shows the process ID of
319a slow-work thread that's executing something. 'FL' shows the work item flags.
320'MARK' indicates how long since an item was queued or began executing. Lastly,
321the 'DESC' column permits the owner of an item to give some information.
322
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index 1c8eb4518ce0..fd9a2f67edf2 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -522,7 +522,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
522 pcm_devs - Number of PCM devices assigned to each card 522 pcm_devs - Number of PCM devices assigned to each card
523 (default = 1, up to 4) 523 (default = 1, up to 4)
524 pcm_substreams - Number of PCM substreams assigned to each PCM 524 pcm_substreams - Number of PCM substreams assigned to each PCM
525 (default = 8, up to 16) 525 (default = 8, up to 128)
526 hrtimer - Use hrtimer (=1, default) or system timer (=0) 526 hrtimer - Use hrtimer (=1, default) or system timer (=0)
527 fake_buffer - Fake buffer allocations (default = 1) 527 fake_buffer - Fake buffer allocations (default = 1)
528 528
diff --git a/Documentation/thermal/sysfs-api.txt b/Documentation/thermal/sysfs-api.txt
index 70d68ce8640a..a87dc277a5ca 100644
--- a/Documentation/thermal/sysfs-api.txt
+++ b/Documentation/thermal/sysfs-api.txt
@@ -1,5 +1,5 @@
1Generic Thermal Sysfs driver How To 1Generic Thermal Sysfs driver How To
2========================= 2===================================
3 3
4Written by Sujith Thomas <sujith.thomas@intel.com>, Zhang Rui <rui.zhang@intel.com> 4Written by Sujith Thomas <sujith.thomas@intel.com>, Zhang Rui <rui.zhang@intel.com>
5 5
@@ -10,20 +10,20 @@ Copyright (c) 2008 Intel Corporation
10 10
110. Introduction 110. Introduction
12 12
13The generic thermal sysfs provides a set of interfaces for thermal zone devices (sensors) 13The generic thermal sysfs provides a set of interfaces for thermal zone
14and thermal cooling devices (fan, processor...) to register with the thermal management 14devices (sensors) and thermal cooling devices (fan, processor...) to register
15solution and to be a part of it. 15with the thermal management solution and to be a part of it.
16 16
17This how-to focuses on enabling new thermal zone and cooling devices to participate 17This how-to focuses on enabling new thermal zone and cooling devices to
18in thermal management. 18participate in thermal management.
19This solution is platform independent and any type of thermal zone devices and 19This solution is platform independent and any type of thermal zone devices
20cooling devices should be able to make use of the infrastructure. 20and cooling devices should be able to make use of the infrastructure.
21 21
22The main task of the thermal sysfs driver is to expose thermal zone attributes as well 22The main task of the thermal sysfs driver is to expose thermal zone attributes
23as cooling device attributes to the user space. 23as well as cooling device attributes to the user space.
24An intelligent thermal management application can make decisions based on inputs 24An intelligent thermal management application can make decisions based on
25from thermal zone attributes (the current temperature and trip point temperature) 25inputs from thermal zone attributes (the current temperature and trip point
26and throttle appropriate devices. 26temperature) and throttle appropriate devices.
27 27
28[0-*] denotes any positive number starting from 0 28[0-*] denotes any positive number starting from 0
29[1-*] denotes any positive number starting from 1 29[1-*] denotes any positive number starting from 1
@@ -31,77 +31,77 @@ and throttle appropriate devices.
311. thermal sysfs driver interface functions 311. thermal sysfs driver interface functions
32 32
331.1 thermal zone device interface 331.1 thermal zone device interface
341.1.1 struct thermal_zone_device *thermal_zone_device_register(char *name, int trips, 341.1.1 struct thermal_zone_device *thermal_zone_device_register(char *name,
35 void *devdata, struct thermal_zone_device_ops *ops) 35 int trips, void *devdata, struct thermal_zone_device_ops *ops)
36 36
37 This interface function adds a new thermal zone device (sensor) to 37 This interface function adds a new thermal zone device (sensor) to
38 /sys/class/thermal folder as thermal_zone[0-*]. 38 /sys/class/thermal folder as thermal_zone[0-*]. It tries to bind all the
39 It tries to bind all the thermal cooling devices registered at the same time. 39 thermal cooling devices registered at the same time.
40 40
41 name: the thermal zone name. 41 name: the thermal zone name.
42 trips: the total number of trip points this thermal zone supports. 42 trips: the total number of trip points this thermal zone supports.
43 devdata: device private data 43 devdata: device private data
44 ops: thermal zone device call-backs. 44 ops: thermal zone device call-backs.
45 .bind: bind the thermal zone device with a thermal cooling device. 45 .bind: bind the thermal zone device with a thermal cooling device.
46 .unbind: unbind the thermal zone device with a thermal cooling device. 46 .unbind: unbind the thermal zone device with a thermal cooling device.
47 .get_temp: get the current temperature of the thermal zone. 47 .get_temp: get the current temperature of the thermal zone.
48 .get_mode: get the current mode (user/kernel) of the thermal zone. 48 .get_mode: get the current mode (user/kernel) of the thermal zone.
49 "kernel" means thermal management is done in kernel. 49 - "kernel" means thermal management is done in kernel.
50 "user" will prevent kernel thermal driver actions upon trip points 50 - "user" will prevent kernel thermal driver actions upon trip points
51 so that user applications can take charge of thermal management. 51 so that user applications can take charge of thermal management.
52 .set_mode: set the mode (user/kernel) of the thermal zone. 52 .set_mode: set the mode (user/kernel) of the thermal zone.
53 .get_trip_type: get the type of certain trip point. 53 .get_trip_type: get the type of certain trip point.
54 .get_trip_temp: get the temperature above which the certain trip point 54 .get_trip_temp: get the temperature above which the certain trip point
55 will be fired. 55 will be fired.
56 56
571.1.2 void thermal_zone_device_unregister(struct thermal_zone_device *tz) 571.1.2 void thermal_zone_device_unregister(struct thermal_zone_device *tz)
58 58
59 This interface function removes the thermal zone device. 59 This interface function removes the thermal zone device.
60 It deletes the corresponding entry form /sys/class/thermal folder and unbind all 60 It deletes the corresponding entry form /sys/class/thermal folder and
61 the thermal cooling devices it uses. 61 unbind all the thermal cooling devices it uses.
62 62
631.2 thermal cooling device interface 631.2 thermal cooling device interface
641.2.1 struct thermal_cooling_device *thermal_cooling_device_register(char *name, 641.2.1 struct thermal_cooling_device *thermal_cooling_device_register(char *name,
65 void *devdata, struct thermal_cooling_device_ops *) 65 void *devdata, struct thermal_cooling_device_ops *)
66 66
67 This interface function adds a new thermal cooling device (fan/processor/...) to 67 This interface function adds a new thermal cooling device (fan/processor/...)
68 /sys/class/thermal/ folder as cooling_device[0-*]. 68 to /sys/class/thermal/ folder as cooling_device[0-*]. It tries to bind itself
69 It tries to bind itself to all the thermal zone devices register at the same time. 69 to all the thermal zone devices register at the same time.
70 name: the cooling device name. 70 name: the cooling device name.
71 devdata: device private data. 71 devdata: device private data.
72 ops: thermal cooling devices call-backs. 72 ops: thermal cooling devices call-backs.
73 .get_max_state: get the Maximum throttle state of the cooling device. 73 .get_max_state: get the Maximum throttle state of the cooling device.
74 .get_cur_state: get the Current throttle state of the cooling device. 74 .get_cur_state: get the Current throttle state of the cooling device.
75 .set_cur_state: set the Current throttle state of the cooling device. 75 .set_cur_state: set the Current throttle state of the cooling device.
76 76
771.2.2 void thermal_cooling_device_unregister(struct thermal_cooling_device *cdev) 771.2.2 void thermal_cooling_device_unregister(struct thermal_cooling_device *cdev)
78 78
79 This interface function remove the thermal cooling device. 79 This interface function remove the thermal cooling device.
80 It deletes the corresponding entry form /sys/class/thermal folder and unbind 80 It deletes the corresponding entry form /sys/class/thermal folder and
81 itself from all the thermal zone devices using it. 81 unbind itself from all the thermal zone devices using it.
82 82
831.3 interface for binding a thermal zone device with a thermal cooling device 831.3 interface for binding a thermal zone device with a thermal cooling device
841.3.1 int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz, 841.3.1 int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz,
85 int trip, struct thermal_cooling_device *cdev); 85 int trip, struct thermal_cooling_device *cdev);
86 86
87 This interface function bind a thermal cooling device to the certain trip point 87 This interface function bind a thermal cooling device to the certain trip
88 of a thermal zone device. 88 point of a thermal zone device.
89 This function is usually called in the thermal zone device .bind callback. 89 This function is usually called in the thermal zone device .bind callback.
90 tz: the thermal zone device 90 tz: the thermal zone device
91 cdev: thermal cooling device 91 cdev: thermal cooling device
92 trip: indicates which trip point the cooling devices is associated with 92 trip: indicates which trip point the cooling devices is associated with
93 in this thermal zone. 93 in this thermal zone.
94 94
951.3.2 int thermal_zone_unbind_cooling_device(struct thermal_zone_device *tz, 951.3.2 int thermal_zone_unbind_cooling_device(struct thermal_zone_device *tz,
96 int trip, struct thermal_cooling_device *cdev); 96 int trip, struct thermal_cooling_device *cdev);
97 97
98 This interface function unbind a thermal cooling device from the certain trip point 98 This interface function unbind a thermal cooling device from the certain
99 of a thermal zone device. 99 trip point of a thermal zone device. This function is usually called in
100 This function is usually called in the thermal zone device .unbind callback. 100 the thermal zone device .unbind callback.
101 tz: the thermal zone device 101 tz: the thermal zone device
102 cdev: thermal cooling device 102 cdev: thermal cooling device
103 trip: indicates which trip point the cooling devices is associated with 103 trip: indicates which trip point the cooling devices is associated with
104 in this thermal zone. 104 in this thermal zone.
105 105
1062. sysfs attributes structure 1062. sysfs attributes structure
107 107
@@ -114,153 +114,166 @@ if hwmon is compiled in or built as a module.
114 114
115Thermal zone device sys I/F, created once it's registered: 115Thermal zone device sys I/F, created once it's registered:
116/sys/class/thermal/thermal_zone[0-*]: 116/sys/class/thermal/thermal_zone[0-*]:
117 |-----type: Type of the thermal zone 117 |---type: Type of the thermal zone
118 |-----temp: Current temperature 118 |---temp: Current temperature
119 |-----mode: Working mode of the thermal zone 119 |---mode: Working mode of the thermal zone
120 |-----trip_point_[0-*]_temp: Trip point temperature 120 |---trip_point_[0-*]_temp: Trip point temperature
121 |-----trip_point_[0-*]_type: Trip point type 121 |---trip_point_[0-*]_type: Trip point type
122 122
123Thermal cooling device sys I/F, created once it's registered: 123Thermal cooling device sys I/F, created once it's registered:
124/sys/class/thermal/cooling_device[0-*]: 124/sys/class/thermal/cooling_device[0-*]:
125 |-----type : Type of the cooling device(processor/fan/...) 125 |---type: Type of the cooling device(processor/fan/...)
126 |-----max_state: Maximum cooling state of the cooling device 126 |---max_state: Maximum cooling state of the cooling device
127 |-----cur_state: Current cooling state of the cooling device 127 |---cur_state: Current cooling state of the cooling device
128 128
129 129
130These two dynamic attributes are created/removed in pairs. 130Then next two dynamic attributes are created/removed in pairs. They represent
131They represent the relationship between a thermal zone and its associated cooling device. 131the relationship between a thermal zone and its associated cooling device.
132They are created/removed for each 132They are created/removed for each successful execution of
133thermal_zone_bind_cooling_device/thermal_zone_unbind_cooling_device successful execution. 133thermal_zone_bind_cooling_device/thermal_zone_unbind_cooling_device.
134 134
135/sys/class/thermal/thermal_zone[0-*] 135/sys/class/thermal/thermal_zone[0-*]:
136 |-----cdev[0-*]: The [0-*]th cooling device in the current thermal zone 136 |---cdev[0-*]: [0-*]th cooling device in current thermal zone
137 |-----cdev[0-*]_trip_point: Trip point that cdev[0-*] is associated with 137 |---cdev[0-*]_trip_point: Trip point that cdev[0-*] is associated with
138 138
139Besides the thermal zone device sysfs I/F and cooling device sysfs I/F, 139Besides the thermal zone device sysfs I/F and cooling device sysfs I/F,
140the generic thermal driver also creates a hwmon sysfs I/F for each _type_ of 140the generic thermal driver also creates a hwmon sysfs I/F for each _type_
141thermal zone device. E.g. the generic thermal driver registers one hwmon class device 141of thermal zone device. E.g. the generic thermal driver registers one hwmon
142and build the associated hwmon sysfs I/F for all the registered ACPI thermal zones. 142class device and build the associated hwmon sysfs I/F for all the registered
143ACPI thermal zones.
144
143/sys/class/hwmon/hwmon[0-*]: 145/sys/class/hwmon/hwmon[0-*]:
144 |-----name: The type of the thermal zone devices. 146 |---name: The type of the thermal zone devices
145 |-----temp[1-*]_input: The current temperature of thermal zone [1-*]. 147 |---temp[1-*]_input: The current temperature of thermal zone [1-*]
146 |-----temp[1-*]_critical: The critical trip point of thermal zone [1-*]. 148 |---temp[1-*]_critical: The critical trip point of thermal zone [1-*]
149
147Please read Documentation/hwmon/sysfs-interface for additional information. 150Please read Documentation/hwmon/sysfs-interface for additional information.
148 151
149*************************** 152***************************
150* Thermal zone attributes * 153* Thermal zone attributes *
151*************************** 154***************************
152 155
153type Strings which represent the thermal zone type. 156type
154 This is given by thermal zone driver as part of registration. 157 Strings which represent the thermal zone type.
155 Eg: "acpitz" indicates it's an ACPI thermal device. 158 This is given by thermal zone driver as part of registration.
156 In order to keep it consistent with hwmon sys attribute, 159 E.g: "acpitz" indicates it's an ACPI thermal device.
157 this should be a short, lowercase string, 160 In order to keep it consistent with hwmon sys attribute; this should
158 not containing spaces nor dashes. 161 be a short, lowercase string, not containing spaces nor dashes.
159 RO 162 RO, Required
160 Required 163
161 164temp
162temp Current temperature as reported by thermal zone (sensor) 165 Current temperature as reported by thermal zone (sensor).
163 Unit: millidegree Celsius 166 Unit: millidegree Celsius
164 RO 167 RO, Required
165 Required 168
166 169mode
167mode One of the predefined values in [kernel, user] 170 One of the predefined values in [kernel, user].
168 This file gives information about the algorithm 171 This file gives information about the algorithm that is currently
169 that is currently managing the thermal zone. 172 managing the thermal zone. It can be either default kernel based
170 It can be either default kernel based algorithm 173 algorithm or user space application.
171 or user space application. 174 kernel = Thermal management in kernel thermal zone driver.
172 RW 175 user = Preventing kernel thermal zone driver actions upon
173 Optional 176 trip points so that user application can take full
174 kernel = Thermal management in kernel thermal zone driver. 177 charge of the thermal management.
175 user = Preventing kernel thermal zone driver actions upon 178 RW, Optional
176 trip points so that user application can take full 179
177 charge of the thermal management. 180trip_point_[0-*]_temp
178 181 The temperature above which trip point will be fired.
179trip_point_[0-*]_temp The temperature above which trip point will be fired 182 Unit: millidegree Celsius
180 Unit: millidegree Celsius 183 RO, Optional
181 RO 184
182 Optional 185trip_point_[0-*]_type
183 186 Strings which indicate the type of the trip point.
184trip_point_[0-*]_type Strings which indicate the type of the trip point 187 E.g. it can be one of critical, hot, passive, active[0-*] for ACPI
185 E.g. it can be one of critical, hot, passive, 188 thermal zone.
186 active[0-*] for ACPI thermal zone. 189 RO, Optional
187 RO 190
188 Optional 191cdev[0-*]
189 192 Sysfs link to the thermal cooling device node where the sys I/F
190cdev[0-*] Sysfs link to the thermal cooling device node where the sys I/F 193 for cooling device throttling control represents.
191 for cooling device throttling control represents. 194 RO, Optional
192 RO 195
193 Optional 196cdev[0-*]_trip_point
194 197 The trip point with which cdev[0-*] is associated in this thermal
195cdev[0-*]_trip_point The trip point with which cdev[0-*] is associated in this thermal zone 198 zone; -1 means the cooling device is not associated with any trip
196 -1 means the cooling device is not associated with any trip point. 199 point.
197 RO 200 RO, Optional
198 Optional 201
199 202passive
200****************************** 203 Attribute is only present for zones in which the passive cooling
201* Cooling device attributes * 204 policy is not supported by native thermal driver. Default is zero
202****************************** 205 and can be set to a temperature (in millidegrees) to enable a
203 206 passive trip point for the zone. Activation is done by polling with
204type String which represents the type of device 207 an interval of 1 second.
205 eg: For generic ACPI: this should be "Fan", 208 Unit: millidegrees Celsius
206 "Processor" or "LCD" 209 RW, Optional
207 eg. For memory controller device on intel_menlow platform: 210
208 this should be "Memory controller" 211*****************************
209 RO 212* Cooling device attributes *
210 Required 213*****************************
211 214
212max_state The maximum permissible cooling state of this cooling device. 215type
213 RO 216 String which represents the type of device, e.g:
214 Required 217 - for generic ACPI: should be "Fan", "Processor" or "LCD"
215 218 - for memory controller device on intel_menlow platform:
216cur_state The current cooling state of this cooling device. 219 should be "Memory controller".
217 the value can any integer numbers between 0 and max_state, 220 RO, Required
218 cur_state == 0 means no cooling 221
219 cur_state == max_state means the maximum cooling. 222max_state
220 RW 223 The maximum permissible cooling state of this cooling device.
221 Required 224 RO, Required
225
226cur_state
227 The current cooling state of this cooling device.
228 The value can any integer numbers between 0 and max_state:
229 - cur_state == 0 means no cooling
230 - cur_state == max_state means the maximum cooling.
231 RW, Required
222 232
2233. A simple implementation 2333. A simple implementation
224 234
225ACPI thermal zone may support multiple trip points like critical/hot/passive/active. 235ACPI thermal zone may support multiple trip points like critical, hot,
226If an ACPI thermal zone supports critical, passive, active[0] and active[1] at the same time, 236passive, active. If an ACPI thermal zone supports critical, passive,
227it may register itself as a thermal_zone_device (thermal_zone1) with 4 trip points in all. 237active[0] and active[1] at the same time, it may register itself as a
228It has one processor and one fan, which are both registered as thermal_cooling_device. 238thermal_zone_device (thermal_zone1) with 4 trip points in all.
229If the processor is listed in _PSL method, and the fan is listed in _AL0 method, 239It has one processor and one fan, which are both registered as
230the sys I/F structure will be built like this: 240thermal_cooling_device.
241
242If the processor is listed in _PSL method, and the fan is listed in _AL0
243method, the sys I/F structure will be built like this:
231 244
232/sys/class/thermal: 245/sys/class/thermal:
233 246
234|thermal_zone1: 247|thermal_zone1:
235 |-----type: acpitz 248 |---type: acpitz
236 |-----temp: 37000 249 |---temp: 37000
237 |-----mode: kernel 250 |---mode: kernel
238 |-----trip_point_0_temp: 100000 251 |---trip_point_0_temp: 100000
239 |-----trip_point_0_type: critical 252 |---trip_point_0_type: critical
240 |-----trip_point_1_temp: 80000 253 |---trip_point_1_temp: 80000
241 |-----trip_point_1_type: passive 254 |---trip_point_1_type: passive
242 |-----trip_point_2_temp: 70000 255 |---trip_point_2_temp: 70000
243 |-----trip_point_2_type: active0 256 |---trip_point_2_type: active0
244 |-----trip_point_3_temp: 60000 257 |---trip_point_3_temp: 60000
245 |-----trip_point_3_type: active1 258 |---trip_point_3_type: active1
246 |-----cdev0: --->/sys/class/thermal/cooling_device0 259 |---cdev0: --->/sys/class/thermal/cooling_device0
247 |-----cdev0_trip_point: 1 /* cdev0 can be used for passive */ 260 |---cdev0_trip_point: 1 /* cdev0 can be used for passive */
248 |-----cdev1: --->/sys/class/thermal/cooling_device3 261 |---cdev1: --->/sys/class/thermal/cooling_device3
249 |-----cdev1_trip_point: 2 /* cdev1 can be used for active[0]*/ 262 |---cdev1_trip_point: 2 /* cdev1 can be used for active[0]*/
250 263
251|cooling_device0: 264|cooling_device0:
252 |-----type: Processor 265 |---type: Processor
253 |-----max_state: 8 266 |---max_state: 8
254 |-----cur_state: 0 267 |---cur_state: 0
255 268
256|cooling_device3: 269|cooling_device3:
257 |-----type: Fan 270 |---type: Fan
258 |-----max_state: 2 271 |---max_state: 2
259 |-----cur_state: 0 272 |---cur_state: 0
260 273
261/sys/class/hwmon: 274/sys/class/hwmon:
262 275
263|hwmon0: 276|hwmon0:
264 |-----name: acpitz 277 |---name: acpitz
265 |-----temp1_input: 37000 278 |---temp1_input: 37000
266 |-----temp1_crit: 100000 279 |---temp1_crit: 100000
diff --git a/Documentation/trace/ftrace.txt b/Documentation/trace/ftrace.txt
index 957b22fde2df..8179692fbb90 100644
--- a/Documentation/trace/ftrace.txt
+++ b/Documentation/trace/ftrace.txt
@@ -1231,6 +1231,7 @@ something like this simple program:
1231#include <sys/stat.h> 1231#include <sys/stat.h>
1232#include <fcntl.h> 1232#include <fcntl.h>
1233#include <unistd.h> 1233#include <unistd.h>
1234#include <string.h>
1234 1235
1235#define _STR(x) #x 1236#define _STR(x) #x
1236#define STR(x) _STR(x) 1237#define STR(x) _STR(x)
@@ -1265,6 +1266,7 @@ const char *find_debugfs(void)
1265 return NULL; 1266 return NULL;
1266 } 1267 }
1267 1268
1269 strcat(debugfs, "/tracing/");
1268 debugfs_found = 1; 1270 debugfs_found = 1;
1269 1271
1270 return debugfs; 1272 return debugfs;
diff --git a/Documentation/vm/hwpoison.txt b/Documentation/vm/hwpoison.txt
new file mode 100644
index 000000000000..3ffadf8da61f
--- /dev/null
+++ b/Documentation/vm/hwpoison.txt
@@ -0,0 +1,136 @@
1What is hwpoison?
2
3Upcoming Intel CPUs have support for recovering from some memory errors
4(``MCA recovery''). This requires the OS to declare a page "poisoned",
5kill the processes associated with it and avoid using it in the future.
6
7This patchkit implements the necessary infrastructure in the VM.
8
9To quote the overview comment:
10
11 * High level machine check handler. Handles pages reported by the
12 * hardware as being corrupted usually due to a 2bit ECC memory or cache
13 * failure.
14 *
15 * This focusses on pages detected as corrupted in the background.
16 * When the current CPU tries to consume corruption the currently
17 * running process can just be killed directly instead. This implies
18 * that if the error cannot be handled for some reason it's safe to
19 * just ignore it because no corruption has been consumed yet. Instead
20 * when that happens another machine check will happen.
21 *
22 * Handles page cache pages in various states. The tricky part
23 * here is that we can access any page asynchronous to other VM
24 * users, because memory failures could happen anytime and anywhere,
25 * possibly violating some of their assumptions. This is why this code
26 * has to be extremely careful. Generally it tries to use normal locking
27 * rules, as in get the standard locks, even if that means the
28 * error handling takes potentially a long time.
29 *
30 * Some of the operations here are somewhat inefficient and have non
31 * linear algorithmic complexity, because the data structures have not
32 * been optimized for this case. This is in particular the case
33 * for the mapping from a vma to a process. Since this case is expected
34 * to be rare we hope we can get away with this.
35
36The code consists of a the high level handler in mm/memory-failure.c,
37a new page poison bit and various checks in the VM to handle poisoned
38pages.
39
40The main target right now is KVM guests, but it works for all kinds
41of applications. KVM support requires a recent qemu-kvm release.
42
43For the KVM use there was need for a new signal type so that
44KVM can inject the machine check into the guest with the proper
45address. This in theory allows other applications to handle
46memory failures too. The expection is that near all applications
47won't do that, but some very specialized ones might.
48
49---
50
51There are two (actually three) modi memory failure recovery can be in:
52
53vm.memory_failure_recovery sysctl set to zero:
54 All memory failures cause a panic. Do not attempt recovery.
55 (on x86 this can be also affected by the tolerant level of the
56 MCE subsystem)
57
58early kill
59 (can be controlled globally and per process)
60 Send SIGBUS to the application as soon as the error is detected
61 This allows applications who can process memory errors in a gentle
62 way (e.g. drop affected object)
63 This is the mode used by KVM qemu.
64
65late kill
66 Send SIGBUS when the application runs into the corrupted page.
67 This is best for memory error unaware applications and default
68 Note some pages are always handled as late kill.
69
70---
71
72User control:
73
74vm.memory_failure_recovery
75 See sysctl.txt
76
77vm.memory_failure_early_kill
78 Enable early kill mode globally
79
80PR_MCE_KILL
81 Set early/late kill mode/revert to system default
82 arg1: PR_MCE_KILL_CLEAR: Revert to system default
83 arg1: PR_MCE_KILL_SET: arg2 defines thread specific mode
84 PR_MCE_KILL_EARLY: Early kill
85 PR_MCE_KILL_LATE: Late kill
86 PR_MCE_KILL_DEFAULT: Use system global default
87PR_MCE_KILL_GET
88 return current mode
89
90
91---
92
93Testing:
94
95madvise(MADV_POISON, ....)
96 (as root)
97 Poison a page in the process for testing
98
99
100hwpoison-inject module through debugfs
101 /sys/debug/hwpoison/corrupt-pfn
102
103Inject hwpoison fault at PFN echoed into this file
104
105
106Architecture specific MCE injector
107
108x86 has mce-inject, mce-test
109
110Some portable hwpoison test programs in mce-test, see blow.
111
112---
113
114References:
115
116http://halobates.de/mce-lc09-2.pdf
117 Overview presentation from LinuxCon 09
118
119git://git.kernel.org/pub/scm/utils/cpu/mce/mce-test.git
120 Test suite (hwpoison specific portable tests in tsrc)
121
122git://git.kernel.org/pub/scm/utils/cpu/mce/mce-inject.git
123 x86 specific injector
124
125
126---
127
128Limitations:
129
130- Not all page types are supported and never will. Most kernel internal
131objects cannot be recovered, only LRU pages for now.
132- Right now hugepage support is missing.
133
134---
135Andi Kleen, Oct 2009
136
diff --git a/Documentation/vm/page-types.c b/Documentation/vm/page-types.c
index 3ec4f2a22585..4793c6aac733 100644
--- a/Documentation/vm/page-types.c
+++ b/Documentation/vm/page-types.c
@@ -218,7 +218,7 @@ static void fatal(const char *x, ...)
218 exit(EXIT_FAILURE); 218 exit(EXIT_FAILURE);
219} 219}
220 220
221int checked_open(const char *pathname, int flags) 221static int checked_open(const char *pathname, int flags)
222{ 222{
223 int fd = open(pathname, flags); 223 int fd = open(pathname, flags);
224 224
diff --git a/MAINTAINERS b/MAINTAINERS
index 88241154f4ce..4f96ac81089c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -65,43 +65,51 @@ trivial patch so apply some common sense.
65 65
668. Happy hacking. 668. Happy hacking.
67 67
68 ----------------------------------- 68Descriptions of section entries:
69 69
70Maintainers List (try to look for most precise areas first) 70 P: Person (obsolete)
71 M: Mail patches to: FullName <address@domain>
72 L: Mailing list that is relevant to this area
73 W: Web-page with status/info
74 T: SCM tree type and location. Type is one of: git, hg, quilt, stgit.
75 S: Status, one of the following:
76 Supported: Someone is actually paid to look after this.
77 Maintained: Someone actually looks after it.
78 Odd Fixes: It has a maintainer but they don't have time to do
79 much other than throw the odd patch in. See below..
80 Orphan: No current maintainer [but maybe you could take the
81 role as you write your new code].
82 Obsolete: Old code. Something tagged obsolete generally means
83 it has been replaced by a better system and you
84 should be using that.
85 F: Files and directories with wildcard patterns.
86 A trailing slash includes all files and subdirectory files.
87 F: drivers/net/ all files in and below drivers/net
88 F: drivers/net/* all files in drivers/net, but not below
89 F: */net/* all files in "any top level directory"/net
90 One pattern per line. Multiple F: lines acceptable.
91 X: Files and directories that are NOT maintained, same rules as F:
92 Files exclusions are tested before file matches.
93 Can be useful for excluding a specific subdirectory, for instance:
94 F: net/
95 X: net/ipv6/
96 matches all files in and below net excluding net/ipv6/
97 K: Keyword perl extended regex pattern to match content in a
98 patch or file. For instance:
99 K: of_get_profile
100 matches patches or files that contain "of_get_profile"
101 K: \b(printk|pr_(info|err))\b
102 matches patches or files that contain one or more of the words
103 printk, pr_info or pr_err
104 One regex pattern per line. Multiple K: lines acceptable.
71 105
72Note: For the hard of thinking, this list is meant to remain in alphabetical 106Note: For the hard of thinking, this list is meant to remain in alphabetical
73order. If you could add yourselves to it in alphabetical order that would be 107order. If you could add yourselves to it in alphabetical order that would be
74so much easier [Ed] 108so much easier [Ed]
75 109
76P: Person (obsolete) 110Maintainers List (try to look for most precise areas first)
77M: Mail patches to: FullName <address@domain>
78L: Mailing list that is relevant to this area
79W: Web-page with status/info
80T: SCM tree type and location. Type is one of: git, hg, quilt, stgit.
81S: Status, one of the following:
82
83 Supported: Someone is actually paid to look after this.
84 Maintained: Someone actually looks after it.
85 Odd Fixes: It has a maintainer but they don't have time to do
86 much other than throw the odd patch in. See below..
87 Orphan: No current maintainer [but maybe you could take the
88 role as you write your new code].
89 Obsolete: Old code. Something tagged obsolete generally means
90 it has been replaced by a better system and you
91 should be using that.
92 111
93F: Files and directories with wildcard patterns. 112 -----------------------------------
94 A trailing slash includes all files and subdirectory files.
95 F: drivers/net/ all files in and below drivers/net
96 F: drivers/net/* all files in drivers/net, but not below
97 F: */net/* all files in "any top level directory"/net
98 One pattern per line. Multiple F: lines acceptable.
99X: Files and directories that are NOT maintained, same rules as F:
100 Files exclusions are tested before file matches.
101 Can be useful for excluding a specific subdirectory, for instance:
102 F: net/
103 X: net/ipv6/
104 matches all files in and below net excluding net/ipv6/
105 113
1063C505 NETWORK DRIVER 1143C505 NETWORK DRIVER
107M: Philip Blundell <philb@gnu.org> 115M: Philip Blundell <philb@gnu.org>
@@ -174,7 +182,7 @@ M: Ron Minnich <rminnich@sandia.gov>
174M: Latchesar Ionkov <lucho@ionkov.net> 182M: Latchesar Ionkov <lucho@ionkov.net>
175L: v9fs-developer@lists.sourceforge.net 183L: v9fs-developer@lists.sourceforge.net
176W: http://swik.net/v9fs 184W: http://swik.net/v9fs
177T: git git://git.kernel.org/pub/scm/linux/kernel/ericvh/v9fs.git 185T: git git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs.git
178S: Maintained 186S: Maintained
179F: Documentation/filesystems/9p.txt 187F: Documentation/filesystems/9p.txt
180F: fs/9p/ 188F: fs/9p/
@@ -504,10 +512,32 @@ W: http://www.arm.linux.org.uk/
504S: Maintained 512S: Maintained
505F: arch/arm/ 513F: arch/arm/
506 514
515ARM PRIMECELL AACI PL041 DRIVER
516M: Russell King <linux@arm.linux.org.uk>
517S: Maintained
518F: sound/arm/aaci.*
519
520ARM PRIMECELL CLCD PL110 DRIVER
521M: Russell King <linux@arm.linux.org.uk>
522S: Maintained
523F: drivers/video/amba-clcd.*
524
525ARM PRIMECELL KMI PL050 DRIVER
526M: Russell King <linux@arm.linux.org.uk>
527S: Maintained
528F: drivers/input/serio/ambakmi.*
529F: include/linux/amba/kmi.h
530
507ARM PRIMECELL MMCI PL180/1 DRIVER 531ARM PRIMECELL MMCI PL180/1 DRIVER
508S: Orphan 532S: Orphan
509F: drivers/mmc/host/mmci.* 533F: drivers/mmc/host/mmci.*
510 534
535ARM PRIMECELL BUS SUPPORT
536M: Russell King <linux@arm.linux.org.uk>
537S: Maintained
538F: drivers/amba/
539F: include/linux/amba/bus.h
540
511ARM/ADI ROADRUNNER MACHINE SUPPORT 541ARM/ADI ROADRUNNER MACHINE SUPPORT
512M: Lennert Buytenhek <kernel@wantstofly.org> 542M: Lennert Buytenhek <kernel@wantstofly.org>
513L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 543L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -898,7 +928,6 @@ M: Karol Kozimor <sziwan@users.sourceforge.net>
898L: acpi4asus-user@lists.sourceforge.net 928L: acpi4asus-user@lists.sourceforge.net
899W: http://acpi4asus.sf.net 929W: http://acpi4asus.sf.net
900S: Maintained 930S: Maintained
901F: arch/x86/kernel/acpi/boot.c
902F: drivers/platform/x86/asus_acpi.c 931F: drivers/platform/x86/asus_acpi.c
903 932
904ASUS ASB100 HARDWARE MONITOR DRIVER 933ASUS ASB100 HARDWARE MONITOR DRIVER
@@ -992,7 +1021,7 @@ F: drivers/net/atlx/
992 1021
993ATM 1022ATM
994M: Chas Williams <chas@cmf.nrl.navy.mil> 1023M: Chas Williams <chas@cmf.nrl.navy.mil>
995L: linux-atm-general@lists.sourceforge.net (subscribers-only) 1024L: linux-atm-general@lists.sourceforge.net (moderated for non-subscribers)
996L: netdev@vger.kernel.org 1025L: netdev@vger.kernel.org
997W: http://linux-atm.sourceforge.net 1026W: http://linux-atm.sourceforge.net
998S: Maintained 1027S: Maintained
@@ -1020,7 +1049,7 @@ F: drivers/serial/atmel_serial.c
1020 1049
1021ATMEL LCDFB DRIVER 1050ATMEL LCDFB DRIVER
1022M: Nicolas Ferre <nicolas.ferre@atmel.com> 1051M: Nicolas Ferre <nicolas.ferre@atmel.com>
1023L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 1052L: linux-fbdev@vger.kernel.org
1024S: Maintained 1053S: Maintained
1025F: drivers/video/atmel_lcdfb.c 1054F: drivers/video/atmel_lcdfb.c
1026F: include/video/atmel_lcdc.h 1055F: include/video/atmel_lcdc.h
@@ -1237,11 +1266,10 @@ S: Supported
1237F: drivers/net/tg3.* 1266F: drivers/net/tg3.*
1238 1267
1239BROCADE BFA FC SCSI DRIVER 1268BROCADE BFA FC SCSI DRIVER
1240P: Jing Huang 1269M: Jing Huang <huangj@brocade.com>
1241M: huangj@brocade.com 1270L: linux-scsi@vger.kernel.org
1242L: linux-scsi@vger.kernel.org 1271S: Supported
1243S: Supported 1272F: drivers/scsi/bfa/
1244F: drivers/scsi/bfa/
1245 1273
1246BSG (block layer generic sg v4 driver) 1274BSG (block layer generic sg v4 driver)
1247M: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> 1275M: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
@@ -1480,6 +1508,7 @@ F: mm/*cgroup*
1480 1508
1481CORETEMP HARDWARE MONITORING DRIVER 1509CORETEMP HARDWARE MONITORING DRIVER
1482M: Rudolf Marek <r.marek@assembler.cz> 1510M: Rudolf Marek <r.marek@assembler.cz>
1511M: Huaxu Wan <huaxu.wan@intel.com>
1483L: lm-sensors@lm-sensors.org 1512L: lm-sensors@lm-sensors.org
1484S: Maintained 1513S: Maintained
1485F: Documentation/hwmon/coretemp 1514F: Documentation/hwmon/coretemp
@@ -2106,7 +2135,7 @@ F: drivers/net/wan/dlci.c
2106F: drivers/net/wan/sdla.c 2135F: drivers/net/wan/sdla.c
2107 2136
2108FRAMEBUFFER LAYER 2137FRAMEBUFFER LAYER
2109L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 2138L: linux-fbdev@vger.kernel.org
2110W: http://linux-fbdev.sourceforge.net/ 2139W: http://linux-fbdev.sourceforge.net/
2111S: Orphan 2140S: Orphan
2112F: Documentation/fb/ 2141F: Documentation/fb/
@@ -2129,7 +2158,7 @@ F: drivers/i2c/busses/i2c-cpm.c
2129 2158
2130FREESCALE IMX / MXC FRAMEBUFFER DRIVER 2159FREESCALE IMX / MXC FRAMEBUFFER DRIVER
2131M: Sascha Hauer <kernel@pengutronix.de> 2160M: Sascha Hauer <kernel@pengutronix.de>
2132L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 2161L: linux-fbdev@vger.kernel.org
2133L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 2162L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
2134S: Maintained 2163S: Maintained
2135F: arch/arm/plat-mxc/include/mach/imxfb.h 2164F: arch/arm/plat-mxc/include/mach/imxfb.h
@@ -2151,7 +2180,7 @@ S: Supported
2151F: arch/powerpc/sysdev/qe_lib/ 2180F: arch/powerpc/sysdev/qe_lib/
2152F: arch/powerpc/include/asm/*qe.h 2181F: arch/powerpc/include/asm/*qe.h
2153 2182
2154FREESCALE USB PERIPHERIAL DRIVERS 2183FREESCALE USB PERIPHERAL DRIVERS
2155M: Li Yang <leoli@freescale.com> 2184M: Li Yang <leoli@freescale.com>
2156L: linux-usb@vger.kernel.org 2185L: linux-usb@vger.kernel.org
2157L: linuxppc-dev@ozlabs.org 2186L: linuxppc-dev@ozlabs.org
@@ -2202,18 +2231,6 @@ F: Documentation/filesystems/caching/
2202F: fs/fscache/ 2231F: fs/fscache/
2203F: include/linux/fscache*.h 2232F: include/linux/fscache*.h
2204 2233
2205TRACING
2206M: Steven Rostedt <rostedt@goodmis.org>
2207M: Frederic Weisbecker <fweisbec@gmail.com>
2208M: Ingo Molnar <mingo@redhat.com>
2209T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git tracing/core
2210S: Maintained
2211F: Documentation/trace/ftrace.txt
2212F: arch/*/*/*/ftrace.h
2213F: arch/*/kernel/ftrace.c
2214F: include/*/ftrace.h include/trace/ include/linux/trace*.h
2215F: kernel/trace/
2216
2217FUJITSU FR-V (FRV) PORT 2234FUJITSU FR-V (FRV) PORT
2218M: David Howells <dhowells@redhat.com> 2235M: David Howells <dhowells@redhat.com>
2219S: Maintained 2236S: Maintained
@@ -2272,9 +2289,8 @@ S: Maintained
2272F: include/asm-generic 2289F: include/asm-generic
2273 2290
2274GENERIC UIO DRIVER FOR PCI DEVICES 2291GENERIC UIO DRIVER FOR PCI DEVICES
2275M: Michael S. Tsirkin <mst@redhat.com> 2292M: "Michael S. Tsirkin" <mst@redhat.com>
2276L: kvm@vger.kernel.org 2293L: kvm@vger.kernel.org
2277L: linux-kernel@vger.kernel.org
2278S: Supported 2294S: Supported
2279F: drivers/uio/uio_pci_generic.c 2295F: drivers/uio/uio_pci_generic.c
2280 2296
@@ -2318,6 +2334,13 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
2318S: Maintained 2334S: Maintained
2319F: drivers/media/video/gspca/finepix.c 2335F: drivers/media/video/gspca/finepix.c
2320 2336
2337GSPCA GL860 SUBDRIVER
2338M: Olivier Lorin <o.lorin@laposte.net>
2339L: linux-media@vger.kernel.org
2340T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
2341S: Maintained
2342F: drivers/media/video/gspca/gl860/
2343
2321GSPCA M5602 SUBDRIVER 2344GSPCA M5602 SUBDRIVER
2322M: Erik Andren <erik.andren@gmail.com> 2345M: Erik Andren <erik.andren@gmail.com>
2323L: linux-media@vger.kernel.org 2346L: linux-media@vger.kernel.org
@@ -2539,8 +2562,7 @@ S: Maintained
2539F: Documentation/i2c/ 2562F: Documentation/i2c/
2540F: drivers/i2c/ 2563F: drivers/i2c/
2541F: include/linux/i2c.h 2564F: include/linux/i2c.h
2542F: include/linux/i2c-dev.h 2565F: include/linux/i2c-*.h
2543F: include/linux/i2c-id.h
2544 2566
2545I2C-TINY-USB DRIVER 2567I2C-TINY-USB DRIVER
2546M: Till Harbaum <till@harbaum.org> 2568M: Till Harbaum <till@harbaum.org>
@@ -2641,7 +2663,7 @@ S: Supported
2641F: security/integrity/ima/ 2663F: security/integrity/ima/
2642 2664
2643IMS TWINTURBO FRAMEBUFFER DRIVER 2665IMS TWINTURBO FRAMEBUFFER DRIVER
2644L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 2666L: linux-fbdev@vger.kernel.org
2645S: Orphan 2667S: Orphan
2646F: drivers/video/imsttfb.c 2668F: drivers/video/imsttfb.c
2647 2669
@@ -2676,14 +2698,14 @@ F: drivers/input/
2676 2698
2677INTEL FRAMEBUFFER DRIVER (excluding 810 and 815) 2699INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
2678M: Sylvain Meyer <sylvain.meyer@worldonline.fr> 2700M: Sylvain Meyer <sylvain.meyer@worldonline.fr>
2679L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 2701L: linux-fbdev@vger.kernel.org
2680S: Maintained 2702S: Maintained
2681F: Documentation/fb/intelfb.txt 2703F: Documentation/fb/intelfb.txt
2682F: drivers/video/intelfb/ 2704F: drivers/video/intelfb/
2683 2705
2684INTEL 810/815 FRAMEBUFFER DRIVER 2706INTEL 810/815 FRAMEBUFFER DRIVER
2685M: Antonino Daplas <adaplas@gmail.com> 2707M: Antonino Daplas <adaplas@gmail.com>
2686L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 2708L: linux-fbdev@vger.kernel.org
2687S: Maintained 2709S: Maintained
2688F: drivers/video/i810/ 2710F: drivers/video/i810/
2689 2711
@@ -2829,7 +2851,7 @@ F: drivers/infiniband/hw/ipath/
2829 2851
2830IPMI SUBSYSTEM 2852IPMI SUBSYSTEM
2831M: Corey Minyard <minyard@acm.org> 2853M: Corey Minyard <minyard@acm.org>
2832L: openipmi-developer@lists.sourceforge.net 2854L: openipmi-developer@lists.sourceforge.net (moderated for non-subscribers)
2833W: http://openipmi.sourceforge.net/ 2855W: http://openipmi.sourceforge.net/
2834S: Supported 2856S: Supported
2835F: Documentation/IPMI.txt 2857F: Documentation/IPMI.txt
@@ -2993,19 +3015,16 @@ S: Maintained
2993F: fs/autofs4/ 3015F: fs/autofs4/
2994 3016
2995KERNEL BUILD 3017KERNEL BUILD
2996M: Sam Ravnborg <sam@ravnborg.org>
2997T: git git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next.git
2998T: git git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes.git
2999L: linux-kbuild@vger.kernel.org 3018L: linux-kbuild@vger.kernel.org
3000S: Maintained 3019S: Orphan
3001F: Documentation/kbuild/ 3020F: Documentation/kbuild/
3002F: Makefile 3021F: Makefile
3003F: scripts/Makefile.* 3022F: scripts/Makefile.*
3004 3023
3005KERNEL JANITORS 3024KERNEL JANITORS
3006L: kernel-janitors@vger.kernel.org 3025L: kernel-janitors@vger.kernel.org
3007W: http://www.kerneljanitors.org/ 3026W: http://janitor.kernelnewbies.org/
3008S: Maintained 3027S: Odd Fixes
3009 3028
3010KERNEL NFSD, SUNRPC, AND LOCKD SERVERS 3029KERNEL NFSD, SUNRPC, AND LOCKD SERVERS
3011M: "J. Bruce Fields" <bfields@fieldses.org> 3030M: "J. Bruce Fields" <bfields@fieldses.org>
@@ -3090,9 +3109,13 @@ F: kernel/kgdb.c
3090 3109
3091KMEMCHECK 3110KMEMCHECK
3092M: Vegard Nossum <vegardno@ifi.uio.no> 3111M: Vegard Nossum <vegardno@ifi.uio.no>
3093P Pekka Enberg 3112M: Pekka Enberg <penberg@cs.helsinki.fi>
3094M: penberg@cs.helsinki.fi
3095S: Maintained 3113S: Maintained
3114F: Documentation/kmemcheck.txt
3115F: arch/x86/include/asm/kmemcheck.h
3116F: arch/x86/mm/kmemcheck/
3117F: include/linux/kmemcheck.h
3118F: mm/kmemcheck.c
3096 3119
3097KMEMLEAK 3120KMEMLEAK
3098M: Catalin Marinas <catalin.marinas@arm.com> 3121M: Catalin Marinas <catalin.marinas@arm.com>
@@ -3393,7 +3416,7 @@ S: Supported
3393 3416
3394MATROX FRAMEBUFFER DRIVER 3417MATROX FRAMEBUFFER DRIVER
3395M: Petr Vandrovec <vandrove@vc.cvut.cz> 3418M: Petr Vandrovec <vandrove@vc.cvut.cz>
3396L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 3419L: linux-fbdev@vger.kernel.org
3397S: Maintained 3420S: Maintained
3398F: drivers/video/matrox/matroxfb_* 3421F: drivers/video/matrox/matroxfb_*
3399F: include/linux/matroxfb.h 3422F: include/linux/matroxfb.h
@@ -3622,7 +3645,7 @@ L: netfilter@vger.kernel.org
3622L: coreteam@netfilter.org 3645L: coreteam@netfilter.org
3623W: http://www.netfilter.org/ 3646W: http://www.netfilter.org/
3624W: http://www.iptables.org/ 3647W: http://www.iptables.org/
3625T: git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6.git 3648T: git git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6.git
3626S: Supported 3649S: Supported
3627F: include/linux/netfilter* 3650F: include/linux/netfilter*
3628F: include/linux/netfilter/ 3651F: include/linux/netfilter/
@@ -3669,6 +3692,7 @@ L: netdev@vger.kernel.org
3669W: http://www.linuxfoundation.org/en/Net 3692W: http://www.linuxfoundation.org/en/Net
3670W: http://patchwork.ozlabs.org/project/netdev/list/ 3693W: http://patchwork.ozlabs.org/project/netdev/list/
3671T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git 3694T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
3695T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6.git
3672S: Maintained 3696S: Maintained
3673F: net/ 3697F: net/
3674F: include/net/ 3698F: include/net/
@@ -3779,13 +3803,13 @@ F: fs/ntfs/
3779 3803
3780NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER 3804NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER
3781M: Antonino Daplas <adaplas@gmail.com> 3805M: Antonino Daplas <adaplas@gmail.com>
3782L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 3806L: linux-fbdev@vger.kernel.org
3783S: Maintained 3807S: Maintained
3784F: drivers/video/riva/ 3808F: drivers/video/riva/
3785F: drivers/video/nvidia/ 3809F: drivers/video/nvidia/
3786 3810
3787OMAP SUPPORT 3811OMAP SUPPORT
3788M: "Tony Lindgren <tony@atomide.com>" <tony@atomide.com> 3812M: Tony Lindgren <tony@atomide.com>
3789L: linux-omap@vger.kernel.org 3813L: linux-omap@vger.kernel.org
3790W: http://www.muru.com/linux/omap/ 3814W: http://www.muru.com/linux/omap/
3791W: http://linux.omap.com/ 3815W: http://linux.omap.com/
@@ -3814,7 +3838,7 @@ F: sound/soc/omap/
3814 3838
3815OMAP FRAMEBUFFER SUPPORT 3839OMAP FRAMEBUFFER SUPPORT
3816M: Imre Deak <imre.deak@nokia.com> 3840M: Imre Deak <imre.deak@nokia.com>
3817L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 3841L: linux-fbdev@vger.kernel.org
3818L: linux-omap@vger.kernel.org 3842L: linux-omap@vger.kernel.org
3819S: Maintained 3843S: Maintained
3820F: drivers/video/omap/ 3844F: drivers/video/omap/
@@ -3890,6 +3914,15 @@ S: Maintained
3890F: Documentation/i2c/busses/i2c-ocores 3914F: Documentation/i2c/busses/i2c-ocores
3891F: drivers/i2c/busses/i2c-ocores.c 3915F: drivers/i2c/busses/i2c-ocores.c
3892 3916
3917OPEN FIRMWARE AND FLATTENED DEVICE TREE
3918M: Grant Likely <grant.likely@secretlab.ca>
3919L: devicetree-discuss@lists.ozlabs.org
3920W: http://fdt.secretlab.ca
3921S: Maintained
3922F: drivers/of
3923F: include/linux/of*.h
3924K: of_get_property
3925
3893OPROFILE 3926OPROFILE
3894M: Robert Richter <robert.richter@amd.com> 3927M: Robert Richter <robert.richter@amd.com>
3895L: oprofile-list@lists.sf.net 3928L: oprofile-list@lists.sf.net
@@ -4311,21 +4344,23 @@ F: include/linux/qnxtypes.h
4311 4344
4312RADEON FRAMEBUFFER DISPLAY DRIVER 4345RADEON FRAMEBUFFER DISPLAY DRIVER
4313M: Benjamin Herrenschmidt <benh@kernel.crashing.org> 4346M: Benjamin Herrenschmidt <benh@kernel.crashing.org>
4314L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 4347L: linux-fbdev@vger.kernel.org
4315S: Maintained 4348S: Maintained
4316F: drivers/video/aty/radeon* 4349F: drivers/video/aty/radeon*
4317F: include/linux/radeonfb.h 4350F: include/linux/radeonfb.h
4318 4351
4319RAGE128 FRAMEBUFFER DISPLAY DRIVER 4352RAGE128 FRAMEBUFFER DISPLAY DRIVER
4320M: Paul Mackerras <paulus@samba.org> 4353M: Paul Mackerras <paulus@samba.org>
4321L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 4354L: linux-fbdev@vger.kernel.org
4322S: Maintained 4355S: Maintained
4323F: drivers/video/aty/aty128fb.c 4356F: drivers/video/aty/aty128fb.c
4324 4357
4325RALINK RT2X00 WIRELESS LAN DRIVER 4358RALINK RT2X00 WIRELESS LAN DRIVER
4326P: rt2x00 project 4359P: rt2x00 project
4360M: Ivo van Doorn <IvDoorn@gmail.com>
4361M: Gertjan van Wingerde <gwingerde@gmail.com>
4327L: linux-wireless@vger.kernel.org 4362L: linux-wireless@vger.kernel.org
4328L: users@rt2x00.serialmonkey.com 4363L: users@rt2x00.serialmonkey.com (moderated for non-subscribers)
4329W: http://rt2x00.serialmonkey.com/ 4364W: http://rt2x00.serialmonkey.com/
4330S: Maintained 4365S: Maintained
4331T: git git://git.kernel.org/pub/scm/linux/kernel/git/ivd/rt2x00.git 4366T: git git://git.kernel.org/pub/scm/linux/kernel/git/ivd/rt2x00.git
@@ -4411,7 +4446,7 @@ RFKILL
4411M: Johannes Berg <johannes@sipsolutions.net> 4446M: Johannes Berg <johannes@sipsolutions.net>
4412L: linux-wireless@vger.kernel.org 4447L: linux-wireless@vger.kernel.org
4413S: Maintained 4448S: Maintained
4414F Documentation/rfkill.txt 4449F: Documentation/rfkill.txt
4415F: net/rfkill/ 4450F: net/rfkill/
4416 4451
4417RISCOM8 DRIVER 4452RISCOM8 DRIVER
@@ -4455,7 +4490,7 @@ F: drivers/net/wireless/rtl818x/rtl8187*
4455 4490
4456S3 SAVAGE FRAMEBUFFER DRIVER 4491S3 SAVAGE FRAMEBUFFER DRIVER
4457M: Antonino Daplas <adaplas@gmail.com> 4492M: Antonino Daplas <adaplas@gmail.com>
4458L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 4493L: linux-fbdev@vger.kernel.org
4459S: Maintained 4494S: Maintained
4460F: drivers/video/savage/ 4495F: drivers/video/savage/
4461 4496
@@ -4534,12 +4569,11 @@ F: kernel/sched*
4534F: include/linux/sched.h 4569F: include/linux/sched.h
4535 4570
4536SCORE ARCHITECTURE 4571SCORE ARCHITECTURE
4537P: Chen Liqin 4572M: Chen Liqin <liqin.chen@sunplusct.com>
4538M: liqin.chen@sunplusct.com 4573M: Lennox Wu <lennox.wu@gmail.com>
4539P: Lennox Wu
4540M: lennox.wu@gmail.com
4541W: http://www.sunplusct.com 4574W: http://www.sunplusct.com
4542S: Supported 4575S: Supported
4576F: arch/score/
4543 4577
4544SCSI CDROM DRIVER 4578SCSI CDROM DRIVER
4545M: Jens Axboe <axboe@kernel.dk> 4579M: Jens Axboe <axboe@kernel.dk>
@@ -4612,27 +4646,27 @@ S: Maintained
4612F: drivers/mmc/host/sdricoh_cs.c 4646F: drivers/mmc/host/sdricoh_cs.c
4613 4647
4614SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER 4648SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER
4615S: Orphan 4649S: Orphan
4616L: linux-mmc@vger.kernel.org 4650L: linux-mmc@vger.kernel.org
4617F: drivers/mmc/host/sdhci.* 4651F: drivers/mmc/host/sdhci.*
4618 4652
4619SECURE DIGITAL HOST CONTROLLER INTERFACE, OPEN FIRMWARE BINDINGS (SDHCI-OF) 4653SECURE DIGITAL HOST CONTROLLER INTERFACE, OPEN FIRMWARE BINDINGS (SDHCI-OF)
4620M: Anton Vorontsov <avorontsov@ru.mvista.com> 4654M: Anton Vorontsov <avorontsov@ru.mvista.com>
4621L: linuxppc-dev@ozlabs.org 4655L: linuxppc-dev@ozlabs.org
4622L: linux-mmc@vger.kernel.org 4656L: linux-mmc@vger.kernel.org
4623S: Maintained 4657S: Maintained
4624F: drivers/mmc/host/sdhci-of.* 4658F: drivers/mmc/host/sdhci-of.*
4625 4659
4626SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) SAMSUNG DRIVER 4660SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) SAMSUNG DRIVER
4627M: Ben Dooks <ben-linux@fluff.org> 4661M: Ben Dooks <ben-linux@fluff.org>
4628L: linux-mmc@vger.kernel.org 4662L: linux-mmc@vger.kernel.org
4629S: Maintained 4663S: Maintained
4630F: drivers/mmc/host/sdhci-s3c.c 4664F: drivers/mmc/host/sdhci-s3c.c
4631 4665
4632SECURITY SUBSYSTEM 4666SECURITY SUBSYSTEM
4633M: James Morris <jmorris@namei.org> 4667M: James Morris <jmorris@namei.org>
4634L: linux-security-module@vger.kernel.org (suggested Cc:) 4668L: linux-security-module@vger.kernel.org (suggested Cc:)
4635T: git git://www.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git 4669T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
4636W: http://security.wiki.kernel.org/ 4670W: http://security.wiki.kernel.org/
4637S: Supported 4671S: Supported
4638F: security/ 4672F: security/
@@ -4668,12 +4702,11 @@ F: include/linux/ata.h
4668F: include/linux/libata.h 4702F: include/linux/libata.h
4669 4703
4670SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER 4704SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER
4671P: Jayamohan Kallickal 4705M: Jayamohan Kallickal <jayamohank@serverengines.com>
4672M: jayamohank@serverengines.com 4706L: linux-scsi@vger.kernel.org
4673L: linux-scsi@vger.kernel.org 4707W: http://www.serverengines.com
4674W: http://www.serverengines.com 4708S: Supported
4675S: Supported 4709F: drivers/scsi/be2iscsi/
4676F: drivers/scsi/be2iscsi/
4677 4710
4678SERVER ENGINES 10Gbps NIC - BladeEngine 2 DRIVER 4711SERVER ENGINES 10Gbps NIC - BladeEngine 2 DRIVER
4679M: Sathya Perla <sathyap@serverengines.com> 4712M: Sathya Perla <sathyap@serverengines.com>
@@ -4728,8 +4761,7 @@ F: drivers/usb/gadget/lh7a40*
4728F: drivers/usb/host/ohci-lh7a40* 4761F: drivers/usb/host/ohci-lh7a40*
4729 4762
4730SIMPLE FIRMWARE INTERFACE (SFI) 4763SIMPLE FIRMWARE INTERFACE (SFI)
4731P: Len Brown 4764M: Len Brown <lenb@kernel.org>
4732M: lenb@kernel.org
4733L: sfi-devel@simplefirmware.org 4765L: sfi-devel@simplefirmware.org
4734W: http://simplefirmware.org/ 4766W: http://simplefirmware.org/
4735T: git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-sfi-2.6.git 4767T: git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-sfi-2.6.git
@@ -5177,6 +5209,20 @@ L: tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers)
5177S: Maintained 5209S: Maintained
5178F: drivers/char/tpm/ 5210F: drivers/char/tpm/
5179 5211
5212TRACING
5213M: Steven Rostedt <rostedt@goodmis.org>
5214M: Frederic Weisbecker <fweisbec@gmail.com>
5215M: Ingo Molnar <mingo@redhat.com>
5216T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git tracing/core
5217S: Maintained
5218F: Documentation/trace/ftrace.txt
5219F: arch/*/*/*/ftrace.h
5220F: arch/*/kernel/ftrace.c
5221F: include/*/ftrace.h
5222F: include/linux/trace*.h
5223F: include/trace/
5224F: kernel/trace/
5225
5180TRIVIAL PATCHES 5226TRIVIAL PATCHES
5181M: Jiri Kosina <trivial@kernel.org> 5227M: Jiri Kosina <trivial@kernel.org>
5182T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial.git 5228T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial.git
@@ -5607,7 +5653,7 @@ S: Maintained
5607 5653
5608UVESAFB DRIVER 5654UVESAFB DRIVER
5609M: Michal Januszewski <spock@gentoo.org> 5655M: Michal Januszewski <spock@gentoo.org>
5610L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 5656L: linux-fbdev@vger.kernel.org
5611W: http://dev.gentoo.org/~spock/projects/uvesafb/ 5657W: http://dev.gentoo.org/~spock/projects/uvesafb/
5612S: Maintained 5658S: Maintained
5613F: Documentation/fb/uvesafb.txt 5659F: Documentation/fb/uvesafb.txt
@@ -5640,7 +5686,7 @@ F: drivers/mmc/host/via-sdmmc.c
5640VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER 5686VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER
5641M: Joseph Chan <JosephChan@via.com.tw> 5687M: Joseph Chan <JosephChan@via.com.tw>
5642M: Scott Fang <ScottFang@viatech.com.cn> 5688M: Scott Fang <ScottFang@viatech.com.cn>
5643L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers) 5689L: linux-fbdev@vger.kernel.org
5644S: Maintained 5690S: Maintained
5645F: drivers/video/via/ 5691F: drivers/video/via/
5646 5692
@@ -5666,11 +5712,11 @@ F: drivers/vlynq/vlynq.c
5666F: include/linux/vlynq.h 5712F: include/linux/vlynq.h
5667 5713
5668VMWARE VMXNET3 ETHERNET DRIVER 5714VMWARE VMXNET3 ETHERNET DRIVER
5669M: Shreyas Bhatewara <sbhatewara@vmware.com> 5715M: Shreyas Bhatewara <sbhatewara@vmware.com>
5670M: VMware, Inc. <pv-drivers@vmware.com> 5716M: "VMware, Inc." <pv-drivers@vmware.com>
5671L: netdev@vger.kernel.org 5717L: netdev@vger.kernel.org
5672S: Maintained 5718S: Maintained
5673F: drivers/net/vmxnet3/ 5719F: drivers/net/vmxnet3/
5674 5720
5675VOLTAGE AND CURRENT REGULATOR FRAMEWORK 5721VOLTAGE AND CURRENT REGULATOR FRAMEWORK
5676M: Liam Girdwood <lrg@slimlogic.co.uk> 5722M: Liam Girdwood <lrg@slimlogic.co.uk>
@@ -5743,8 +5789,7 @@ S: Maintained
5743F: drivers/scsi/wd7000.c 5789F: drivers/scsi/wd7000.c
5744 5790
5745WINBOND CIR DRIVER 5791WINBOND CIR DRIVER
5746P: David Härdeman 5792M: David Härdeman <david@hardeman.nu>
5747M: david@hardeman.nu
5748S: Maintained 5793S: Maintained
5749F: drivers/input/misc/winbond-cir.c 5794F: drivers/input/misc/winbond-cir.c
5750 5795
@@ -5801,9 +5846,7 @@ F: drivers/input/touchscreen/*wm97*
5801F: include/linux/wm97xx.h 5846F: include/linux/wm97xx.h
5802 5847
5803WOLFSON MICROELECTRONICS PMIC DRIVERS 5848WOLFSON MICROELECTRONICS PMIC DRIVERS
5804P: Mark Brown 5849M: Mark Brown <broonie@opensource.wolfsonmicro.com>
5805M: broonie@opensource.wolfsonmicro.com
5806L: linux-kernel@vger.kernel.org
5807T: git git://opensource.wolfsonmicro.com/linux-2.6-audioplus 5850T: git git://opensource.wolfsonmicro.com/linux-2.6-audioplus
5808W: http://opensource.wolfsonmicro.com/node/8 5851W: http://opensource.wolfsonmicro.com/node/8
5809S: Supported 5852S: Supported
diff --git a/Makefile b/Makefile
index 9425d1de54c7..f5cdb72ba2ce 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1VERSION = 2 1VERSION = 2
2PATCHLEVEL = 6 2PATCHLEVEL = 6
3SUBLEVEL = 32 3SUBLEVEL = 32
4EXTRAVERSION = -rc5 4EXTRAVERSION =
5NAME = Man-Eating Seals of Antiquity 5NAME = Man-Eating Seals of Antiquity
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
@@ -221,7 +221,7 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
221 221
222HOSTCC = gcc 222HOSTCC = gcc
223HOSTCXX = g++ 223HOSTCXX = g++
224HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer 224HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
225HOSTCXXFLAGS = -O2 225HOSTCXXFLAGS = -O2
226 226
227# Decide whether to build built-in, modular, or both. 227# Decide whether to build built-in, modular, or both.
diff --git a/arch/alpha/boot/tools/objstrip.c b/arch/alpha/boot/tools/objstrip.c
index 9d0727d18aee..367d53d031fc 100644
--- a/arch/alpha/boot/tools/objstrip.c
+++ b/arch/alpha/boot/tools/objstrip.c
@@ -35,7 +35,7 @@
35const char * prog_name; 35const char * prog_name;
36 36
37 37
38void 38static void
39usage (void) 39usage (void)
40{ 40{
41 fprintf(stderr, 41 fprintf(stderr,
diff --git a/arch/alpha/include/asm/fcntl.h b/arch/alpha/include/asm/fcntl.h
index e42823e954aa..25da0017ec87 100644
--- a/arch/alpha/include/asm/fcntl.h
+++ b/arch/alpha/include/asm/fcntl.h
@@ -26,8 +26,6 @@
26#define F_GETOWN 6 /* for sockets. */ 26#define F_GETOWN 6 /* for sockets. */
27#define F_SETSIG 10 /* for sockets. */ 27#define F_SETSIG 10 /* for sockets. */
28#define F_GETSIG 11 /* for sockets. */ 28#define F_GETSIG 11 /* for sockets. */
29#define F_SETOWN_EX 12
30#define F_GETOWN_EX 13
31 29
32/* for posix fcntl() and lockf() */ 30/* for posix fcntl() and lockf() */
33#define F_RDLCK 1 31#define F_RDLCK 1
diff --git a/arch/alpha/include/asm/thread_info.h b/arch/alpha/include/asm/thread_info.h
index 5076a8860b18..b3e888638bb7 100644
--- a/arch/alpha/include/asm/thread_info.h
+++ b/arch/alpha/include/asm/thread_info.h
@@ -50,32 +50,35 @@ struct thread_info {
50register struct thread_info *__current_thread_info __asm__("$8"); 50register struct thread_info *__current_thread_info __asm__("$8");
51#define current_thread_info() __current_thread_info 51#define current_thread_info() __current_thread_info
52 52
53#endif /* __ASSEMBLY__ */
54
53/* Thread information allocation. */ 55/* Thread information allocation. */
54#define THREAD_SIZE_ORDER 1 56#define THREAD_SIZE_ORDER 1
55#define THREAD_SIZE (2*PAGE_SIZE) 57#define THREAD_SIZE (2*PAGE_SIZE)
56 58
57#endif /* __ASSEMBLY__ */
58
59#define PREEMPT_ACTIVE 0x40000000 59#define PREEMPT_ACTIVE 0x40000000
60 60
61/* 61/*
62 * Thread information flags: 62 * Thread information flags:
63 * - these are process state flags and used from assembly 63 * - these are process state flags and used from assembly
64 * - pending work-to-be-done flags come first to fit in and immediate operand. 64 * - pending work-to-be-done flags come first and must be assigned to be
65 * within bits 0 to 7 to fit in and immediate operand.
66 * - ALPHA_UAC_SHIFT below must be kept consistent with the unaligned
67 * control flags.
65 * 68 *
66 * TIF_SYSCALL_TRACE is known to be 0 via blbs. 69 * TIF_SYSCALL_TRACE is known to be 0 via blbs.
67 */ 70 */
68#define TIF_SYSCALL_TRACE 0 /* syscall trace active */ 71#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
69#define TIF_SIGPENDING 1 /* signal pending */ 72#define TIF_NOTIFY_RESUME 1 /* callback before returning to user */
70#define TIF_NEED_RESCHED 2 /* rescheduling necessary */ 73#define TIF_SIGPENDING 2 /* signal pending */
71#define TIF_POLLING_NRFLAG 3 /* poll_idle is polling NEED_RESCHED */ 74#define TIF_NEED_RESCHED 3 /* rescheduling necessary */
72#define TIF_DIE_IF_KERNEL 4 /* dik recursion lock */ 75#define TIF_POLLING_NRFLAG 8 /* poll_idle is polling NEED_RESCHED */
73#define TIF_UAC_NOPRINT 5 /* see sysinfo.h */ 76#define TIF_DIE_IF_KERNEL 9 /* dik recursion lock */
74#define TIF_UAC_NOFIX 6 77#define TIF_UAC_NOPRINT 10 /* see sysinfo.h */
75#define TIF_UAC_SIGBUS 7 78#define TIF_UAC_NOFIX 11
76#define TIF_MEMDIE 8 79#define TIF_UAC_SIGBUS 12
77#define TIF_RESTORE_SIGMASK 9 /* restore signal mask in do_signal */ 80#define TIF_MEMDIE 13
78#define TIF_NOTIFY_RESUME 10 /* callback before returning to user */ 81#define TIF_RESTORE_SIGMASK 14 /* restore signal mask in do_signal */
79#define TIF_FREEZE 16 /* is freezing for suspend */ 82#define TIF_FREEZE 16 /* is freezing for suspend */
80 83
81#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) 84#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
@@ -94,7 +97,7 @@ register struct thread_info *__current_thread_info __asm__("$8");
94#define _TIF_ALLWORK_MASK (_TIF_WORK_MASK \ 97#define _TIF_ALLWORK_MASK (_TIF_WORK_MASK \
95 | _TIF_SYSCALL_TRACE) 98 | _TIF_SYSCALL_TRACE)
96 99
97#define ALPHA_UAC_SHIFT 6 100#define ALPHA_UAC_SHIFT 10
98#define ALPHA_UAC_MASK (1 << TIF_UAC_NOPRINT | 1 << TIF_UAC_NOFIX | \ 101#define ALPHA_UAC_MASK (1 << TIF_UAC_NOPRINT | 1 << TIF_UAC_NOFIX | \
99 1 << TIF_UAC_SIGBUS) 102 1 << TIF_UAC_SIGBUS)
100 103
diff --git a/arch/alpha/kernel/core_marvel.c b/arch/alpha/kernel/core_marvel.c
index 8e059e58b0ac..53dd2f1a53aa 100644
--- a/arch/alpha/kernel/core_marvel.c
+++ b/arch/alpha/kernel/core_marvel.c
@@ -1103,6 +1103,8 @@ marvel_agp_info(void)
1103 * Allocate the info structure. 1103 * Allocate the info structure.
1104 */ 1104 */
1105 agp = kmalloc(sizeof(*agp), GFP_KERNEL); 1105 agp = kmalloc(sizeof(*agp), GFP_KERNEL);
1106 if (!agp)
1107 return NULL;
1106 1108
1107 /* 1109 /*
1108 * Fill it in. 1110 * Fill it in.
diff --git a/arch/alpha/kernel/core_titan.c b/arch/alpha/kernel/core_titan.c
index 76686497b1e2..219bf271c0ba 100644
--- a/arch/alpha/kernel/core_titan.c
+++ b/arch/alpha/kernel/core_titan.c
@@ -757,6 +757,8 @@ titan_agp_info(void)
757 * Allocate the info structure. 757 * Allocate the info structure.
758 */ 758 */
759 agp = kmalloc(sizeof(*agp), GFP_KERNEL); 759 agp = kmalloc(sizeof(*agp), GFP_KERNEL);
760 if (!agp)
761 return NULL;
760 762
761 /* 763 /*
762 * Fill it in. 764 * Fill it in.
diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c
index cc7834661427..c0de072b8305 100644
--- a/arch/alpha/kernel/irq.c
+++ b/arch/alpha/kernel/irq.c
@@ -92,7 +92,7 @@ show_interrupts(struct seq_file *p, void *v)
92 for_each_online_cpu(j) 92 for_each_online_cpu(j)
93 seq_printf(p, "%10u ", kstat_irqs_cpu(irq, j)); 93 seq_printf(p, "%10u ", kstat_irqs_cpu(irq, j));
94#endif 94#endif
95 seq_printf(p, " %14s", irq_desc[irq].chip->typename); 95 seq_printf(p, " %14s", irq_desc[irq].chip->name);
96 seq_printf(p, " %c%s", 96 seq_printf(p, " %c%s",
97 (action->flags & IRQF_DISABLED)?'+':' ', 97 (action->flags & IRQF_DISABLED)?'+':' ',
98 action->name); 98 action->name);
diff --git a/arch/alpha/kernel/irq_alpha.c b/arch/alpha/kernel/irq_alpha.c
index 38c805dfc544..cfde865b78e0 100644
--- a/arch/alpha/kernel/irq_alpha.c
+++ b/arch/alpha/kernel/irq_alpha.c
@@ -228,7 +228,7 @@ struct irqaction timer_irqaction = {
228}; 228};
229 229
230static struct irq_chip rtc_irq_type = { 230static struct irq_chip rtc_irq_type = {
231 .typename = "RTC", 231 .name = "RTC",
232 .startup = rtc_startup, 232 .startup = rtc_startup,
233 .shutdown = rtc_enable_disable, 233 .shutdown = rtc_enable_disable,
234 .enable = rtc_enable_disable, 234 .enable = rtc_enable_disable,
diff --git a/arch/alpha/kernel/irq_i8259.c b/arch/alpha/kernel/irq_i8259.c
index 50bfec9b588f..83a9ac280890 100644
--- a/arch/alpha/kernel/irq_i8259.c
+++ b/arch/alpha/kernel/irq_i8259.c
@@ -84,7 +84,7 @@ i8259a_end_irq(unsigned int irq)
84} 84}
85 85
86struct irq_chip i8259a_irq_type = { 86struct irq_chip i8259a_irq_type = {
87 .typename = "XT-PIC", 87 .name = "XT-PIC",
88 .startup = i8259a_startup_irq, 88 .startup = i8259a_startup_irq,
89 .shutdown = i8259a_disable_irq, 89 .shutdown = i8259a_disable_irq,
90 .enable = i8259a_enable_irq, 90 .enable = i8259a_enable_irq,
diff --git a/arch/alpha/kernel/irq_pyxis.c b/arch/alpha/kernel/irq_pyxis.c
index 69199a76ec4a..989ce46a0cf3 100644
--- a/arch/alpha/kernel/irq_pyxis.c
+++ b/arch/alpha/kernel/irq_pyxis.c
@@ -71,7 +71,7 @@ pyxis_mask_and_ack_irq(unsigned int irq)
71} 71}
72 72
73static struct irq_chip pyxis_irq_type = { 73static struct irq_chip pyxis_irq_type = {
74 .typename = "PYXIS", 74 .name = "PYXIS",
75 .startup = pyxis_startup_irq, 75 .startup = pyxis_startup_irq,
76 .shutdown = pyxis_disable_irq, 76 .shutdown = pyxis_disable_irq,
77 .enable = pyxis_enable_irq, 77 .enable = pyxis_enable_irq,
diff --git a/arch/alpha/kernel/irq_srm.c b/arch/alpha/kernel/irq_srm.c
index 85229369a1f8..d63e93e1e8bf 100644
--- a/arch/alpha/kernel/irq_srm.c
+++ b/arch/alpha/kernel/irq_srm.c
@@ -49,7 +49,7 @@ srm_end_irq(unsigned int irq)
49 49
50/* Handle interrupts from the SRM, assuming no additional weirdness. */ 50/* Handle interrupts from the SRM, assuming no additional weirdness. */
51static struct irq_chip srm_irq_type = { 51static struct irq_chip srm_irq_type = {
52 .typename = "SRM", 52 .name = "SRM",
53 .startup = srm_startup_irq, 53 .startup = srm_startup_irq,
54 .shutdown = srm_disable_irq, 54 .shutdown = srm_disable_irq,
55 .enable = srm_enable_irq, 55 .enable = srm_enable_irq,
diff --git a/arch/alpha/kernel/sys_alcor.c b/arch/alpha/kernel/sys_alcor.c
index 382035ef7394..20a30b8b9655 100644
--- a/arch/alpha/kernel/sys_alcor.c
+++ b/arch/alpha/kernel/sys_alcor.c
@@ -90,7 +90,7 @@ alcor_end_irq(unsigned int irq)
90} 90}
91 91
92static struct irq_chip alcor_irq_type = { 92static struct irq_chip alcor_irq_type = {
93 .typename = "ALCOR", 93 .name = "ALCOR",
94 .startup = alcor_startup_irq, 94 .startup = alcor_startup_irq,
95 .shutdown = alcor_disable_irq, 95 .shutdown = alcor_disable_irq,
96 .enable = alcor_enable_irq, 96 .enable = alcor_enable_irq,
diff --git a/arch/alpha/kernel/sys_cabriolet.c b/arch/alpha/kernel/sys_cabriolet.c
index ed349436732b..affd0f3f25df 100644
--- a/arch/alpha/kernel/sys_cabriolet.c
+++ b/arch/alpha/kernel/sys_cabriolet.c
@@ -72,7 +72,7 @@ cabriolet_end_irq(unsigned int irq)
72} 72}
73 73
74static struct irq_chip cabriolet_irq_type = { 74static struct irq_chip cabriolet_irq_type = {
75 .typename = "CABRIOLET", 75 .name = "CABRIOLET",
76 .startup = cabriolet_startup_irq, 76 .startup = cabriolet_startup_irq,
77 .shutdown = cabriolet_disable_irq, 77 .shutdown = cabriolet_disable_irq,
78 .enable = cabriolet_enable_irq, 78 .enable = cabriolet_enable_irq,
diff --git a/arch/alpha/kernel/sys_dp264.c b/arch/alpha/kernel/sys_dp264.c
index 46e70ece5176..d64e1e497e76 100644
--- a/arch/alpha/kernel/sys_dp264.c
+++ b/arch/alpha/kernel/sys_dp264.c
@@ -199,7 +199,7 @@ clipper_set_affinity(unsigned int irq, const struct cpumask *affinity)
199} 199}
200 200
201static struct irq_chip dp264_irq_type = { 201static struct irq_chip dp264_irq_type = {
202 .typename = "DP264", 202 .name = "DP264",
203 .startup = dp264_startup_irq, 203 .startup = dp264_startup_irq,
204 .shutdown = dp264_disable_irq, 204 .shutdown = dp264_disable_irq,
205 .enable = dp264_enable_irq, 205 .enable = dp264_enable_irq,
@@ -210,7 +210,7 @@ static struct irq_chip dp264_irq_type = {
210}; 210};
211 211
212static struct irq_chip clipper_irq_type = { 212static struct irq_chip clipper_irq_type = {
213 .typename = "CLIPPER", 213 .name = "CLIPPER",
214 .startup = clipper_startup_irq, 214 .startup = clipper_startup_irq,
215 .shutdown = clipper_disable_irq, 215 .shutdown = clipper_disable_irq,
216 .enable = clipper_enable_irq, 216 .enable = clipper_enable_irq,
diff --git a/arch/alpha/kernel/sys_eb64p.c b/arch/alpha/kernel/sys_eb64p.c
index 660c23ef661f..df2090ce5e7f 100644
--- a/arch/alpha/kernel/sys_eb64p.c
+++ b/arch/alpha/kernel/sys_eb64p.c
@@ -70,7 +70,7 @@ eb64p_end_irq(unsigned int irq)
70} 70}
71 71
72static struct irq_chip eb64p_irq_type = { 72static struct irq_chip eb64p_irq_type = {
73 .typename = "EB64P", 73 .name = "EB64P",
74 .startup = eb64p_startup_irq, 74 .startup = eb64p_startup_irq,
75 .shutdown = eb64p_disable_irq, 75 .shutdown = eb64p_disable_irq,
76 .enable = eb64p_enable_irq, 76 .enable = eb64p_enable_irq,
diff --git a/arch/alpha/kernel/sys_eiger.c b/arch/alpha/kernel/sys_eiger.c
index b99ea488d844..3ca1dbcf4044 100644
--- a/arch/alpha/kernel/sys_eiger.c
+++ b/arch/alpha/kernel/sys_eiger.c
@@ -81,7 +81,7 @@ eiger_end_irq(unsigned int irq)
81} 81}
82 82
83static struct irq_chip eiger_irq_type = { 83static struct irq_chip eiger_irq_type = {
84 .typename = "EIGER", 84 .name = "EIGER",
85 .startup = eiger_startup_irq, 85 .startup = eiger_startup_irq,
86 .shutdown = eiger_disable_irq, 86 .shutdown = eiger_disable_irq,
87 .enable = eiger_enable_irq, 87 .enable = eiger_enable_irq,
diff --git a/arch/alpha/kernel/sys_jensen.c b/arch/alpha/kernel/sys_jensen.c
index ef0b83a070ac..7a7ae36fff91 100644
--- a/arch/alpha/kernel/sys_jensen.c
+++ b/arch/alpha/kernel/sys_jensen.c
@@ -119,7 +119,7 @@ jensen_local_end(unsigned int irq)
119} 119}
120 120
121static struct irq_chip jensen_local_irq_type = { 121static struct irq_chip jensen_local_irq_type = {
122 .typename = "LOCAL", 122 .name = "LOCAL",
123 .startup = jensen_local_startup, 123 .startup = jensen_local_startup,
124 .shutdown = jensen_local_shutdown, 124 .shutdown = jensen_local_shutdown,
125 .enable = jensen_local_enable, 125 .enable = jensen_local_enable,
diff --git a/arch/alpha/kernel/sys_marvel.c b/arch/alpha/kernel/sys_marvel.c
index bbfc4f20ca72..0bb3b5c4f693 100644
--- a/arch/alpha/kernel/sys_marvel.c
+++ b/arch/alpha/kernel/sys_marvel.c
@@ -170,7 +170,7 @@ marvel_irq_noop_return(unsigned int irq)
170} 170}
171 171
172static struct irq_chip marvel_legacy_irq_type = { 172static struct irq_chip marvel_legacy_irq_type = {
173 .typename = "LEGACY", 173 .name = "LEGACY",
174 .startup = marvel_irq_noop_return, 174 .startup = marvel_irq_noop_return,
175 .shutdown = marvel_irq_noop, 175 .shutdown = marvel_irq_noop,
176 .enable = marvel_irq_noop, 176 .enable = marvel_irq_noop,
@@ -180,7 +180,7 @@ static struct irq_chip marvel_legacy_irq_type = {
180}; 180};
181 181
182static struct irq_chip io7_lsi_irq_type = { 182static struct irq_chip io7_lsi_irq_type = {
183 .typename = "LSI", 183 .name = "LSI",
184 .startup = io7_startup_irq, 184 .startup = io7_startup_irq,
185 .shutdown = io7_disable_irq, 185 .shutdown = io7_disable_irq,
186 .enable = io7_enable_irq, 186 .enable = io7_enable_irq,
@@ -190,7 +190,7 @@ static struct irq_chip io7_lsi_irq_type = {
190}; 190};
191 191
192static struct irq_chip io7_msi_irq_type = { 192static struct irq_chip io7_msi_irq_type = {
193 .typename = "MSI", 193 .name = "MSI",
194 .startup = io7_startup_irq, 194 .startup = io7_startup_irq,
195 .shutdown = io7_disable_irq, 195 .shutdown = io7_disable_irq,
196 .enable = io7_enable_irq, 196 .enable = io7_enable_irq,
diff --git a/arch/alpha/kernel/sys_mikasa.c b/arch/alpha/kernel/sys_mikasa.c
index 4e366641a08e..ee8865169811 100644
--- a/arch/alpha/kernel/sys_mikasa.c
+++ b/arch/alpha/kernel/sys_mikasa.c
@@ -69,7 +69,7 @@ mikasa_end_irq(unsigned int irq)
69} 69}
70 70
71static struct irq_chip mikasa_irq_type = { 71static struct irq_chip mikasa_irq_type = {
72 .typename = "MIKASA", 72 .name = "MIKASA",
73 .startup = mikasa_startup_irq, 73 .startup = mikasa_startup_irq,
74 .shutdown = mikasa_disable_irq, 74 .shutdown = mikasa_disable_irq,
75 .enable = mikasa_enable_irq, 75 .enable = mikasa_enable_irq,
diff --git a/arch/alpha/kernel/sys_noritake.c b/arch/alpha/kernel/sys_noritake.c
index 35753a173bac..86503fe73a88 100644
--- a/arch/alpha/kernel/sys_noritake.c
+++ b/arch/alpha/kernel/sys_noritake.c
@@ -74,7 +74,7 @@ noritake_end_irq(unsigned int irq)
74} 74}
75 75
76static struct irq_chip noritake_irq_type = { 76static struct irq_chip noritake_irq_type = {
77 .typename = "NORITAKE", 77 .name = "NORITAKE",
78 .startup = noritake_startup_irq, 78 .startup = noritake_startup_irq,
79 .shutdown = noritake_disable_irq, 79 .shutdown = noritake_disable_irq,
80 .enable = noritake_enable_irq, 80 .enable = noritake_enable_irq,
diff --git a/arch/alpha/kernel/sys_rawhide.c b/arch/alpha/kernel/sys_rawhide.c
index f3aec7e085c8..26c322bf89ee 100644
--- a/arch/alpha/kernel/sys_rawhide.c
+++ b/arch/alpha/kernel/sys_rawhide.c
@@ -136,7 +136,7 @@ rawhide_end_irq(unsigned int irq)
136} 136}
137 137
138static struct irq_chip rawhide_irq_type = { 138static struct irq_chip rawhide_irq_type = {
139 .typename = "RAWHIDE", 139 .name = "RAWHIDE",
140 .startup = rawhide_startup_irq, 140 .startup = rawhide_startup_irq,
141 .shutdown = rawhide_disable_irq, 141 .shutdown = rawhide_disable_irq,
142 .enable = rawhide_enable_irq, 142 .enable = rawhide_enable_irq,
diff --git a/arch/alpha/kernel/sys_ruffian.c b/arch/alpha/kernel/sys_ruffian.c
index d9f9cfeb9931..8de1046fe91e 100644
--- a/arch/alpha/kernel/sys_ruffian.c
+++ b/arch/alpha/kernel/sys_ruffian.c
@@ -66,7 +66,7 @@ ruffian_init_irq(void)
66 common_init_isa_dma(); 66 common_init_isa_dma();
67} 67}
68 68
69#define RUFFIAN_LATCH ((PIT_TICK_RATE + HZ / 2) / HZ) 69#define RUFFIAN_LATCH DIV_ROUND_CLOSEST(PIT_TICK_RATE, HZ)
70 70
71static void __init 71static void __init
72ruffian_init_rtc(void) 72ruffian_init_rtc(void)
diff --git a/arch/alpha/kernel/sys_rx164.c b/arch/alpha/kernel/sys_rx164.c
index fc9246373452..be161129eab9 100644
--- a/arch/alpha/kernel/sys_rx164.c
+++ b/arch/alpha/kernel/sys_rx164.c
@@ -73,7 +73,7 @@ rx164_end_irq(unsigned int irq)
73} 73}
74 74
75static struct irq_chip rx164_irq_type = { 75static struct irq_chip rx164_irq_type = {
76 .typename = "RX164", 76 .name = "RX164",
77 .startup = rx164_startup_irq, 77 .startup = rx164_startup_irq,
78 .shutdown = rx164_disable_irq, 78 .shutdown = rx164_disable_irq,
79 .enable = rx164_enable_irq, 79 .enable = rx164_enable_irq,
diff --git a/arch/alpha/kernel/sys_sable.c b/arch/alpha/kernel/sys_sable.c
index 426eb6906d01..b2abe27a23cf 100644
--- a/arch/alpha/kernel/sys_sable.c
+++ b/arch/alpha/kernel/sys_sable.c
@@ -502,7 +502,7 @@ sable_lynx_mask_and_ack_irq(unsigned int irq)
502} 502}
503 503
504static struct irq_chip sable_lynx_irq_type = { 504static struct irq_chip sable_lynx_irq_type = {
505 .typename = "SABLE/LYNX", 505 .name = "SABLE/LYNX",
506 .startup = sable_lynx_startup_irq, 506 .startup = sable_lynx_startup_irq,
507 .shutdown = sable_lynx_disable_irq, 507 .shutdown = sable_lynx_disable_irq,
508 .enable = sable_lynx_enable_irq, 508 .enable = sable_lynx_enable_irq,
diff --git a/arch/alpha/kernel/sys_takara.c b/arch/alpha/kernel/sys_takara.c
index 830318c21661..230464885b5c 100644
--- a/arch/alpha/kernel/sys_takara.c
+++ b/arch/alpha/kernel/sys_takara.c
@@ -75,7 +75,7 @@ takara_end_irq(unsigned int irq)
75} 75}
76 76
77static struct irq_chip takara_irq_type = { 77static struct irq_chip takara_irq_type = {
78 .typename = "TAKARA", 78 .name = "TAKARA",
79 .startup = takara_startup_irq, 79 .startup = takara_startup_irq,
80 .shutdown = takara_disable_irq, 80 .shutdown = takara_disable_irq,
81 .enable = takara_enable_irq, 81 .enable = takara_enable_irq,
diff --git a/arch/alpha/kernel/sys_titan.c b/arch/alpha/kernel/sys_titan.c
index 88978fc60f83..288053342c83 100644
--- a/arch/alpha/kernel/sys_titan.c
+++ b/arch/alpha/kernel/sys_titan.c
@@ -195,7 +195,7 @@ init_titan_irqs(struct irq_chip * ops, int imin, int imax)
195} 195}
196 196
197static struct irq_chip titan_irq_type = { 197static struct irq_chip titan_irq_type = {
198 .typename = "TITAN", 198 .name = "TITAN",
199 .startup = titan_startup_irq, 199 .startup = titan_startup_irq,
200 .shutdown = titan_disable_irq, 200 .shutdown = titan_disable_irq,
201 .enable = titan_enable_irq, 201 .enable = titan_enable_irq,
diff --git a/arch/alpha/kernel/sys_wildfire.c b/arch/alpha/kernel/sys_wildfire.c
index e91b4c3838a8..62fd972e18ef 100644
--- a/arch/alpha/kernel/sys_wildfire.c
+++ b/arch/alpha/kernel/sys_wildfire.c
@@ -158,7 +158,7 @@ wildfire_end_irq(unsigned int irq)
158} 158}
159 159
160static struct irq_chip wildfire_irq_type = { 160static struct irq_chip wildfire_irq_type = {
161 .typename = "WILDFIRE", 161 .name = "WILDFIRE",
162 .startup = wildfire_startup_irq, 162 .startup = wildfire_startup_irq,
163 .shutdown = wildfire_disable_irq, 163 .shutdown = wildfire_disable_irq,
164 .enable = wildfire_enable_irq, 164 .enable = wildfire_enable_irq,
diff --git a/arch/arm/configs/ams_delta_defconfig b/arch/arm/configs/ams_delta_defconfig
index 764732529ea3..e8f7380b67d6 100644
--- a/arch/arm/configs/ams_delta_defconfig
+++ b/arch/arm/configs/ams_delta_defconfig
@@ -55,10 +55,10 @@ CONFIG_BLK_DEV_INITRD=y
55CONFIG_INITRAMFS_SOURCE="" 55CONFIG_INITRAMFS_SOURCE=""
56CONFIG_CC_OPTIMIZE_FOR_SIZE=y 56CONFIG_CC_OPTIMIZE_FOR_SIZE=y
57CONFIG_SYSCTL=y 57CONFIG_SYSCTL=y
58# CONFIG_EMBEDDED is not set 58CONFIG_EMBEDDED=y
59CONFIG_UID16=y 59CONFIG_UID16=y
60CONFIG_SYSCTL_SYSCALL=y 60CONFIG_SYSCTL_SYSCALL=y
61CONFIG_KALLSYMS=y 61# CONFIG_KALLSYMS is not set
62# CONFIG_KALLSYMS_ALL is not set 62# CONFIG_KALLSYMS_ALL is not set
63# CONFIG_KALLSYMS_EXTRA_PASS is not set 63# CONFIG_KALLSYMS_EXTRA_PASS is not set
64CONFIG_HOTPLUG=y 64CONFIG_HOTPLUG=y
@@ -224,7 +224,7 @@ CONFIG_CPU_CP15_MMU=y
224# 224#
225# Processor Features 225# Processor Features
226# 226#
227# CONFIG_ARM_THUMB is not set 227CONFIG_ARM_THUMB=y
228# CONFIG_CPU_ICACHE_DISABLE is not set 228# CONFIG_CPU_ICACHE_DISABLE is not set
229# CONFIG_CPU_DCACHE_DISABLE is not set 229# CONFIG_CPU_DCACHE_DISABLE is not set
230CONFIG_CPU_DCACHE_WRITETHROUGH=y 230CONFIG_CPU_DCACHE_WRITETHROUGH=y
@@ -248,7 +248,7 @@ CONFIG_CPU_DCACHE_WRITETHROUGH=y
248# CONFIG_HIGH_RES_TIMERS is not set 248# CONFIG_HIGH_RES_TIMERS is not set
249CONFIG_PREEMPT=y 249CONFIG_PREEMPT=y
250CONFIG_HZ=100 250CONFIG_HZ=100
251# CONFIG_AEABI is not set 251CONFIG_AEABI=y
252# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set 252# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
253CONFIG_SELECT_MEMORY_MODEL=y 253CONFIG_SELECT_MEMORY_MODEL=y
254CONFIG_FLATMEM_MANUAL=y 254CONFIG_FLATMEM_MANUAL=y
@@ -299,7 +299,9 @@ CONFIG_BINFMT_ELF=y
299# 299#
300# Power management options 300# Power management options
301# 301#
302# CONFIG_PM is not set 302CONFIG_PM=y
303# CONFIG_SUSPEND is not set
304CONFIG_PM_RUNTIME=y
303 305
304# 306#
305# Networking 307# Networking
@@ -670,7 +672,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
670CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 672CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
671# CONFIG_INPUT_JOYDEV is not set 673# CONFIG_INPUT_JOYDEV is not set
672# CONFIG_INPUT_TSDEV is not set 674# CONFIG_INPUT_TSDEV is not set
673# CONFIG_INPUT_EVDEV is not set 675CONFIG_INPUT_EVDEV=y
674# CONFIG_INPUT_EVBUG is not set 676# CONFIG_INPUT_EVBUG is not set
675 677
676# 678#
@@ -784,6 +786,7 @@ CONFIG_I2C_OMAP=y
784# 786#
785# CONFIG_SPI is not set 787# CONFIG_SPI is not set
786# CONFIG_SPI_MASTER is not set 788# CONFIG_SPI_MASTER is not set
789CONFIG_GPIO_SYSFS=y
787 790
788# 791#
789# Dallas's 1-wire bus 792# Dallas's 1-wire bus
@@ -820,6 +823,7 @@ CONFIG_LEDS_AMS_DELTA=y
820CONFIG_LEDS_TRIGGERS=y 823CONFIG_LEDS_TRIGGERS=y
821CONFIG_LEDS_TRIGGER_TIMER=y 824CONFIG_LEDS_TRIGGER_TIMER=y
822CONFIG_LEDS_TRIGGER_HEARTBEAT=y 825CONFIG_LEDS_TRIGGER_HEARTBEAT=y
826CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
823 827
824# 828#
825# Multimedia devices 829# Multimedia devices
@@ -896,7 +900,13 @@ CONFIG_LOGO_LINUX_CLUT224=y
896# 900#
897# Sound 901# Sound
898# 902#
899# CONFIG_SOUND is not set 903CONFIG_SOUND=y
904CONFIG_SND=y
905CONFIG_SND_MIXER_OSS=y
906CONFIG_SND_PCM_OSS=y
907CONFIG_SND_SOC=y
908CONFIG_SND_OMAP_SOC=y
909CONFIG_SND_OMAP_SOC_AMS_DELTA=y
900 910
901# 911#
902# HID Devices 912# HID Devices
diff --git a/arch/arm/configs/kirkwood_defconfig b/arch/arm/configs/kirkwood_defconfig
index af74cc2de8b6..bcfade33bca9 100644
--- a/arch/arm/configs/kirkwood_defconfig
+++ b/arch/arm/configs/kirkwood_defconfig
@@ -1,15 +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.30-rc4 3# Linux kernel version: 2.6.32-rc6
4# Mon May 4 11:58:57 2009 4# Sat Nov 7 20:31:18 2009
5# 5#
6CONFIG_ARM=y 6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y 7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
8CONFIG_GENERIC_GPIO=y 8CONFIG_GENERIC_GPIO=y
9CONFIG_GENERIC_TIME=y 9CONFIG_GENERIC_TIME=y
10CONFIG_GENERIC_CLOCKEVENTS=y 10CONFIG_GENERIC_CLOCKEVENTS=y
11CONFIG_MMU=y
12# CONFIG_NO_IOPORT is not set
13CONFIG_GENERIC_HARDIRQS=y 11CONFIG_GENERIC_HARDIRQS=y
14CONFIG_STACKTRACE_SUPPORT=y 12CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_HAVE_LATENCYTOP_SUPPORT=y 13CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -18,13 +16,12 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
18CONFIG_HARDIRQS_SW_RESEND=y 16CONFIG_HARDIRQS_SW_RESEND=y
19CONFIG_GENERIC_IRQ_PROBE=y 17CONFIG_GENERIC_IRQ_PROBE=y
20CONFIG_RWSEM_GENERIC_SPINLOCK=y 18CONFIG_RWSEM_GENERIC_SPINLOCK=y
21# CONFIG_ARCH_HAS_ILOG2_U32 is not set
22# CONFIG_ARCH_HAS_ILOG2_U64 is not set
23CONFIG_GENERIC_HWEIGHT=y 19CONFIG_GENERIC_HWEIGHT=y
24CONFIG_GENERIC_CALIBRATE_DELAY=y 20CONFIG_GENERIC_CALIBRATE_DELAY=y
25CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 21CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
26CONFIG_VECTORS_BASE=0xffff0000 22CONFIG_VECTORS_BASE=0xffff0000
27CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24CONFIG_CONSTRUCTORS=y
28 25
29# 26#
30# General setup 27# General setup
@@ -46,11 +43,12 @@ CONFIG_SYSVIPC_SYSCTL=y
46# 43#
47# RCU Subsystem 44# RCU Subsystem
48# 45#
49CONFIG_CLASSIC_RCU=y 46CONFIG_TREE_RCU=y
50# CONFIG_TREE_RCU is not set 47# CONFIG_TREE_PREEMPT_RCU is not set
51# CONFIG_PREEMPT_RCU is not set 48# CONFIG_RCU_TRACE is not set
49CONFIG_RCU_FANOUT=32
50# CONFIG_RCU_FANOUT_EXACT is not set
52# CONFIG_TREE_RCU_TRACE is not set 51# CONFIG_TREE_RCU_TRACE is not set
53# CONFIG_PREEMPT_RCU_TRACE is not set
54# CONFIG_IKCONFIG is not set 52# CONFIG_IKCONFIG is not set
55CONFIG_LOG_BUF_SHIFT=19 53CONFIG_LOG_BUF_SHIFT=19
56# CONFIG_GROUP_SCHED is not set 54# CONFIG_GROUP_SCHED is not set
@@ -73,7 +71,6 @@ CONFIG_SYSCTL_SYSCALL=y
73CONFIG_KALLSYMS=y 71CONFIG_KALLSYMS=y
74# CONFIG_KALLSYMS_ALL is not set 72# CONFIG_KALLSYMS_ALL is not set
75# CONFIG_KALLSYMS_EXTRA_PASS is not set 73# CONFIG_KALLSYMS_EXTRA_PASS is not set
76# CONFIG_STRIP_ASM_SYMS is not set
77CONFIG_HOTPLUG=y 74CONFIG_HOTPLUG=y
78CONFIG_PRINTK=y 75CONFIG_PRINTK=y
79CONFIG_BUG=y 76CONFIG_BUG=y
@@ -86,6 +83,10 @@ CONFIG_TIMERFD=y
86CONFIG_EVENTFD=y 83CONFIG_EVENTFD=y
87CONFIG_SHMEM=y 84CONFIG_SHMEM=y
88CONFIG_AIO=y 85CONFIG_AIO=y
86
87#
88# Kernel Performance Events And Counters
89#
89CONFIG_VM_EVENT_COUNTERS=y 90CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_PCI_QUIRKS=y 91CONFIG_PCI_QUIRKS=y
91CONFIG_SLUB_DEBUG=y 92CONFIG_SLUB_DEBUG=y
@@ -95,13 +96,17 @@ CONFIG_SLUB=y
95# CONFIG_SLOB is not set 96# CONFIG_SLOB is not set
96CONFIG_PROFILING=y 97CONFIG_PROFILING=y
97CONFIG_TRACEPOINTS=y 98CONFIG_TRACEPOINTS=y
98# CONFIG_MARKERS is not set
99CONFIG_OPROFILE=y 99CONFIG_OPROFILE=y
100CONFIG_HAVE_OPROFILE=y 100CONFIG_HAVE_OPROFILE=y
101CONFIG_KPROBES=y 101CONFIG_KPROBES=y
102CONFIG_KRETPROBES=y 102CONFIG_KRETPROBES=y
103CONFIG_HAVE_KPROBES=y 103CONFIG_HAVE_KPROBES=y
104CONFIG_HAVE_KRETPROBES=y 104CONFIG_HAVE_KRETPROBES=y
105
106#
107# GCOV-based kernel profiling
108#
109# CONFIG_GCOV_KERNEL is not set
105# CONFIG_SLOW_WORK is not set 110# CONFIG_SLOW_WORK is not set
106CONFIG_HAVE_GENERIC_DMA_COHERENT=y 111CONFIG_HAVE_GENERIC_DMA_COHERENT=y
107CONFIG_SLABINFO=y 112CONFIG_SLABINFO=y
@@ -114,7 +119,7 @@ CONFIG_MODULE_UNLOAD=y
114# CONFIG_MODVERSIONS is not set 119# CONFIG_MODVERSIONS is not set
115# CONFIG_MODULE_SRCVERSION_ALL is not set 120# CONFIG_MODULE_SRCVERSION_ALL is not set
116CONFIG_BLOCK=y 121CONFIG_BLOCK=y
117# CONFIG_LBD is not set 122CONFIG_LBDAF=y
118# CONFIG_BLK_DEV_BSG is not set 123# CONFIG_BLK_DEV_BSG is not set
119# CONFIG_BLK_DEV_INTEGRITY is not set 124# CONFIG_BLK_DEV_INTEGRITY is not set
120 125
@@ -135,19 +140,22 @@ CONFIG_DEFAULT_IOSCHED="cfq"
135# 140#
136# System Type 141# System Type
137# 142#
143CONFIG_MMU=y
138# CONFIG_ARCH_AAEC2000 is not set 144# CONFIG_ARCH_AAEC2000 is not set
139# CONFIG_ARCH_INTEGRATOR is not set 145# CONFIG_ARCH_INTEGRATOR is not set
140# CONFIG_ARCH_REALVIEW is not set 146# CONFIG_ARCH_REALVIEW is not set
141# CONFIG_ARCH_VERSATILE is not set 147# CONFIG_ARCH_VERSATILE is not set
142# CONFIG_ARCH_AT91 is not set 148# CONFIG_ARCH_AT91 is not set
143# CONFIG_ARCH_CLPS711X is not set 149# CONFIG_ARCH_CLPS711X is not set
150# CONFIG_ARCH_GEMINI is not set
144# CONFIG_ARCH_EBSA110 is not set 151# CONFIG_ARCH_EBSA110 is not set
145# CONFIG_ARCH_EP93XX is not set 152# CONFIG_ARCH_EP93XX is not set
146# CONFIG_ARCH_GEMINI is not set
147# CONFIG_ARCH_FOOTBRIDGE is not set 153# CONFIG_ARCH_FOOTBRIDGE is not set
154# CONFIG_ARCH_MXC is not set
155# CONFIG_ARCH_STMP3XXX is not set
148# CONFIG_ARCH_NETX is not set 156# CONFIG_ARCH_NETX is not set
149# CONFIG_ARCH_H720X is not set 157# CONFIG_ARCH_H720X is not set
150# CONFIG_ARCH_IMX is not set 158# CONFIG_ARCH_NOMADIK is not set
151# CONFIG_ARCH_IOP13XX is not set 159# CONFIG_ARCH_IOP13XX is not set
152# CONFIG_ARCH_IOP32X is not set 160# CONFIG_ARCH_IOP32X is not set
153# CONFIG_ARCH_IOP33X is not set 161# CONFIG_ARCH_IOP33X is not set
@@ -156,25 +164,27 @@ CONFIG_DEFAULT_IOSCHED="cfq"
156# CONFIG_ARCH_IXP4XX is not set 164# CONFIG_ARCH_IXP4XX is not set
157# CONFIG_ARCH_L7200 is not set 165# CONFIG_ARCH_L7200 is not set
158CONFIG_ARCH_KIRKWOOD=y 166CONFIG_ARCH_KIRKWOOD=y
159# CONFIG_ARCH_KS8695 is not set
160# CONFIG_ARCH_NS9XXX is not set
161# CONFIG_ARCH_LOKI is not set 167# CONFIG_ARCH_LOKI is not set
162# CONFIG_ARCH_MV78XX0 is not set 168# CONFIG_ARCH_MV78XX0 is not set
163# CONFIG_ARCH_MXC is not set
164# CONFIG_ARCH_ORION5X is not set 169# CONFIG_ARCH_ORION5X is not set
170# CONFIG_ARCH_MMP is not set
171# CONFIG_ARCH_KS8695 is not set
172# CONFIG_ARCH_NS9XXX is not set
173# CONFIG_ARCH_W90X900 is not set
165# CONFIG_ARCH_PNX4008 is not set 174# CONFIG_ARCH_PNX4008 is not set
166# CONFIG_ARCH_PXA is not set 175# CONFIG_ARCH_PXA is not set
167# CONFIG_ARCH_MMP is not set 176# CONFIG_ARCH_MSM is not set
168# CONFIG_ARCH_RPC is not set 177# CONFIG_ARCH_RPC is not set
169# CONFIG_ARCH_SA1100 is not set 178# CONFIG_ARCH_SA1100 is not set
170# CONFIG_ARCH_S3C2410 is not set 179# CONFIG_ARCH_S3C2410 is not set
171# CONFIG_ARCH_S3C64XX is not set 180# CONFIG_ARCH_S3C64XX is not set
181# CONFIG_ARCH_S5PC1XX is not set
172# CONFIG_ARCH_SHARK is not set 182# CONFIG_ARCH_SHARK is not set
173# CONFIG_ARCH_LH7A40X is not set 183# CONFIG_ARCH_LH7A40X is not set
184# CONFIG_ARCH_U300 is not set
174# CONFIG_ARCH_DAVINCI is not set 185# CONFIG_ARCH_DAVINCI is not set
175# CONFIG_ARCH_OMAP is not set 186# CONFIG_ARCH_OMAP is not set
176# CONFIG_ARCH_MSM is not set 187# CONFIG_ARCH_BCMRING is not set
177# CONFIG_ARCH_W90X900 is not set
178 188
179# 189#
180# Marvell Kirkwood Implementations 190# Marvell Kirkwood Implementations
@@ -185,6 +195,7 @@ CONFIG_MACH_RD88F6281=y
185CONFIG_MACH_MV88F6281GTW_GE=y 195CONFIG_MACH_MV88F6281GTW_GE=y
186CONFIG_MACH_SHEEVAPLUG=y 196CONFIG_MACH_SHEEVAPLUG=y
187CONFIG_MACH_TS219=y 197CONFIG_MACH_TS219=y
198CONFIG_MACH_OPENRD_BASE=y
188CONFIG_PLAT_ORION=y 199CONFIG_PLAT_ORION=y
189 200
190# 201#
@@ -195,7 +206,7 @@ CONFIG_CPU_FEROCEON=y
195# CONFIG_CPU_FEROCEON_OLD_ID is not set 206# CONFIG_CPU_FEROCEON_OLD_ID is not set
196CONFIG_CPU_32v5=y 207CONFIG_CPU_32v5=y
197CONFIG_CPU_ABRT_EV5T=y 208CONFIG_CPU_ABRT_EV5T=y
198CONFIG_CPU_PABRT_NOIFAR=y 209CONFIG_CPU_PABRT_LEGACY=y
199CONFIG_CPU_CACHE_VIVT=y 210CONFIG_CPU_CACHE_VIVT=y
200CONFIG_CPU_COPY_FEROCEON=y 211CONFIG_CPU_COPY_FEROCEON=y
201CONFIG_CPU_TLB_FEROCEON=y 212CONFIG_CPU_TLB_FEROCEON=y
@@ -211,6 +222,7 @@ CONFIG_ARM_THUMB=y
211CONFIG_OUTER_CACHE=y 222CONFIG_OUTER_CACHE=y
212CONFIG_CACHE_FEROCEON_L2=y 223CONFIG_CACHE_FEROCEON_L2=y
213# CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set 224# CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set
225CONFIG_ARM_L1_CACHE_SHIFT=5
214 226
215# 227#
216# Bus support 228# Bus support
@@ -235,11 +247,12 @@ CONFIG_VMSPLIT_3G=y
235# CONFIG_VMSPLIT_2G is not set 247# CONFIG_VMSPLIT_2G is not set
236# CONFIG_VMSPLIT_1G is not set 248# CONFIG_VMSPLIT_1G is not set
237CONFIG_PAGE_OFFSET=0xC0000000 249CONFIG_PAGE_OFFSET=0xC0000000
250# CONFIG_PREEMPT_NONE is not set
251# CONFIG_PREEMPT_VOLUNTARY is not set
238CONFIG_PREEMPT=y 252CONFIG_PREEMPT=y
239CONFIG_HZ=100 253CONFIG_HZ=100
240CONFIG_AEABI=y 254CONFIG_AEABI=y
241# CONFIG_OABI_COMPAT is not set 255# CONFIG_OABI_COMPAT is not set
242CONFIG_ARCH_FLATMEM_HAS_HOLES=y
243# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set 256# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
244# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set 257# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
245# CONFIG_HIGHMEM is not set 258# CONFIG_HIGHMEM is not set
@@ -254,10 +267,12 @@ CONFIG_SPLIT_PTLOCK_CPUS=4096
254# CONFIG_PHYS_ADDR_T_64BIT is not set 267# CONFIG_PHYS_ADDR_T_64BIT is not set
255CONFIG_ZONE_DMA_FLAG=0 268CONFIG_ZONE_DMA_FLAG=0
256CONFIG_VIRT_TO_BUS=y 269CONFIG_VIRT_TO_BUS=y
257CONFIG_UNEVICTABLE_LRU=y
258CONFIG_HAVE_MLOCK=y 270CONFIG_HAVE_MLOCK=y
259CONFIG_HAVE_MLOCKED_PAGE_BIT=y 271CONFIG_HAVE_MLOCKED_PAGE_BIT=y
272# CONFIG_KSM is not set
273CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
260CONFIG_ALIGNMENT_TRAP=y 274CONFIG_ALIGNMENT_TRAP=y
275CONFIG_UACCESS_WITH_MEMCPY=y
261 276
262# 277#
263# Boot options 278# Boot options
@@ -345,6 +360,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
345# CONFIG_NETFILTER is not set 360# CONFIG_NETFILTER is not set
346# CONFIG_IP_DCCP is not set 361# CONFIG_IP_DCCP is not set
347# CONFIG_IP_SCTP is not set 362# CONFIG_IP_SCTP is not set
363# CONFIG_RDS is not set
348# CONFIG_TIPC is not set 364# CONFIG_TIPC is not set
349# CONFIG_ATM is not set 365# CONFIG_ATM is not set
350# CONFIG_BRIDGE is not set 366# CONFIG_BRIDGE is not set
@@ -367,6 +383,7 @@ CONFIG_NET_DSA_MV88E6123_61_65=y
367# CONFIG_ECONET is not set 383# CONFIG_ECONET is not set
368# CONFIG_WAN_ROUTER is not set 384# CONFIG_WAN_ROUTER is not set
369# CONFIG_PHONET is not set 385# CONFIG_PHONET is not set
386# CONFIG_IEEE802154 is not set
370# CONFIG_NET_SCHED is not set 387# CONFIG_NET_SCHED is not set
371# CONFIG_DCB is not set 388# CONFIG_DCB is not set
372 389
@@ -383,17 +400,18 @@ CONFIG_NET_PKTGEN=m
383# CONFIG_AF_RXRPC is not set 400# CONFIG_AF_RXRPC is not set
384CONFIG_WIRELESS=y 401CONFIG_WIRELESS=y
385CONFIG_CFG80211=y 402CONFIG_CFG80211=y
403# CONFIG_NL80211_TESTMODE is not set
404# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
386# CONFIG_CFG80211_REG_DEBUG is not set 405# CONFIG_CFG80211_REG_DEBUG is not set
406CONFIG_CFG80211_DEFAULT_PS=y
407CONFIG_CFG80211_DEFAULT_PS_VALUE=1
408# CONFIG_CFG80211_DEBUGFS is not set
387CONFIG_WIRELESS_OLD_REGULATORY=y 409CONFIG_WIRELESS_OLD_REGULATORY=y
388CONFIG_WIRELESS_EXT=y 410CONFIG_WIRELESS_EXT=y
389CONFIG_WIRELESS_EXT_SYSFS=y 411CONFIG_WIRELESS_EXT_SYSFS=y
390CONFIG_LIB80211=y 412CONFIG_LIB80211=y
391# CONFIG_LIB80211_DEBUG is not set 413# CONFIG_LIB80211_DEBUG is not set
392CONFIG_MAC80211=y 414CONFIG_MAC80211=y
393
394#
395# Rate control algorithm selection
396#
397CONFIG_MAC80211_RC_MINSTREL=y 415CONFIG_MAC80211_RC_MINSTREL=y
398# CONFIG_MAC80211_RC_DEFAULT_PID is not set 416# CONFIG_MAC80211_RC_DEFAULT_PID is not set
399CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y 417CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
@@ -414,6 +432,7 @@ CONFIG_MAC80211_RC_DEFAULT="minstrel"
414# Generic Driver Options 432# Generic Driver Options
415# 433#
416CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 434CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
435# CONFIG_DEVTMPFS is not set
417CONFIG_STANDALONE=y 436CONFIG_STANDALONE=y
418CONFIG_PREVENT_FIRMWARE_BUILD=y 437CONFIG_PREVENT_FIRMWARE_BUILD=y
419CONFIG_FW_LOADER=y 438CONFIG_FW_LOADER=y
@@ -425,9 +444,9 @@ CONFIG_EXTRA_FIRMWARE=""
425# CONFIG_CONNECTOR is not set 444# CONFIG_CONNECTOR is not set
426CONFIG_MTD=y 445CONFIG_MTD=y
427# CONFIG_MTD_DEBUG is not set 446# CONFIG_MTD_DEBUG is not set
447# CONFIG_MTD_TESTS is not set
428# CONFIG_MTD_CONCAT is not set 448# CONFIG_MTD_CONCAT is not set
429CONFIG_MTD_PARTITIONS=y 449CONFIG_MTD_PARTITIONS=y
430# CONFIG_MTD_TESTS is not set
431# CONFIG_MTD_REDBOOT_PARTS is not set 450# CONFIG_MTD_REDBOOT_PARTS is not set
432CONFIG_MTD_CMDLINE_PARTS=y 451CONFIG_MTD_CMDLINE_PARTS=y
433# CONFIG_MTD_AFS_PARTS is not set 452# CONFIG_MTD_AFS_PARTS is not set
@@ -494,6 +513,7 @@ CONFIG_MTD_PHYSMAP=y
494# CONFIG_MTD_DATAFLASH is not set 513# CONFIG_MTD_DATAFLASH is not set
495CONFIG_MTD_M25P80=y 514CONFIG_MTD_M25P80=y
496CONFIG_M25PXX_USE_FAST_READ=y 515CONFIG_M25PXX_USE_FAST_READ=y
516# CONFIG_MTD_SST25L is not set
497# CONFIG_MTD_SLRAM is not set 517# CONFIG_MTD_SLRAM is not set
498# CONFIG_MTD_PHRAM is not set 518# CONFIG_MTD_PHRAM is not set
499# CONFIG_MTD_MTDRAM is not set 519# CONFIG_MTD_MTDRAM is not set
@@ -543,6 +563,7 @@ CONFIG_BLK_DEV_LOOP=y
543# CONFIG_BLK_DEV_RAM is not set 563# CONFIG_BLK_DEV_RAM is not set
544# CONFIG_CDROM_PKTCDVD is not set 564# CONFIG_CDROM_PKTCDVD is not set
545# CONFIG_ATA_OVER_ETH is not set 565# CONFIG_ATA_OVER_ETH is not set
566# CONFIG_MG_DISK is not set
546# CONFIG_MISC_DEVICES is not set 567# CONFIG_MISC_DEVICES is not set
547CONFIG_HAVE_IDE=y 568CONFIG_HAVE_IDE=y
548# CONFIG_IDE is not set 569# CONFIG_IDE is not set
@@ -567,10 +588,6 @@ CONFIG_BLK_DEV_SR=m
567# CONFIG_BLK_DEV_SR_VENDOR is not set 588# CONFIG_BLK_DEV_SR_VENDOR is not set
568CONFIG_CHR_DEV_SG=m 589CONFIG_CHR_DEV_SG=m
569# CONFIG_CHR_DEV_SCH is not set 590# CONFIG_CHR_DEV_SCH is not set
570
571#
572# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
573#
574# CONFIG_SCSI_MULTI_LUN is not set 591# CONFIG_SCSI_MULTI_LUN is not set
575# CONFIG_SCSI_CONSTANTS is not set 592# CONFIG_SCSI_CONSTANTS is not set
576# CONFIG_SCSI_LOGGING is not set 593# CONFIG_SCSI_LOGGING is not set
@@ -587,6 +604,8 @@ CONFIG_SCSI_WAIT_SCAN=m
587# CONFIG_SCSI_SRP_ATTRS is not set 604# CONFIG_SCSI_SRP_ATTRS is not set
588CONFIG_SCSI_LOWLEVEL=y 605CONFIG_SCSI_LOWLEVEL=y
589# CONFIG_ISCSI_TCP is not set 606# CONFIG_ISCSI_TCP is not set
607# CONFIG_SCSI_BNX2_ISCSI is not set
608# CONFIG_BE2ISCSI is not set
590# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 609# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
591# CONFIG_SCSI_3W_9XXX is not set 610# CONFIG_SCSI_3W_9XXX is not set
592# CONFIG_SCSI_ACARD is not set 611# CONFIG_SCSI_ACARD is not set
@@ -595,6 +614,7 @@ CONFIG_SCSI_LOWLEVEL=y
595# CONFIG_SCSI_AIC7XXX_OLD is not set 614# CONFIG_SCSI_AIC7XXX_OLD is not set
596# CONFIG_SCSI_AIC79XX is not set 615# CONFIG_SCSI_AIC79XX is not set
597# CONFIG_SCSI_AIC94XX is not set 616# CONFIG_SCSI_AIC94XX is not set
617# CONFIG_SCSI_MVSAS is not set
598# CONFIG_SCSI_DPT_I2O is not set 618# CONFIG_SCSI_DPT_I2O is not set
599# CONFIG_SCSI_ADVANSYS is not set 619# CONFIG_SCSI_ADVANSYS is not set
600# CONFIG_SCSI_ARCMSR is not set 620# CONFIG_SCSI_ARCMSR is not set
@@ -611,7 +631,6 @@ CONFIG_SCSI_LOWLEVEL=y
611# CONFIG_SCSI_IPS is not set 631# CONFIG_SCSI_IPS is not set
612# CONFIG_SCSI_INITIO is not set 632# CONFIG_SCSI_INITIO is not set
613# CONFIG_SCSI_INIA100 is not set 633# CONFIG_SCSI_INIA100 is not set
614# CONFIG_SCSI_MVSAS is not set
615# CONFIG_SCSI_STEX is not set 634# CONFIG_SCSI_STEX is not set
616# CONFIG_SCSI_SYM53C8XX_2 is not set 635# CONFIG_SCSI_SYM53C8XX_2 is not set
617# CONFIG_SCSI_IPR is not set 636# CONFIG_SCSI_IPR is not set
@@ -623,11 +642,14 @@ CONFIG_SCSI_LOWLEVEL=y
623# CONFIG_SCSI_DC390T is not set 642# CONFIG_SCSI_DC390T is not set
624# CONFIG_SCSI_NSP32 is not set 643# CONFIG_SCSI_NSP32 is not set
625# CONFIG_SCSI_DEBUG is not set 644# CONFIG_SCSI_DEBUG is not set
645# CONFIG_SCSI_PMCRAID is not set
626# CONFIG_SCSI_SRP is not set 646# CONFIG_SCSI_SRP is not set
647# CONFIG_SCSI_BFA_FC is not set
627# CONFIG_SCSI_DH is not set 648# CONFIG_SCSI_DH is not set
628# CONFIG_SCSI_OSD_INITIATOR is not set 649# CONFIG_SCSI_OSD_INITIATOR is not set
629CONFIG_ATA=y 650CONFIG_ATA=y
630# CONFIG_ATA_NONSTANDARD is not set 651# CONFIG_ATA_NONSTANDARD is not set
652CONFIG_ATA_VERBOSE_ERROR=y
631CONFIG_SATA_PMP=y 653CONFIG_SATA_PMP=y
632CONFIG_SATA_AHCI=y 654CONFIG_SATA_AHCI=y
633# CONFIG_SATA_SIL24 is not set 655# CONFIG_SATA_SIL24 is not set
@@ -649,6 +671,7 @@ CONFIG_SATA_MV=y
649# CONFIG_PATA_ALI is not set 671# CONFIG_PATA_ALI is not set
650# CONFIG_PATA_AMD is not set 672# CONFIG_PATA_AMD is not set
651# CONFIG_PATA_ARTOP is not set 673# CONFIG_PATA_ARTOP is not set
674# CONFIG_PATA_ATP867X is not set
652# CONFIG_PATA_ATIIXP is not set 675# CONFIG_PATA_ATIIXP is not set
653# CONFIG_PATA_CMD640_PCI is not set 676# CONFIG_PATA_CMD640_PCI is not set
654# CONFIG_PATA_CMD64X is not set 677# CONFIG_PATA_CMD64X is not set
@@ -676,6 +699,7 @@ CONFIG_SATA_MV=y
676# CONFIG_PATA_OPTIDMA is not set 699# CONFIG_PATA_OPTIDMA is not set
677# CONFIG_PATA_PDC_OLD is not set 700# CONFIG_PATA_PDC_OLD is not set
678# CONFIG_PATA_RADISYS is not set 701# CONFIG_PATA_RADISYS is not set
702# CONFIG_PATA_RDC is not set
679# CONFIG_PATA_RZ1000 is not set 703# CONFIG_PATA_RZ1000 is not set
680# CONFIG_PATA_SC1200 is not set 704# CONFIG_PATA_SC1200 is not set
681# CONFIG_PATA_SERVERWORKS is not set 705# CONFIG_PATA_SERVERWORKS is not set
@@ -693,13 +717,16 @@ CONFIG_SATA_MV=y
693# 717#
694 718
695# 719#
696# Enable only one of the two stacks, unless you know what you are doing 720# You can enable one or both FireWire driver stacks.
721#
722
723#
724# See the help texts for more information.
697# 725#
698# CONFIG_FIREWIRE is not set 726# CONFIG_FIREWIRE is not set
699# CONFIG_IEEE1394 is not set 727# CONFIG_IEEE1394 is not set
700# CONFIG_I2O is not set 728# CONFIG_I2O is not set
701CONFIG_NETDEVICES=y 729CONFIG_NETDEVICES=y
702CONFIG_COMPAT_NET_DEV_OPS=y
703# CONFIG_DUMMY is not set 730# CONFIG_DUMMY is not set
704# CONFIG_BONDING is not set 731# CONFIG_BONDING is not set
705# CONFIG_MACVLAN is not set 732# CONFIG_MACVLAN is not set
@@ -768,6 +795,9 @@ CONFIG_NET_PCI=y
768# CONFIG_SMSC9420 is not set 795# CONFIG_SMSC9420 is not set
769# CONFIG_SUNDANCE is not set 796# CONFIG_SUNDANCE is not set
770# CONFIG_TLAN is not set 797# CONFIG_TLAN is not set
798# CONFIG_KS8842 is not set
799# CONFIG_KS8851 is not set
800# CONFIG_KS8851_MLL is not set
771# CONFIG_VIA_RHINE is not set 801# CONFIG_VIA_RHINE is not set
772# CONFIG_SC92031 is not set 802# CONFIG_SC92031 is not set
773# CONFIG_ATL2 is not set 803# CONFIG_ATL2 is not set
@@ -789,6 +819,7 @@ CONFIG_NETDEV_1000=y
789# CONFIG_VIA_VELOCITY is not set 819# CONFIG_VIA_VELOCITY is not set
790# CONFIG_TIGON3 is not set 820# CONFIG_TIGON3 is not set
791# CONFIG_BNX2 is not set 821# CONFIG_BNX2 is not set
822# CONFIG_CNIC is not set
792CONFIG_MV643XX_ETH=y 823CONFIG_MV643XX_ETH=y
793# CONFIG_QLA3XXX is not set 824# CONFIG_QLA3XXX is not set
794# CONFIG_ATL1 is not set 825# CONFIG_ATL1 is not set
@@ -797,10 +828,7 @@ CONFIG_MV643XX_ETH=y
797# CONFIG_JME is not set 828# CONFIG_JME is not set
798# CONFIG_NETDEV_10000 is not set 829# CONFIG_NETDEV_10000 is not set
799# CONFIG_TR is not set 830# CONFIG_TR is not set
800 831CONFIG_WLAN=y
801#
802# Wireless LAN
803#
804# CONFIG_WLAN_PRE80211 is not set 832# CONFIG_WLAN_PRE80211 is not set
805CONFIG_WLAN_80211=y 833CONFIG_WLAN_80211=y
806CONFIG_LIBERTAS=y 834CONFIG_LIBERTAS=y
@@ -820,9 +848,7 @@ CONFIG_LIBERTAS_SDIO=y
820# CONFIG_MAC80211_HWSIM is not set 848# CONFIG_MAC80211_HWSIM is not set
821# CONFIG_MWL8K is not set 849# CONFIG_MWL8K is not set
822# CONFIG_P54_COMMON is not set 850# CONFIG_P54_COMMON is not set
823# CONFIG_ATH5K is not set 851# CONFIG_ATH_COMMON is not set
824# CONFIG_ATH9K is not set
825# CONFIG_AR9170_USB is not set
826# CONFIG_IPW2100 is not set 852# CONFIG_IPW2100 is not set
827# CONFIG_IPW2200 is not set 853# CONFIG_IPW2200 is not set
828# CONFIG_IWLWIFI is not set 854# CONFIG_IWLWIFI is not set
@@ -832,6 +858,8 @@ CONFIG_LIBERTAS_SDIO=y
832# CONFIG_ZD1211RW is not set 858# CONFIG_ZD1211RW is not set
833# CONFIG_RT2X00 is not set 859# CONFIG_RT2X00 is not set
834# CONFIG_HERMES is not set 860# CONFIG_HERMES is not set
861# CONFIG_WL12XX is not set
862# CONFIG_IWM is not set
835 863
836# 864#
837# Enable WiMAX (Networking options) to see the WiMAX drivers 865# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -855,6 +883,7 @@ CONFIG_LIBERTAS_SDIO=y
855# CONFIG_NETPOLL is not set 883# CONFIG_NETPOLL is not set
856# CONFIG_NET_POLL_CONTROLLER is not set 884# CONFIG_NET_POLL_CONTROLLER is not set
857# CONFIG_ISDN is not set 885# CONFIG_ISDN is not set
886# CONFIG_PHONE is not set
858 887
859# 888#
860# Input device support 889# Input device support
@@ -878,13 +907,19 @@ CONFIG_INPUT_EVDEV=y
878# Input Device Drivers 907# Input Device Drivers
879# 908#
880CONFIG_INPUT_KEYBOARD=y 909CONFIG_INPUT_KEYBOARD=y
910# CONFIG_KEYBOARD_ADP5588 is not set
881CONFIG_KEYBOARD_ATKBD=y 911CONFIG_KEYBOARD_ATKBD=y
882# CONFIG_KEYBOARD_SUNKBD is not set 912# CONFIG_QT2160 is not set
883# CONFIG_KEYBOARD_LKKBD is not set 913# CONFIG_KEYBOARD_LKKBD is not set
884# CONFIG_KEYBOARD_XTKBD is not set 914CONFIG_KEYBOARD_GPIO=y
915# CONFIG_KEYBOARD_MATRIX is not set
916# CONFIG_KEYBOARD_LM8323 is not set
917# CONFIG_KEYBOARD_MAX7359 is not set
885# CONFIG_KEYBOARD_NEWTON is not set 918# CONFIG_KEYBOARD_NEWTON is not set
919# CONFIG_KEYBOARD_OPENCORES is not set
886# CONFIG_KEYBOARD_STOWAWAY is not set 920# CONFIG_KEYBOARD_STOWAWAY is not set
887CONFIG_KEYBOARD_GPIO=y 921# CONFIG_KEYBOARD_SUNKBD is not set
922# CONFIG_KEYBOARD_XTKBD is not set
888# CONFIG_INPUT_MOUSE is not set 923# CONFIG_INPUT_MOUSE is not set
889# CONFIG_INPUT_JOYSTICK is not set 924# CONFIG_INPUT_JOYSTICK is not set
890# CONFIG_INPUT_TABLET is not set 925# CONFIG_INPUT_TABLET is not set
@@ -943,6 +978,7 @@ CONFIG_LEGACY_PTY_COUNT=16
943CONFIG_DEVPORT=y 978CONFIG_DEVPORT=y
944CONFIG_I2C=y 979CONFIG_I2C=y
945CONFIG_I2C_BOARDINFO=y 980CONFIG_I2C_BOARDINFO=y
981# CONFIG_I2C_COMPAT is not set
946CONFIG_I2C_CHARDEV=y 982CONFIG_I2C_CHARDEV=y
947CONFIG_I2C_HELPER_AUTO=y 983CONFIG_I2C_HELPER_AUTO=y
948 984
@@ -998,10 +1034,6 @@ CONFIG_I2C_MV64XXX=y
998# Miscellaneous I2C Chip support 1034# Miscellaneous I2C Chip support
999# 1035#
1000# CONFIG_DS1682 is not set 1036# CONFIG_DS1682 is not set
1001# CONFIG_SENSORS_PCF8574 is not set
1002# CONFIG_PCF8575 is not set
1003# CONFIG_SENSORS_PCA9539 is not set
1004# CONFIG_SENSORS_MAX6875 is not set
1005# CONFIG_SENSORS_TSL2550 is not set 1037# CONFIG_SENSORS_TSL2550 is not set
1006# CONFIG_I2C_DEBUG_CORE is not set 1038# CONFIG_I2C_DEBUG_CORE is not set
1007# CONFIG_I2C_DEBUG_ALGO is not set 1039# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1023,11 +1055,47 @@ CONFIG_SPI_ORION=y
1023# 1055#
1024# CONFIG_SPI_SPIDEV is not set 1056# CONFIG_SPI_SPIDEV is not set
1025# CONFIG_SPI_TLE62X0 is not set 1057# CONFIG_SPI_TLE62X0 is not set
1058
1059#
1060# PPS support
1061#
1062# CONFIG_PPS is not set
1063CONFIG_ARCH_REQUIRE_GPIOLIB=y
1064CONFIG_GPIOLIB=y
1065# CONFIG_DEBUG_GPIO is not set
1066CONFIG_GPIO_SYSFS=y
1067
1068#
1069# Memory mapped GPIO expanders:
1070#
1071
1072#
1073# I2C GPIO expanders:
1074#
1075# CONFIG_GPIO_MAX732X is not set
1076# CONFIG_GPIO_PCA953X is not set
1077# CONFIG_GPIO_PCF857X is not set
1078
1079#
1080# PCI GPIO expanders:
1081#
1082# CONFIG_GPIO_BT8XX is not set
1083# CONFIG_GPIO_LANGWELL is not set
1084
1085#
1086# SPI GPIO expanders:
1087#
1088# CONFIG_GPIO_MAX7301 is not set
1089# CONFIG_GPIO_MCP23S08 is not set
1090# CONFIG_GPIO_MC33880 is not set
1091
1092#
1093# AC97 GPIO expanders:
1094#
1026# CONFIG_W1 is not set 1095# CONFIG_W1 is not set
1027# CONFIG_POWER_SUPPLY is not set 1096# CONFIG_POWER_SUPPLY is not set
1028# CONFIG_HWMON is not set 1097# CONFIG_HWMON is not set
1029# CONFIG_THERMAL is not set 1098# CONFIG_THERMAL is not set
1030# CONFIG_THERMAL_HWMON is not set
1031# CONFIG_WATCHDOG is not set 1099# CONFIG_WATCHDOG is not set
1032CONFIG_SSB_POSSIBLE=y 1100CONFIG_SSB_POSSIBLE=y
1033 1101
@@ -1041,33 +1109,28 @@ CONFIG_SSB_POSSIBLE=y
1041# 1109#
1042# CONFIG_MFD_CORE is not set 1110# CONFIG_MFD_CORE is not set
1043# CONFIG_MFD_SM501 is not set 1111# CONFIG_MFD_SM501 is not set
1112# CONFIG_MFD_ASIC3 is not set
1113# CONFIG_HTC_EGPIO is not set
1044# CONFIG_HTC_PASIC3 is not set 1114# CONFIG_HTC_PASIC3 is not set
1115# CONFIG_TPS65010 is not set
1045# CONFIG_TWL4030_CORE is not set 1116# CONFIG_TWL4030_CORE is not set
1046# CONFIG_MFD_TMIO is not set 1117# CONFIG_MFD_TMIO is not set
1118# CONFIG_MFD_TC6393XB is not set
1047# CONFIG_PMIC_DA903X is not set 1119# CONFIG_PMIC_DA903X is not set
1048# CONFIG_MFD_WM8400 is not set 1120# CONFIG_MFD_WM8400 is not set
1121# CONFIG_MFD_WM831X is not set
1049# CONFIG_MFD_WM8350_I2C is not set 1122# CONFIG_MFD_WM8350_I2C is not set
1050# CONFIG_MFD_PCF50633 is not set 1123# CONFIG_MFD_PCF50633 is not set
1051 1124# CONFIG_MFD_MC13783 is not set
1052# 1125# CONFIG_AB3100_CORE is not set
1053# Multimedia devices 1126# CONFIG_EZX_PCAP is not set
1054# 1127# CONFIG_REGULATOR is not set
1055 1128# CONFIG_MEDIA_SUPPORT is not set
1056#
1057# Multimedia core support
1058#
1059# CONFIG_VIDEO_DEV is not set
1060# CONFIG_DVB_CORE is not set
1061# CONFIG_VIDEO_MEDIA is not set
1062
1063#
1064# Multimedia drivers
1065#
1066# CONFIG_DAB is not set
1067 1129
1068# 1130#
1069# Graphics support 1131# Graphics support
1070# 1132#
1133CONFIG_VGA_ARB=y
1071# CONFIG_DRM is not set 1134# CONFIG_DRM is not set
1072# CONFIG_VGASTATE is not set 1135# CONFIG_VGASTATE is not set
1073# CONFIG_VIDEO_OUTPUT_CONTROL is not set 1136# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -1087,7 +1150,6 @@ CONFIG_DUMMY_CONSOLE=y
1087# CONFIG_SOUND is not set 1150# CONFIG_SOUND is not set
1088CONFIG_HID_SUPPORT=y 1151CONFIG_HID_SUPPORT=y
1089CONFIG_HID=y 1152CONFIG_HID=y
1090# CONFIG_HID_DEBUG is not set
1091# CONFIG_HIDRAW is not set 1153# CONFIG_HIDRAW is not set
1092 1154
1093# 1155#
@@ -1106,10 +1168,12 @@ CONFIG_HID_BELKIN=y
1106CONFIG_HID_CHERRY=y 1168CONFIG_HID_CHERRY=y
1107CONFIG_HID_CHICONY=y 1169CONFIG_HID_CHICONY=y
1108CONFIG_HID_CYPRESS=y 1170CONFIG_HID_CYPRESS=y
1171CONFIG_HID_DRAGONRISE=y
1109# CONFIG_DRAGONRISE_FF is not set 1172# CONFIG_DRAGONRISE_FF is not set
1110CONFIG_HID_EZKEY=y 1173CONFIG_HID_EZKEY=y
1111CONFIG_HID_KYE=y 1174CONFIG_HID_KYE=y
1112CONFIG_HID_GYRATION=y 1175CONFIG_HID_GYRATION=y
1176CONFIG_HID_TWINHAN=y
1113CONFIG_HID_KENSINGTON=y 1177CONFIG_HID_KENSINGTON=y
1114CONFIG_HID_LOGITECH=y 1178CONFIG_HID_LOGITECH=y
1115# CONFIG_LOGITECH_FF is not set 1179# CONFIG_LOGITECH_FF is not set
@@ -1123,9 +1187,14 @@ CONFIG_HID_PETALYNX=y
1123CONFIG_HID_SAMSUNG=y 1187CONFIG_HID_SAMSUNG=y
1124CONFIG_HID_SONY=y 1188CONFIG_HID_SONY=y
1125CONFIG_HID_SUNPLUS=y 1189CONFIG_HID_SUNPLUS=y
1190CONFIG_HID_GREENASIA=y
1126# CONFIG_GREENASIA_FF is not set 1191# CONFIG_GREENASIA_FF is not set
1192CONFIG_HID_SMARTJOYPLUS=y
1193# CONFIG_SMARTJOYPLUS_FF is not set
1127CONFIG_HID_TOPSEED=y 1194CONFIG_HID_TOPSEED=y
1195CONFIG_HID_THRUSTMASTER=y
1128# CONFIG_THRUSTMASTER_FF is not set 1196# CONFIG_THRUSTMASTER_FF is not set
1197CONFIG_HID_ZEROPLUS=y
1129# CONFIG_ZEROPLUS_FF is not set 1198# CONFIG_ZEROPLUS_FF is not set
1130CONFIG_USB_SUPPORT=y 1199CONFIG_USB_SUPPORT=y
1131CONFIG_USB_ARCH_HAS_HCD=y 1200CONFIG_USB_ARCH_HAS_HCD=y
@@ -1150,18 +1219,21 @@ CONFIG_USB_DEVICE_CLASS=y
1150# USB Host Controller Drivers 1219# USB Host Controller Drivers
1151# 1220#
1152# CONFIG_USB_C67X00_HCD is not set 1221# CONFIG_USB_C67X00_HCD is not set
1222# CONFIG_USB_XHCI_HCD is not set
1153CONFIG_USB_EHCI_HCD=y 1223CONFIG_USB_EHCI_HCD=y
1154CONFIG_USB_EHCI_ROOT_HUB_TT=y 1224CONFIG_USB_EHCI_ROOT_HUB_TT=y
1155CONFIG_USB_EHCI_TT_NEWSCHED=y 1225CONFIG_USB_EHCI_TT_NEWSCHED=y
1156# CONFIG_USB_OXU210HP_HCD is not set 1226# CONFIG_USB_OXU210HP_HCD is not set
1157# CONFIG_USB_ISP116X_HCD is not set 1227# CONFIG_USB_ISP116X_HCD is not set
1158# CONFIG_USB_ISP1760_HCD is not set 1228# CONFIG_USB_ISP1760_HCD is not set
1229# CONFIG_USB_ISP1362_HCD is not set
1159# CONFIG_USB_OHCI_HCD is not set 1230# CONFIG_USB_OHCI_HCD is not set
1160# CONFIG_USB_UHCI_HCD is not set 1231# CONFIG_USB_UHCI_HCD is not set
1161# CONFIG_USB_SL811_HCD is not set 1232# CONFIG_USB_SL811_HCD is not set
1162# CONFIG_USB_R8A66597_HCD is not set 1233# CONFIG_USB_R8A66597_HCD is not set
1163# CONFIG_USB_WHCI_HCD is not set 1234# CONFIG_USB_WHCI_HCD is not set
1164# CONFIG_USB_HWA_HCD is not set 1235# CONFIG_USB_HWA_HCD is not set
1236# CONFIG_USB_MUSB_HDRC is not set
1165 1237
1166# 1238#
1167# USB Device Class drivers 1239# USB Device Class drivers
@@ -1252,11 +1324,14 @@ CONFIG_SDIO_UART=y
1252# MMC/SD/SDIO Host Controller Drivers 1324# MMC/SD/SDIO Host Controller Drivers
1253# 1325#
1254# CONFIG_MMC_SDHCI is not set 1326# CONFIG_MMC_SDHCI is not set
1327# CONFIG_MMC_AT91 is not set
1328# CONFIG_MMC_ATMELMCI is not set
1255# CONFIG_MMC_TIFM_SD is not set 1329# CONFIG_MMC_TIFM_SD is not set
1256CONFIG_MMC_MVSDIO=y 1330CONFIG_MMC_MVSDIO=y
1257# CONFIG_MMC_SPI is not set 1331# CONFIG_MMC_SPI is not set
1332# CONFIG_MMC_CB710 is not set
1333# CONFIG_MMC_VIA_SDMMC is not set
1258# CONFIG_MEMSTICK is not set 1334# CONFIG_MEMSTICK is not set
1259# CONFIG_ACCESSIBILITY is not set
1260CONFIG_NEW_LEDS=y 1335CONFIG_NEW_LEDS=y
1261CONFIG_LEDS_CLASS=y 1336CONFIG_LEDS_CLASS=y
1262 1337
@@ -1266,7 +1341,7 @@ CONFIG_LEDS_CLASS=y
1266# CONFIG_LEDS_PCA9532 is not set 1341# CONFIG_LEDS_PCA9532 is not set
1267CONFIG_LEDS_GPIO=y 1342CONFIG_LEDS_GPIO=y
1268CONFIG_LEDS_GPIO_PLATFORM=y 1343CONFIG_LEDS_GPIO_PLATFORM=y
1269# CONFIG_LEDS_LP5521 is not set 1344# CONFIG_LEDS_LP3944 is not set
1270# CONFIG_LEDS_PCA955X is not set 1345# CONFIG_LEDS_PCA955X is not set
1271# CONFIG_LEDS_DAC124S085 is not set 1346# CONFIG_LEDS_DAC124S085 is not set
1272# CONFIG_LEDS_BD2802 is not set 1347# CONFIG_LEDS_BD2802 is not set
@@ -1278,11 +1353,14 @@ CONFIG_LEDS_TRIGGERS=y
1278CONFIG_LEDS_TRIGGER_TIMER=y 1353CONFIG_LEDS_TRIGGER_TIMER=y
1279CONFIG_LEDS_TRIGGER_HEARTBEAT=y 1354CONFIG_LEDS_TRIGGER_HEARTBEAT=y
1280# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set 1355# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
1356# CONFIG_LEDS_TRIGGER_GPIO is not set
1281CONFIG_LEDS_TRIGGER_DEFAULT_ON=y 1357CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
1282 1358
1283# 1359#
1284# iptables trigger is under Netfilter config (LED target) 1360# iptables trigger is under Netfilter config (LED target)
1285# 1361#
1362# CONFIG_ACCESSIBILITY is not set
1363# CONFIG_INFINIBAND is not set
1286CONFIG_RTC_LIB=y 1364CONFIG_RTC_LIB=y
1287CONFIG_RTC_CLASS=y 1365CONFIG_RTC_CLASS=y
1288CONFIG_RTC_HCTOSYS=y 1366CONFIG_RTC_HCTOSYS=y
@@ -1314,6 +1392,7 @@ CONFIG_RTC_INTF_DEV=y
1314CONFIG_RTC_DRV_S35390A=y 1392CONFIG_RTC_DRV_S35390A=y
1315# CONFIG_RTC_DRV_FM3130 is not set 1393# CONFIG_RTC_DRV_FM3130 is not set
1316# CONFIG_RTC_DRV_RX8581 is not set 1394# CONFIG_RTC_DRV_RX8581 is not set
1395# CONFIG_RTC_DRV_RX8025 is not set
1317 1396
1318# 1397#
1319# SPI RTC drivers 1398# SPI RTC drivers
@@ -1325,6 +1404,7 @@ CONFIG_RTC_DRV_S35390A=y
1325# CONFIG_RTC_DRV_R9701 is not set 1404# CONFIG_RTC_DRV_R9701 is not set
1326# CONFIG_RTC_DRV_RS5C348 is not set 1405# CONFIG_RTC_DRV_RS5C348 is not set
1327# CONFIG_RTC_DRV_DS3234 is not set 1406# CONFIG_RTC_DRV_DS3234 is not set
1407# CONFIG_RTC_DRV_PCF2123 is not set
1328 1408
1329# 1409#
1330# Platform RTC drivers 1410# Platform RTC drivers
@@ -1360,8 +1440,11 @@ CONFIG_DMA_ENGINE=y
1360# CONFIG_ASYNC_TX_DMA is not set 1440# CONFIG_ASYNC_TX_DMA is not set
1361# CONFIG_DMATEST is not set 1441# CONFIG_DMATEST is not set
1362# CONFIG_AUXDISPLAY is not set 1442# CONFIG_AUXDISPLAY is not set
1363# CONFIG_REGULATOR is not set
1364# CONFIG_UIO is not set 1443# CONFIG_UIO is not set
1444
1445#
1446# TI VLYNQ
1447#
1365# CONFIG_STAGING is not set 1448# CONFIG_STAGING is not set
1366 1449
1367# 1450#
@@ -1379,10 +1462,13 @@ CONFIG_JBD=y
1379# CONFIG_REISERFS_FS is not set 1462# CONFIG_REISERFS_FS is not set
1380# CONFIG_JFS_FS is not set 1463# CONFIG_JFS_FS is not set
1381# CONFIG_FS_POSIX_ACL is not set 1464# CONFIG_FS_POSIX_ACL is not set
1382CONFIG_FILE_LOCKING=y
1383# CONFIG_XFS_FS is not set 1465# CONFIG_XFS_FS is not set
1466# CONFIG_GFS2_FS is not set
1384# CONFIG_OCFS2_FS is not set 1467# CONFIG_OCFS2_FS is not set
1385# CONFIG_BTRFS_FS is not set 1468# CONFIG_BTRFS_FS is not set
1469# CONFIG_NILFS2_FS is not set
1470CONFIG_FILE_LOCKING=y
1471CONFIG_FSNOTIFY=y
1386CONFIG_DNOTIFY=y 1472CONFIG_DNOTIFY=y
1387CONFIG_INOTIFY=y 1473CONFIG_INOTIFY=y
1388CONFIG_INOTIFY_USER=y 1474CONFIG_INOTIFY_USER=y
@@ -1455,7 +1541,6 @@ CONFIG_CRAMFS=y
1455# CONFIG_ROMFS_FS is not set 1541# CONFIG_ROMFS_FS is not set
1456# CONFIG_SYSV_FS is not set 1542# CONFIG_SYSV_FS is not set
1457# CONFIG_UFS_FS is not set 1543# CONFIG_UFS_FS is not set
1458# CONFIG_NILFS2_FS is not set
1459CONFIG_NETWORK_FILESYSTEMS=y 1544CONFIG_NETWORK_FILESYSTEMS=y
1460CONFIG_NFS_FS=y 1545CONFIG_NFS_FS=y
1461CONFIG_NFS_V3=y 1546CONFIG_NFS_V3=y
@@ -1530,6 +1615,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1530CONFIG_ENABLE_MUST_CHECK=y 1615CONFIG_ENABLE_MUST_CHECK=y
1531CONFIG_FRAME_WARN=1024 1616CONFIG_FRAME_WARN=1024
1532CONFIG_MAGIC_SYSRQ=y 1617CONFIG_MAGIC_SYSRQ=y
1618# CONFIG_STRIP_ASM_SYMS is not set
1533# CONFIG_UNUSED_SYMBOLS is not set 1619# CONFIG_UNUSED_SYMBOLS is not set
1534CONFIG_DEBUG_FS=y 1620CONFIG_DEBUG_FS=y
1535# CONFIG_HEADERS_CHECK is not set 1621# CONFIG_HEADERS_CHECK is not set
@@ -1547,6 +1633,7 @@ CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1547# CONFIG_DEBUG_OBJECTS is not set 1633# CONFIG_DEBUG_OBJECTS is not set
1548# CONFIG_SLUB_DEBUG_ON is not set 1634# CONFIG_SLUB_DEBUG_ON is not set
1549# CONFIG_SLUB_STATS is not set 1635# CONFIG_SLUB_STATS is not set
1636# CONFIG_DEBUG_KMEMLEAK is not set
1550# CONFIG_DEBUG_PREEMPT is not set 1637# CONFIG_DEBUG_PREEMPT is not set
1551# CONFIG_DEBUG_RT_MUTEXES is not set 1638# CONFIG_DEBUG_RT_MUTEXES is not set
1552# CONFIG_RT_MUTEX_TESTER is not set 1639# CONFIG_RT_MUTEX_TESTER is not set
@@ -1567,12 +1654,14 @@ CONFIG_DEBUG_MEMORY_INIT=y
1567# CONFIG_DEBUG_LIST is not set 1654# CONFIG_DEBUG_LIST is not set
1568# CONFIG_DEBUG_SG is not set 1655# CONFIG_DEBUG_SG is not set
1569# CONFIG_DEBUG_NOTIFIERS is not set 1656# CONFIG_DEBUG_NOTIFIERS is not set
1657# CONFIG_DEBUG_CREDENTIALS is not set
1570# CONFIG_BOOT_PRINTK_DELAY is not set 1658# CONFIG_BOOT_PRINTK_DELAY is not set
1571# CONFIG_RCU_TORTURE_TEST is not set 1659# CONFIG_RCU_TORTURE_TEST is not set
1572# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1660# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1573# CONFIG_KPROBES_SANITY_TEST is not set 1661# CONFIG_KPROBES_SANITY_TEST is not set
1574# CONFIG_BACKTRACE_SELF_TEST is not set 1662# CONFIG_BACKTRACE_SELF_TEST is not set
1575# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1663# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1664# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1576# CONFIG_LKDTM is not set 1665# CONFIG_LKDTM is not set
1577# CONFIG_FAULT_INJECTION is not set 1666# CONFIG_FAULT_INJECTION is not set
1578# CONFIG_LATENCYTOP is not set 1667# CONFIG_LATENCYTOP is not set
@@ -1581,25 +1670,12 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
1581CONFIG_NOP_TRACER=y 1670CONFIG_NOP_TRACER=y
1582CONFIG_HAVE_FUNCTION_TRACER=y 1671CONFIG_HAVE_FUNCTION_TRACER=y
1583CONFIG_RING_BUFFER=y 1672CONFIG_RING_BUFFER=y
1673CONFIG_EVENT_TRACING=y
1674CONFIG_CONTEXT_SWITCH_TRACER=y
1675CONFIG_RING_BUFFER_ALLOW_SWAP=y
1584CONFIG_TRACING=y 1676CONFIG_TRACING=y
1585CONFIG_TRACING_SUPPORT=y 1677CONFIG_TRACING_SUPPORT=y
1586 1678# CONFIG_FTRACE is not set
1587#
1588# Tracers
1589#
1590# CONFIG_FUNCTION_TRACER is not set
1591# CONFIG_IRQSOFF_TRACER is not set
1592# CONFIG_PREEMPT_TRACER is not set
1593# CONFIG_SCHED_TRACER is not set
1594# CONFIG_CONTEXT_SWITCH_TRACER is not set
1595# CONFIG_EVENT_TRACER is not set
1596# CONFIG_BOOT_TRACER is not set
1597# CONFIG_TRACE_BRANCH_PROFILING is not set
1598# CONFIG_STACK_TRACER is not set
1599# CONFIG_KMEMTRACE is not set
1600# CONFIG_WORKQUEUE_TRACER is not set
1601# CONFIG_BLK_DEV_IO_TRACE is not set
1602# CONFIG_FTRACE_STARTUP_TEST is not set
1603# CONFIG_DYNAMIC_DEBUG is not set 1679# CONFIG_DYNAMIC_DEBUG is not set
1604# CONFIG_SAMPLES is not set 1680# CONFIG_SAMPLES is not set
1605CONFIG_HAVE_ARCH_KGDB=y 1681CONFIG_HAVE_ARCH_KGDB=y
@@ -1623,7 +1699,6 @@ CONFIG_CRYPTO=y
1623# 1699#
1624# Crypto core or helper 1700# Crypto core or helper
1625# 1701#
1626# CONFIG_CRYPTO_FIPS is not set
1627CONFIG_CRYPTO_ALGAPI=y 1702CONFIG_CRYPTO_ALGAPI=y
1628CONFIG_CRYPTO_ALGAPI2=y 1703CONFIG_CRYPTO_ALGAPI2=y
1629CONFIG_CRYPTO_AEAD2=y 1704CONFIG_CRYPTO_AEAD2=y
@@ -1665,11 +1740,13 @@ CONFIG_CRYPTO_PCBC=m
1665# 1740#
1666# CONFIG_CRYPTO_HMAC is not set 1741# CONFIG_CRYPTO_HMAC is not set
1667# CONFIG_CRYPTO_XCBC is not set 1742# CONFIG_CRYPTO_XCBC is not set
1743# CONFIG_CRYPTO_VMAC is not set
1668 1744
1669# 1745#
1670# Digest 1746# Digest
1671# 1747#
1672CONFIG_CRYPTO_CRC32C=y 1748CONFIG_CRYPTO_CRC32C=y
1749# CONFIG_CRYPTO_GHASH is not set
1673# CONFIG_CRYPTO_MD4 is not set 1750# CONFIG_CRYPTO_MD4 is not set
1674# CONFIG_CRYPTO_MD5 is not set 1751# CONFIG_CRYPTO_MD5 is not set
1675# CONFIG_CRYPTO_MICHAEL_MIC is not set 1752# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1714,6 +1791,7 @@ CONFIG_CRYPTO_ARC4=y
1714# 1791#
1715# CONFIG_CRYPTO_ANSI_CPRNG is not set 1792# CONFIG_CRYPTO_ANSI_CPRNG is not set
1716CONFIG_CRYPTO_HW=y 1793CONFIG_CRYPTO_HW=y
1794CONFIG_CRYPTO_DEV_MV_CESA=y
1717# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1795# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1718CONFIG_BINARY_PRINTF=y 1796CONFIG_BINARY_PRINTF=y
1719 1797
diff --git a/arch/arm/configs/n8x0_defconfig b/arch/arm/configs/n8x0_defconfig
index 8da75dede52e..264f52b5c52d 100644
--- a/arch/arm/configs/n8x0_defconfig
+++ b/arch/arm/configs/n8x0_defconfig
@@ -304,7 +304,7 @@ CONFIG_ALIGNMENT_TRAP=y
304CONFIG_ZBOOT_ROM_TEXT=0x10C08000 304CONFIG_ZBOOT_ROM_TEXT=0x10C08000
305CONFIG_ZBOOT_ROM_BSS=0x10200000 305CONFIG_ZBOOT_ROM_BSS=0x10200000
306# CONFIG_ZBOOT_ROM is not set 306# CONFIG_ZBOOT_ROM is not set
307CONFIG_CMDLINE="root=1f03 rootfstype=jffs2 console=ttyS0,115200n8" 307CONFIG_CMDLINE="root=1f03 rootfstype=jffs2 console=ttyS2,115200n8"
308# CONFIG_XIP_KERNEL is not set 308# CONFIG_XIP_KERNEL is not set
309# CONFIG_KEXEC is not set 309# CONFIG_KEXEC is not set
310 310
diff --git a/arch/arm/configs/omap3_pandora_defconfig b/arch/arm/configs/omap3_pandora_defconfig
index b54ad2e2da36..150deafb0a6a 100644
--- a/arch/arm/configs/omap3_pandora_defconfig
+++ b/arch/arm/configs/omap3_pandora_defconfig
@@ -611,7 +611,7 @@ CONFIG_INPUT_KEYBOARD=y
611# CONFIG_KEYBOARD_XTKBD is not set 611# CONFIG_KEYBOARD_XTKBD is not set
612# CONFIG_KEYBOARD_NEWTON is not set 612# CONFIG_KEYBOARD_NEWTON is not set
613# CONFIG_KEYBOARD_STOWAWAY is not set 613# CONFIG_KEYBOARD_STOWAWAY is not set
614# CONFIG_KEYBOARD_GPIO is not set 614CONFIG_KEYBOARD_GPIO=y
615CONFIG_INPUT_MOUSE=y 615CONFIG_INPUT_MOUSE=y
616# CONFIG_MOUSE_PS2 is not set 616# CONFIG_MOUSE_PS2 is not set
617# CONFIG_MOUSE_SERIAL is not set 617# CONFIG_MOUSE_SERIAL is not set
@@ -634,7 +634,8 @@ CONFIG_TOUCHSCREEN_ADS7846=y
634# CONFIG_TOUCHSCREEN_TOUCHWIN is not set 634# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
635# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set 635# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
636# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set 636# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
637# CONFIG_INPUT_MISC is not set 637CONFIG_INPUT_MISC=y
638CONFIG_INPUT_TWL4030_PWRBUTTON=y
638 639
639# 640#
640# Hardware I/O ports 641# Hardware I/O ports
@@ -834,7 +835,29 @@ CONFIG_DAB=y
834# 835#
835# CONFIG_VGA_CONSOLE is not set 836# CONFIG_VGA_CONSOLE is not set
836CONFIG_DUMMY_CONSOLE=y 837CONFIG_DUMMY_CONSOLE=y
837# CONFIG_SOUND is not set 838CONFIG_SOUND=y
839CONFIG_SOUND_OSS_CORE=y
840CONFIG_SOUND_OSS_CORE_PRECLAIM=y
841CONFIG_SND=y
842CONFIG_SND_TIMER=y
843CONFIG_SND_PCM=y
844CONFIG_SND_JACK=y
845CONFIG_SND_OSSEMUL=y
846CONFIG_SND_MIXER_OSS=y
847CONFIG_SND_PCM_OSS=y
848CONFIG_SND_PCM_OSS_PLUGINS=y
849CONFIG_SND_SUPPORT_OLD_API=y
850CONFIG_SND_VERBOSE_PROCFS=y
851CONFIG_SND_VERBOSE_PRINTK=y
852CONFIG_SND_DRIVERS=y
853CONFIG_SND_USB=y
854CONFIG_SND_SOC=y
855CONFIG_SND_OMAP_SOC=y
856CONFIG_SND_OMAP_SOC_MCBSP=y
857CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=y
858CONFIG_SND_SOC_I2C_AND_SPI=y
859CONFIG_SND_SOC_TWL4030=y
860
838CONFIG_HID_SUPPORT=y 861CONFIG_HID_SUPPORT=y
839CONFIG_HID=y 862CONFIG_HID=y
840# CONFIG_HID_DEBUG is not set 863# CONFIG_HID_DEBUG is not set
@@ -1020,7 +1043,13 @@ CONFIG_MMC_BLOCK_BOUNCE=y
1020# CONFIG_MMC_SPI is not set 1043# CONFIG_MMC_SPI is not set
1021# CONFIG_MEMSTICK is not set 1044# CONFIG_MEMSTICK is not set
1022# CONFIG_ACCESSIBILITY is not set 1045# CONFIG_ACCESSIBILITY is not set
1023# CONFIG_NEW_LEDS is not set 1046CONFIG_NEW_LEDS=y
1047CONFIG_LEDS_CLASS=y
1048CONFIG_LEDS_GPIO=y
1049CONFIG_LEDS_GPIO_PLATFORM=y
1050CONFIG_LEDS_TRIGGERS=y
1051CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
1052
1024CONFIG_RTC_LIB=y 1053CONFIG_RTC_LIB=y
1025CONFIG_RTC_CLASS=y 1054CONFIG_RTC_CLASS=y
1026CONFIG_RTC_HCTOSYS=y 1055CONFIG_RTC_HCTOSYS=y
@@ -1084,9 +1113,12 @@ CONFIG_RTC_DRV_TWL4030=y
1084# on-CPU RTC drivers 1113# on-CPU RTC drivers
1085# 1114#
1086# CONFIG_DMADEVICES is not set 1115# CONFIG_DMADEVICES is not set
1087# CONFIG_REGULATOR is not set
1088# CONFIG_UIO is not set 1116# CONFIG_UIO is not set
1089 1117
1118CONFIG_REGULATOR=y
1119CONFIG_REGULATOR_FIXED_VOLTAGE=y
1120CONFIG_REGULATOR_TWL4030=y
1121
1090# 1122#
1091# File systems 1123# File systems
1092# 1124#
@@ -1407,3 +1439,10 @@ CONFIG_PLIST=y
1407CONFIG_HAS_IOMEM=y 1439CONFIG_HAS_IOMEM=y
1408CONFIG_HAS_IOPORT=y 1440CONFIG_HAS_IOPORT=y
1409CONFIG_HAS_DMA=y 1441CONFIG_HAS_DMA=y
1442
1443# added by hand for now
1444CONFIG_KEYBOARD_TWL4030=y
1445CONFIG_USB_OTG_UTILS=y
1446CONFIG_TWL4030_USB=y
1447CONFIG_MMC_OMAP_HS=y
1448
diff --git a/arch/arm/configs/omap_3430sdp_defconfig b/arch/arm/configs/omap_3430sdp_defconfig
index 8a4a7e2ba87b..5a305f015307 100644
--- a/arch/arm/configs/omap_3430sdp_defconfig
+++ b/arch/arm/configs/omap_3430sdp_defconfig
@@ -1703,7 +1703,14 @@ CONFIG_RTC_DRV_TWL4030=y
1703# on-CPU RTC drivers 1703# on-CPU RTC drivers
1704# 1704#
1705# CONFIG_DMADEVICES is not set 1705# CONFIG_DMADEVICES is not set
1706# CONFIG_REGULATOR is not set 1706CONFIG_REGULATOR=y
1707# CONFIG_REGULATOR_DEBUG is not set
1708# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
1709# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
1710# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
1711# CONFIG_REGULATOR_BQ24022 is not set
1712# CONFIG_REGULATOR_MAX1586 is not set
1713CONFIG_REGULATOR_TWL4030=y
1707# CONFIG_UIO is not set 1714# CONFIG_UIO is not set
1708# CONFIG_STAGING is not set 1715# CONFIG_STAGING is not set
1709 1716
diff --git a/arch/arm/configs/orion5x_defconfig b/arch/arm/configs/orion5x_defconfig
index 9e2385293ecb..5383cd0dff54 100644
--- a/arch/arm/configs/orion5x_defconfig
+++ b/arch/arm/configs/orion5x_defconfig
@@ -1,15 +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.30-rc4 3# Linux kernel version: 2.6.32-rc6
4# Mon May 4 14:07:25 2009 4# Sat Nov 7 20:52:21 2009
5# 5#
6CONFIG_ARM=y 6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y 7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
8CONFIG_GENERIC_GPIO=y 8CONFIG_GENERIC_GPIO=y
9CONFIG_GENERIC_TIME=y 9CONFIG_GENERIC_TIME=y
10CONFIG_GENERIC_CLOCKEVENTS=y 10CONFIG_GENERIC_CLOCKEVENTS=y
11CONFIG_MMU=y
12# CONFIG_NO_IOPORT is not set
13CONFIG_GENERIC_HARDIRQS=y 11CONFIG_GENERIC_HARDIRQS=y
14CONFIG_STACKTRACE_SUPPORT=y 12CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_HAVE_LATENCYTOP_SUPPORT=y 13CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -18,13 +16,12 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
18CONFIG_HARDIRQS_SW_RESEND=y 16CONFIG_HARDIRQS_SW_RESEND=y
19CONFIG_GENERIC_IRQ_PROBE=y 17CONFIG_GENERIC_IRQ_PROBE=y
20CONFIG_RWSEM_GENERIC_SPINLOCK=y 18CONFIG_RWSEM_GENERIC_SPINLOCK=y
21# CONFIG_ARCH_HAS_ILOG2_U32 is not set
22# CONFIG_ARCH_HAS_ILOG2_U64 is not set
23CONFIG_GENERIC_HWEIGHT=y 19CONFIG_GENERIC_HWEIGHT=y
24CONFIG_GENERIC_CALIBRATE_DELAY=y 20CONFIG_GENERIC_CALIBRATE_DELAY=y
25CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 21CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
26CONFIG_VECTORS_BASE=0xffff0000 22CONFIG_VECTORS_BASE=0xffff0000
27CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
24CONFIG_CONSTRUCTORS=y
28 25
29# 26#
30# General setup 27# General setup
@@ -46,11 +43,12 @@ CONFIG_SYSVIPC_SYSCTL=y
46# 43#
47# RCU Subsystem 44# RCU Subsystem
48# 45#
49CONFIG_CLASSIC_RCU=y 46CONFIG_TREE_RCU=y
50# CONFIG_TREE_RCU is not set 47# CONFIG_TREE_PREEMPT_RCU is not set
51# CONFIG_PREEMPT_RCU is not set 48# CONFIG_RCU_TRACE is not set
49CONFIG_RCU_FANOUT=32
50# CONFIG_RCU_FANOUT_EXACT is not set
52# CONFIG_TREE_RCU_TRACE is not set 51# CONFIG_TREE_RCU_TRACE is not set
53# CONFIG_PREEMPT_RCU_TRACE is not set
54# CONFIG_IKCONFIG is not set 52# CONFIG_IKCONFIG is not set
55CONFIG_LOG_BUF_SHIFT=14 53CONFIG_LOG_BUF_SHIFT=14
56# CONFIG_GROUP_SCHED is not set 54# CONFIG_GROUP_SCHED is not set
@@ -69,7 +67,6 @@ CONFIG_SYSCTL_SYSCALL=y
69CONFIG_KALLSYMS=y 67CONFIG_KALLSYMS=y
70CONFIG_KALLSYMS_ALL=y 68CONFIG_KALLSYMS_ALL=y
71# CONFIG_KALLSYMS_EXTRA_PASS is not set 69# CONFIG_KALLSYMS_EXTRA_PASS is not set
72# CONFIG_STRIP_ASM_SYMS is not set
73CONFIG_HOTPLUG=y 70CONFIG_HOTPLUG=y
74CONFIG_PRINTK=y 71CONFIG_PRINTK=y
75CONFIG_BUG=y 72CONFIG_BUG=y
@@ -82,6 +79,10 @@ CONFIG_TIMERFD=y
82CONFIG_EVENTFD=y 79CONFIG_EVENTFD=y
83CONFIG_SHMEM=y 80CONFIG_SHMEM=y
84CONFIG_AIO=y 81CONFIG_AIO=y
82
83#
84# Kernel Performance Events And Counters
85#
85CONFIG_VM_EVENT_COUNTERS=y 86CONFIG_VM_EVENT_COUNTERS=y
86CONFIG_PCI_QUIRKS=y 87CONFIG_PCI_QUIRKS=y
87# CONFIG_SLUB_DEBUG is not set 88# CONFIG_SLUB_DEBUG is not set
@@ -91,13 +92,17 @@ CONFIG_SLUB=y
91# CONFIG_SLOB is not set 92# CONFIG_SLOB is not set
92CONFIG_PROFILING=y 93CONFIG_PROFILING=y
93CONFIG_TRACEPOINTS=y 94CONFIG_TRACEPOINTS=y
94# CONFIG_MARKERS is not set
95CONFIG_OPROFILE=y 95CONFIG_OPROFILE=y
96CONFIG_HAVE_OPROFILE=y 96CONFIG_HAVE_OPROFILE=y
97CONFIG_KPROBES=y 97CONFIG_KPROBES=y
98CONFIG_KRETPROBES=y 98CONFIG_KRETPROBES=y
99CONFIG_HAVE_KPROBES=y 99CONFIG_HAVE_KPROBES=y
100CONFIG_HAVE_KRETPROBES=y 100CONFIG_HAVE_KRETPROBES=y
101
102#
103# GCOV-based kernel profiling
104#
105# CONFIG_GCOV_KERNEL is not set
101# CONFIG_SLOW_WORK is not set 106# CONFIG_SLOW_WORK is not set
102CONFIG_HAVE_GENERIC_DMA_COHERENT=y 107CONFIG_HAVE_GENERIC_DMA_COHERENT=y
103CONFIG_RT_MUTEXES=y 108CONFIG_RT_MUTEXES=y
@@ -109,7 +114,7 @@ CONFIG_MODULE_UNLOAD=y
109# CONFIG_MODVERSIONS is not set 114# CONFIG_MODVERSIONS is not set
110# CONFIG_MODULE_SRCVERSION_ALL is not set 115# CONFIG_MODULE_SRCVERSION_ALL is not set
111CONFIG_BLOCK=y 116CONFIG_BLOCK=y
112# CONFIG_LBD is not set 117CONFIG_LBDAF=y
113# CONFIG_BLK_DEV_BSG is not set 118# CONFIG_BLK_DEV_BSG is not set
114# CONFIG_BLK_DEV_INTEGRITY is not set 119# CONFIG_BLK_DEV_INTEGRITY is not set
115 120
@@ -130,19 +135,22 @@ CONFIG_DEFAULT_IOSCHED="cfq"
130# 135#
131# System Type 136# System Type
132# 137#
138CONFIG_MMU=y
133# CONFIG_ARCH_AAEC2000 is not set 139# CONFIG_ARCH_AAEC2000 is not set
134# CONFIG_ARCH_INTEGRATOR is not set 140# CONFIG_ARCH_INTEGRATOR is not set
135# CONFIG_ARCH_REALVIEW is not set 141# CONFIG_ARCH_REALVIEW is not set
136# CONFIG_ARCH_VERSATILE is not set 142# CONFIG_ARCH_VERSATILE is not set
137# CONFIG_ARCH_AT91 is not set 143# CONFIG_ARCH_AT91 is not set
138# CONFIG_ARCH_CLPS711X is not set 144# CONFIG_ARCH_CLPS711X is not set
145# CONFIG_ARCH_GEMINI is not set
139# CONFIG_ARCH_EBSA110 is not set 146# CONFIG_ARCH_EBSA110 is not set
140# CONFIG_ARCH_EP93XX is not set 147# CONFIG_ARCH_EP93XX is not set
141# CONFIG_ARCH_GEMINI is not set
142# CONFIG_ARCH_FOOTBRIDGE is not set 148# CONFIG_ARCH_FOOTBRIDGE is not set
149# CONFIG_ARCH_MXC is not set
150# CONFIG_ARCH_STMP3XXX is not set
143# CONFIG_ARCH_NETX is not set 151# CONFIG_ARCH_NETX is not set
144# CONFIG_ARCH_H720X is not set 152# CONFIG_ARCH_H720X is not set
145# CONFIG_ARCH_IMX is not set 153# CONFIG_ARCH_NOMADIK is not set
146# CONFIG_ARCH_IOP13XX is not set 154# CONFIG_ARCH_IOP13XX is not set
147# CONFIG_ARCH_IOP32X is not set 155# CONFIG_ARCH_IOP32X is not set
148# CONFIG_ARCH_IOP33X is not set 156# CONFIG_ARCH_IOP33X is not set
@@ -151,25 +159,27 @@ CONFIG_DEFAULT_IOSCHED="cfq"
151# CONFIG_ARCH_IXP4XX is not set 159# CONFIG_ARCH_IXP4XX is not set
152# CONFIG_ARCH_L7200 is not set 160# CONFIG_ARCH_L7200 is not set
153# CONFIG_ARCH_KIRKWOOD is not set 161# CONFIG_ARCH_KIRKWOOD is not set
154# CONFIG_ARCH_KS8695 is not set
155# CONFIG_ARCH_NS9XXX is not set
156# CONFIG_ARCH_LOKI is not set 162# CONFIG_ARCH_LOKI is not set
157# CONFIG_ARCH_MV78XX0 is not set 163# CONFIG_ARCH_MV78XX0 is not set
158# CONFIG_ARCH_MXC is not set
159CONFIG_ARCH_ORION5X=y 164CONFIG_ARCH_ORION5X=y
165# CONFIG_ARCH_MMP is not set
166# CONFIG_ARCH_KS8695 is not set
167# CONFIG_ARCH_NS9XXX is not set
168# CONFIG_ARCH_W90X900 is not set
160# CONFIG_ARCH_PNX4008 is not set 169# CONFIG_ARCH_PNX4008 is not set
161# CONFIG_ARCH_PXA is not set 170# CONFIG_ARCH_PXA is not set
162# CONFIG_ARCH_MMP is not set 171# CONFIG_ARCH_MSM is not set
163# CONFIG_ARCH_RPC is not set 172# CONFIG_ARCH_RPC is not set
164# CONFIG_ARCH_SA1100 is not set 173# CONFIG_ARCH_SA1100 is not set
165# CONFIG_ARCH_S3C2410 is not set 174# CONFIG_ARCH_S3C2410 is not set
166# CONFIG_ARCH_S3C64XX is not set 175# CONFIG_ARCH_S3C64XX is not set
176# CONFIG_ARCH_S5PC1XX is not set
167# CONFIG_ARCH_SHARK is not set 177# CONFIG_ARCH_SHARK is not set
168# CONFIG_ARCH_LH7A40X is not set 178# CONFIG_ARCH_LH7A40X is not set
179# CONFIG_ARCH_U300 is not set
169# CONFIG_ARCH_DAVINCI is not set 180# CONFIG_ARCH_DAVINCI is not set
170# CONFIG_ARCH_OMAP is not set 181# CONFIG_ARCH_OMAP is not set
171# CONFIG_ARCH_MSM is not set 182# CONFIG_ARCH_BCMRING is not set
172# CONFIG_ARCH_W90X900 is not set
173 183
174# 184#
175# Orion Implementations 185# Orion Implementations
@@ -187,6 +197,9 @@ CONFIG_MACH_WRT350N_V2=y
187CONFIG_MACH_TS78XX=y 197CONFIG_MACH_TS78XX=y
188CONFIG_MACH_MV2120=y 198CONFIG_MACH_MV2120=y
189CONFIG_MACH_EDMINI_V2=y 199CONFIG_MACH_EDMINI_V2=y
200CONFIG_MACH_D2NET=y
201CONFIG_MACH_BIGDISK=y
202CONFIG_MACH_NET2BIG=y
190CONFIG_MACH_MSS2=y 203CONFIG_MACH_MSS2=y
191CONFIG_MACH_WNR854T=y 204CONFIG_MACH_WNR854T=y
192CONFIG_MACH_RD88F5181L_GE=y 205CONFIG_MACH_RD88F5181L_GE=y
@@ -202,7 +215,7 @@ CONFIG_CPU_FEROCEON=y
202CONFIG_CPU_FEROCEON_OLD_ID=y 215CONFIG_CPU_FEROCEON_OLD_ID=y
203CONFIG_CPU_32v5=y 216CONFIG_CPU_32v5=y
204CONFIG_CPU_ABRT_EV5T=y 217CONFIG_CPU_ABRT_EV5T=y
205CONFIG_CPU_PABRT_NOIFAR=y 218CONFIG_CPU_PABRT_LEGACY=y
206CONFIG_CPU_CACHE_VIVT=y 219CONFIG_CPU_CACHE_VIVT=y
207CONFIG_CPU_COPY_FEROCEON=y 220CONFIG_CPU_COPY_FEROCEON=y
208CONFIG_CPU_TLB_FEROCEON=y 221CONFIG_CPU_TLB_FEROCEON=y
@@ -215,7 +228,7 @@ CONFIG_CPU_CP15_MMU=y
215CONFIG_ARM_THUMB=y 228CONFIG_ARM_THUMB=y
216# CONFIG_CPU_ICACHE_DISABLE is not set 229# CONFIG_CPU_ICACHE_DISABLE is not set
217# CONFIG_CPU_DCACHE_DISABLE is not set 230# CONFIG_CPU_DCACHE_DISABLE is not set
218# CONFIG_OUTER_CACHE is not set 231CONFIG_ARM_L1_CACHE_SHIFT=5
219 232
220# 233#
221# Bus support 234# Bus support
@@ -240,11 +253,12 @@ CONFIG_VMSPLIT_3G=y
240# CONFIG_VMSPLIT_2G is not set 253# CONFIG_VMSPLIT_2G is not set
241# CONFIG_VMSPLIT_1G is not set 254# CONFIG_VMSPLIT_1G is not set
242CONFIG_PAGE_OFFSET=0xC0000000 255CONFIG_PAGE_OFFSET=0xC0000000
256# CONFIG_PREEMPT_NONE is not set
257# CONFIG_PREEMPT_VOLUNTARY is not set
243CONFIG_PREEMPT=y 258CONFIG_PREEMPT=y
244CONFIG_HZ=100 259CONFIG_HZ=100
245CONFIG_AEABI=y 260CONFIG_AEABI=y
246CONFIG_OABI_COMPAT=y 261CONFIG_OABI_COMPAT=y
247CONFIG_ARCH_FLATMEM_HAS_HOLES=y
248# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set 262# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
249# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set 263# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
250# CONFIG_HIGHMEM is not set 264# CONFIG_HIGHMEM is not set
@@ -259,12 +273,14 @@ CONFIG_SPLIT_PTLOCK_CPUS=4096
259# CONFIG_PHYS_ADDR_T_64BIT is not set 273# CONFIG_PHYS_ADDR_T_64BIT is not set
260CONFIG_ZONE_DMA_FLAG=0 274CONFIG_ZONE_DMA_FLAG=0
261CONFIG_VIRT_TO_BUS=y 275CONFIG_VIRT_TO_BUS=y
262CONFIG_UNEVICTABLE_LRU=y
263CONFIG_HAVE_MLOCK=y 276CONFIG_HAVE_MLOCK=y
264CONFIG_HAVE_MLOCKED_PAGE_BIT=y 277CONFIG_HAVE_MLOCKED_PAGE_BIT=y
278# CONFIG_KSM is not set
279CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
265CONFIG_LEDS=y 280CONFIG_LEDS=y
266CONFIG_LEDS_CPU=y 281CONFIG_LEDS_CPU=y
267CONFIG_ALIGNMENT_TRAP=y 282CONFIG_ALIGNMENT_TRAP=y
283CONFIG_UACCESS_WITH_MEMCPY=y
268 284
269# 285#
270# Boot options 286# Boot options
@@ -308,6 +324,7 @@ CONFIG_PM=y
308# CONFIG_PM_DEBUG is not set 324# CONFIG_PM_DEBUG is not set
309# CONFIG_SUSPEND is not set 325# CONFIG_SUSPEND is not set
310# CONFIG_APM_EMULATION is not set 326# CONFIG_APM_EMULATION is not set
327# CONFIG_PM_RUNTIME is not set
311CONFIG_ARCH_SUSPEND_POSSIBLE=y 328CONFIG_ARCH_SUSPEND_POSSIBLE=y
312CONFIG_NET=y 329CONFIG_NET=y
313 330
@@ -356,6 +373,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
356# CONFIG_NETFILTER is not set 373# CONFIG_NETFILTER is not set
357# CONFIG_IP_DCCP is not set 374# CONFIG_IP_DCCP is not set
358# CONFIG_IP_SCTP is not set 375# CONFIG_IP_SCTP is not set
376# CONFIG_RDS is not set
359# CONFIG_TIPC is not set 377# CONFIG_TIPC is not set
360# CONFIG_ATM is not set 378# CONFIG_ATM is not set
361# CONFIG_BRIDGE is not set 379# CONFIG_BRIDGE is not set
@@ -378,6 +396,7 @@ CONFIG_NET_DSA_MV88E6123_61_65=y
378# CONFIG_ECONET is not set 396# CONFIG_ECONET is not set
379# CONFIG_WAN_ROUTER is not set 397# CONFIG_WAN_ROUTER is not set
380# CONFIG_PHONET is not set 398# CONFIG_PHONET is not set
399# CONFIG_IEEE802154 is not set
381# CONFIG_NET_SCHED is not set 400# CONFIG_NET_SCHED is not set
382# CONFIG_DCB is not set 401# CONFIG_DCB is not set
383 402
@@ -394,11 +413,15 @@ CONFIG_NET_PKTGEN=m
394# CONFIG_AF_RXRPC is not set 413# CONFIG_AF_RXRPC is not set
395CONFIG_WIRELESS=y 414CONFIG_WIRELESS=y
396# CONFIG_CFG80211 is not set 415# CONFIG_CFG80211 is not set
416CONFIG_CFG80211_DEFAULT_PS_VALUE=0
397# CONFIG_WIRELESS_OLD_REGULATORY is not set 417# CONFIG_WIRELESS_OLD_REGULATORY is not set
398CONFIG_WIRELESS_EXT=y 418CONFIG_WIRELESS_EXT=y
399CONFIG_WIRELESS_EXT_SYSFS=y 419CONFIG_WIRELESS_EXT_SYSFS=y
400# CONFIG_LIB80211 is not set 420# CONFIG_LIB80211 is not set
401# CONFIG_MAC80211 is not set 421
422#
423# CFG80211 needs to be enabled for MAC80211
424#
402# CONFIG_WIMAX is not set 425# CONFIG_WIMAX is not set
403# CONFIG_RFKILL is not set 426# CONFIG_RFKILL is not set
404# CONFIG_NET_9P is not set 427# CONFIG_NET_9P is not set
@@ -411,6 +434,7 @@ CONFIG_WIRELESS_EXT_SYSFS=y
411# Generic Driver Options 434# Generic Driver Options
412# 435#
413CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 436CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
437# CONFIG_DEVTMPFS is not set
414CONFIG_STANDALONE=y 438CONFIG_STANDALONE=y
415CONFIG_PREVENT_FIRMWARE_BUILD=y 439CONFIG_PREVENT_FIRMWARE_BUILD=y
416CONFIG_FW_LOADER=y 440CONFIG_FW_LOADER=y
@@ -422,9 +446,9 @@ CONFIG_EXTRA_FIRMWARE=""
422# CONFIG_CONNECTOR is not set 446# CONFIG_CONNECTOR is not set
423CONFIG_MTD=y 447CONFIG_MTD=y
424# CONFIG_MTD_DEBUG is not set 448# CONFIG_MTD_DEBUG is not set
449# CONFIG_MTD_TESTS is not set
425# CONFIG_MTD_CONCAT is not set 450# CONFIG_MTD_CONCAT is not set
426CONFIG_MTD_PARTITIONS=y 451CONFIG_MTD_PARTITIONS=y
427# CONFIG_MTD_TESTS is not set
428# CONFIG_MTD_REDBOOT_PARTS is not set 452# CONFIG_MTD_REDBOOT_PARTS is not set
429CONFIG_MTD_CMDLINE_PARTS=y 453CONFIG_MTD_CMDLINE_PARTS=y
430# CONFIG_MTD_AFS_PARTS is not set 454# CONFIG_MTD_AFS_PARTS is not set
@@ -537,6 +561,7 @@ CONFIG_BLK_DEV_LOOP=y
537# CONFIG_BLK_DEV_RAM is not set 561# CONFIG_BLK_DEV_RAM is not set
538# CONFIG_CDROM_PKTCDVD is not set 562# CONFIG_CDROM_PKTCDVD is not set
539# CONFIG_ATA_OVER_ETH is not set 563# CONFIG_ATA_OVER_ETH is not set
564# CONFIG_MG_DISK is not set
540CONFIG_MISC_DEVICES=y 565CONFIG_MISC_DEVICES=y
541# CONFIG_PHANTOM is not set 566# CONFIG_PHANTOM is not set
542# CONFIG_SGI_IOC4 is not set 567# CONFIG_SGI_IOC4 is not set
@@ -552,7 +577,9 @@ CONFIG_MISC_DEVICES=y
552# 577#
553# CONFIG_EEPROM_AT24 is not set 578# CONFIG_EEPROM_AT24 is not set
554# CONFIG_EEPROM_LEGACY is not set 579# CONFIG_EEPROM_LEGACY is not set
580# CONFIG_EEPROM_MAX6875 is not set
555# CONFIG_EEPROM_93CX6 is not set 581# CONFIG_EEPROM_93CX6 is not set
582# CONFIG_CB710_CORE is not set
556CONFIG_HAVE_IDE=y 583CONFIG_HAVE_IDE=y
557# CONFIG_IDE is not set 584# CONFIG_IDE is not set
558 585
@@ -576,10 +603,6 @@ CONFIG_BLK_DEV_SR=m
576# CONFIG_BLK_DEV_SR_VENDOR is not set 603# CONFIG_BLK_DEV_SR_VENDOR is not set
577CONFIG_CHR_DEV_SG=m 604CONFIG_CHR_DEV_SG=m
578# CONFIG_CHR_DEV_SCH is not set 605# CONFIG_CHR_DEV_SCH is not set
579
580#
581# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
582#
583# CONFIG_SCSI_MULTI_LUN is not set 606# CONFIG_SCSI_MULTI_LUN is not set
584# CONFIG_SCSI_CONSTANTS is not set 607# CONFIG_SCSI_CONSTANTS is not set
585# CONFIG_SCSI_LOGGING is not set 608# CONFIG_SCSI_LOGGING is not set
@@ -596,6 +619,8 @@ CONFIG_SCSI_WAIT_SCAN=m
596# CONFIG_SCSI_SRP_ATTRS is not set 619# CONFIG_SCSI_SRP_ATTRS is not set
597CONFIG_SCSI_LOWLEVEL=y 620CONFIG_SCSI_LOWLEVEL=y
598# CONFIG_ISCSI_TCP is not set 621# CONFIG_ISCSI_TCP is not set
622# CONFIG_SCSI_BNX2_ISCSI is not set
623# CONFIG_BE2ISCSI is not set
599# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 624# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
600# CONFIG_SCSI_3W_9XXX is not set 625# CONFIG_SCSI_3W_9XXX is not set
601# CONFIG_SCSI_ACARD is not set 626# CONFIG_SCSI_ACARD is not set
@@ -604,6 +629,7 @@ CONFIG_SCSI_LOWLEVEL=y
604# CONFIG_SCSI_AIC7XXX_OLD is not set 629# CONFIG_SCSI_AIC7XXX_OLD is not set
605# CONFIG_SCSI_AIC79XX is not set 630# CONFIG_SCSI_AIC79XX is not set
606# CONFIG_SCSI_AIC94XX is not set 631# CONFIG_SCSI_AIC94XX is not set
632# CONFIG_SCSI_MVSAS is not set
607# CONFIG_SCSI_DPT_I2O is not set 633# CONFIG_SCSI_DPT_I2O is not set
608# CONFIG_SCSI_ADVANSYS is not set 634# CONFIG_SCSI_ADVANSYS is not set
609# CONFIG_SCSI_ARCMSR is not set 635# CONFIG_SCSI_ARCMSR is not set
@@ -620,7 +646,6 @@ CONFIG_SCSI_LOWLEVEL=y
620# CONFIG_SCSI_IPS is not set 646# CONFIG_SCSI_IPS is not set
621# CONFIG_SCSI_INITIO is not set 647# CONFIG_SCSI_INITIO is not set
622# CONFIG_SCSI_INIA100 is not set 648# CONFIG_SCSI_INIA100 is not set
623# CONFIG_SCSI_MVSAS is not set
624# CONFIG_SCSI_STEX is not set 649# CONFIG_SCSI_STEX is not set
625# CONFIG_SCSI_SYM53C8XX_2 is not set 650# CONFIG_SCSI_SYM53C8XX_2 is not set
626# CONFIG_SCSI_IPR is not set 651# CONFIG_SCSI_IPR is not set
@@ -632,11 +657,14 @@ CONFIG_SCSI_LOWLEVEL=y
632# CONFIG_SCSI_DC390T is not set 657# CONFIG_SCSI_DC390T is not set
633# CONFIG_SCSI_NSP32 is not set 658# CONFIG_SCSI_NSP32 is not set
634# CONFIG_SCSI_DEBUG is not set 659# CONFIG_SCSI_DEBUG is not set
660# CONFIG_SCSI_PMCRAID is not set
635# CONFIG_SCSI_SRP is not set 661# CONFIG_SCSI_SRP is not set
662# CONFIG_SCSI_BFA_FC is not set
636# CONFIG_SCSI_DH is not set 663# CONFIG_SCSI_DH is not set
637# CONFIG_SCSI_OSD_INITIATOR is not set 664# CONFIG_SCSI_OSD_INITIATOR is not set
638CONFIG_ATA=y 665CONFIG_ATA=y
639# CONFIG_ATA_NONSTANDARD is not set 666# CONFIG_ATA_NONSTANDARD is not set
667CONFIG_ATA_VERBOSE_ERROR=y
640CONFIG_SATA_PMP=y 668CONFIG_SATA_PMP=y
641# CONFIG_SATA_AHCI is not set 669# CONFIG_SATA_AHCI is not set
642# CONFIG_SATA_SIL24 is not set 670# CONFIG_SATA_SIL24 is not set
@@ -658,6 +686,7 @@ CONFIG_SATA_MV=y
658# CONFIG_PATA_ALI is not set 686# CONFIG_PATA_ALI is not set
659# CONFIG_PATA_AMD is not set 687# CONFIG_PATA_AMD is not set
660# CONFIG_PATA_ARTOP is not set 688# CONFIG_PATA_ARTOP is not set
689# CONFIG_PATA_ATP867X is not set
661# CONFIG_PATA_ATIIXP is not set 690# CONFIG_PATA_ATIIXP is not set
662# CONFIG_PATA_CMD640_PCI is not set 691# CONFIG_PATA_CMD640_PCI is not set
663# CONFIG_PATA_CMD64X is not set 692# CONFIG_PATA_CMD64X is not set
@@ -685,6 +714,7 @@ CONFIG_SATA_MV=y
685# CONFIG_PATA_OPTIDMA is not set 714# CONFIG_PATA_OPTIDMA is not set
686# CONFIG_PATA_PDC_OLD is not set 715# CONFIG_PATA_PDC_OLD is not set
687# CONFIG_PATA_RADISYS is not set 716# CONFIG_PATA_RADISYS is not set
717# CONFIG_PATA_RDC is not set
688# CONFIG_PATA_RZ1000 is not set 718# CONFIG_PATA_RZ1000 is not set
689# CONFIG_PATA_SC1200 is not set 719# CONFIG_PATA_SC1200 is not set
690# CONFIG_PATA_SERVERWORKS is not set 720# CONFIG_PATA_SERVERWORKS is not set
@@ -703,13 +733,16 @@ CONFIG_SATA_MV=y
703# 733#
704 734
705# 735#
706# Enable only one of the two stacks, unless you know what you are doing 736# You can enable one or both FireWire driver stacks.
737#
738
739#
740# See the help texts for more information.
707# 741#
708# CONFIG_FIREWIRE is not set 742# CONFIG_FIREWIRE is not set
709# CONFIG_IEEE1394 is not set 743# CONFIG_IEEE1394 is not set
710# CONFIG_I2O is not set 744# CONFIG_I2O is not set
711CONFIG_NETDEVICES=y 745CONFIG_NETDEVICES=y
712CONFIG_COMPAT_NET_DEV_OPS=y
713# CONFIG_DUMMY is not set 746# CONFIG_DUMMY is not set
714# CONFIG_BONDING is not set 747# CONFIG_BONDING is not set
715# CONFIG_MACVLAN is not set 748# CONFIG_MACVLAN is not set
@@ -777,6 +810,8 @@ CONFIG_NET_PCI=y
777# CONFIG_SMSC9420 is not set 810# CONFIG_SMSC9420 is not set
778# CONFIG_SUNDANCE is not set 811# CONFIG_SUNDANCE is not set
779# CONFIG_TLAN is not set 812# CONFIG_TLAN is not set
813# CONFIG_KS8842 is not set
814# CONFIG_KS8851_MLL is not set
780# CONFIG_VIA_RHINE is not set 815# CONFIG_VIA_RHINE is not set
781# CONFIG_SC92031 is not set 816# CONFIG_SC92031 is not set
782# CONFIG_ATL2 is not set 817# CONFIG_ATL2 is not set
@@ -798,6 +833,7 @@ CONFIG_NETDEV_1000=y
798# CONFIG_VIA_VELOCITY is not set 833# CONFIG_VIA_VELOCITY is not set
799# CONFIG_TIGON3 is not set 834# CONFIG_TIGON3 is not set
800# CONFIG_BNX2 is not set 835# CONFIG_BNX2 is not set
836# CONFIG_CNIC is not set
801CONFIG_MV643XX_ETH=y 837CONFIG_MV643XX_ETH=y
802# CONFIG_QLA3XXX is not set 838# CONFIG_QLA3XXX is not set
803# CONFIG_ATL1 is not set 839# CONFIG_ATL1 is not set
@@ -806,10 +842,7 @@ CONFIG_MV643XX_ETH=y
806# CONFIG_JME is not set 842# CONFIG_JME is not set
807# CONFIG_NETDEV_10000 is not set 843# CONFIG_NETDEV_10000 is not set
808# CONFIG_TR is not set 844# CONFIG_TR is not set
809 845CONFIG_WLAN=y
810#
811# Wireless LAN
812#
813# CONFIG_WLAN_PRE80211 is not set 846# CONFIG_WLAN_PRE80211 is not set
814# CONFIG_WLAN_80211 is not set 847# CONFIG_WLAN_80211 is not set
815 848
@@ -835,6 +868,7 @@ CONFIG_MV643XX_ETH=y
835# CONFIG_NETPOLL is not set 868# CONFIG_NETPOLL is not set
836# CONFIG_NET_POLL_CONTROLLER is not set 869# CONFIG_NET_POLL_CONTROLLER is not set
837# CONFIG_ISDN is not set 870# CONFIG_ISDN is not set
871# CONFIG_PHONE is not set
838 872
839# 873#
840# Input device support 874# Input device support
@@ -855,13 +889,19 @@ CONFIG_INPUT_EVDEV=y
855# Input Device Drivers 889# Input Device Drivers
856# 890#
857CONFIG_INPUT_KEYBOARD=y 891CONFIG_INPUT_KEYBOARD=y
892# CONFIG_KEYBOARD_ADP5588 is not set
858# CONFIG_KEYBOARD_ATKBD is not set 893# CONFIG_KEYBOARD_ATKBD is not set
859# CONFIG_KEYBOARD_SUNKBD is not set 894# CONFIG_QT2160 is not set
860# CONFIG_KEYBOARD_LKKBD is not set 895# CONFIG_KEYBOARD_LKKBD is not set
861# CONFIG_KEYBOARD_XTKBD is not set 896CONFIG_KEYBOARD_GPIO=y
897# CONFIG_KEYBOARD_MATRIX is not set
898# CONFIG_KEYBOARD_LM8323 is not set
899# CONFIG_KEYBOARD_MAX7359 is not set
862# CONFIG_KEYBOARD_NEWTON is not set 900# CONFIG_KEYBOARD_NEWTON is not set
901# CONFIG_KEYBOARD_OPENCORES is not set
863# CONFIG_KEYBOARD_STOWAWAY is not set 902# CONFIG_KEYBOARD_STOWAWAY is not set
864CONFIG_KEYBOARD_GPIO=y 903# CONFIG_KEYBOARD_SUNKBD is not set
904# CONFIG_KEYBOARD_XTKBD is not set
865# CONFIG_INPUT_MOUSE is not set 905# CONFIG_INPUT_MOUSE is not set
866# CONFIG_INPUT_JOYSTICK is not set 906# CONFIG_INPUT_JOYSTICK is not set
867# CONFIG_INPUT_TABLET is not set 907# CONFIG_INPUT_TABLET is not set
@@ -912,6 +952,7 @@ CONFIG_HW_RANDOM_TIMERIOMEM=m
912CONFIG_DEVPORT=y 952CONFIG_DEVPORT=y
913CONFIG_I2C=y 953CONFIG_I2C=y
914CONFIG_I2C_BOARDINFO=y 954CONFIG_I2C_BOARDINFO=y
955# CONFIG_I2C_COMPAT is not set
915CONFIG_I2C_CHARDEV=y 956CONFIG_I2C_CHARDEV=y
916CONFIG_I2C_HELPER_AUTO=y 957CONFIG_I2C_HELPER_AUTO=y
917 958
@@ -967,20 +1008,55 @@ CONFIG_I2C_MV64XXX=y
967# Miscellaneous I2C Chip support 1008# Miscellaneous I2C Chip support
968# 1009#
969# CONFIG_DS1682 is not set 1010# CONFIG_DS1682 is not set
970# CONFIG_SENSORS_PCF8574 is not set
971# CONFIG_PCF8575 is not set
972# CONFIG_SENSORS_PCA9539 is not set
973# CONFIG_SENSORS_MAX6875 is not set
974# CONFIG_SENSORS_TSL2550 is not set 1011# CONFIG_SENSORS_TSL2550 is not set
975# CONFIG_I2C_DEBUG_CORE is not set 1012# CONFIG_I2C_DEBUG_CORE is not set
976# CONFIG_I2C_DEBUG_ALGO is not set 1013# CONFIG_I2C_DEBUG_ALGO is not set
977# CONFIG_I2C_DEBUG_BUS is not set 1014# CONFIG_I2C_DEBUG_BUS is not set
978# CONFIG_I2C_DEBUG_CHIP is not set 1015# CONFIG_I2C_DEBUG_CHIP is not set
979# CONFIG_SPI is not set 1016# CONFIG_SPI is not set
1017
1018#
1019# PPS support
1020#
1021# CONFIG_PPS is not set
1022CONFIG_ARCH_REQUIRE_GPIOLIB=y
1023CONFIG_GPIOLIB=y
1024# CONFIG_DEBUG_GPIO is not set
1025CONFIG_GPIO_SYSFS=y
1026
1027#
1028# Memory mapped GPIO expanders:
1029#
1030
1031#
1032# I2C GPIO expanders:
1033#
1034# CONFIG_GPIO_MAX732X is not set
1035# CONFIG_GPIO_PCA953X is not set
1036# CONFIG_GPIO_PCF857X is not set
1037
1038#
1039# PCI GPIO expanders:
1040#
1041# CONFIG_GPIO_BT8XX is not set
1042# CONFIG_GPIO_LANGWELL is not set
1043
1044#
1045# SPI GPIO expanders:
1046#
1047
1048#
1049# AC97 GPIO expanders:
1050#
980# CONFIG_W1 is not set 1051# CONFIG_W1 is not set
981# CONFIG_POWER_SUPPLY is not set 1052# CONFIG_POWER_SUPPLY is not set
982CONFIG_HWMON=y 1053CONFIG_HWMON=y
983# CONFIG_HWMON_VID is not set 1054# CONFIG_HWMON_VID is not set
1055# CONFIG_HWMON_DEBUG_CHIP is not set
1056
1057#
1058# Native drivers
1059#
984# CONFIG_SENSORS_AD7414 is not set 1060# CONFIG_SENSORS_AD7414 is not set
985# CONFIG_SENSORS_AD7418 is not set 1061# CONFIG_SENSORS_AD7418 is not set
986# CONFIG_SENSORS_ADM1021 is not set 1062# CONFIG_SENSORS_ADM1021 is not set
@@ -1030,6 +1106,8 @@ CONFIG_SENSORS_LM75=y
1030# CONFIG_SENSORS_SMSC47B397 is not set 1106# CONFIG_SENSORS_SMSC47B397 is not set
1031# CONFIG_SENSORS_ADS7828 is not set 1107# CONFIG_SENSORS_ADS7828 is not set
1032# CONFIG_SENSORS_THMC50 is not set 1108# CONFIG_SENSORS_THMC50 is not set
1109# CONFIG_SENSORS_TMP401 is not set
1110# CONFIG_SENSORS_TMP421 is not set
1033# CONFIG_SENSORS_VIA686A is not set 1111# CONFIG_SENSORS_VIA686A is not set
1034# CONFIG_SENSORS_VT1211 is not set 1112# CONFIG_SENSORS_VT1211 is not set
1035# CONFIG_SENSORS_VT8231 is not set 1113# CONFIG_SENSORS_VT8231 is not set
@@ -1041,9 +1119,7 @@ CONFIG_SENSORS_LM75=y
1041# CONFIG_SENSORS_W83L786NG is not set 1119# CONFIG_SENSORS_W83L786NG is not set
1042# CONFIG_SENSORS_W83627HF is not set 1120# CONFIG_SENSORS_W83627HF is not set
1043# CONFIG_SENSORS_W83627EHF is not set 1121# CONFIG_SENSORS_W83627EHF is not set
1044# CONFIG_HWMON_DEBUG_CHIP is not set
1045# CONFIG_THERMAL is not set 1122# CONFIG_THERMAL is not set
1046# CONFIG_THERMAL_HWMON is not set
1047# CONFIG_WATCHDOG is not set 1123# CONFIG_WATCHDOG is not set
1048CONFIG_SSB_POSSIBLE=y 1124CONFIG_SSB_POSSIBLE=y
1049 1125
@@ -1057,33 +1133,26 @@ CONFIG_SSB_POSSIBLE=y
1057# 1133#
1058# CONFIG_MFD_CORE is not set 1134# CONFIG_MFD_CORE is not set
1059# CONFIG_MFD_SM501 is not set 1135# CONFIG_MFD_SM501 is not set
1136# CONFIG_MFD_ASIC3 is not set
1137# CONFIG_HTC_EGPIO is not set
1060# CONFIG_HTC_PASIC3 is not set 1138# CONFIG_HTC_PASIC3 is not set
1139# CONFIG_TPS65010 is not set
1061# CONFIG_TWL4030_CORE is not set 1140# CONFIG_TWL4030_CORE is not set
1062# CONFIG_MFD_TMIO is not set 1141# CONFIG_MFD_TMIO is not set
1142# CONFIG_MFD_TC6393XB is not set
1063# CONFIG_PMIC_DA903X is not set 1143# CONFIG_PMIC_DA903X is not set
1064# CONFIG_MFD_WM8400 is not set 1144# CONFIG_MFD_WM8400 is not set
1145# CONFIG_MFD_WM831X is not set
1065# CONFIG_MFD_WM8350_I2C is not set 1146# CONFIG_MFD_WM8350_I2C is not set
1066# CONFIG_MFD_PCF50633 is not set 1147# CONFIG_MFD_PCF50633 is not set
1067 1148# CONFIG_AB3100_CORE is not set
1068# 1149# CONFIG_REGULATOR is not set
1069# Multimedia devices 1150# CONFIG_MEDIA_SUPPORT is not set
1070#
1071
1072#
1073# Multimedia core support
1074#
1075# CONFIG_VIDEO_DEV is not set
1076# CONFIG_DVB_CORE is not set
1077# CONFIG_VIDEO_MEDIA is not set
1078
1079#
1080# Multimedia drivers
1081#
1082# CONFIG_DAB is not set
1083 1151
1084# 1152#
1085# Graphics support 1153# Graphics support
1086# 1154#
1155# CONFIG_VGA_ARB is not set
1087# CONFIG_DRM is not set 1156# CONFIG_DRM is not set
1088# CONFIG_VGASTATE is not set 1157# CONFIG_VGASTATE is not set
1089# CONFIG_VIDEO_OUTPUT_CONTROL is not set 1158# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -1097,7 +1166,6 @@ CONFIG_SSB_POSSIBLE=y
1097# CONFIG_SOUND is not set 1166# CONFIG_SOUND is not set
1098CONFIG_HID_SUPPORT=y 1167CONFIG_HID_SUPPORT=y
1099CONFIG_HID=y 1168CONFIG_HID=y
1100# CONFIG_HID_DEBUG is not set
1101# CONFIG_HIDRAW is not set 1169# CONFIG_HIDRAW is not set
1102 1170
1103# 1171#
@@ -1116,10 +1184,11 @@ CONFIG_USB_HID=y
1116# CONFIG_HID_CHERRY is not set 1184# CONFIG_HID_CHERRY is not set
1117# CONFIG_HID_CHICONY is not set 1185# CONFIG_HID_CHICONY is not set
1118# CONFIG_HID_CYPRESS is not set 1186# CONFIG_HID_CYPRESS is not set
1119# CONFIG_DRAGONRISE_FF is not set 1187# CONFIG_HID_DRAGONRISE is not set
1120# CONFIG_HID_EZKEY is not set 1188# CONFIG_HID_EZKEY is not set
1121# CONFIG_HID_KYE is not set 1189# CONFIG_HID_KYE is not set
1122# CONFIG_HID_GYRATION is not set 1190# CONFIG_HID_GYRATION is not set
1191# CONFIG_HID_TWINHAN is not set
1123# CONFIG_HID_KENSINGTON is not set 1192# CONFIG_HID_KENSINGTON is not set
1124# CONFIG_HID_LOGITECH is not set 1193# CONFIG_HID_LOGITECH is not set
1125# CONFIG_HID_MICROSOFT is not set 1194# CONFIG_HID_MICROSOFT is not set
@@ -1130,10 +1199,11 @@ CONFIG_USB_HID=y
1130# CONFIG_HID_SAMSUNG is not set 1199# CONFIG_HID_SAMSUNG is not set
1131# CONFIG_HID_SONY is not set 1200# CONFIG_HID_SONY is not set
1132# CONFIG_HID_SUNPLUS is not set 1201# CONFIG_HID_SUNPLUS is not set
1133# CONFIG_GREENASIA_FF is not set 1202# CONFIG_HID_GREENASIA is not set
1203# CONFIG_HID_SMARTJOYPLUS is not set
1134# CONFIG_HID_TOPSEED is not set 1204# CONFIG_HID_TOPSEED is not set
1135# CONFIG_THRUSTMASTER_FF is not set 1205# CONFIG_HID_THRUSTMASTER is not set
1136# CONFIG_ZEROPLUS_FF is not set 1206# CONFIG_HID_ZEROPLUS is not set
1137CONFIG_USB_SUPPORT=y 1207CONFIG_USB_SUPPORT=y
1138CONFIG_USB_ARCH_HAS_HCD=y 1208CONFIG_USB_ARCH_HAS_HCD=y
1139CONFIG_USB_ARCH_HAS_OHCI=y 1209CONFIG_USB_ARCH_HAS_OHCI=y
@@ -1160,18 +1230,21 @@ CONFIG_USB_DEVICE_CLASS=y
1160# USB Host Controller Drivers 1230# USB Host Controller Drivers
1161# 1231#
1162# CONFIG_USB_C67X00_HCD is not set 1232# CONFIG_USB_C67X00_HCD is not set
1233# CONFIG_USB_XHCI_HCD is not set
1163CONFIG_USB_EHCI_HCD=y 1234CONFIG_USB_EHCI_HCD=y
1164CONFIG_USB_EHCI_ROOT_HUB_TT=y 1235CONFIG_USB_EHCI_ROOT_HUB_TT=y
1165CONFIG_USB_EHCI_TT_NEWSCHED=y 1236CONFIG_USB_EHCI_TT_NEWSCHED=y
1166# CONFIG_USB_OXU210HP_HCD is not set 1237# CONFIG_USB_OXU210HP_HCD is not set
1167# CONFIG_USB_ISP116X_HCD is not set 1238# CONFIG_USB_ISP116X_HCD is not set
1168# CONFIG_USB_ISP1760_HCD is not set 1239# CONFIG_USB_ISP1760_HCD is not set
1240# CONFIG_USB_ISP1362_HCD is not set
1169# CONFIG_USB_OHCI_HCD is not set 1241# CONFIG_USB_OHCI_HCD is not set
1170# CONFIG_USB_UHCI_HCD is not set 1242# CONFIG_USB_UHCI_HCD is not set
1171# CONFIG_USB_SL811_HCD is not set 1243# CONFIG_USB_SL811_HCD is not set
1172# CONFIG_USB_R8A66597_HCD is not set 1244# CONFIG_USB_R8A66597_HCD is not set
1173# CONFIG_USB_WHCI_HCD is not set 1245# CONFIG_USB_WHCI_HCD is not set
1174# CONFIG_USB_HWA_HCD is not set 1246# CONFIG_USB_HWA_HCD is not set
1247# CONFIG_USB_MUSB_HDRC is not set
1175 1248
1176# 1249#
1177# USB Device Class drivers 1250# USB Device Class drivers
@@ -1248,7 +1321,6 @@ CONFIG_USB_STORAGE_JUMPSHOT=y
1248# CONFIG_UWB is not set 1321# CONFIG_UWB is not set
1249# CONFIG_MMC is not set 1322# CONFIG_MMC is not set
1250# CONFIG_MEMSTICK is not set 1323# CONFIG_MEMSTICK is not set
1251# CONFIG_ACCESSIBILITY is not set
1252CONFIG_NEW_LEDS=y 1324CONFIG_NEW_LEDS=y
1253CONFIG_LEDS_CLASS=y 1325CONFIG_LEDS_CLASS=y
1254 1326
@@ -1258,7 +1330,7 @@ CONFIG_LEDS_CLASS=y
1258# CONFIG_LEDS_PCA9532 is not set 1330# CONFIG_LEDS_PCA9532 is not set
1259CONFIG_LEDS_GPIO=y 1331CONFIG_LEDS_GPIO=y
1260CONFIG_LEDS_GPIO_PLATFORM=y 1332CONFIG_LEDS_GPIO_PLATFORM=y
1261# CONFIG_LEDS_LP5521 is not set 1333# CONFIG_LEDS_LP3944 is not set
1262# CONFIG_LEDS_PCA955X is not set 1334# CONFIG_LEDS_PCA955X is not set
1263# CONFIG_LEDS_BD2802 is not set 1335# CONFIG_LEDS_BD2802 is not set
1264 1336
@@ -1269,11 +1341,14 @@ CONFIG_LEDS_TRIGGERS=y
1269CONFIG_LEDS_TRIGGER_TIMER=y 1341CONFIG_LEDS_TRIGGER_TIMER=y
1270CONFIG_LEDS_TRIGGER_HEARTBEAT=y 1342CONFIG_LEDS_TRIGGER_HEARTBEAT=y
1271# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set 1343# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
1344# CONFIG_LEDS_TRIGGER_GPIO is not set
1272CONFIG_LEDS_TRIGGER_DEFAULT_ON=y 1345CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
1273 1346
1274# 1347#
1275# iptables trigger is under Netfilter config (LED target) 1348# iptables trigger is under Netfilter config (LED target)
1276# 1349#
1350# CONFIG_ACCESSIBILITY is not set
1351# CONFIG_INFINIBAND is not set
1277CONFIG_RTC_LIB=y 1352CONFIG_RTC_LIB=y
1278CONFIG_RTC_CLASS=y 1353CONFIG_RTC_CLASS=y
1279CONFIG_RTC_HCTOSYS=y 1354CONFIG_RTC_HCTOSYS=y
@@ -1306,6 +1381,7 @@ CONFIG_RTC_DRV_M41T80=y
1306CONFIG_RTC_DRV_S35390A=y 1381CONFIG_RTC_DRV_S35390A=y
1307# CONFIG_RTC_DRV_FM3130 is not set 1382# CONFIG_RTC_DRV_FM3130 is not set
1308# CONFIG_RTC_DRV_RX8581 is not set 1383# CONFIG_RTC_DRV_RX8581 is not set
1384# CONFIG_RTC_DRV_RX8025 is not set
1309 1385
1310# 1386#
1311# SPI RTC drivers 1387# SPI RTC drivers
@@ -1344,8 +1420,11 @@ CONFIG_DMA_ENGINE=y
1344# CONFIG_ASYNC_TX_DMA is not set 1420# CONFIG_ASYNC_TX_DMA is not set
1345# CONFIG_DMATEST is not set 1421# CONFIG_DMATEST is not set
1346# CONFIG_AUXDISPLAY is not set 1422# CONFIG_AUXDISPLAY is not set
1347# CONFIG_REGULATOR is not set
1348# CONFIG_UIO is not set 1423# CONFIG_UIO is not set
1424
1425#
1426# TI VLYNQ
1427#
1349# CONFIG_STAGING is not set 1428# CONFIG_STAGING is not set
1350 1429
1351# 1430#
@@ -1358,10 +1437,10 @@ CONFIG_EXT3_FS=y
1358# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set 1437# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
1359# CONFIG_EXT3_FS_XATTR is not set 1438# CONFIG_EXT3_FS_XATTR is not set
1360CONFIG_EXT4_FS=m 1439CONFIG_EXT4_FS=m
1361# CONFIG_EXT4DEV_COMPAT is not set
1362CONFIG_EXT4_FS_XATTR=y 1440CONFIG_EXT4_FS_XATTR=y
1363# CONFIG_EXT4_FS_POSIX_ACL is not set 1441# CONFIG_EXT4_FS_POSIX_ACL is not set
1364# CONFIG_EXT4_FS_SECURITY is not set 1442# CONFIG_EXT4_FS_SECURITY is not set
1443# CONFIG_EXT4_DEBUG is not set
1365CONFIG_JBD=y 1444CONFIG_JBD=y
1366# CONFIG_JBD_DEBUG is not set 1445# CONFIG_JBD_DEBUG is not set
1367CONFIG_JBD2=m 1446CONFIG_JBD2=m
@@ -1370,10 +1449,13 @@ CONFIG_FS_MBCACHE=m
1370# CONFIG_REISERFS_FS is not set 1449# CONFIG_REISERFS_FS is not set
1371# CONFIG_JFS_FS is not set 1450# CONFIG_JFS_FS is not set
1372# CONFIG_FS_POSIX_ACL is not set 1451# CONFIG_FS_POSIX_ACL is not set
1373CONFIG_FILE_LOCKING=y
1374# CONFIG_XFS_FS is not set 1452# CONFIG_XFS_FS is not set
1453# CONFIG_GFS2_FS is not set
1375# CONFIG_OCFS2_FS is not set 1454# CONFIG_OCFS2_FS is not set
1376# CONFIG_BTRFS_FS is not set 1455# CONFIG_BTRFS_FS is not set
1456# CONFIG_NILFS2_FS is not set
1457CONFIG_FILE_LOCKING=y
1458CONFIG_FSNOTIFY=y
1377CONFIG_DNOTIFY=y 1459CONFIG_DNOTIFY=y
1378CONFIG_INOTIFY=y 1460CONFIG_INOTIFY=y
1379CONFIG_INOTIFY_USER=y 1461CONFIG_INOTIFY_USER=y
@@ -1446,7 +1528,6 @@ CONFIG_CRAMFS=y
1446# CONFIG_ROMFS_FS is not set 1528# CONFIG_ROMFS_FS is not set
1447# CONFIG_SYSV_FS is not set 1529# CONFIG_SYSV_FS is not set
1448# CONFIG_UFS_FS is not set 1530# CONFIG_UFS_FS is not set
1449# CONFIG_NILFS2_FS is not set
1450CONFIG_NETWORK_FILESYSTEMS=y 1531CONFIG_NETWORK_FILESYSTEMS=y
1451CONFIG_NFS_FS=y 1532CONFIG_NFS_FS=y
1452CONFIG_NFS_V3=y 1533CONFIG_NFS_V3=y
@@ -1537,6 +1618,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1537CONFIG_ENABLE_MUST_CHECK=y 1618CONFIG_ENABLE_MUST_CHECK=y
1538CONFIG_FRAME_WARN=1024 1619CONFIG_FRAME_WARN=1024
1539CONFIG_MAGIC_SYSRQ=y 1620CONFIG_MAGIC_SYSRQ=y
1621# CONFIG_STRIP_ASM_SYMS is not set
1540# CONFIG_UNUSED_SYMBOLS is not set 1622# CONFIG_UNUSED_SYMBOLS is not set
1541CONFIG_DEBUG_FS=y 1623CONFIG_DEBUG_FS=y
1542# CONFIG_HEADERS_CHECK is not set 1624# CONFIG_HEADERS_CHECK is not set
@@ -1552,6 +1634,7 @@ CONFIG_SCHED_DEBUG=y
1552CONFIG_SCHEDSTATS=y 1634CONFIG_SCHEDSTATS=y
1553# CONFIG_TIMER_STATS is not set 1635# CONFIG_TIMER_STATS is not set
1554# CONFIG_DEBUG_OBJECTS is not set 1636# CONFIG_DEBUG_OBJECTS is not set
1637# CONFIG_DEBUG_KMEMLEAK is not set
1555CONFIG_DEBUG_PREEMPT=y 1638CONFIG_DEBUG_PREEMPT=y
1556# CONFIG_DEBUG_RT_MUTEXES is not set 1639# CONFIG_DEBUG_RT_MUTEXES is not set
1557# CONFIG_RT_MUTEX_TESTER is not set 1640# CONFIG_RT_MUTEX_TESTER is not set
@@ -1572,6 +1655,7 @@ CONFIG_DEBUG_INFO=y
1572# CONFIG_DEBUG_LIST is not set 1655# CONFIG_DEBUG_LIST is not set
1573# CONFIG_DEBUG_SG is not set 1656# CONFIG_DEBUG_SG is not set
1574# CONFIG_DEBUG_NOTIFIERS is not set 1657# CONFIG_DEBUG_NOTIFIERS is not set
1658# CONFIG_DEBUG_CREDENTIALS is not set
1575CONFIG_FRAME_POINTER=y 1659CONFIG_FRAME_POINTER=y
1576# CONFIG_BOOT_PRINTK_DELAY is not set 1660# CONFIG_BOOT_PRINTK_DELAY is not set
1577# CONFIG_RCU_TORTURE_TEST is not set 1661# CONFIG_RCU_TORTURE_TEST is not set
@@ -1579,6 +1663,7 @@ CONFIG_FRAME_POINTER=y
1579# CONFIG_KPROBES_SANITY_TEST is not set 1663# CONFIG_KPROBES_SANITY_TEST is not set
1580# CONFIG_BACKTRACE_SELF_TEST is not set 1664# CONFIG_BACKTRACE_SELF_TEST is not set
1581# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1665# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1666# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1582# CONFIG_LKDTM is not set 1667# CONFIG_LKDTM is not set
1583# CONFIG_FAULT_INJECTION is not set 1668# CONFIG_FAULT_INJECTION is not set
1584CONFIG_LATENCYTOP=y 1669CONFIG_LATENCYTOP=y
@@ -1587,25 +1672,12 @@ CONFIG_SYSCTL_SYSCALL_CHECK=y
1587CONFIG_NOP_TRACER=y 1672CONFIG_NOP_TRACER=y
1588CONFIG_HAVE_FUNCTION_TRACER=y 1673CONFIG_HAVE_FUNCTION_TRACER=y
1589CONFIG_RING_BUFFER=y 1674CONFIG_RING_BUFFER=y
1675CONFIG_EVENT_TRACING=y
1676CONFIG_CONTEXT_SWITCH_TRACER=y
1677CONFIG_RING_BUFFER_ALLOW_SWAP=y
1590CONFIG_TRACING=y 1678CONFIG_TRACING=y
1591CONFIG_TRACING_SUPPORT=y 1679CONFIG_TRACING_SUPPORT=y
1592 1680# CONFIG_FTRACE is not set
1593#
1594# Tracers
1595#
1596# CONFIG_FUNCTION_TRACER is not set
1597# CONFIG_IRQSOFF_TRACER is not set
1598# CONFIG_PREEMPT_TRACER is not set
1599# CONFIG_SCHED_TRACER is not set
1600# CONFIG_CONTEXT_SWITCH_TRACER is not set
1601# CONFIG_EVENT_TRACER is not set
1602# CONFIG_BOOT_TRACER is not set
1603# CONFIG_TRACE_BRANCH_PROFILING is not set
1604# CONFIG_STACK_TRACER is not set
1605# CONFIG_KMEMTRACE is not set
1606# CONFIG_WORKQUEUE_TRACER is not set
1607# CONFIG_BLK_DEV_IO_TRACE is not set
1608# CONFIG_FTRACE_STARTUP_TEST is not set
1609# CONFIG_DYNAMIC_DEBUG is not set 1681# CONFIG_DYNAMIC_DEBUG is not set
1610# CONFIG_SAMPLES is not set 1682# CONFIG_SAMPLES is not set
1611CONFIG_HAVE_ARCH_KGDB=y 1683CONFIG_HAVE_ARCH_KGDB=y
@@ -1629,20 +1701,19 @@ CONFIG_CRYPTO=y
1629# 1701#
1630# Crypto core or helper 1702# Crypto core or helper
1631# 1703#
1632# CONFIG_CRYPTO_FIPS is not set 1704CONFIG_CRYPTO_ALGAPI=y
1633CONFIG_CRYPTO_ALGAPI=m 1705CONFIG_CRYPTO_ALGAPI2=y
1634CONFIG_CRYPTO_ALGAPI2=m 1706CONFIG_CRYPTO_AEAD2=y
1635CONFIG_CRYPTO_AEAD2=m
1636CONFIG_CRYPTO_BLKCIPHER=m 1707CONFIG_CRYPTO_BLKCIPHER=m
1637CONFIG_CRYPTO_BLKCIPHER2=m 1708CONFIG_CRYPTO_BLKCIPHER2=y
1638CONFIG_CRYPTO_HASH2=m 1709CONFIG_CRYPTO_HASH2=y
1639CONFIG_CRYPTO_RNG2=m 1710CONFIG_CRYPTO_RNG2=y
1640CONFIG_CRYPTO_PCOMP=m 1711CONFIG_CRYPTO_PCOMP=y
1641CONFIG_CRYPTO_MANAGER=m 1712CONFIG_CRYPTO_MANAGER=m
1642CONFIG_CRYPTO_MANAGER2=m 1713CONFIG_CRYPTO_MANAGER2=y
1643# CONFIG_CRYPTO_GF128MUL is not set 1714# CONFIG_CRYPTO_GF128MUL is not set
1644# CONFIG_CRYPTO_NULL is not set 1715# CONFIG_CRYPTO_NULL is not set
1645CONFIG_CRYPTO_WORKQUEUE=m 1716CONFIG_CRYPTO_WORKQUEUE=y
1646# CONFIG_CRYPTO_CRYPTD is not set 1717# CONFIG_CRYPTO_CRYPTD is not set
1647# CONFIG_CRYPTO_AUTHENC is not set 1718# CONFIG_CRYPTO_AUTHENC is not set
1648# CONFIG_CRYPTO_TEST is not set 1719# CONFIG_CRYPTO_TEST is not set
@@ -1670,11 +1741,13 @@ CONFIG_CRYPTO_PCBC=m
1670# 1741#
1671# CONFIG_CRYPTO_HMAC is not set 1742# CONFIG_CRYPTO_HMAC is not set
1672# CONFIG_CRYPTO_XCBC is not set 1743# CONFIG_CRYPTO_XCBC is not set
1744# CONFIG_CRYPTO_VMAC is not set
1673 1745
1674# 1746#
1675# Digest 1747# Digest
1676# 1748#
1677# CONFIG_CRYPTO_CRC32C is not set 1749# CONFIG_CRYPTO_CRC32C is not set
1750# CONFIG_CRYPTO_GHASH is not set
1678# CONFIG_CRYPTO_MD4 is not set 1751# CONFIG_CRYPTO_MD4 is not set
1679# CONFIG_CRYPTO_MD5 is not set 1752# CONFIG_CRYPTO_MD5 is not set
1680# CONFIG_CRYPTO_MICHAEL_MIC is not set 1753# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1691,7 +1764,7 @@ CONFIG_CRYPTO_PCBC=m
1691# 1764#
1692# Ciphers 1765# Ciphers
1693# 1766#
1694# CONFIG_CRYPTO_AES is not set 1767CONFIG_CRYPTO_AES=y
1695# CONFIG_CRYPTO_ANUBIS is not set 1768# CONFIG_CRYPTO_ANUBIS is not set
1696# CONFIG_CRYPTO_ARC4 is not set 1769# CONFIG_CRYPTO_ARC4 is not set
1697# CONFIG_CRYPTO_BLOWFISH is not set 1770# CONFIG_CRYPTO_BLOWFISH is not set
@@ -1719,6 +1792,7 @@ CONFIG_CRYPTO_PCBC=m
1719# 1792#
1720# CONFIG_CRYPTO_ANSI_CPRNG is not set 1793# CONFIG_CRYPTO_ANSI_CPRNG is not set
1721CONFIG_CRYPTO_HW=y 1794CONFIG_CRYPTO_HW=y
1795CONFIG_CRYPTO_DEV_MV_CESA=y
1722# CONFIG_CRYPTO_DEV_HIFN_795X is not set 1796# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1723CONFIG_BINARY_PRINTF=y 1797CONFIG_BINARY_PRINTF=y
1724 1798
diff --git a/arch/arm/configs/u300_defconfig b/arch/arm/configs/u300_defconfig
index 7d61ae6e75da..953ba0297fc4 100644
--- a/arch/arm/configs/u300_defconfig
+++ b/arch/arm/configs/u300_defconfig
@@ -1,14 +1,14 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31-rc3 3# Linux kernel version: 2.6.32-rc5
4# Thu Jul 16 23:36:10 2009 4# Sat Oct 17 23:32:24 2009
5# 5#
6CONFIG_ARM=y 6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y 7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
8CONFIG_GENERIC_GPIO=y 8CONFIG_GENERIC_GPIO=y
9CONFIG_GENERIC_TIME=y 9CONFIG_GENERIC_TIME=y
10CONFIG_GENERIC_CLOCKEVENTS=y 10CONFIG_GENERIC_CLOCKEVENTS=y
11CONFIG_MMU=y 11CONFIG_HAVE_TCM=y
12CONFIG_GENERIC_HARDIRQS=y 12CONFIG_GENERIC_HARDIRQS=y
13CONFIG_STACKTRACE_SUPPORT=y 13CONFIG_STACKTRACE_SUPPORT=y
14CONFIG_HAVE_LATENCYTOP_SUPPORT=y 14CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -44,11 +44,12 @@ CONFIG_SYSVIPC_SYSCTL=y
44# 44#
45# RCU Subsystem 45# RCU Subsystem
46# 46#
47CONFIG_CLASSIC_RCU=y 47CONFIG_TREE_RCU=y
48# CONFIG_TREE_RCU is not set 48# CONFIG_TREE_PREEMPT_RCU is not set
49# CONFIG_PREEMPT_RCU is not set 49# CONFIG_RCU_TRACE is not set
50CONFIG_RCU_FANOUT=32
51# CONFIG_RCU_FANOUT_EXACT is not set
50# CONFIG_TREE_RCU_TRACE is not set 52# CONFIG_TREE_RCU_TRACE is not set
51# CONFIG_PREEMPT_RCU_TRACE is not set
52# CONFIG_IKCONFIG is not set 53# CONFIG_IKCONFIG is not set
53CONFIG_LOG_BUF_SHIFT=14 54CONFIG_LOG_BUF_SHIFT=14
54# CONFIG_GROUP_SCHED is not set 55# CONFIG_GROUP_SCHED is not set
@@ -80,17 +81,15 @@ CONFIG_SHMEM=y
80# CONFIG_AIO is not set 81# CONFIG_AIO is not set
81 82
82# 83#
83# Performance Counters 84# Kernel Performance Events And Counters
84# 85#
85# CONFIG_VM_EVENT_COUNTERS is not set 86# CONFIG_VM_EVENT_COUNTERS is not set
86CONFIG_SLUB_DEBUG=y 87CONFIG_SLUB_DEBUG=y
87# CONFIG_STRIP_ASM_SYMS is not set
88CONFIG_COMPAT_BRK=y 88CONFIG_COMPAT_BRK=y
89# CONFIG_SLAB is not set 89# CONFIG_SLAB is not set
90CONFIG_SLUB=y 90CONFIG_SLUB=y
91# CONFIG_SLOB is not set 91# CONFIG_SLOB is not set
92# CONFIG_PROFILING is not set 92# CONFIG_PROFILING is not set
93# CONFIG_MARKERS is not set
94CONFIG_HAVE_OPROFILE=y 93CONFIG_HAVE_OPROFILE=y
95# CONFIG_KPROBES is not set 94# CONFIG_KPROBES is not set
96CONFIG_HAVE_KPROBES=y 95CONFIG_HAVE_KPROBES=y
@@ -133,6 +132,7 @@ CONFIG_DEFAULT_IOSCHED="deadline"
133# 132#
134# System Type 133# System Type
135# 134#
135CONFIG_MMU=y
136# CONFIG_ARCH_AAEC2000 is not set 136# CONFIG_ARCH_AAEC2000 is not set
137# CONFIG_ARCH_INTEGRATOR is not set 137# CONFIG_ARCH_INTEGRATOR is not set
138# CONFIG_ARCH_REALVIEW is not set 138# CONFIG_ARCH_REALVIEW is not set
@@ -147,6 +147,7 @@ CONFIG_DEFAULT_IOSCHED="deadline"
147# CONFIG_ARCH_STMP3XXX is not set 147# CONFIG_ARCH_STMP3XXX is not set
148# CONFIG_ARCH_NETX is not set 148# CONFIG_ARCH_NETX is not set
149# CONFIG_ARCH_H720X is not set 149# CONFIG_ARCH_H720X is not set
150# CONFIG_ARCH_NOMADIK is not set
150# CONFIG_ARCH_IOP13XX is not set 151# CONFIG_ARCH_IOP13XX is not set
151# CONFIG_ARCH_IOP32X is not set 152# CONFIG_ARCH_IOP32X is not set
152# CONFIG_ARCH_IOP33X is not set 153# CONFIG_ARCH_IOP33X is not set
@@ -169,11 +170,13 @@ CONFIG_DEFAULT_IOSCHED="deadline"
169# CONFIG_ARCH_SA1100 is not set 170# CONFIG_ARCH_SA1100 is not set
170# CONFIG_ARCH_S3C2410 is not set 171# CONFIG_ARCH_S3C2410 is not set
171# CONFIG_ARCH_S3C64XX is not set 172# CONFIG_ARCH_S3C64XX is not set
173# CONFIG_ARCH_S5PC1XX is not set
172# CONFIG_ARCH_SHARK is not set 174# CONFIG_ARCH_SHARK is not set
173# CONFIG_ARCH_LH7A40X is not set 175# CONFIG_ARCH_LH7A40X is not set
174CONFIG_ARCH_U300=y 176CONFIG_ARCH_U300=y
175# CONFIG_ARCH_DAVINCI is not set 177# CONFIG_ARCH_DAVINCI is not set
176# CONFIG_ARCH_OMAP is not set 178# CONFIG_ARCH_OMAP is not set
179# CONFIG_ARCH_BCMRING is not set
177 180
178# 181#
179# ST-Ericsson AB U300/U330/U335/U365 Platform 182# ST-Ericsson AB U300/U330/U335/U365 Platform
@@ -195,6 +198,7 @@ CONFIG_MACH_U300_BS335=y
195CONFIG_MACH_U300_DUAL_RAM=y 198CONFIG_MACH_U300_DUAL_RAM=y
196CONFIG_U300_DEBUG=y 199CONFIG_U300_DEBUG=y
197# CONFIG_MACH_U300_SEMI_IS_SHARED is not set 200# CONFIG_MACH_U300_SEMI_IS_SHARED is not set
201CONFIG_MACH_U300_SPIDUMMY=y
198 202
199# 203#
200# All the settings below must match the bootloader's settings 204# All the settings below must match the bootloader's settings
@@ -207,7 +211,7 @@ CONFIG_CPU_32=y
207CONFIG_CPU_ARM926T=y 211CONFIG_CPU_ARM926T=y
208CONFIG_CPU_32v5=y 212CONFIG_CPU_32v5=y
209CONFIG_CPU_ABRT_EV5TJ=y 213CONFIG_CPU_ABRT_EV5TJ=y
210CONFIG_CPU_PABRT_NOIFAR=y 214CONFIG_CPU_PABRT_LEGACY=y
211CONFIG_CPU_CACHE_VIVT=y 215CONFIG_CPU_CACHE_VIVT=y
212CONFIG_CPU_COPY_V4WB=y 216CONFIG_CPU_COPY_V4WB=y
213CONFIG_CPU_TLB_V4WBI=y 217CONFIG_CPU_TLB_V4WBI=y
@@ -222,6 +226,7 @@ CONFIG_ARM_THUMB=y
222# CONFIG_CPU_DCACHE_DISABLE is not set 226# CONFIG_CPU_DCACHE_DISABLE is not set
223# CONFIG_CPU_DCACHE_WRITETHROUGH is not set 227# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
224# CONFIG_CPU_CACHE_ROUND_ROBIN is not set 228# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
229CONFIG_ARM_L1_CACHE_SHIFT=5
225CONFIG_ARM_VIC=y 230CONFIG_ARM_VIC=y
226CONFIG_ARM_VIC_NR=2 231CONFIG_ARM_VIC_NR=2
227CONFIG_COMMON_CLKDEV=y 232CONFIG_COMMON_CLKDEV=y
@@ -245,6 +250,8 @@ CONFIG_VMSPLIT_3G=y
245# CONFIG_VMSPLIT_2G is not set 250# CONFIG_VMSPLIT_2G is not set
246# CONFIG_VMSPLIT_1G is not set 251# CONFIG_VMSPLIT_1G is not set
247CONFIG_PAGE_OFFSET=0xC0000000 252CONFIG_PAGE_OFFSET=0xC0000000
253# CONFIG_PREEMPT_NONE is not set
254# CONFIG_PREEMPT_VOLUNTARY is not set
248CONFIG_PREEMPT=y 255CONFIG_PREEMPT=y
249CONFIG_HZ=100 256CONFIG_HZ=100
250CONFIG_AEABI=y 257CONFIG_AEABI=y
@@ -265,6 +272,7 @@ CONFIG_ZONE_DMA_FLAG=0
265CONFIG_VIRT_TO_BUS=y 272CONFIG_VIRT_TO_BUS=y
266CONFIG_HAVE_MLOCK=y 273CONFIG_HAVE_MLOCK=y
267CONFIG_HAVE_MLOCKED_PAGE_BIT=y 274CONFIG_HAVE_MLOCKED_PAGE_BIT=y
275# CONFIG_KSM is not set
268CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 276CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
269CONFIG_ALIGNMENT_TRAP=y 277CONFIG_ALIGNMENT_TRAP=y
270# CONFIG_UACCESS_WITH_MEMCPY is not set 278# CONFIG_UACCESS_WITH_MEMCPY is not set
@@ -313,6 +321,7 @@ CONFIG_PM=y
313# CONFIG_PM_DEBUG is not set 321# CONFIG_PM_DEBUG is not set
314# CONFIG_SUSPEND is not set 322# CONFIG_SUSPEND is not set
315# CONFIG_APM_EMULATION is not set 323# CONFIG_APM_EMULATION is not set
324# CONFIG_PM_RUNTIME is not set
316CONFIG_ARCH_SUSPEND_POSSIBLE=y 325CONFIG_ARCH_SUSPEND_POSSIBLE=y
317CONFIG_NET=y 326CONFIG_NET=y
318 327
@@ -351,6 +360,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
351# CONFIG_NETFILTER is not set 360# CONFIG_NETFILTER is not set
352# CONFIG_IP_DCCP is not set 361# CONFIG_IP_DCCP is not set
353# CONFIG_IP_SCTP is not set 362# CONFIG_IP_SCTP is not set
363# CONFIG_RDS is not set
354# CONFIG_TIPC is not set 364# CONFIG_TIPC is not set
355# CONFIG_ATM is not set 365# CONFIG_ATM is not set
356# CONFIG_BRIDGE is not set 366# CONFIG_BRIDGE is not set
@@ -391,6 +401,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
391# Generic Driver Options 401# Generic Driver Options
392# 402#
393CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 403CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
404# CONFIG_DEVTMPFS is not set
394CONFIG_STANDALONE=y 405CONFIG_STANDALONE=y
395# CONFIG_PREVENT_FIRMWARE_BUILD is not set 406# CONFIG_PREVENT_FIRMWARE_BUILD is not set
396CONFIG_FW_LOADER=y 407CONFIG_FW_LOADER=y
@@ -402,9 +413,9 @@ CONFIG_EXTRA_FIRMWARE=""
402# CONFIG_CONNECTOR is not set 413# CONFIG_CONNECTOR is not set
403CONFIG_MTD=y 414CONFIG_MTD=y
404# CONFIG_MTD_DEBUG is not set 415# CONFIG_MTD_DEBUG is not set
416# CONFIG_MTD_TESTS is not set
405# CONFIG_MTD_CONCAT is not set 417# CONFIG_MTD_CONCAT is not set
406CONFIG_MTD_PARTITIONS=y 418CONFIG_MTD_PARTITIONS=y
407# CONFIG_MTD_TESTS is not set
408# CONFIG_MTD_REDBOOT_PARTS is not set 419# CONFIG_MTD_REDBOOT_PARTS is not set
409CONFIG_MTD_CMDLINE_PARTS=y 420CONFIG_MTD_CMDLINE_PARTS=y
410# CONFIG_MTD_AFS_PARTS is not set 421# CONFIG_MTD_AFS_PARTS is not set
@@ -453,6 +464,7 @@ CONFIG_MTD_CFI_I2=y
453# 464#
454# CONFIG_MTD_DATAFLASH is not set 465# CONFIG_MTD_DATAFLASH is not set
455# CONFIG_MTD_M25P80 is not set 466# CONFIG_MTD_M25P80 is not set
467# CONFIG_MTD_SST25L is not set
456# CONFIG_MTD_SLRAM is not set 468# CONFIG_MTD_SLRAM is not set
457# CONFIG_MTD_PHRAM is not set 469# CONFIG_MTD_PHRAM is not set
458# CONFIG_MTD_MTDRAM is not set 470# CONFIG_MTD_MTDRAM is not set
@@ -520,6 +532,7 @@ CONFIG_HAVE_IDE=y
520# CONFIG_MD is not set 532# CONFIG_MD is not set
521# CONFIG_NETDEVICES is not set 533# CONFIG_NETDEVICES is not set
522# CONFIG_ISDN is not set 534# CONFIG_ISDN is not set
535# CONFIG_PHONE is not set
523 536
524# 537#
525# Input device support 538# Input device support
@@ -540,12 +553,16 @@ CONFIG_INPUT_EVDEV=y
540# Input Device Drivers 553# Input Device Drivers
541# 554#
542CONFIG_INPUT_KEYBOARD=y 555CONFIG_INPUT_KEYBOARD=y
556# CONFIG_KEYBOARD_ADP5588 is not set
543# CONFIG_KEYBOARD_ATKBD is not set 557# CONFIG_KEYBOARD_ATKBD is not set
558# CONFIG_QT2160 is not set
544# CONFIG_KEYBOARD_LKKBD is not set 559# CONFIG_KEYBOARD_LKKBD is not set
545# CONFIG_KEYBOARD_GPIO is not set 560# CONFIG_KEYBOARD_GPIO is not set
546# CONFIG_KEYBOARD_MATRIX is not set 561# CONFIG_KEYBOARD_MATRIX is not set
547# CONFIG_KEYBOARD_LM8323 is not set 562# CONFIG_KEYBOARD_LM8323 is not set
563# CONFIG_KEYBOARD_MAX7359 is not set
548# CONFIG_KEYBOARD_NEWTON is not set 564# CONFIG_KEYBOARD_NEWTON is not set
565# CONFIG_KEYBOARD_OPENCORES is not set
549# CONFIG_KEYBOARD_STOWAWAY is not set 566# CONFIG_KEYBOARD_STOWAWAY is not set
550# CONFIG_KEYBOARD_SUNKBD is not set 567# CONFIG_KEYBOARD_SUNKBD is not set
551# CONFIG_KEYBOARD_XTKBD is not set 568# CONFIG_KEYBOARD_XTKBD is not set
@@ -597,6 +614,7 @@ CONFIG_LEGACY_PTY_COUNT=16
597# CONFIG_TCG_TPM is not set 614# CONFIG_TCG_TPM is not set
598CONFIG_I2C=y 615CONFIG_I2C=y
599CONFIG_I2C_BOARDINFO=y 616CONFIG_I2C_BOARDINFO=y
617CONFIG_I2C_COMPAT=y
600# CONFIG_I2C_CHARDEV is not set 618# CONFIG_I2C_CHARDEV is not set
601CONFIG_I2C_HELPER_AUTO=y 619CONFIG_I2C_HELPER_AUTO=y
602 620
@@ -629,9 +647,6 @@ CONFIG_I2C_STU300=y
629# Miscellaneous I2C Chip support 647# Miscellaneous I2C Chip support
630# 648#
631# CONFIG_DS1682 is not set 649# CONFIG_DS1682 is not set
632# CONFIG_SENSORS_PCF8574 is not set
633# CONFIG_PCF8575 is not set
634# CONFIG_SENSORS_PCA9539 is not set
635# CONFIG_SENSORS_TSL2550 is not set 650# CONFIG_SENSORS_TSL2550 is not set
636# CONFIG_I2C_DEBUG_CORE is not set 651# CONFIG_I2C_DEBUG_CORE is not set
637# CONFIG_I2C_DEBUG_ALGO is not set 652# CONFIG_I2C_DEBUG_ALGO is not set
@@ -653,16 +668,21 @@ CONFIG_SPI_PL022=y
653# 668#
654# CONFIG_SPI_SPIDEV is not set 669# CONFIG_SPI_SPIDEV is not set
655# CONFIG_SPI_TLE62X0 is not set 670# CONFIG_SPI_TLE62X0 is not set
671
672#
673# PPS support
674#
675# CONFIG_PPS is not set
656# CONFIG_W1 is not set 676# CONFIG_W1 is not set
657CONFIG_POWER_SUPPLY=y 677CONFIG_POWER_SUPPLY=y
658# CONFIG_POWER_SUPPLY_DEBUG is not set 678# CONFIG_POWER_SUPPLY_DEBUG is not set
659# CONFIG_PDA_POWER is not set 679# CONFIG_PDA_POWER is not set
660# CONFIG_BATTERY_DS2760 is not set 680# CONFIG_BATTERY_DS2760 is not set
681# CONFIG_BATTERY_DS2782 is not set
661# CONFIG_BATTERY_BQ27x00 is not set 682# CONFIG_BATTERY_BQ27x00 is not set
662# CONFIG_BATTERY_MAX17040 is not set 683# CONFIG_BATTERY_MAX17040 is not set
663# CONFIG_HWMON is not set 684# CONFIG_HWMON is not set
664# CONFIG_THERMAL is not set 685# CONFIG_THERMAL is not set
665# CONFIG_THERMAL_HWMON is not set
666CONFIG_WATCHDOG=y 686CONFIG_WATCHDOG=y
667# CONFIG_WATCHDOG_NOWAYOUT is not set 687# CONFIG_WATCHDOG_NOWAYOUT is not set
668 688
@@ -690,10 +710,24 @@ CONFIG_SSB_POSSIBLE=y
690# CONFIG_MFD_TC6387XB is not set 710# CONFIG_MFD_TC6387XB is not set
691# CONFIG_PMIC_DA903X is not set 711# CONFIG_PMIC_DA903X is not set
692# CONFIG_MFD_WM8400 is not set 712# CONFIG_MFD_WM8400 is not set
713# CONFIG_MFD_WM831X is not set
693# CONFIG_MFD_WM8350_I2C is not set 714# CONFIG_MFD_WM8350_I2C is not set
694# CONFIG_MFD_PCF50633 is not set 715# CONFIG_MFD_PCF50633 is not set
716# CONFIG_MFD_MC13783 is not set
695CONFIG_AB3100_CORE=y 717CONFIG_AB3100_CORE=y
718CONFIG_AB3100_OTP=y
696# CONFIG_EZX_PCAP is not set 719# CONFIG_EZX_PCAP is not set
720CONFIG_REGULATOR=y
721# CONFIG_REGULATOR_DEBUG is not set
722# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
723# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
724# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
725# CONFIG_REGULATOR_BQ24022 is not set
726# CONFIG_REGULATOR_MAX1586 is not set
727# CONFIG_REGULATOR_LP3971 is not set
728CONFIG_REGULATOR_AB3100=y
729# CONFIG_REGULATOR_TPS65023 is not set
730# CONFIG_REGULATOR_TPS6507X is not set
697# CONFIG_MEDIA_SUPPORT is not set 731# CONFIG_MEDIA_SUPPORT is not set
698 732
699# 733#
@@ -792,9 +826,10 @@ CONFIG_MMC_BLOCK_BOUNCE=y
792# 826#
793CONFIG_MMC_ARMMMCI=y 827CONFIG_MMC_ARMMMCI=y
794# CONFIG_MMC_SDHCI is not set 828# CONFIG_MMC_SDHCI is not set
829# CONFIG_MMC_AT91 is not set
830# CONFIG_MMC_ATMELMCI is not set
795# CONFIG_MMC_SPI is not set 831# CONFIG_MMC_SPI is not set
796# CONFIG_MEMSTICK is not set 832# CONFIG_MEMSTICK is not set
797# CONFIG_ACCESSIBILITY is not set
798CONFIG_NEW_LEDS=y 833CONFIG_NEW_LEDS=y
799CONFIG_LEDS_CLASS=y 834CONFIG_LEDS_CLASS=y
800 835
@@ -820,10 +855,10 @@ CONFIG_LEDS_TRIGGER_BACKLIGHT=y
820# 855#
821# iptables trigger is under Netfilter config (LED target) 856# iptables trigger is under Netfilter config (LED target)
822# 857#
858# CONFIG_ACCESSIBILITY is not set
823CONFIG_RTC_LIB=y 859CONFIG_RTC_LIB=y
824CONFIG_RTC_CLASS=y 860CONFIG_RTC_CLASS=y
825CONFIG_RTC_HCTOSYS=y 861# CONFIG_RTC_HCTOSYS is not set
826CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
827# CONFIG_RTC_DEBUG is not set 862# CONFIG_RTC_DEBUG is not set
828 863
829# 864#
@@ -863,6 +898,7 @@ CONFIG_RTC_INTF_DEV=y
863# CONFIG_RTC_DRV_R9701 is not set 898# CONFIG_RTC_DRV_R9701 is not set
864# CONFIG_RTC_DRV_RS5C348 is not set 899# CONFIG_RTC_DRV_RS5C348 is not set
865# CONFIG_RTC_DRV_DS3234 is not set 900# CONFIG_RTC_DRV_DS3234 is not set
901# CONFIG_RTC_DRV_PCF2123 is not set
866 902
867# 903#
868# Platform RTC drivers 904# Platform RTC drivers
@@ -878,27 +914,25 @@ CONFIG_RTC_INTF_DEV=y
878# CONFIG_RTC_DRV_M48T59 is not set 914# CONFIG_RTC_DRV_M48T59 is not set
879# CONFIG_RTC_DRV_BQ4802 is not set 915# CONFIG_RTC_DRV_BQ4802 is not set
880# CONFIG_RTC_DRV_V3020 is not set 916# CONFIG_RTC_DRV_V3020 is not set
917CONFIG_RTC_DRV_AB3100=y
881 918
882# 919#
883# on-CPU RTC drivers 920# on-CPU RTC drivers
884# 921#
885# CONFIG_RTC_DRV_PL030 is not set 922# CONFIG_RTC_DRV_PL030 is not set
886# CONFIG_RTC_DRV_PL031 is not set 923# CONFIG_RTC_DRV_PL031 is not set
924CONFIG_RTC_DRV_COH901331=y
887CONFIG_DMADEVICES=y 925CONFIG_DMADEVICES=y
888 926
889# 927#
890# DMA Devices 928# DMA Devices
891# 929#
892# CONFIG_AUXDISPLAY is not set 930# CONFIG_AUXDISPLAY is not set
893CONFIG_REGULATOR=y
894# CONFIG_REGULATOR_DEBUG is not set
895# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
896# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
897# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
898# CONFIG_REGULATOR_BQ24022 is not set
899# CONFIG_REGULATOR_MAX1586 is not set
900# CONFIG_REGULATOR_LP3971 is not set
901# CONFIG_UIO is not set 931# CONFIG_UIO is not set
932
933#
934# TI VLYNQ
935#
902# CONFIG_STAGING is not set 936# CONFIG_STAGING is not set
903 937
904# 938#
@@ -913,6 +947,7 @@ CONFIG_REGULATOR=y
913# CONFIG_XFS_FS is not set 947# CONFIG_XFS_FS is not set
914# CONFIG_OCFS2_FS is not set 948# CONFIG_OCFS2_FS is not set
915# CONFIG_BTRFS_FS is not set 949# CONFIG_BTRFS_FS is not set
950# CONFIG_NILFS2_FS is not set
916CONFIG_FILE_LOCKING=y 951CONFIG_FILE_LOCKING=y
917CONFIG_FSNOTIFY=y 952CONFIG_FSNOTIFY=y
918# CONFIG_DNOTIFY is not set 953# CONFIG_DNOTIFY is not set
@@ -975,7 +1010,6 @@ CONFIG_MISC_FILESYSTEMS=y
975# CONFIG_ROMFS_FS is not set 1010# CONFIG_ROMFS_FS is not set
976# CONFIG_SYSV_FS is not set 1011# CONFIG_SYSV_FS is not set
977# CONFIG_UFS_FS is not set 1012# CONFIG_UFS_FS is not set
978# CONFIG_NILFS2_FS is not set
979# CONFIG_NETWORK_FILESYSTEMS is not set 1013# CONFIG_NETWORK_FILESYSTEMS is not set
980 1014
981# 1015#
@@ -1033,6 +1067,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1033CONFIG_ENABLE_MUST_CHECK=y 1067CONFIG_ENABLE_MUST_CHECK=y
1034CONFIG_FRAME_WARN=1024 1068CONFIG_FRAME_WARN=1024
1035# CONFIG_MAGIC_SYSRQ is not set 1069# CONFIG_MAGIC_SYSRQ is not set
1070# CONFIG_STRIP_ASM_SYMS is not set
1036# CONFIG_UNUSED_SYMBOLS is not set 1071# CONFIG_UNUSED_SYMBOLS is not set
1037# CONFIG_DEBUG_FS is not set 1072# CONFIG_DEBUG_FS is not set
1038# CONFIG_HEADERS_CHECK is not set 1073# CONFIG_HEADERS_CHECK is not set
@@ -1066,11 +1101,13 @@ CONFIG_DEBUG_INFO=y
1066# CONFIG_DEBUG_LIST is not set 1101# CONFIG_DEBUG_LIST is not set
1067# CONFIG_DEBUG_SG is not set 1102# CONFIG_DEBUG_SG is not set
1068# CONFIG_DEBUG_NOTIFIERS is not set 1103# CONFIG_DEBUG_NOTIFIERS is not set
1104# CONFIG_DEBUG_CREDENTIALS is not set
1069# CONFIG_BOOT_PRINTK_DELAY is not set 1105# CONFIG_BOOT_PRINTK_DELAY is not set
1070# CONFIG_RCU_TORTURE_TEST is not set 1106# CONFIG_RCU_TORTURE_TEST is not set
1071# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1107# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1072# CONFIG_BACKTRACE_SELF_TEST is not set 1108# CONFIG_BACKTRACE_SELF_TEST is not set
1073# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1109# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1110# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1074# CONFIG_FAULT_INJECTION is not set 1111# CONFIG_FAULT_INJECTION is not set
1075# CONFIG_LATENCYTOP is not set 1112# CONFIG_LATENCYTOP is not set
1076# CONFIG_SYSCTL_SYSCALL_CHECK is not set 1113# CONFIG_SYSCTL_SYSCALL_CHECK is not set
@@ -1121,6 +1158,7 @@ CONFIG_GENERIC_FIND_LAST_BIT=y
1121# CONFIG_CRC32 is not set 1158# CONFIG_CRC32 is not set
1122# CONFIG_CRC7 is not set 1159# CONFIG_CRC7 is not set
1123# CONFIG_LIBCRC32C is not set 1160# CONFIG_LIBCRC32C is not set
1161CONFIG_GENERIC_ALLOCATOR=y
1124CONFIG_HAS_IOMEM=y 1162CONFIG_HAS_IOMEM=y
1125CONFIG_HAS_IOPORT=y 1163CONFIG_HAS_IOPORT=y
1126CONFIG_HAS_DMA=y 1164CONFIG_HAS_DMA=y
diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h
index fd03fb63a332..3d0cdd21b882 100644
--- a/arch/arm/include/asm/cacheflush.h
+++ b/arch/arm/include/asm/cacheflush.h
@@ -414,9 +414,14 @@ extern void __flush_dcache_page(struct address_space *mapping, struct page *page
414 414
415static inline void __flush_icache_all(void) 415static inline void __flush_icache_all(void)
416{ 416{
417#ifdef CONFIG_ARM_ERRATA_411920
418 extern void v6_icache_inval_all(void);
419 v6_icache_inval_all();
420#else
417 asm("mcr p15, 0, %0, c7, c5, 0 @ invalidate I-cache\n" 421 asm("mcr p15, 0, %0, c7, c5, 0 @ invalidate I-cache\n"
418 : 422 :
419 : "r" (0)); 423 : "r" (0));
424#endif
420} 425}
421 426
422#define ARCH_HAS_FLUSH_ANON_PAGE 427#define ARCH_HAS_FLUSH_ANON_PAGE
diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h
index c3b911ee9151..6aac3f5bb2f3 100644
--- a/arch/arm/include/asm/elf.h
+++ b/arch/arm/include/asm/elf.h
@@ -98,6 +98,9 @@ extern int elf_check_arch(const struct elf32_hdr *);
98extern int arm_elf_read_implies_exec(const struct elf32_hdr *, int); 98extern int arm_elf_read_implies_exec(const struct elf32_hdr *, int);
99#define elf_read_implies_exec(ex,stk) arm_elf_read_implies_exec(&(ex), stk) 99#define elf_read_implies_exec(ex,stk) arm_elf_read_implies_exec(&(ex), stk)
100 100
101int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs);
102#define ELF_CORE_COPY_TASK_REGS dump_task_regs
103
101#define USE_ELF_CORE_DUMP 104#define USE_ELF_CORE_DUMP
102#define ELF_EXEC_PAGESIZE 4096 105#define ELF_EXEC_PAGESIZE 4096
103 106
diff --git a/arch/arm/include/asm/kmap_types.h b/arch/arm/include/asm/kmap_types.h
index d16ec97ec9a9..c019949a5189 100644
--- a/arch/arm/include/asm/kmap_types.h
+++ b/arch/arm/include/asm/kmap_types.h
@@ -22,4 +22,10 @@ enum km_type {
22 KM_TYPE_NR 22 KM_TYPE_NR
23}; 23};
24 24
25#ifdef CONFIG_DEBUG_HIGHMEM
26#define KM_NMI (-1)
27#define KM_NMI_PTE (-1)
28#define KM_IRQ_PTE (-1)
29#endif
30
25#endif 31#endif
diff --git a/arch/arm/include/asm/tlbflush.h b/arch/arm/include/asm/tlbflush.h
index a45ab5dd8255..c2f1605de359 100644
--- a/arch/arm/include/asm/tlbflush.h
+++ b/arch/arm/include/asm/tlbflush.h
@@ -350,7 +350,7 @@ static inline void local_flush_tlb_mm(struct mm_struct *mm)
350 if (tlb_flag(TLB_WB)) 350 if (tlb_flag(TLB_WB))
351 dsb(); 351 dsb();
352 352
353 if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(mm))) { 353 if (cpumask_test_cpu(get_cpu(), mm_cpumask(mm))) {
354 if (tlb_flag(TLB_V3_FULL)) 354 if (tlb_flag(TLB_V3_FULL))
355 asm("mcr p15, 0, %0, c6, c0, 0" : : "r" (zero) : "cc"); 355 asm("mcr p15, 0, %0, c6, c0, 0" : : "r" (zero) : "cc");
356 if (tlb_flag(TLB_V4_U_FULL)) 356 if (tlb_flag(TLB_V4_U_FULL))
@@ -360,6 +360,7 @@ static inline void local_flush_tlb_mm(struct mm_struct *mm)
360 if (tlb_flag(TLB_V4_I_FULL)) 360 if (tlb_flag(TLB_V4_I_FULL))
361 asm("mcr p15, 0, %0, c8, c5, 0" : : "r" (zero) : "cc"); 361 asm("mcr p15, 0, %0, c8, c5, 0" : : "r" (zero) : "cc");
362 } 362 }
363 put_cpu();
363 364
364 if (tlb_flag(TLB_V6_U_ASID)) 365 if (tlb_flag(TLB_V6_U_ASID))
365 asm("mcr p15, 0, %0, c8, c7, 2" : : "r" (asid) : "cc"); 366 asm("mcr p15, 0, %0, c8, c7, 2" : : "r" (asid) : "cc");
diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h
index 7020217fc49f..4e506d09e5f9 100644
--- a/arch/arm/include/asm/unistd.h
+++ b/arch/arm/include/asm/unistd.h
@@ -403,6 +403,15 @@
403#define __ARM_NR_set_tls (__ARM_NR_BASE+5) 403#define __ARM_NR_set_tls (__ARM_NR_BASE+5)
404 404
405/* 405/*
406 * *NOTE*: This is a ghost syscall private to the kernel. Only the
407 * __kuser_cmpxchg code in entry-armv.S should be aware of its
408 * existence. Don't ever use this from user code.
409 */
410#ifdef __KERNEL__
411#define __ARM_NR_cmpxchg (__ARM_NR_BASE+0x00fff0)
412#endif
413
414/*
406 * The following syscalls are obsolete and no longer available for EABI. 415 * The following syscalls are obsolete and no longer available for EABI.
407 */ 416 */
408#if defined(__ARM_EABI__) && !defined(__KERNEL__) 417#if defined(__ARM_EABI__) && !defined(__KERNEL__)
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index 322410be573c..d2903e3bc861 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -21,6 +21,7 @@
21#include <mach/entry-macro.S> 21#include <mach/entry-macro.S>
22#include <asm/thread_notify.h> 22#include <asm/thread_notify.h>
23#include <asm/unwind.h> 23#include <asm/unwind.h>
24#include <asm/unistd.h>
24 25
25#include "entry-header.S" 26#include "entry-header.S"
26 27
@@ -608,33 +609,33 @@ call_fpe:
608 THUMB( add pc, r8 ) 609 THUMB( add pc, r8 )
609 nop 610 nop
610 611
611 W(mov) pc, lr @ CP#0 612 movw_pc lr @ CP#0
612 W(b) do_fpe @ CP#1 (FPE) 613 W(b) do_fpe @ CP#1 (FPE)
613 W(b) do_fpe @ CP#2 (FPE) 614 W(b) do_fpe @ CP#2 (FPE)
614 W(mov) pc, lr @ CP#3 615 movw_pc lr @ CP#3
615#ifdef CONFIG_CRUNCH 616#ifdef CONFIG_CRUNCH
616 b crunch_task_enable @ CP#4 (MaverickCrunch) 617 b crunch_task_enable @ CP#4 (MaverickCrunch)
617 b crunch_task_enable @ CP#5 (MaverickCrunch) 618 b crunch_task_enable @ CP#5 (MaverickCrunch)
618 b crunch_task_enable @ CP#6 (MaverickCrunch) 619 b crunch_task_enable @ CP#6 (MaverickCrunch)
619#else 620#else
620 W(mov) pc, lr @ CP#4 621 movw_pc lr @ CP#4
621 W(mov) pc, lr @ CP#5 622 movw_pc lr @ CP#5
622 W(mov) pc, lr @ CP#6 623 movw_pc lr @ CP#6
623#endif 624#endif
624 W(mov) pc, lr @ CP#7 625 movw_pc lr @ CP#7
625 W(mov) pc, lr @ CP#8 626 movw_pc lr @ CP#8
626 W(mov) pc, lr @ CP#9 627 movw_pc lr @ CP#9
627#ifdef CONFIG_VFP 628#ifdef CONFIG_VFP
628 W(b) do_vfp @ CP#10 (VFP) 629 W(b) do_vfp @ CP#10 (VFP)
629 W(b) do_vfp @ CP#11 (VFP) 630 W(b) do_vfp @ CP#11 (VFP)
630#else 631#else
631 W(mov) pc, lr @ CP#10 (VFP) 632 movw_pc lr @ CP#10 (VFP)
632 W(mov) pc, lr @ CP#11 (VFP) 633 movw_pc lr @ CP#11 (VFP)
633#endif 634#endif
634 W(mov) pc, lr @ CP#12 635 movw_pc lr @ CP#12
635 W(mov) pc, lr @ CP#13 636 movw_pc lr @ CP#13
636 W(mov) pc, lr @ CP#14 (Debug) 637 movw_pc lr @ CP#14 (Debug)
637 W(mov) pc, lr @ CP#15 (Control) 638 movw_pc lr @ CP#15 (Control)
638 639
639#ifdef CONFIG_NEON 640#ifdef CONFIG_NEON
640 .align 6 641 .align 6
@@ -908,10 +909,10 @@ __kuser_cmpxchg: @ 0xffff0fc0
908 * A special ghost syscall is used for that (see traps.c). 909 * A special ghost syscall is used for that (see traps.c).
909 */ 910 */
910 stmfd sp!, {r7, lr} 911 stmfd sp!, {r7, lr}
911 mov r7, #0xff00 @ 0xfff0 into r7 for EABI 912 ldr r7, =1f @ it's 20 bits
912 orr r7, r7, #0xf0 913 swi __ARM_NR_cmpxchg
913 swi #0x9ffff0
914 ldmfd sp!, {r7, pc} 914 ldmfd sp!, {r7, pc}
9151: .word __ARM_NR_cmpxchg
915 916
916#elif __LINUX_ARM_ARCH__ < 6 917#elif __LINUX_ARM_ARCH__ < 6
917 918
diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S
index ac34c0d9384b..7e9ed1eea40a 100644
--- a/arch/arm/kernel/entry-header.S
+++ b/arch/arm/kernel/entry-header.S
@@ -110,6 +110,13 @@
110 mov \rd, sp, lsr #13 110 mov \rd, sp, lsr #13
111 mov \rd, \rd, lsl #13 111 mov \rd, \rd, lsl #13
112 .endm 112 .endm
113
114 @
115 @ 32-bit wide "mov pc, reg"
116 @
117 .macro movw_pc, reg
118 mov pc, \reg
119 .endm
113#else /* CONFIG_THUMB2_KERNEL */ 120#else /* CONFIG_THUMB2_KERNEL */
114 .macro svc_exit, rpsr 121 .macro svc_exit, rpsr
115 clrex @ clear the exclusive monitor 122 clrex @ clear the exclusive monitor
@@ -146,6 +153,14 @@
146 lsr \rd, \rd, #13 153 lsr \rd, \rd, #13
147 mov \rd, \rd, lsl #13 154 mov \rd, \rd, lsl #13
148 .endm 155 .endm
156
157 @
158 @ 32-bit wide "mov pc, reg"
159 @
160 .macro movw_pc, reg
161 mov pc, \reg
162 nop
163 .endm
149#endif /* !CONFIG_THUMB2_KERNEL */ 164#endif /* !CONFIG_THUMB2_KERNEL */
150 165
151/* 166/*
diff --git a/arch/arm/kernel/head-common.S b/arch/arm/kernel/head-common.S
index 885a7214418d..b9505aa267c0 100644
--- a/arch/arm/kernel/head-common.S
+++ b/arch/arm/kernel/head-common.S
@@ -97,7 +97,7 @@ __error_a:
97 bl printhex8 97 bl printhex8
98 adr r0, str_a2 98 adr r0, str_a2
99 bl printascii 99 bl printascii
100 adr r3, 3f 100 adr r3, 4f
101 ldmia r3, {r4, r5, r6} @ get machine desc list 101 ldmia r3, {r4, r5, r6} @ get machine desc list
102 sub r4, r3, r4 @ get offset between virt&phys 102 sub r4, r3, r4 @ get offset between virt&phys
103 add r5, r5, r4 @ convert virt addresses to 103 add r5, r5, r4 @ convert virt addresses to
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index 790fbee92ec5..0d96d0171c05 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -328,6 +328,15 @@ copy_thread(unsigned long clone_flags, unsigned long stack_start,
328} 328}
329 329
330/* 330/*
331 * Fill in the task's elfregs structure for a core dump.
332 */
333int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs)
334{
335 elf_core_copy_regs(elfregs, task_pt_regs(t));
336 return 1;
337}
338
339/*
331 * fill in the fpe structure for a core dump... 340 * fill in the fpe structure for a core dump...
332 */ 341 */
333int dump_fpu (struct pt_regs *regs, struct user_fp *fp) 342int dump_fpu (struct pt_regs *regs, struct user_fp *fp)
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
index 1423a3419789..e7714f367eb8 100644
--- a/arch/arm/kernel/signal.c
+++ b/arch/arm/kernel/signal.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * linux/arch/arm/kernel/signal.c 2 * linux/arch/arm/kernel/signal.c
3 * 3 *
4 * Copyright (C) 1995-2002 Russell King 4 * Copyright (C) 1995-2009 Russell King
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as 7 * it under the terms of the GNU General Public License version 2 as
@@ -29,6 +29,7 @@
29 */ 29 */
30#define SWI_SYS_SIGRETURN (0xef000000|(__NR_sigreturn)|(__NR_OABI_SYSCALL_BASE)) 30#define SWI_SYS_SIGRETURN (0xef000000|(__NR_sigreturn)|(__NR_OABI_SYSCALL_BASE))
31#define SWI_SYS_RT_SIGRETURN (0xef000000|(__NR_rt_sigreturn)|(__NR_OABI_SYSCALL_BASE)) 31#define SWI_SYS_RT_SIGRETURN (0xef000000|(__NR_rt_sigreturn)|(__NR_OABI_SYSCALL_BASE))
32#define SWI_SYS_RESTART (0xef000000|__NR_restart_syscall|__NR_OABI_SYSCALL_BASE)
32 33
33/* 34/*
34 * With EABI, the syscall number has to be loaded into r7. 35 * With EABI, the syscall number has to be loaded into r7.
@@ -49,6 +50,18 @@ const unsigned long sigreturn_codes[7] = {
49}; 50};
50 51
51/* 52/*
53 * Either we support OABI only, or we have EABI with the OABI
54 * compat layer enabled. In the later case we don't know if
55 * user space is EABI or not, and if not we must not clobber r7.
56 * Always using the OABI syscall solves that issue and works for
57 * all those cases.
58 */
59const unsigned long syscall_restart_code[2] = {
60 SWI_SYS_RESTART, /* swi __NR_restart_syscall */
61 0xe49df004, /* ldr pc, [sp], #4 */
62};
63
64/*
52 * atomically swap in the new signal mask, and wait for a signal. 65 * atomically swap in the new signal mask, and wait for a signal.
53 */ 66 */
54asmlinkage int sys_sigsuspend(int restart, unsigned long oldmask, old_sigset_t mask) 67asmlinkage int sys_sigsuspend(int restart, unsigned long oldmask, old_sigset_t mask)
@@ -645,32 +658,16 @@ static void do_signal(struct pt_regs *regs, int syscall)
645 regs->ARM_pc -= 4; 658 regs->ARM_pc -= 4;
646#else 659#else
647 u32 __user *usp; 660 u32 __user *usp;
648 u32 swival = __NR_restart_syscall;
649 661
650 regs->ARM_sp -= 12; 662 regs->ARM_sp -= 4;
651 usp = (u32 __user *)regs->ARM_sp; 663 usp = (u32 __user *)regs->ARM_sp;
652 664
653 /* 665 if (put_user(regs->ARM_pc, usp) == 0) {
654 * Either we supports OABI only, or we have 666 regs->ARM_pc = KERN_RESTART_CODE;
655 * EABI with the OABI compat layer enabled. 667 } else {
656 * In the later case we don't know if user 668 regs->ARM_sp += 4;
657 * space is EABI or not, and if not we must 669 force_sigsegv(0, current);
658 * not clobber r7. Always using the OABI 670 }
659 * syscall solves that issue and works for
660 * all those cases.
661 */
662 swival = swival - __NR_SYSCALL_BASE + __NR_OABI_SYSCALL_BASE;
663
664 put_user(regs->ARM_pc, &usp[0]);
665 /* swi __NR_restart_syscall */
666 put_user(0xef000000 | swival, &usp[1]);
667 /* ldr pc, [sp], #12 */
668 put_user(0xe49df00c, &usp[2]);
669
670 flush_icache_range((unsigned long)usp,
671 (unsigned long)(usp + 3));
672
673 regs->ARM_pc = regs->ARM_sp + 4;
674#endif 671#endif
675 } 672 }
676 } 673 }
diff --git a/arch/arm/kernel/signal.h b/arch/arm/kernel/signal.h
index 27beece15502..6fcfe8398aa4 100644
--- a/arch/arm/kernel/signal.h
+++ b/arch/arm/kernel/signal.h
@@ -1,12 +1,14 @@
1/* 1/*
2 * linux/arch/arm/kernel/signal.h 2 * linux/arch/arm/kernel/signal.h
3 * 3 *
4 * Copyright (C) 2005 Russell King. 4 * Copyright (C) 2005-2009 Russell King.
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as 7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation. 8 * published by the Free Software Foundation.
9 */ 9 */
10#define KERN_SIGRETURN_CODE (CONFIG_VECTORS_BASE + 0x00000500) 10#define KERN_SIGRETURN_CODE (CONFIG_VECTORS_BASE + 0x00000500)
11#define KERN_RESTART_CODE (KERN_SIGRETURN_CODE + sizeof(sigreturn_codes))
11 12
12extern const unsigned long sigreturn_codes[7]; 13extern const unsigned long sigreturn_codes[7];
14extern const unsigned long syscall_restart_code[2];
diff --git a/arch/arm/kernel/smp_scu.c b/arch/arm/kernel/smp_scu.c
index d3831f616ee9..9ab4149bd983 100644
--- a/arch/arm/kernel/smp_scu.c
+++ b/arch/arm/kernel/smp_scu.c
@@ -37,6 +37,10 @@ void __init scu_enable(void __iomem *scu_base)
37 u32 scu_ctrl; 37 u32 scu_ctrl;
38 38
39 scu_ctrl = __raw_readl(scu_base + SCU_CTRL); 39 scu_ctrl = __raw_readl(scu_base + SCU_CTRL);
40 /* already enabled? */
41 if (scu_ctrl & 1)
42 return;
43
40 scu_ctrl |= 1; 44 scu_ctrl |= 1;
41 __raw_writel(scu_ctrl, scu_base + SCU_CTRL); 45 __raw_writel(scu_ctrl, scu_base + SCU_CTRL);
42 46
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
index f838f36eb702..3f361a783f43 100644
--- a/arch/arm/kernel/traps.c
+++ b/arch/arm/kernel/traps.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * linux/arch/arm/kernel/traps.c 2 * linux/arch/arm/kernel/traps.c
3 * 3 *
4 * Copyright (C) 1995-2002 Russell King 4 * Copyright (C) 1995-2009 Russell King
5 * Fragments that appear the same as linux/arch/i386/kernel/traps.c (C) Linus Torvalds 5 * Fragments that appear the same as linux/arch/i386/kernel/traps.c (C) Linus Torvalds
6 * 6 *
7 * This program is free software; you can redistribute it and/or modify 7 * This program is free software; you can redistribute it and/or modify
@@ -528,7 +528,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
528 * __kuser_cmpxchg code in entry-armv.S should be aware of its 528 * __kuser_cmpxchg code in entry-armv.S should be aware of its
529 * existence. Don't ever use this from user code. 529 * existence. Don't ever use this from user code.
530 */ 530 */
531 case 0xfff0: 531 case NR(cmpxchg):
532 for (;;) { 532 for (;;) {
533 extern void do_DataAbort(unsigned long addr, unsigned int fsr, 533 extern void do_DataAbort(unsigned long addr, unsigned int fsr,
534 struct pt_regs *regs); 534 struct pt_regs *regs);
@@ -573,7 +573,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
573 if not implemented, rather than raising SIGILL. This 573 if not implemented, rather than raising SIGILL. This
574 way the calling program can gracefully determine whether 574 way the calling program can gracefully determine whether
575 a feature is supported. */ 575 a feature is supported. */
576 if (no <= 0x7ff) 576 if ((no & 0xffff) <= 0x7ff)
577 return -ENOSYS; 577 return -ENOSYS;
578 break; 578 break;
579 } 579 }
@@ -751,6 +751,8 @@ void __init early_trap_init(void)
751 */ 751 */
752 memcpy((void *)KERN_SIGRETURN_CODE, sigreturn_codes, 752 memcpy((void *)KERN_SIGRETURN_CODE, sigreturn_codes,
753 sizeof(sigreturn_codes)); 753 sizeof(sigreturn_codes));
754 memcpy((void *)KERN_RESTART_CODE, syscall_restart_code,
755 sizeof(syscall_restart_code));
754 756
755 flush_icache_range(vectors, vectors + PAGE_SIZE); 757 flush_icache_range(vectors, vectors + PAGE_SIZE);
756 modify_domain(DOMAIN_USER, DOMAIN_CLIENT); 758 modify_domain(DOMAIN_USER, DOMAIN_CLIENT);
diff --git a/arch/arm/kernel/unwind.c b/arch/arm/kernel/unwind.c
index 39baf1128bfa..786ac2b6914a 100644
--- a/arch/arm/kernel/unwind.c
+++ b/arch/arm/kernel/unwind.c
@@ -26,6 +26,15 @@
26 * http://infocenter.arm.com/help/topic/com.arm.doc.subset.swdev.abi/index.html 26 * http://infocenter.arm.com/help/topic/com.arm.doc.subset.swdev.abi/index.html
27 */ 27 */
28 28
29#if !defined (__ARM_EABI__)
30#warning Your compiler does not have EABI support.
31#warning ARM unwind is known to compile only with EABI compilers.
32#warning Change compiler or disable ARM_UNWIND option.
33#elif (__GNUC__ == 4 && __GNUC_MINOR__ <= 2)
34#warning Your compiler is too buggy; it is known to not compile ARM unwind support.
35#warning Change compiler or disable ARM_UNWIND option.
36#endif
37
29#include <linux/kernel.h> 38#include <linux/kernel.h>
30#include <linux/init.h> 39#include <linux/init.h>
31#include <linux/module.h> 40#include <linux/module.h>
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index e35d54d43e70..2fd88437348b 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -289,13 +289,6 @@ config MACH_NEOCORE926
289 help 289 help
290 Select this if you are using the Adeneo Neocore 926 board. 290 Select this if you are using the Adeneo Neocore 926 board.
291 291
292config MACH_AT91SAM9G20EK_2MMC
293 bool "Atmel AT91SAM9G20-EK Evaluation Kit modified for 2 MMC Slots"
294 depends on ARCH_AT91SAM9G20
295 help
296 Select this if you are using an Atmel AT91SAM9G20-EK Evaluation Kit
297 Rev A or B modified for 2 MMC Slots.
298
299endif 292endif
300 293
301# ---------------------------------------------------------- 294# ----------------------------------------------------------
@@ -322,7 +315,16 @@ config MACH_AT91SAM9G20EK
322 bool "Atmel AT91SAM9G20-EK Evaluation Kit" 315 bool "Atmel AT91SAM9G20-EK Evaluation Kit"
323 depends on ARCH_AT91SAM9G20 316 depends on ARCH_AT91SAM9G20
324 help 317 help
325 Select this if you are using Atmel's AT91SAM9G20-EK Evaluation Kit. 318 Select this if you are using Atmel's AT91SAM9G20-EK Evaluation Kit
319 that embeds only one SD/MMC slot.
320
321config MACH_AT91SAM9G20EK_2MMC
322 bool "Atmel AT91SAM9G20-EK Evaluation Kit with 2 SD/MMC Slots"
323 depends on ARCH_AT91SAM9G20
324 help
325 Select this if you are using an Atmel AT91SAM9G20-EK Evaluation Kit
326 with 2 SD/MMC Slots. This is the case for AT91SAM9G20-EK rev. C and
327 onwards.
326 328
327config MACH_CPU9G20 329config MACH_CPU9G20
328 bool "Eukrea CPU9G20 board" 330 bool "Eukrea CPU9G20 board"
@@ -392,7 +394,7 @@ config MTD_AT91_DATAFLASH_CARD
392 394
393config MTD_NAND_ATMEL_BUSWIDTH_16 395config MTD_NAND_ATMEL_BUSWIDTH_16
394 bool "Enable 16-bit data bus interface to NAND flash" 396 bool "Enable 16-bit data bus interface to NAND flash"
395 depends on (MACH_AT91SAM9260EK || MACH_AT91SAM9261EK || MACH_AT91SAM9G10EK || MACH_AT91SAM9263EK || MACH_AT91SAM9G20EK || MACH_AT91SAM9G45EKES || MACH_AT91CAP9ADK) 397 depends on (MACH_AT91SAM9260EK || MACH_AT91SAM9261EK || MACH_AT91SAM9G10EK || MACH_AT91SAM9263EK || MACH_AT91SAM9G20EK || MACH_AT91SAM9G20EK_2MMC || MACH_AT91SAM9G45EKES || MACH_AT91CAP9ADK)
396 help 398 help
397 On AT91SAM926x boards both types of NAND flash can be present 399 On AT91SAM926x boards both types of NAND flash can be present
398 (8 and 16 bit data bus width). 400 (8 and 16 bit data bus width).
diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c
index d581cff80c4c..332b784050b2 100644
--- a/arch/arm/mach-at91/at91sam9g45_devices.c
+++ b/arch/arm/mach-at91/at91sam9g45_devices.c
@@ -838,7 +838,7 @@ static void __init at91_add_device_rtt(void)
838 * Watchdog 838 * Watchdog
839 * -------------------------------------------------------------------- */ 839 * -------------------------------------------------------------------- */
840 840
841#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE) 841#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
842static struct platform_device at91sam9g45_wdt_device = { 842static struct platform_device at91sam9g45_wdt_device = {
843 .name = "at91_wdt", 843 .name = "at91_wdt",
844 .id = -1, 844 .id = -1,
diff --git a/arch/arm/mach-at91/board-sam9g20ek-2slot-mmc.c b/arch/arm/mach-at91/board-sam9g20ek-2slot-mmc.c
index a28e53faf71d..a4102d72cc9b 100644
--- a/arch/arm/mach-at91/board-sam9g20ek-2slot-mmc.c
+++ b/arch/arm/mach-at91/board-sam9g20ek-2slot-mmc.c
@@ -90,7 +90,7 @@ static struct at91_udc_data __initdata ek_udc_data = {
90 * SPI devices. 90 * SPI devices.
91 */ 91 */
92static struct spi_board_info ek_spi_devices[] = { 92static struct spi_board_info ek_spi_devices[] = {
93#if !defined(CONFIG_MMC_ATMELMCI) 93#if !(defined(CONFIG_MMC_ATMELMCI) || defined(CONFIG_MMC_AT91))
94 { /* DataFlash chip */ 94 { /* DataFlash chip */
95 .modalias = "mtd_dataflash", 95 .modalias = "mtd_dataflash",
96 .chip_select = 1, 96 .chip_select = 1,
@@ -113,7 +113,7 @@ static struct spi_board_info ek_spi_devices[] = {
113 * MACB Ethernet device 113 * MACB Ethernet device
114 */ 114 */
115static struct at91_eth_data __initdata ek_macb_data = { 115static struct at91_eth_data __initdata ek_macb_data = {
116 .phy_irq_pin = AT91_PIN_PC12, 116 .phy_irq_pin = AT91_PIN_PB0,
117 .is_rmii = 1, 117 .is_rmii = 1,
118}; 118};
119 119
@@ -194,24 +194,27 @@ static void __init ek_add_device_nand(void)
194 194
195/* 195/*
196 * MCI (SD/MMC) 196 * MCI (SD/MMC)
197 * det_pin and wp_pin are not connected 197 * wp_pin is not connected
198 */ 198 */
199#if defined(CONFIG_MMC_ATMELMCI) || defined(CONFIG_MMC_ATMELMCI_MODULE) 199#if defined(CONFIG_MMC_ATMELMCI) || defined(CONFIG_MMC_ATMELMCI_MODULE)
200static struct mci_platform_data __initdata ek_mmc_data = { 200static struct mci_platform_data __initdata ek_mmc_data = {
201 .slot[0] = { 201 .slot[0] = {
202 .bus_width = 4, 202 .bus_width = 4,
203 .detect_pin = -ENODEV, 203 .detect_pin = AT91_PIN_PC2,
204 .wp_pin = -ENODEV, 204 .wp_pin = -ENODEV,
205 }, 205 },
206 .slot[1] = { 206 .slot[1] = {
207 .bus_width = 4, 207 .bus_width = 4,
208 .detect_pin = -ENODEV, 208 .detect_pin = AT91_PIN_PC9,
209 .wp_pin = -ENODEV, 209 .wp_pin = -ENODEV,
210 }, 210 },
211 211
212}; 212};
213#else 213#else
214static struct amci_platform_data __initdata ek_mmc_data = { 214static struct at91_mmc_data __initdata ek_mmc_data = {
215 .slot_b = 1, /* Only one slot so use slot B */
216 .wire4 = 1,
217 .det_pin = AT91_PIN_PC9,
215}; 218};
216#endif 219#endif
217 220
@@ -221,13 +224,13 @@ static struct amci_platform_data __initdata ek_mmc_data = {
221static struct gpio_led ek_leds[] = { 224static struct gpio_led ek_leds[] = {
222 { /* "bottom" led, green, userled1 to be defined */ 225 { /* "bottom" led, green, userled1 to be defined */
223 .name = "ds5", 226 .name = "ds5",
224 .gpio = AT91_PIN_PB12, 227 .gpio = AT91_PIN_PB8,
225 .active_low = 1, 228 .active_low = 1,
226 .default_trigger = "none", 229 .default_trigger = "none",
227 }, 230 },
228 { /* "power" led, yellow */ 231 { /* "power" led, yellow */
229 .name = "ds1", 232 .name = "ds1",
230 .gpio = AT91_PIN_PB13, 233 .gpio = AT91_PIN_PB9,
231 .default_trigger = "heartbeat", 234 .default_trigger = "heartbeat",
232 } 235 }
233}; 236};
@@ -254,7 +257,11 @@ static void __init ek_board_init(void)
254 /* Ethernet */ 257 /* Ethernet */
255 at91_add_device_eth(&ek_macb_data); 258 at91_add_device_eth(&ek_macb_data);
256 /* MMC */ 259 /* MMC */
260#if defined(CONFIG_MMC_ATMELMCI) || defined(CONFIG_MMC_ATMELMCI_MODULE)
257 at91_add_device_mci(0, &ek_mmc_data); 261 at91_add_device_mci(0, &ek_mmc_data);
262#else
263 at91_add_device_mmc(0, &ek_mmc_data);
264#endif
258 /* I2C */ 265 /* I2C */
259 at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices)); 266 at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
260 /* LEDs */ 267 /* LEDs */
diff --git a/arch/arm/mach-at91/include/mach/cpu.h b/arch/arm/mach-at91/include/mach/cpu.h
index 34a9502c48bc..c22df30ed5e5 100644
--- a/arch/arm/mach-at91/include/mach/cpu.h
+++ b/arch/arm/mach-at91/include/mach/cpu.h
@@ -25,6 +25,8 @@
25#define ARCH_ID_AT91SAM9G20 0x019905a0 25#define ARCH_ID_AT91SAM9G20 0x019905a0
26#define ARCH_ID_AT91SAM9RL64 0x019b03a0 26#define ARCH_ID_AT91SAM9RL64 0x019b03a0
27#define ARCH_ID_AT91SAM9G45 0x819b05a0 27#define ARCH_ID_AT91SAM9G45 0x819b05a0
28#define ARCH_ID_AT91SAM9G45MRL 0x819b05a2 /* aka 9G45-ES2 & non ES lots */
29#define ARCH_ID_AT91SAM9G45ES 0x819b05a1 /* 9G45-ES (Engineering Sample) */
28#define ARCH_ID_AT91CAP9 0x039A03A0 30#define ARCH_ID_AT91CAP9 0x039A03A0
29 31
30#define ARCH_ID_AT91SAM9XE128 0x329973a0 32#define ARCH_ID_AT91SAM9XE128 0x329973a0
@@ -41,6 +43,11 @@ static inline unsigned long at91_cpu_identify(void)
41 return (at91_sys_read(AT91_DBGU_CIDR) & ~AT91_CIDR_VERSION); 43 return (at91_sys_read(AT91_DBGU_CIDR) & ~AT91_CIDR_VERSION);
42} 44}
43 45
46static inline unsigned long at91_cpu_fully_identify(void)
47{
48 return at91_sys_read(AT91_DBGU_CIDR);
49}
50
44#define ARCH_EXID_AT91SAM9M11 0x00000001 51#define ARCH_EXID_AT91SAM9M11 0x00000001
45#define ARCH_EXID_AT91SAM9M10 0x00000002 52#define ARCH_EXID_AT91SAM9M10 0x00000002
46#define ARCH_EXID_AT91SAM9G45 0x00000004 53#define ARCH_EXID_AT91SAM9G45 0x00000004
@@ -118,8 +125,10 @@ static inline unsigned long at91cap9_rev_identify(void)
118 125
119#ifdef CONFIG_ARCH_AT91SAM9G45 126#ifdef CONFIG_ARCH_AT91SAM9G45
120#define cpu_is_at91sam9g45() (at91_cpu_identify() == ARCH_ID_AT91SAM9G45) 127#define cpu_is_at91sam9g45() (at91_cpu_identify() == ARCH_ID_AT91SAM9G45)
128#define cpu_is_at91sam9g45es() (at91_cpu_fully_identify() == ARCH_ID_AT91SAM9G45ES)
121#else 129#else
122#define cpu_is_at91sam9g45() (0) 130#define cpu_is_at91sam9g45() (0)
131#define cpu_is_at91sam9g45es() (0)
123#endif 132#endif
124 133
125#ifdef CONFIG_ARCH_AT91CAP9 134#ifdef CONFIG_ARCH_AT91CAP9
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
index f95dc160c34b..b4357c388d2e 100644
--- a/arch/arm/mach-ep93xx/core.c
+++ b/arch/arm/mach-ep93xx/core.c
@@ -206,7 +206,6 @@ static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc)
206 for (i = 0; i < 8; i++) { 206 for (i = 0; i < 8; i++) {
207 if (status & (1 << i)) { 207 if (status & (1 << i)) {
208 int gpio_irq = gpio_to_irq(EP93XX_GPIO_LINE_B(0)) + i; 208 int gpio_irq = gpio_to_irq(EP93XX_GPIO_LINE_B(0)) + i;
209 desc = irq_desc + gpio_irq;
210 generic_handle_irq(gpio_irq); 209 generic_handle_irq(gpio_irq);
211 } 210 }
212 } 211 }
diff --git a/arch/arm/mach-ep93xx/edb93xx.c b/arch/arm/mach-ep93xx/edb93xx.c
index ca71cf1a72a0..a4a7be308000 100644
--- a/arch/arm/mach-ep93xx/edb93xx.c
+++ b/arch/arm/mach-ep93xx/edb93xx.c
@@ -112,7 +112,7 @@ static void __init edb93xx_register_i2c(void)
112 ARRAY_SIZE(edb93xxa_i2c_board_info)); 112 ARRAY_SIZE(edb93xxa_i2c_board_info));
113 } else if (machine_is_edb9307() || machine_is_edb9312() || 113 } else if (machine_is_edb9307() || machine_is_edb9312() ||
114 machine_is_edb9315()) { 114 machine_is_edb9315()) {
115 ep93xx_register_i2c(&edb93xx_i2c_gpio_data 115 ep93xx_register_i2c(&edb93xx_i2c_gpio_data,
116 edb93xx_i2c_board_info, 116 edb93xx_i2c_board_info,
117 ARRAY_SIZE(edb93xx_i2c_board_info)); 117 ARRAY_SIZE(edb93xx_i2c_board_info));
118 } 118 }
diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h b/arch/arm/mach-ep93xx/include/mach/platform.h
index a3ec33fd79d4..469fd968d517 100644
--- a/arch/arm/mach-ep93xx/include/mach/platform.h
+++ b/arch/arm/mach-ep93xx/include/mach/platform.h
@@ -17,7 +17,6 @@ struct ep93xx_eth_data
17 17
18void ep93xx_map_io(void); 18void ep93xx_map_io(void);
19void ep93xx_init_irq(void); 19void ep93xx_init_irq(void);
20void ep93xx_init_time(unsigned long);
21 20
22/* EP93xx System Controller software locked register write */ 21/* EP93xx System Controller software locked register write */
23void ep93xx_syscon_swlocked_write(unsigned int val, void __iomem *reg); 22void ep93xx_syscon_swlocked_write(unsigned int val, void __iomem *reg);
diff --git a/arch/arm/mach-ep93xx/micro9.c b/arch/arm/mach-ep93xx/micro9.c
index d83b80478b09..f3757a1c5a10 100644
--- a/arch/arm/mach-ep93xx/micro9.c
+++ b/arch/arm/mach-ep93xx/micro9.c
@@ -15,6 +15,7 @@
15#include <linux/init.h> 15#include <linux/init.h>
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/mtd/physmap.h> 17#include <linux/mtd/physmap.h>
18#include <linux/io.h>
18 19
19#include <mach/hardware.h> 20#include <mach/hardware.h>
20 21
diff --git a/arch/arm/mach-integrator/include/mach/memory.h b/arch/arm/mach-integrator/include/mach/memory.h
index 2b2e7a110724..4891828454f5 100644
--- a/arch/arm/mach-integrator/include/mach/memory.h
+++ b/arch/arm/mach-integrator/include/mach/memory.h
@@ -28,5 +28,6 @@
28#define BUS_OFFSET UL(0x80000000) 28#define BUS_OFFSET UL(0x80000000)
29#define __virt_to_bus(x) ((x) - PAGE_OFFSET + BUS_OFFSET) 29#define __virt_to_bus(x) ((x) - PAGE_OFFSET + BUS_OFFSET)
30#define __bus_to_virt(x) ((x) - BUS_OFFSET + PAGE_OFFSET) 30#define __bus_to_virt(x) ((x) - BUS_OFFSET + PAGE_OFFSET)
31#define __pfn_to_bus(x) (((x) << PAGE_SHIFT) + BUS_OFFSET)
31 32
32#endif 33#endif
diff --git a/arch/arm/mach-kirkwood/addr-map.c b/arch/arm/mach-kirkwood/addr-map.c
index 1da5d1c18ecb..2e69168fc699 100644
--- a/arch/arm/mach-kirkwood/addr-map.c
+++ b/arch/arm/mach-kirkwood/addr-map.c
@@ -105,7 +105,7 @@ void __init kirkwood_setup_cpu_mbus(void)
105 setup_cpu_win(0, KIRKWOOD_PCIE_IO_PHYS_BASE, KIRKWOOD_PCIE_IO_SIZE, 105 setup_cpu_win(0, KIRKWOOD_PCIE_IO_PHYS_BASE, KIRKWOOD_PCIE_IO_SIZE,
106 TARGET_PCIE, ATTR_PCIE_IO, KIRKWOOD_PCIE_IO_BUS_BASE); 106 TARGET_PCIE, ATTR_PCIE_IO, KIRKWOOD_PCIE_IO_BUS_BASE);
107 setup_cpu_win(1, KIRKWOOD_PCIE_MEM_PHYS_BASE, KIRKWOOD_PCIE_MEM_SIZE, 107 setup_cpu_win(1, KIRKWOOD_PCIE_MEM_PHYS_BASE, KIRKWOOD_PCIE_MEM_SIZE,
108 TARGET_PCIE, ATTR_PCIE_MEM, -1); 108 TARGET_PCIE, ATTR_PCIE_MEM, KIRKWOOD_PCIE_MEM_BUS_BASE);
109 109
110 /* 110 /*
111 * Setup window for NAND controller. 111 * Setup window for NAND controller.
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c
index 0acb61f3c10b..242dd0775343 100644
--- a/arch/arm/mach-kirkwood/common.c
+++ b/arch/arm/mach-kirkwood/common.c
@@ -845,7 +845,7 @@ int __init kirkwood_find_tclk(void)
845 return 166666667; 845 return 166666667;
846} 846}
847 847
848static void kirkwood_timer_init(void) 848static void __init kirkwood_timer_init(void)
849{ 849{
850 kirkwood_tclk = kirkwood_find_tclk(); 850 kirkwood_tclk = kirkwood_find_tclk();
851 orion_time_init(IRQ_KIRKWOOD_BRIDGE, kirkwood_tclk); 851 orion_time_init(IRQ_KIRKWOOD_BRIDGE, kirkwood_tclk);
@@ -915,6 +915,14 @@ void __init kirkwood_init(void)
915 kirkwood_uart0_data[0].uartclk = kirkwood_tclk; 915 kirkwood_uart0_data[0].uartclk = kirkwood_tclk;
916 kirkwood_uart1_data[0].uartclk = kirkwood_tclk; 916 kirkwood_uart1_data[0].uartclk = kirkwood_tclk;
917 917
918 /*
919 * Disable propagation of mbus errors to the CPU local bus,
920 * as this causes mbus errors (which can occur for example
921 * for PCI aborts) to throw CPU aborts, which we're not set
922 * up to deal with.
923 */
924 writel(readl(CPU_CONFIG) & ~CPU_CONFIG_ERROR_PROP, CPU_CONFIG);
925
918 kirkwood_setup_cpu_mbus(); 926 kirkwood_setup_cpu_mbus();
919 927
920#ifdef CONFIG_CACHE_FEROCEON_L2 928#ifdef CONFIG_CACHE_FEROCEON_L2
diff --git a/arch/arm/mach-kirkwood/include/mach/bridge-regs.h b/arch/arm/mach-kirkwood/include/mach/bridge-regs.h
index 9e80d9232c83..418f5017c50e 100644
--- a/arch/arm/mach-kirkwood/include/mach/bridge-regs.h
+++ b/arch/arm/mach-kirkwood/include/mach/bridge-regs.h
@@ -13,6 +13,9 @@
13 13
14#include <mach/kirkwood.h> 14#include <mach/kirkwood.h>
15 15
16#define CPU_CONFIG (BRIDGE_VIRT_BASE | 0x0100)
17#define CPU_CONFIG_ERROR_PROP 0x00000004
18
16#define CPU_CONTROL (BRIDGE_VIRT_BASE | 0x0104) 19#define CPU_CONTROL (BRIDGE_VIRT_BASE | 0x0104)
17#define CPU_RESET 0x00000002 20#define CPU_RESET 0x00000002
18 21
diff --git a/arch/arm/mach-kirkwood/include/mach/io.h b/arch/arm/mach-kirkwood/include/mach/io.h
index a643a846d5fb..44e8be04f259 100644
--- a/arch/arm/mach-kirkwood/include/mach/io.h
+++ b/arch/arm/mach-kirkwood/include/mach/io.h
@@ -15,7 +15,7 @@
15 15
16static inline void __iomem *__io(unsigned long addr) 16static inline void __iomem *__io(unsigned long addr)
17{ 17{
18 return (void __iomem *)((addr - KIRKWOOD_PCIE_IO_PHYS_BASE) 18 return (void __iomem *)((addr - KIRKWOOD_PCIE_IO_BUS_BASE)
19 + KIRKWOOD_PCIE_IO_VIRT_BASE); 19 + KIRKWOOD_PCIE_IO_VIRT_BASE);
20} 20}
21 21
diff --git a/arch/arm/mach-kirkwood/include/mach/kirkwood.h b/arch/arm/mach-kirkwood/include/mach/kirkwood.h
index 54c132731d2d..a15cf0ee22bd 100644
--- a/arch/arm/mach-kirkwood/include/mach/kirkwood.h
+++ b/arch/arm/mach-kirkwood/include/mach/kirkwood.h
@@ -43,6 +43,7 @@
43#define KIRKWOOD_REGS_SIZE SZ_1M 43#define KIRKWOOD_REGS_SIZE SZ_1M
44 44
45#define KIRKWOOD_PCIE_MEM_PHYS_BASE 0xe0000000 45#define KIRKWOOD_PCIE_MEM_PHYS_BASE 0xe0000000
46#define KIRKWOOD_PCIE_MEM_BUS_BASE 0xe0000000
46#define KIRKWOOD_PCIE_MEM_SIZE SZ_128M 47#define KIRKWOOD_PCIE_MEM_SIZE SZ_128M
47 48
48/* 49/*
diff --git a/arch/arm/mach-kirkwood/openrd_base-setup.c b/arch/arm/mach-kirkwood/openrd_base-setup.c
index 947dfb8cd5b2..77617c722299 100644
--- a/arch/arm/mach-kirkwood/openrd_base-setup.c
+++ b/arch/arm/mach-kirkwood/openrd_base-setup.c
@@ -70,8 +70,20 @@ static void __init openrd_base_init(void)
70 kirkwood_ge00_init(&openrd_base_ge00_data); 70 kirkwood_ge00_init(&openrd_base_ge00_data);
71 kirkwood_sata_init(&openrd_base_sata_data); 71 kirkwood_sata_init(&openrd_base_sata_data);
72 kirkwood_sdio_init(&openrd_base_mvsdio_data); 72 kirkwood_sdio_init(&openrd_base_mvsdio_data);
73
74 kirkwood_i2c_init();
73} 75}
74 76
77static int __init openrd_base_pci_init(void)
78{
79 if (machine_is_openrd_base())
80 kirkwood_pcie_init();
81
82 return 0;
83 }
84subsys_initcall(openrd_base_pci_init);
85
86
75MACHINE_START(OPENRD_BASE, "Marvell OpenRD Base Board") 87MACHINE_START(OPENRD_BASE, "Marvell OpenRD Base Board")
76 /* Maintainer: Dhaval Vasa <dhaval.vasa@einfochips.com> */ 88 /* Maintainer: Dhaval Vasa <dhaval.vasa@einfochips.com> */
77 .phys_io = KIRKWOOD_REGS_PHYS_BASE, 89 .phys_io = KIRKWOOD_REGS_PHYS_BASE,
diff --git a/arch/arm/mach-kirkwood/pcie.c b/arch/arm/mach-kirkwood/pcie.c
index d90b9aae308d..a604b2a701aa 100644
--- a/arch/arm/mach-kirkwood/pcie.c
+++ b/arch/arm/mach-kirkwood/pcie.c
@@ -93,7 +93,7 @@ static struct pci_ops pcie_ops = {
93}; 93};
94 94
95 95
96static int kirkwood_pcie_setup(int nr, struct pci_sys_data *sys) 96static int __init kirkwood_pcie_setup(int nr, struct pci_sys_data *sys)
97{ 97{
98 struct resource *res; 98 struct resource *res;
99 extern unsigned int kirkwood_clk_ctrl; 99 extern unsigned int kirkwood_clk_ctrl;
@@ -115,7 +115,7 @@ static int kirkwood_pcie_setup(int nr, struct pci_sys_data *sys)
115 */ 115 */
116 res[0].name = "PCIe I/O Space"; 116 res[0].name = "PCIe I/O Space";
117 res[0].flags = IORESOURCE_IO; 117 res[0].flags = IORESOURCE_IO;
118 res[0].start = KIRKWOOD_PCIE_IO_PHYS_BASE; 118 res[0].start = KIRKWOOD_PCIE_IO_BUS_BASE;
119 res[0].end = res[0].start + KIRKWOOD_PCIE_IO_SIZE - 1; 119 res[0].end = res[0].start + KIRKWOOD_PCIE_IO_SIZE - 1;
120 if (request_resource(&ioport_resource, &res[0])) 120 if (request_resource(&ioport_resource, &res[0]))
121 panic("Request PCIe IO resource failed\n"); 121 panic("Request PCIe IO resource failed\n");
@@ -126,7 +126,7 @@ static int kirkwood_pcie_setup(int nr, struct pci_sys_data *sys)
126 */ 126 */
127 res[1].name = "PCIe Memory Space"; 127 res[1].name = "PCIe Memory Space";
128 res[1].flags = IORESOURCE_MEM; 128 res[1].flags = IORESOURCE_MEM;
129 res[1].start = KIRKWOOD_PCIE_MEM_PHYS_BASE; 129 res[1].start = KIRKWOOD_PCIE_MEM_BUS_BASE;
130 res[1].end = res[1].start + KIRKWOOD_PCIE_MEM_SIZE - 1; 130 res[1].end = res[1].start + KIRKWOOD_PCIE_MEM_SIZE - 1;
131 if (request_resource(&iomem_resource, &res[1])) 131 if (request_resource(&iomem_resource, &res[1]))
132 panic("Request PCIe Memory resource failed\n"); 132 panic("Request PCIe Memory resource failed\n");
diff --git a/arch/arm/mach-ks8695/include/mach/regs-switch.h b/arch/arm/mach-ks8695/include/mach/regs-switch.h
index 56d12e8de895..97e8acb1cf6c 100644
--- a/arch/arm/mach-ks8695/include/mach/regs-switch.h
+++ b/arch/arm/mach-ks8695/include/mach/regs-switch.h
@@ -25,7 +25,7 @@
25#define KS8695_SEC1 (0x04) /* Switch Engine Control 1 */ 25#define KS8695_SEC1 (0x04) /* Switch Engine Control 1 */
26#define KS8695_SEC2 (0x08) /* Switch Engine Control 2 */ 26#define KS8695_SEC2 (0x08) /* Switch Engine Control 2 */
27 27
28#define KS8695_P(x)_C(z) (0xc0 + (((x)-1)*3 + ((z)-1))*4) /* Port Configuration Registers */ 28#define KS8695_SEPXCZ(x,z) (0x0c + (((x)-1)*3 + ((z)-1))*4) /* Port Configuration Registers */
29 29
30#define KS8695_SEP12AN (0x48) /* Port 1 & 2 Auto-Negotiation */ 30#define KS8695_SEP12AN (0x48) /* Port 1 & 2 Auto-Negotiation */
31#define KS8695_SEP34AN (0x4c) /* Port 3 & 4 Auto-Negotiation */ 31#define KS8695_SEP34AN (0x4c) /* Port 3 & 4 Auto-Negotiation */
diff --git a/arch/arm/mach-mmp/include/mach/mfp-pxa910.h b/arch/arm/mach-mmp/include/mach/mfp-pxa910.h
index bf1189ff9a34..7e8a80f25ddc 100644
--- a/arch/arm/mach-mmp/include/mach/mfp-pxa910.h
+++ b/arch/arm/mach-mmp/include/mach/mfp-pxa910.h
@@ -160,7 +160,7 @@
160#define MMC1_WP_MMC1_WP MFP_CFG_DRV(MMC1_WP, AF0, MEDIUM) 160#define MMC1_WP_MMC1_WP MFP_CFG_DRV(MMC1_WP, AF0, MEDIUM)
161 161
162/* PWM */ 162/* PWM */
163#define GPIO27 PWM3 AF2 MFP_CFG(GPIO27, AF2) 163#define GPIO27_PWM3_AF2 MFP_CFG(GPIO27, AF2)
164#define GPIO51_PWM2_OUT MFP_CFG(GPIO51, AF2) 164#define GPIO51_PWM2_OUT MFP_CFG(GPIO51, AF2)
165#define GPIO117_PWM1_OUT MFP_CFG(GPIO117, AF2) 165#define GPIO117_PWM1_OUT MFP_CFG(GPIO117, AF2)
166#define GPIO118_PWM2_OUT MFP_CFG(GPIO118, AF2) 166#define GPIO118_PWM2_OUT MFP_CFG(GPIO118, AF2)
diff --git a/arch/arm/mach-mv78xx0/common.c b/arch/arm/mach-mv78xx0/common.c
index 1b22e4af8791..08465eb6a2c2 100644
--- a/arch/arm/mach-mv78xx0/common.c
+++ b/arch/arm/mach-mv78xx0/common.c
@@ -845,6 +845,8 @@ static char * __init mv78xx0_id(void)
845 } else if (dev == MV78100_DEV_ID) { 845 } else if (dev == MV78100_DEV_ID) {
846 if (rev == MV78100_REV_A0) 846 if (rev == MV78100_REV_A0)
847 return "MV78100-A0"; 847 return "MV78100-A0";
848 else if (rev == MV78100_REV_A1)
849 return "MV78100-A1";
848 else 850 else
849 return "MV78100-Rev-Unsupported"; 851 return "MV78100-Rev-Unsupported";
850 } else if (dev == MV78200_DEV_ID) { 852 } else if (dev == MV78200_DEV_ID) {
diff --git a/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h b/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
index d715b92b0908..788bdace1304 100644
--- a/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
+++ b/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h
@@ -112,6 +112,7 @@
112 112
113#define MV78100_DEV_ID 0x7810 113#define MV78100_DEV_ID 0x7810
114#define MV78100_REV_A0 1 114#define MV78100_REV_A0 1
115#define MV78100_REV_A1 2
115 116
116#define MV78200_DEV_ID 0x7820 117#define MV78200_DEV_ID 0x7820
117#define MV78200_REV_A0 1 118#define MV78200_REV_A0 1
diff --git a/arch/arm/mach-mx2/clock_imx27.c b/arch/arm/mach-mx2/clock_imx27.c
index 4089951acb47..ff5e33298914 100644
--- a/arch/arm/mach-mx2/clock_imx27.c
+++ b/arch/arm/mach-mx2/clock_imx27.c
@@ -638,9 +638,9 @@ static struct clk_lookup lookups[] = {
638 _REGISTER_CLOCK("mxc-mmc.0", NULL, sdhc1_clk) 638 _REGISTER_CLOCK("mxc-mmc.0", NULL, sdhc1_clk)
639 _REGISTER_CLOCK("mxc-mmc.1", NULL, sdhc2_clk) 639 _REGISTER_CLOCK("mxc-mmc.1", NULL, sdhc2_clk)
640 _REGISTER_CLOCK("mxc-mmc.2", NULL, sdhc3_clk) 640 _REGISTER_CLOCK("mxc-mmc.2", NULL, sdhc3_clk)
641 _REGISTER_CLOCK(NULL, "cspi1", cspi1_clk) 641 _REGISTER_CLOCK("spi_imx.0", NULL, cspi1_clk)
642 _REGISTER_CLOCK(NULL, "cspi2", cspi2_clk) 642 _REGISTER_CLOCK("spi_imx.1", NULL, cspi2_clk)
643 _REGISTER_CLOCK(NULL, "cspi3", cspi3_clk) 643 _REGISTER_CLOCK("spi_imx.2", NULL, cspi3_clk)
644 _REGISTER_CLOCK("imx-fb.0", NULL, lcdc_clk) 644 _REGISTER_CLOCK("imx-fb.0", NULL, lcdc_clk)
645 _REGISTER_CLOCK(NULL, "csi", csi_clk) 645 _REGISTER_CLOCK(NULL, "csi", csi_clk)
646 _REGISTER_CLOCK("fsl-usb2-udc", "usb", usb_clk) 646 _REGISTER_CLOCK("fsl-usb2-udc", "usb", usb_clk)
@@ -665,7 +665,7 @@ static struct clk_lookup lookups[] = {
665 _REGISTER_CLOCK(NULL, "sahara2", sahara2_clk) 665 _REGISTER_CLOCK(NULL, "sahara2", sahara2_clk)
666 _REGISTER_CLOCK(NULL, "ata", ata_clk) 666 _REGISTER_CLOCK(NULL, "ata", ata_clk)
667 _REGISTER_CLOCK(NULL, "mstick", mstick_clk) 667 _REGISTER_CLOCK(NULL, "mstick", mstick_clk)
668 _REGISTER_CLOCK(NULL, "wdog", wdog_clk) 668 _REGISTER_CLOCK("imx-wdt.0", NULL, wdog_clk)
669 _REGISTER_CLOCK(NULL, "gpio", gpio_clk) 669 _REGISTER_CLOCK(NULL, "gpio", gpio_clk)
670 _REGISTER_CLOCK("imx-i2c.0", NULL, i2c1_clk) 670 _REGISTER_CLOCK("imx-i2c.0", NULL, i2c1_clk)
671 _REGISTER_CLOCK("imx-i2c.1", NULL, i2c2_clk) 671 _REGISTER_CLOCK("imx-i2c.1", NULL, i2c2_clk)
diff --git a/arch/arm/mach-mx2/pcm038.c b/arch/arm/mach-mx2/pcm038.c
index ee65dda584cf..906d59b0a7aa 100644
--- a/arch/arm/mach-mx2/pcm038.c
+++ b/arch/arm/mach-mx2/pcm038.c
@@ -23,6 +23,10 @@
23#include <linux/mtd/plat-ram.h> 23#include <linux/mtd/plat-ram.h>
24#include <linux/mtd/physmap.h> 24#include <linux/mtd/physmap.h>
25#include <linux/platform_device.h> 25#include <linux/platform_device.h>
26#include <linux/regulator/machine.h>
27#include <linux/mfd/mc13783.h>
28#include <linux/spi/spi.h>
29#include <linux/irq.h>
26 30
27#include <asm/mach-types.h> 31#include <asm/mach-types.h>
28#include <asm/mach/arch.h> 32#include <asm/mach/arch.h>
@@ -35,6 +39,7 @@
35#include <mach/iomux.h> 39#include <mach/iomux.h>
36#include <mach/imx-uart.h> 40#include <mach/imx-uart.h>
37#include <mach/mxc_nand.h> 41#include <mach/mxc_nand.h>
42#include <mach/spi.h>
38 43
39#include "devices.h" 44#include "devices.h"
40 45
@@ -78,8 +83,6 @@ static int pcm038_pins[] = {
78 PC6_PF_I2C2_SCL, 83 PC6_PF_I2C2_SCL,
79 /* SPI1 */ 84 /* SPI1 */
80 PD25_PF_CSPI1_RDY, 85 PD25_PF_CSPI1_RDY,
81 PD27_PF_CSPI1_SS1,
82 PD28_PF_CSPI1_SS0,
83 PD29_PF_CSPI1_SCLK, 86 PD29_PF_CSPI1_SCLK,
84 PD30_PF_CSPI1_MISO, 87 PD30_PF_CSPI1_MISO,
85 PD31_PF_CSPI1_MOSI, 88 PD31_PF_CSPI1_MOSI,
@@ -196,6 +199,86 @@ static struct i2c_board_info pcm038_i2c_devices[] = {
196 } 199 }
197}; 200};
198 201
202static int pcm038_spi_cs[] = {GPIO_PORTD + 28};
203
204static struct spi_imx_master pcm038_spi_0_data = {
205 .chipselect = pcm038_spi_cs,
206 .num_chipselect = ARRAY_SIZE(pcm038_spi_cs),
207};
208
209static struct regulator_consumer_supply sdhc1_consumers[] = {
210 {
211 .dev = &mxc_sdhc_device1.dev,
212 .supply = "sdhc_vcc",
213 },
214};
215
216static struct regulator_init_data sdhc1_data = {
217 .constraints = {
218 .min_uV = 3000000,
219 .max_uV = 3400000,
220 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE |
221 REGULATOR_CHANGE_MODE | REGULATOR_CHANGE_STATUS,
222 .valid_modes_mask = REGULATOR_MODE_NORMAL |
223 REGULATOR_MODE_FAST,
224 .always_on = 0,
225 .boot_on = 0,
226 },
227 .num_consumer_supplies = ARRAY_SIZE(sdhc1_consumers),
228 .consumer_supplies = sdhc1_consumers,
229};
230
231static struct regulator_consumer_supply cam_consumers[] = {
232 {
233 .dev = NULL,
234 .supply = "imx_cam_vcc",
235 },
236};
237
238static struct regulator_init_data cam_data = {
239 .constraints = {
240 .min_uV = 3000000,
241 .max_uV = 3400000,
242 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE |
243 REGULATOR_CHANGE_MODE | REGULATOR_CHANGE_STATUS,
244 .valid_modes_mask = REGULATOR_MODE_NORMAL |
245 REGULATOR_MODE_FAST,
246 .always_on = 0,
247 .boot_on = 0,
248 },
249 .num_consumer_supplies = ARRAY_SIZE(cam_consumers),
250 .consumer_supplies = cam_consumers,
251};
252
253struct mc13783_regulator_init_data pcm038_regulators[] = {
254 {
255 .id = MC13783_REGU_VCAM,
256 .init_data = &cam_data,
257 }, {
258 .id = MC13783_REGU_VMMC1,
259 .init_data = &sdhc1_data,
260 },
261};
262
263static struct mc13783_platform_data pcm038_pmic = {
264 .regulators = pcm038_regulators,
265 .num_regulators = ARRAY_SIZE(pcm038_regulators),
266 .flags = MC13783_USE_ADC | MC13783_USE_REGULATOR |
267 MC13783_USE_TOUCHSCREEN,
268};
269
270static struct spi_board_info pcm038_spi_board_info[] __initdata = {
271 {
272 .modalias = "mc13783",
273 .irq = IRQ_GPIOB(23),
274 .max_speed_hz = 300000,
275 .bus_num = 0,
276 .chip_select = 0,
277 .platform_data = &pcm038_pmic,
278 .mode = SPI_CS_HIGH,
279 }
280};
281
199static void __init pcm038_init(void) 282static void __init pcm038_init(void)
200{ 283{
201 mxc_gpio_setup_multiple_pins(pcm038_pins, ARRAY_SIZE(pcm038_pins), 284 mxc_gpio_setup_multiple_pins(pcm038_pins, ARRAY_SIZE(pcm038_pins),
@@ -219,6 +302,15 @@ static void __init pcm038_init(void)
219 /* PE18 for user-LED D40 */ 302 /* PE18 for user-LED D40 */
220 mxc_gpio_mode(GPIO_PORTE | 18 | GPIO_GPIO | GPIO_OUT); 303 mxc_gpio_mode(GPIO_PORTE | 18 | GPIO_GPIO | GPIO_OUT);
221 304
305 mxc_gpio_mode(GPIO_PORTD | 28 | GPIO_GPIO | GPIO_OUT);
306
307 /* MC13783 IRQ */
308 mxc_gpio_mode(GPIO_PORTB | 23 | GPIO_GPIO | GPIO_IN);
309
310 mxc_register_device(&mxc_spi_device0, &pcm038_spi_0_data);
311 spi_register_board_info(pcm038_spi_board_info,
312 ARRAY_SIZE(pcm038_spi_board_info));
313
222 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); 314 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
223 315
224#ifdef CONFIG_MACH_PCM970_BASEBOARD 316#ifdef CONFIG_MACH_PCM970_BASEBOARD
diff --git a/arch/arm/mach-mx2/pcm970-baseboard.c b/arch/arm/mach-mx2/pcm970-baseboard.c
index c261f59b0b4c..3cb7f457e5d0 100644
--- a/arch/arm/mach-mx2/pcm970-baseboard.c
+++ b/arch/arm/mach-mx2/pcm970-baseboard.c
@@ -39,7 +39,6 @@ static int pcm970_pins[] = {
39 PB7_PF_SD2_D3, 39 PB7_PF_SD2_D3,
40 PB8_PF_SD2_CMD, 40 PB8_PF_SD2_CMD,
41 PB9_PF_SD2_CLK, 41 PB9_PF_SD2_CLK,
42 GPIO_PORTC | 28 | GPIO_GPIO | GPIO_IN, /* card detect */
43 /* display */ 42 /* display */
44 PA5_PF_LSCLK, 43 PA5_PF_LSCLK,
45 PA6_PF_LD0, 44 PA6_PF_LD0,
@@ -228,6 +227,7 @@ void __init pcm970_baseboard_init(void)
228 "PCM970"); 227 "PCM970");
229 228
230 mxc_register_device(&mxc_fb_device, &pcm038_fb_data); 229 mxc_register_device(&mxc_fb_device, &pcm038_fb_data);
230 mxc_gpio_mode(GPIO_PORTC | 28 | GPIO_GPIO | GPIO_IN);
231 mxc_register_device(&mxc_sdhc_device1, &sdhc_pdata); 231 mxc_register_device(&mxc_sdhc_device1, &sdhc_pdata);
232 platform_device_register(&pcm970_sja1000); 232 platform_device_register(&pcm970_sja1000);
233} 233}
diff --git a/arch/arm/mach-mx25/devices.c b/arch/arm/mach-mx25/devices.c
index eb12de1da42d..63511de3a559 100644
--- a/arch/arm/mach-mx25/devices.c
+++ b/arch/arm/mach-mx25/devices.c
@@ -1,4 +1,23 @@
1/*
2 * Copyright 2009 Sascha Hauer, <kernel@pengutronix.de>
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 51 Franklin Street, Fifth Floor,
16 * Boston, MA 02110-1301, USA.
17 */
18
1#include <linux/platform_device.h> 19#include <linux/platform_device.h>
20#include <linux/dma-mapping.h>
2#include <linux/gpio.h> 21#include <linux/gpio.h>
3#include <mach/mx25.h> 22#include <mach/mx25.h>
4#include <mach/irqs.h> 23#include <mach/irqs.h>
diff --git a/arch/arm/mach-mx25/mx25pdk.c b/arch/arm/mach-mx25/mx25pdk.c
index 92aa4fd19d99..d23ae571c03f 100644
--- a/arch/arm/mach-mx25/mx25pdk.c
+++ b/arch/arm/mach-mx25/mx25pdk.c
@@ -1,3 +1,21 @@
1/*
2 * Copyright 2009 Sascha Hauer, <kernel@pengutronix.de>
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 51 Franklin Street, Fifth Floor,
16 * Boston, MA 02110-1301, USA.
17 */
18
1#include <linux/types.h> 19#include <linux/types.h>
2#include <linux/init.h> 20#include <linux/init.h>
3#include <linux/clk.h> 21#include <linux/clk.h>
@@ -23,19 +41,12 @@ static struct imxuart_platform_data uart_pdata = {
23 .flags = IMXUART_HAVE_RTSCTS, 41 .flags = IMXUART_HAVE_RTSCTS,
24}; 42};
25 43
26static struct mxc_nand_platform_data nand_board_info = {
27 .width = 1,
28 .hw_ecc = 1,
29};
30
31static void __init mx25pdk_init(void) 44static void __init mx25pdk_init(void)
32{ 45{
33 mxc_register_device(&mxc_uart_device0, &uart_pdata); 46 mxc_register_device(&mxc_uart_device0, &uart_pdata);
34 mxc_register_device(&mxc_usbh2, NULL); 47 mxc_register_device(&mxc_usbh2, NULL);
35 mxc_register_device(&mxc_nand_device, &nand_board_info);
36} 48}
37 49
38
39static void __init mx25pdk_timer_init(void) 50static void __init mx25pdk_timer_init(void)
40{ 51{
41 mx25_clocks_init(26000000); 52 mx25_clocks_init(26000000);
diff --git a/arch/arm/mach-mx3/clock-imx35.c b/arch/arm/mach-mx3/clock-imx35.c
index fe5c4217322e..c595260ec1f9 100644
--- a/arch/arm/mach-mx3/clock-imx35.c
+++ b/arch/arm/mach-mx3/clock-imx35.c
@@ -443,7 +443,7 @@ static struct clk_lookup lookups[] = {
443 _REGISTER_CLOCK("mxc-ehci.1", "usb", usbotg_clk) 443 _REGISTER_CLOCK("mxc-ehci.1", "usb", usbotg_clk)
444 _REGISTER_CLOCK("mxc-ehci.2", "usb", usbotg_clk) 444 _REGISTER_CLOCK("mxc-ehci.2", "usb", usbotg_clk)
445 _REGISTER_CLOCK("fsl-usb2-udc", "usb", usbotg_clk) 445 _REGISTER_CLOCK("fsl-usb2-udc", "usb", usbotg_clk)
446 _REGISTER_CLOCK("mxc_wdt.0", NULL, wdog_clk) 446 _REGISTER_CLOCK("imx-wdt.0", NULL, wdog_clk)
447 _REGISTER_CLOCK(NULL, "max", max_clk) 447 _REGISTER_CLOCK(NULL, "max", max_clk)
448 _REGISTER_CLOCK(NULL, "admux", admux_clk) 448 _REGISTER_CLOCK(NULL, "admux", admux_clk)
449 _REGISTER_CLOCK(NULL, "csi", csi_clk) 449 _REGISTER_CLOCK(NULL, "csi", csi_clk)
diff --git a/arch/arm/mach-mx3/clock.c b/arch/arm/mach-mx3/clock.c
index 06bd6180bfc3..b2a3bcf8266e 100644
--- a/arch/arm/mach-mx3/clock.c
+++ b/arch/arm/mach-mx3/clock.c
@@ -530,7 +530,7 @@ static struct clk_lookup lookups[] = {
530 _REGISTER_CLOCK("spi_imx.2", NULL, cspi3_clk) 530 _REGISTER_CLOCK("spi_imx.2", NULL, cspi3_clk)
531 _REGISTER_CLOCK(NULL, "gpt", gpt_clk) 531 _REGISTER_CLOCK(NULL, "gpt", gpt_clk)
532 _REGISTER_CLOCK(NULL, "pwm", pwm_clk) 532 _REGISTER_CLOCK(NULL, "pwm", pwm_clk)
533 _REGISTER_CLOCK(NULL, "wdog", wdog_clk) 533 _REGISTER_CLOCK("imx-wdt.0", NULL, wdog_clk)
534 _REGISTER_CLOCK(NULL, "rtc", rtc_clk) 534 _REGISTER_CLOCK(NULL, "rtc", rtc_clk)
535 _REGISTER_CLOCK(NULL, "epit", epit1_clk) 535 _REGISTER_CLOCK(NULL, "epit", epit1_clk)
536 _REGISTER_CLOCK(NULL, "epit", epit2_clk) 536 _REGISTER_CLOCK(NULL, "epit", epit2_clk)
diff --git a/arch/arm/mach-mx3/devices.c b/arch/arm/mach-mx3/devices.c
index 8a577f367250..e6abe181b967 100644
--- a/arch/arm/mach-mx3/devices.c
+++ b/arch/arm/mach-mx3/devices.c
@@ -459,7 +459,7 @@ struct platform_device mxc_usbh2 = {
459 * SPI master controller 459 * SPI master controller
460 * 3 channels 460 * 3 channels
461 */ 461 */
462static struct resource imx_spi_0_resources[] = { 462static struct resource mxc_spi_0_resources[] = {
463 { 463 {
464 .start = CSPI1_BASE_ADDR, 464 .start = CSPI1_BASE_ADDR,
465 .end = CSPI1_BASE_ADDR + SZ_4K - 1, 465 .end = CSPI1_BASE_ADDR + SZ_4K - 1,
@@ -471,7 +471,7 @@ static struct resource imx_spi_0_resources[] = {
471 }, 471 },
472}; 472};
473 473
474static struct resource imx_spi_1_resources[] = { 474static struct resource mxc_spi_1_resources[] = {
475 { 475 {
476 .start = CSPI2_BASE_ADDR, 476 .start = CSPI2_BASE_ADDR,
477 .end = CSPI2_BASE_ADDR + SZ_4K - 1, 477 .end = CSPI2_BASE_ADDR + SZ_4K - 1,
@@ -483,7 +483,7 @@ static struct resource imx_spi_1_resources[] = {
483 }, 483 },
484}; 484};
485 485
486static struct resource imx_spi_2_resources[] = { 486static struct resource mxc_spi_2_resources[] = {
487 { 487 {
488 .start = CSPI3_BASE_ADDR, 488 .start = CSPI3_BASE_ADDR,
489 .end = CSPI3_BASE_ADDR + SZ_4K - 1, 489 .end = CSPI3_BASE_ADDR + SZ_4K - 1,
@@ -495,25 +495,25 @@ static struct resource imx_spi_2_resources[] = {
495 }, 495 },
496}; 496};
497 497
498struct platform_device imx_spi_device0 = { 498struct platform_device mxc_spi_device0 = {
499 .name = "spi_imx", 499 .name = "spi_imx",
500 .id = 0, 500 .id = 0,
501 .num_resources = ARRAY_SIZE(imx_spi_0_resources), 501 .num_resources = ARRAY_SIZE(mxc_spi_0_resources),
502 .resource = imx_spi_0_resources, 502 .resource = mxc_spi_0_resources,
503}; 503};
504 504
505struct platform_device imx_spi_device1 = { 505struct platform_device mxc_spi_device1 = {
506 .name = "spi_imx", 506 .name = "spi_imx",
507 .id = 1, 507 .id = 1,
508 .num_resources = ARRAY_SIZE(imx_spi_1_resources), 508 .num_resources = ARRAY_SIZE(mxc_spi_1_resources),
509 .resource = imx_spi_1_resources, 509 .resource = mxc_spi_1_resources,
510}; 510};
511 511
512struct platform_device imx_spi_device2 = { 512struct platform_device mxc_spi_device2 = {
513 .name = "spi_imx", 513 .name = "spi_imx",
514 .id = 2, 514 .id = 2,
515 .num_resources = ARRAY_SIZE(imx_spi_2_resources), 515 .num_resources = ARRAY_SIZE(mxc_spi_2_resources),
516 .resource = imx_spi_2_resources, 516 .resource = mxc_spi_2_resources,
517}; 517};
518 518
519#ifdef CONFIG_ARCH_MX35 519#ifdef CONFIG_ARCH_MX35
diff --git a/arch/arm/mach-mx3/devices.h b/arch/arm/mach-mx3/devices.h
index 79f2be45d139..ab87419dc9a0 100644
--- a/arch/arm/mach-mx3/devices.h
+++ b/arch/arm/mach-mx3/devices.h
@@ -20,7 +20,7 @@ extern struct platform_device mxc_otg_host;
20extern struct platform_device mxc_usbh1; 20extern struct platform_device mxc_usbh1;
21extern struct platform_device mxc_usbh2; 21extern struct platform_device mxc_usbh2;
22extern struct platform_device mxc_rnga_device; 22extern struct platform_device mxc_rnga_device;
23extern struct platform_device imx_spi_device0; 23extern struct platform_device mxc_spi_device0;
24extern struct platform_device imx_spi_device1; 24extern struct platform_device mxc_spi_device1;
25extern struct platform_device imx_spi_device2; 25extern struct platform_device mxc_spi_device2;
26 26
diff --git a/arch/arm/mach-mx3/mm.c b/arch/arm/mach-mx3/mm.c
index ad5a1122d765..bedf5b8d976a 100644
--- a/arch/arm/mach-mx3/mm.c
+++ b/arch/arm/mach-mx3/mm.c
@@ -81,6 +81,7 @@ void __init mx31_map_io(void)
81 iotable_init(mxc_io_desc, ARRAY_SIZE(mxc_io_desc)); 81 iotable_init(mxc_io_desc, ARRAY_SIZE(mxc_io_desc));
82} 82}
83 83
84#ifdef CONFIG_ARCH_MX35
84void __init mx35_map_io(void) 85void __init mx35_map_io(void)
85{ 86{
86 mxc_set_cpu_type(MXC_CPU_MX35); 87 mxc_set_cpu_type(MXC_CPU_MX35);
@@ -89,6 +90,7 @@ void __init mx35_map_io(void)
89 90
90 iotable_init(mxc_io_desc, ARRAY_SIZE(mxc_io_desc)); 91 iotable_init(mxc_io_desc, ARRAY_SIZE(mxc_io_desc));
91} 92}
93#endif
92 94
93void __init mx31_init_irq(void) 95void __init mx31_init_irq(void)
94{ 96{
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c
index 42920f9c1a11..8ad5cc3e83e3 100644
--- a/arch/arm/mach-omap1/board-ams-delta.c
+++ b/arch/arm/mach-omap1/board-ams-delta.c
@@ -219,6 +219,10 @@ static struct platform_device *ams_delta_devices[] __initdata = {
219 219
220static void __init ams_delta_init(void) 220static void __init ams_delta_init(void)
221{ 221{
222 /* mux pins for uarts */
223 omap_cfg_reg(UART1_TX);
224 omap_cfg_reg(UART1_RTS);
225
222 iotable_init(ams_delta_io_desc, ARRAY_SIZE(ams_delta_io_desc)); 226 iotable_init(ams_delta_io_desc, ARRAY_SIZE(ams_delta_io_desc));
223 227
224 omap_board_config = ams_delta_config; 228 omap_board_config = ams_delta_config;
@@ -231,6 +235,8 @@ static void __init ams_delta_init(void)
231 235
232 omap_usb_init(&ams_delta_usb_config); 236 omap_usb_init(&ams_delta_usb_config);
233 platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices)); 237 platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices));
238
239 omap_writew(omap_readw(ARM_RSTCT1) | 0x0004, ARM_RSTCT1);
234} 240}
235 241
236static struct plat_serial8250_port ams_delta_modem_ports[] = { 242static struct plat_serial8250_port ams_delta_modem_ports[] = {
diff --git a/arch/arm/mach-omap1/board-generic.c b/arch/arm/mach-omap1/board-generic.c
index fb47239da72f..6c8a41f20e51 100644
--- a/arch/arm/mach-omap1/board-generic.c
+++ b/arch/arm/mach-omap1/board-generic.c
@@ -64,6 +64,14 @@ static void __init omap_generic_init(void)
64{ 64{
65#ifdef CONFIG_ARCH_OMAP15XX 65#ifdef CONFIG_ARCH_OMAP15XX
66 if (cpu_is_omap15xx()) { 66 if (cpu_is_omap15xx()) {
67 /* mux pins for uarts */
68 omap_cfg_reg(UART1_TX);
69 omap_cfg_reg(UART1_RTS);
70 omap_cfg_reg(UART2_TX);
71 omap_cfg_reg(UART2_RTS);
72 omap_cfg_reg(UART3_TX);
73 omap_cfg_reg(UART3_RX);
74
67 omap_usb_init(&generic1510_usb_config); 75 omap_usb_init(&generic1510_usb_config);
68 } 76 }
69#endif 77#endif
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c
index cc2abbb2d0f4..cd6c39514826 100644
--- a/arch/arm/mach-omap1/board-innovator.c
+++ b/arch/arm/mach-omap1/board-innovator.c
@@ -376,6 +376,26 @@ static void __init innovator_init(void)
376{ 376{
377#ifdef CONFIG_ARCH_OMAP15XX 377#ifdef CONFIG_ARCH_OMAP15XX
378 if (cpu_is_omap1510()) { 378 if (cpu_is_omap1510()) {
379 unsigned char reg;
380
381 /* mux pins for uarts */
382 omap_cfg_reg(UART1_TX);
383 omap_cfg_reg(UART1_RTS);
384 omap_cfg_reg(UART2_TX);
385 omap_cfg_reg(UART2_RTS);
386 omap_cfg_reg(UART3_TX);
387 omap_cfg_reg(UART3_RX);
388
389 reg = fpga_read(OMAP1510_FPGA_POWER);
390 reg |= OMAP1510_FPGA_PCR_COM1_EN;
391 fpga_write(reg, OMAP1510_FPGA_POWER);
392 udelay(10);
393
394 reg = fpga_read(OMAP1510_FPGA_POWER);
395 reg |= OMAP1510_FPGA_PCR_COM2_EN;
396 fpga_write(reg, OMAP1510_FPGA_POWER);
397 udelay(10);
398
379 platform_add_devices(innovator1510_devices, ARRAY_SIZE(innovator1510_devices)); 399 platform_add_devices(innovator1510_devices, ARRAY_SIZE(innovator1510_devices));
380 spi_register_board_info(innovator1510_boardinfo, 400 spi_register_board_info(innovator1510_boardinfo,
381 ARRAY_SIZE(innovator1510_boardinfo)); 401 ARRAY_SIZE(innovator1510_boardinfo));
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c
index 90dd0431b0dc..4de258420f39 100644
--- a/arch/arm/mach-omap1/board-palmte.c
+++ b/arch/arm/mach-omap1/board-palmte.c
@@ -342,6 +342,14 @@ static void __init palmte_misc_gpio_setup(void)
342 342
343static void __init omap_palmte_init(void) 343static void __init omap_palmte_init(void)
344{ 344{
345 /* mux pins for uarts */
346 omap_cfg_reg(UART1_TX);
347 omap_cfg_reg(UART1_RTS);
348 omap_cfg_reg(UART2_TX);
349 omap_cfg_reg(UART2_RTS);
350 omap_cfg_reg(UART3_TX);
351 omap_cfg_reg(UART3_RX);
352
345 omap_board_config = palmte_config; 353 omap_board_config = palmte_config;
346 omap_board_config_size = ARRAY_SIZE(palmte_config); 354 omap_board_config_size = ARRAY_SIZE(palmte_config);
347 355
diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c
index 8256139891ff..d972cf941b76 100644
--- a/arch/arm/mach-omap1/board-palmtt.c
+++ b/arch/arm/mach-omap1/board-palmtt.c
@@ -289,6 +289,14 @@ static void __init omap_mpu_wdt_mode(int mode) {
289 289
290static void __init omap_palmtt_init(void) 290static void __init omap_palmtt_init(void)
291{ 291{
292 /* mux pins for uarts */
293 omap_cfg_reg(UART1_TX);
294 omap_cfg_reg(UART1_RTS);
295 omap_cfg_reg(UART2_TX);
296 omap_cfg_reg(UART2_RTS);
297 omap_cfg_reg(UART3_TX);
298 omap_cfg_reg(UART3_RX);
299
292 omap_mpu_wdt_mode(0); 300 omap_mpu_wdt_mode(0);
293 301
294 omap_board_config = palmtt_config; 302 omap_board_config = palmtt_config;
diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c
index 81b6bde1c5a3..986bd4df0e97 100644
--- a/arch/arm/mach-omap1/board-palmz71.c
+++ b/arch/arm/mach-omap1/board-palmz71.c
@@ -307,6 +307,14 @@ palmz71_gpio_setup(int early)
307static void __init 307static void __init
308omap_palmz71_init(void) 308omap_palmz71_init(void)
309{ 309{
310 /* mux pins for uarts */
311 omap_cfg_reg(UART1_TX);
312 omap_cfg_reg(UART1_RTS);
313 omap_cfg_reg(UART2_TX);
314 omap_cfg_reg(UART2_RTS);
315 omap_cfg_reg(UART3_TX);
316 omap_cfg_reg(UART3_RX);
317
310 palmz71_gpio_setup(1); 318 palmz71_gpio_setup(1);
311 omap_mpu_wdt_mode(0); 319 omap_mpu_wdt_mode(0);
312 320
diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c
index 02c85ca2e1df..056ae64e0f55 100644
--- a/arch/arm/mach-omap1/board-sx1.c
+++ b/arch/arm/mach-omap1/board-sx1.c
@@ -377,6 +377,14 @@ static struct omap_board_config_kernel sx1_config[] __initdata = {
377 377
378static void __init omap_sx1_init(void) 378static void __init omap_sx1_init(void)
379{ 379{
380 /* mux pins for uarts */
381 omap_cfg_reg(UART1_TX);
382 omap_cfg_reg(UART1_RTS);
383 omap_cfg_reg(UART2_TX);
384 omap_cfg_reg(UART2_RTS);
385 omap_cfg_reg(UART3_TX);
386 omap_cfg_reg(UART3_RX);
387
380 platform_add_devices(sx1_devices, ARRAY_SIZE(sx1_devices)); 388 platform_add_devices(sx1_devices, ARRAY_SIZE(sx1_devices));
381 389
382 omap_board_config = sx1_config; 390 omap_board_config = sx1_config;
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c
index c06e7a553472..07b07522d5bf 100644
--- a/arch/arm/mach-omap1/board-voiceblue.c
+++ b/arch/arm/mach-omap1/board-voiceblue.c
@@ -152,6 +152,14 @@ static void __init voiceblue_init_irq(void)
152 152
153static void __init voiceblue_init(void) 153static void __init voiceblue_init(void)
154{ 154{
155 /* mux pins for uarts */
156 omap_cfg_reg(UART1_TX);
157 omap_cfg_reg(UART1_RTS);
158 omap_cfg_reg(UART2_TX);
159 omap_cfg_reg(UART2_RTS);
160 omap_cfg_reg(UART3_TX);
161 omap_cfg_reg(UART3_RX);
162
155 /* Watchdog */ 163 /* Watchdog */
156 gpio_request(0, "Watchdog"); 164 gpio_request(0, "Watchdog");
157 /* smc91x reset */ 165 /* smc91x reset */
diff --git a/arch/arm/mach-omap1/serial.c b/arch/arm/mach-omap1/serial.c
index d496e50fec40..d23979bc0fd5 100644
--- a/arch/arm/mach-omap1/serial.c
+++ b/arch/arm/mach-omap1/serial.c
@@ -131,8 +131,6 @@ void __init omap_serial_init(void)
131 } 131 }
132 132
133 for (i = 0; i < OMAP_MAX_NR_PORTS; i++) { 133 for (i = 0; i < OMAP_MAX_NR_PORTS; i++) {
134 unsigned char reg;
135
136 switch (i) { 134 switch (i) {
137 case 0: 135 case 0:
138 uart1_ck = clk_get(NULL, "uart1_ck"); 136 uart1_ck = clk_get(NULL, "uart1_ck");
@@ -143,16 +141,6 @@ void __init omap_serial_init(void)
143 if (cpu_is_omap15xx()) 141 if (cpu_is_omap15xx())
144 clk_set_rate(uart1_ck, 12000000); 142 clk_set_rate(uart1_ck, 12000000);
145 } 143 }
146 if (cpu_is_omap15xx()) {
147 omap_cfg_reg(UART1_TX);
148 omap_cfg_reg(UART1_RTS);
149 if (machine_is_omap_innovator()) {
150 reg = fpga_read(OMAP1510_FPGA_POWER);
151 reg |= OMAP1510_FPGA_PCR_COM1_EN;
152 fpga_write(reg, OMAP1510_FPGA_POWER);
153 udelay(10);
154 }
155 }
156 break; 144 break;
157 case 1: 145 case 1:
158 uart2_ck = clk_get(NULL, "uart2_ck"); 146 uart2_ck = clk_get(NULL, "uart2_ck");
@@ -165,16 +153,6 @@ void __init omap_serial_init(void)
165 else 153 else
166 clk_set_rate(uart2_ck, 48000000); 154 clk_set_rate(uart2_ck, 48000000);
167 } 155 }
168 if (cpu_is_omap15xx()) {
169 omap_cfg_reg(UART2_TX);
170 omap_cfg_reg(UART2_RTS);
171 if (machine_is_omap_innovator()) {
172 reg = fpga_read(OMAP1510_FPGA_POWER);
173 reg |= OMAP1510_FPGA_PCR_COM2_EN;
174 fpga_write(reg, OMAP1510_FPGA_POWER);
175 udelay(10);
176 }
177 }
178 break; 156 break;
179 case 2: 157 case 2:
180 uart3_ck = clk_get(NULL, "uart3_ck"); 158 uart3_ck = clk_get(NULL, "uart3_ck");
@@ -185,10 +163,6 @@ void __init omap_serial_init(void)
185 if (cpu_is_omap15xx()) 163 if (cpu_is_omap15xx())
186 clk_set_rate(uart3_ck, 12000000); 164 clk_set_rate(uart3_ck, 12000000);
187 } 165 }
188 if (cpu_is_omap15xx()) {
189 omap_cfg_reg(UART3_TX);
190 omap_cfg_reg(UART3_RX);
191 }
192 break; 166 break;
193 } 167 }
194 omap_serial_reset(&serial_platform_data[i]); 168 omap_serial_reset(&serial_platform_data[i]);
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 75b1c7efae7e..aad194f61a33 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -73,9 +73,21 @@ config MACH_OMAP_3430SDP
73 bool "OMAP 3430 SDP board" 73 bool "OMAP 3430 SDP board"
74 depends on ARCH_OMAP3 && ARCH_OMAP34XX 74 depends on ARCH_OMAP3 && ARCH_OMAP34XX
75 75
76config MACH_NOKIA_N800
77 bool
78
79config MACH_NOKIA_N810
80 bool
81
82config MACH_NOKIA_N810_WIMAX
83 bool
84
76config MACH_NOKIA_N8X0 85config MACH_NOKIA_N8X0
77 bool "Nokia N800/N810" 86 bool "Nokia N800/N810"
78 depends on ARCH_OMAP2420 87 depends on ARCH_OMAP2420
88 select MACH_NOKIA_N800
89 select MACH_NOKIA_N810
90 select MACH_NOKIA_N810_WIMAX
79 91
80config MACH_NOKIA_RX51 92config MACH_NOKIA_RX51
81 bool "Nokia RX-51 board" 93 bool "Nokia RX-51 board"
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c
index efaf053eba85..0acb5560229c 100644
--- a/arch/arm/mach-omap2/board-3430sdp.c
+++ b/arch/arm/mach-omap2/board-3430sdp.c
@@ -17,6 +17,7 @@
17#include <linux/platform_device.h> 17#include <linux/platform_device.h>
18#include <linux/delay.h> 18#include <linux/delay.h>
19#include <linux/input.h> 19#include <linux/input.h>
20#include <linux/input/matrix_keypad.h>
20#include <linux/spi/spi.h> 21#include <linux/spi/spi.h>
21#include <linux/spi/ads7846.h> 22#include <linux/spi/ads7846.h>
22#include <linux/i2c/twl4030.h> 23#include <linux/i2c/twl4030.h>
@@ -38,7 +39,6 @@
38#include <mach/gpmc.h> 39#include <mach/gpmc.h>
39 40
40#include <mach/control.h> 41#include <mach/control.h>
41#include <mach/keypad.h>
42#include <mach/gpmc-smc91x.h> 42#include <mach/gpmc-smc91x.h>
43 43
44#include "sdram-qimonda-hyb18m512160af-6.h" 44#include "sdram-qimonda-hyb18m512160af-6.h"
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
index eb37c40ea83a..609a5a4a7e29 100644
--- a/arch/arm/mach-omap2/board-4430sdp.c
+++ b/arch/arm/mach-omap2/board-4430sdp.c
@@ -58,6 +58,8 @@ static void __init gic_init_irq(void)
58 58
59static void __init omap_4430sdp_init_irq(void) 59static void __init omap_4430sdp_init_irq(void)
60{ 60{
61 omap_board_config = sdp4430_config;
62 omap_board_config_size = ARRAY_SIZE(sdp4430_config);
61 omap2_init_common_hw(NULL, NULL); 63 omap2_init_common_hw(NULL, NULL);
62#ifdef CONFIG_OMAP_32K_TIMER 64#ifdef CONFIG_OMAP_32K_TIMER
63 omap2_gp_clockevent_set_gptimer(1); 65 omap2_gp_clockevent_set_gptimer(1);
@@ -70,8 +72,6 @@ static void __init omap_4430sdp_init_irq(void)
70static void __init omap_4430sdp_init(void) 72static void __init omap_4430sdp_init(void)
71{ 73{
72 platform_add_devices(sdp4430_devices, ARRAY_SIZE(sdp4430_devices)); 74 platform_add_devices(sdp4430_devices, ARRAY_SIZE(sdp4430_devices));
73 omap_board_config = sdp4430_config;
74 omap_board_config_size = ARRAY_SIZE(sdp4430_config);
75 omap_serial_init(); 75 omap_serial_init();
76} 76}
77 77
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c
index d110a7fdfbd8..d57ec2f4d0a9 100644
--- a/arch/arm/mach-omap2/board-ldp.c
+++ b/arch/arm/mach-omap2/board-ldp.c
@@ -16,6 +16,7 @@
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/delay.h> 17#include <linux/delay.h>
18#include <linux/input.h> 18#include <linux/input.h>
19#include <linux/input/matrix_keypad.h>
19#include <linux/gpio_keys.h> 20#include <linux/gpio_keys.h>
20#include <linux/workqueue.h> 21#include <linux/workqueue.h>
21#include <linux/err.h> 22#include <linux/err.h>
@@ -41,7 +42,6 @@
41#include <asm/delay.h> 42#include <asm/delay.h>
42#include <mach/control.h> 43#include <mach/control.h>
43#include <mach/usb.h> 44#include <mach/usb.h>
44#include <mach/keypad.h>
45 45
46#include "mmc-twl4030.h" 46#include "mmc-twl4030.h"
47 47
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 70df6b4dbcd4..08b0816afa61 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -162,7 +162,7 @@ static int beagle_twl_gpio_setup(struct device *dev,
162 162
163 /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ 163 /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */
164 gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); 164 gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
165 gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1); 165 gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0);
166 166
167 /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ 167 /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
168 gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; 168 gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
index e4ec0c591216..4c4d7f8dbd72 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -20,6 +20,7 @@
20#include <linux/clk.h> 20#include <linux/clk.h>
21#include <linux/gpio.h> 21#include <linux/gpio.h>
22#include <linux/input.h> 22#include <linux/input.h>
23#include <linux/input/matrix_keypad.h>
23#include <linux/leds.h> 24#include <linux/leds.h>
24 25
25#include <linux/spi/spi.h> 26#include <linux/spi/spi.h>
@@ -37,7 +38,6 @@
37#include <mach/usb.h> 38#include <mach/usb.h>
38#include <mach/common.h> 39#include <mach/common.h>
39#include <mach/mcspi.h> 40#include <mach/mcspi.h>
40#include <mach/keypad.h>
41 41
42#include "sdram-micron-mt46h32m32lf-6.h" 42#include "sdram-micron-mt46h32m32lf-6.h"
43#include "mmc-twl4030.h" 43#include "mmc-twl4030.h"
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c
index 7f6bf8772af7..7519edb69155 100644
--- a/arch/arm/mach-omap2/board-omap3pandora.c
+++ b/arch/arm/mach-omap2/board-omap3pandora.c
@@ -27,6 +27,7 @@
27#include <linux/i2c/twl4030.h> 27#include <linux/i2c/twl4030.h>
28#include <linux/leds.h> 28#include <linux/leds.h>
29#include <linux/input.h> 29#include <linux/input.h>
30#include <linux/input/matrix_keypad.h>
30#include <linux/gpio_keys.h> 31#include <linux/gpio_keys.h>
31 32
32#include <asm/mach-types.h> 33#include <asm/mach-types.h>
@@ -39,7 +40,6 @@
39#include <mach/hardware.h> 40#include <mach/hardware.h>
40#include <mach/mcspi.h> 41#include <mach/mcspi.h>
41#include <mach/usb.h> 42#include <mach/usb.h>
42#include <mach/keypad.h>
43#include <mach/mux.h> 43#include <mach/mux.h>
44 44
45#include "sdram-micron-mt46h32m32lf-6.h" 45#include "sdram-micron-mt46h32m32lf-6.h"
@@ -134,50 +134,50 @@ static void __init pandora_keys_gpio_init(void)
134} 134}
135 135
136static int board_keymap[] = { 136static int board_keymap[] = {
137 /* col, row, code */ 137 /* row, col, code */
138 KEY(0, 0, KEY_9), 138 KEY(0, 0, KEY_9),
139 KEY(0, 1, KEY_0), 139 KEY(0, 1, KEY_8),
140 KEY(0, 2, KEY_BACKSPACE), 140 KEY(0, 2, KEY_I),
141 KEY(0, 3, KEY_O), 141 KEY(0, 3, KEY_J),
142 KEY(0, 4, KEY_P), 142 KEY(0, 4, KEY_N),
143 KEY(0, 5, KEY_K), 143 KEY(0, 5, KEY_M),
144 KEY(0, 6, KEY_L), 144 KEY(1, 0, KEY_0),
145 KEY(0, 7, KEY_ENTER),
146 KEY(1, 0, KEY_8),
147 KEY(1, 1, KEY_7), 145 KEY(1, 1, KEY_7),
148 KEY(1, 2, KEY_6), 146 KEY(1, 2, KEY_U),
149 KEY(1, 3, KEY_5), 147 KEY(1, 3, KEY_H),
150 KEY(1, 4, KEY_4), 148 KEY(1, 4, KEY_B),
151 KEY(1, 5, KEY_3), 149 KEY(1, 5, KEY_SPACE),
152 KEY(1, 6, KEY_2), 150 KEY(2, 0, KEY_BACKSPACE),
153 KEY(1, 7, KEY_1), 151 KEY(2, 1, KEY_6),
154 KEY(2, 0, KEY_I),
155 KEY(2, 1, KEY_U),
156 KEY(2, 2, KEY_Y), 152 KEY(2, 2, KEY_Y),
157 KEY(2, 3, KEY_T), 153 KEY(2, 3, KEY_G),
158 KEY(2, 4, KEY_R), 154 KEY(2, 4, KEY_V),
159 KEY(2, 5, KEY_E), 155 KEY(2, 5, KEY_FN),
160 KEY(2, 6, KEY_W), 156 KEY(3, 0, KEY_O),
161 KEY(2, 7, KEY_Q), 157 KEY(3, 1, KEY_5),
162 KEY(3, 0, KEY_J), 158 KEY(3, 2, KEY_T),
163 KEY(3, 1, KEY_H),
164 KEY(3, 2, KEY_G),
165 KEY(3, 3, KEY_F), 159 KEY(3, 3, KEY_F),
166 KEY(3, 4, KEY_D), 160 KEY(3, 4, KEY_C),
167 KEY(3, 5, KEY_S), 161 KEY(4, 0, KEY_P),
168 KEY(3, 6, KEY_A), 162 KEY(4, 1, KEY_4),
169 KEY(3, 7, KEY_LEFTSHIFT), 163 KEY(4, 2, KEY_R),
170 KEY(4, 0, KEY_N), 164 KEY(4, 3, KEY_D),
171 KEY(4, 1, KEY_B),
172 KEY(4, 2, KEY_V),
173 KEY(4, 3, KEY_C),
174 KEY(4, 4, KEY_X), 165 KEY(4, 4, KEY_X),
175 KEY(4, 5, KEY_Z), 166 KEY(5, 0, KEY_K),
176 KEY(4, 6, KEY_DOT), 167 KEY(5, 1, KEY_3),
177 KEY(4, 7, KEY_COMMA), 168 KEY(5, 2, KEY_E),
178 KEY(5, 0, KEY_M), 169 KEY(5, 3, KEY_S),
179 KEY(5, 1, KEY_SPACE), 170 KEY(5, 4, KEY_Z),
180 KEY(5, 2, KEY_FN), 171 KEY(6, 0, KEY_L),
172 KEY(6, 1, KEY_2),
173 KEY(6, 2, KEY_W),
174 KEY(6, 3, KEY_A),
175 KEY(6, 4, KEY_DOT),
176 KEY(7, 0, KEY_ENTER),
177 KEY(7, 1, KEY_1),
178 KEY(7, 2, KEY_Q),
179 KEY(7, 3, KEY_LEFTSHIFT),
180 KEY(7, 4, KEY_COMMA),
181}; 181};
182 182
183static struct matrix_keymap_data board_map_data = { 183static struct matrix_keymap_data board_map_data = {
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c
index 2b0eb1ba5d7f..e34d96a825e3 100644
--- a/arch/arm/mach-omap2/board-rx51-peripherals.c
+++ b/arch/arm/mach-omap2/board-rx51-peripherals.c
@@ -12,6 +12,7 @@
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/platform_device.h> 13#include <linux/platform_device.h>
14#include <linux/input.h> 14#include <linux/input.h>
15#include <linux/input/matrix_keypad.h>
15#include <linux/spi/spi.h> 16#include <linux/spi/spi.h>
16#include <linux/i2c.h> 17#include <linux/i2c.h>
17#include <linux/i2c/twl4030.h> 18#include <linux/i2c/twl4030.h>
@@ -27,7 +28,6 @@
27#include <mach/common.h> 28#include <mach/common.h>
28#include <mach/dma.h> 29#include <mach/dma.h>
29#include <mach/gpmc.h> 30#include <mach/gpmc.h>
30#include <mach/keypad.h>
31#include <mach/onenand.h> 31#include <mach/onenand.h>
32#include <mach/gpmc-smc91x.h> 32#include <mach/gpmc-smc91x.h>
33 33
diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
index f9196c3b1a7b..78869a9a1cc2 100644
--- a/arch/arm/mach-omap2/board-rx51.c
+++ b/arch/arm/mach-omap2/board-rx51.c
@@ -26,7 +26,6 @@
26#include <mach/mux.h> 26#include <mach/mux.h>
27#include <mach/board.h> 27#include <mach/board.h>
28#include <mach/common.h> 28#include <mach/common.h>
29#include <mach/keypad.h>
30#include <mach/dma.h> 29#include <mach/dma.h>
31#include <mach/gpmc.h> 30#include <mach/gpmc.h>
32#include <mach/usb.h> 31#include <mach/usb.h>
diff --git a/arch/arm/mach-omap2/board-zoom2.c b/arch/arm/mach-omap2/board-zoom2.c
index fd3369d5e5cb..51e0b3ba5f3a 100644
--- a/arch/arm/mach-omap2/board-zoom2.c
+++ b/arch/arm/mach-omap2/board-zoom2.c
@@ -13,6 +13,7 @@
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/platform_device.h> 14#include <linux/platform_device.h>
15#include <linux/input.h> 15#include <linux/input.h>
16#include <linux/input/matrix_keypad.h>
16#include <linux/gpio.h> 17#include <linux/gpio.h>
17#include <linux/i2c/twl4030.h> 18#include <linux/i2c/twl4030.h>
18#include <linux/regulator/machine.h> 19#include <linux/regulator/machine.h>
@@ -22,7 +23,6 @@
22 23
23#include <mach/common.h> 24#include <mach/common.h>
24#include <mach/usb.h> 25#include <mach/usb.h>
25#include <mach/keypad.h>
26 26
27#include "mmc-twl4030.h" 27#include "mmc-twl4030.h"
28#include "sdram-micron-mt46h32m32lf-6.h" 28#include "sdram-micron-mt46h32m32lf-6.h"
@@ -30,57 +30,56 @@
30/* Zoom2 has Qwerty keyboard*/ 30/* Zoom2 has Qwerty keyboard*/
31static int board_keymap[] = { 31static int board_keymap[] = {
32 KEY(0, 0, KEY_E), 32 KEY(0, 0, KEY_E),
33 KEY(1, 0, KEY_R), 33 KEY(0, 1, KEY_R),
34 KEY(2, 0, KEY_T), 34 KEY(0, 2, KEY_T),
35 KEY(3, 0, KEY_HOME), 35 KEY(0, 3, KEY_HOME),
36 KEY(6, 0, KEY_I), 36 KEY(0, 6, KEY_I),
37 KEY(7, 0, KEY_LEFTSHIFT), 37 KEY(0, 7, KEY_LEFTSHIFT),
38 KEY(0, 1, KEY_D), 38 KEY(1, 0, KEY_D),
39 KEY(1, 1, KEY_F), 39 KEY(1, 1, KEY_F),
40 KEY(2, 1, KEY_G), 40 KEY(1, 2, KEY_G),
41 KEY(3, 1, KEY_SEND), 41 KEY(1, 3, KEY_SEND),
42 KEY(6, 1, KEY_K), 42 KEY(1, 6, KEY_K),
43 KEY(7, 1, KEY_ENTER), 43 KEY(1, 7, KEY_ENTER),
44 KEY(0, 2, KEY_X), 44 KEY(2, 0, KEY_X),
45 KEY(1, 2, KEY_C), 45 KEY(2, 1, KEY_C),
46 KEY(2, 2, KEY_V), 46 KEY(2, 2, KEY_V),
47 KEY(3, 2, KEY_END), 47 KEY(2, 3, KEY_END),
48 KEY(6, 2, KEY_DOT), 48 KEY(2, 6, KEY_DOT),
49 KEY(7, 2, KEY_CAPSLOCK), 49 KEY(2, 7, KEY_CAPSLOCK),
50 KEY(0, 3, KEY_Z), 50 KEY(3, 0, KEY_Z),
51 KEY(1, 3, KEY_KPPLUS), 51 KEY(3, 1, KEY_KPPLUS),
52 KEY(2, 3, KEY_B), 52 KEY(3, 2, KEY_B),
53 KEY(3, 3, KEY_F1), 53 KEY(3, 3, KEY_F1),
54 KEY(6, 3, KEY_O), 54 KEY(3, 6, KEY_O),
55 KEY(7, 3, KEY_SPACE), 55 KEY(3, 7, KEY_SPACE),
56 KEY(0, 4, KEY_W), 56 KEY(4, 0, KEY_W),
57 KEY(1, 4, KEY_Y), 57 KEY(4, 1, KEY_Y),
58 KEY(2, 4, KEY_U), 58 KEY(4, 2, KEY_U),
59 KEY(3, 4, KEY_F2), 59 KEY(4, 3, KEY_F2),
60 KEY(4, 4, KEY_VOLUMEUP), 60 KEY(4, 4, KEY_VOLUMEUP),
61 KEY(6, 4, KEY_L), 61 KEY(4, 6, KEY_L),
62 KEY(7, 4, KEY_LEFT), 62 KEY(4, 7, KEY_LEFT),
63 KEY(0, 5, KEY_S), 63 KEY(5, 0, KEY_S),
64 KEY(1, 5, KEY_H), 64 KEY(5, 1, KEY_H),
65 KEY(2, 5, KEY_J), 65 KEY(5, 2, KEY_J),
66 KEY(3, 5, KEY_F3), 66 KEY(5, 3, KEY_F3),
67 KEY(5, 5, KEY_VOLUMEDOWN), 67 KEY(5, 5, KEY_VOLUMEDOWN),
68 KEY(6, 5, KEY_M), 68 KEY(5, 6, KEY_M),
69 KEY(4, 5, KEY_ENTER), 69 KEY(5, 7, KEY_ENTER),
70 KEY(7, 5, KEY_RIGHT), 70 KEY(6, 0, KEY_Q),
71 KEY(0, 6, KEY_Q), 71 KEY(6, 1, KEY_A),
72 KEY(1, 6, KEY_A), 72 KEY(6, 2, KEY_N),
73 KEY(2, 6, KEY_N), 73 KEY(6, 3, KEY_BACKSPACE),
74 KEY(3, 6, KEY_BACKSPACE),
75 KEY(6, 6, KEY_P), 74 KEY(6, 6, KEY_P),
76 KEY(7, 6, KEY_UP),
77 KEY(6, 7, KEY_SELECT), 75 KEY(6, 7, KEY_SELECT),
78 KEY(7, 7, KEY_DOWN), 76 KEY(7, 0, KEY_PROG1), /*MACRO 1 <User defined> */
79 KEY(0, 7, KEY_PROG1), /*MACRO 1 <User defined> */ 77 KEY(7, 1, KEY_PROG2), /*MACRO 2 <User defined> */
80 KEY(1, 7, KEY_PROG2), /*MACRO 2 <User defined> */ 78 KEY(7, 2, KEY_PROG3), /*MACRO 3 <User defined> */
81 KEY(2, 7, KEY_PROG3), /*MACRO 3 <User defined> */ 79 KEY(7, 3, KEY_PROG4), /*MACRO 4 <User defined> */
82 KEY(3, 7, KEY_PROG4), /*MACRO 4 <User defined> */ 80 KEY(7, 5, KEY_RIGHT),
83 0 81 KEY(7, 6, KEY_UP),
82 KEY(7, 7, KEY_DOWN)
84}; 83};
85 84
86static struct matrix_keymap_data board_map_data = { 85static struct matrix_keymap_data board_map_data = {
diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c
index 489556eecbd1..7c5c00df3c70 100644
--- a/arch/arm/mach-omap2/clock34xx.c
+++ b/arch/arm/mach-omap2/clock34xx.c
@@ -473,7 +473,7 @@ static u16 _omap3_dpll_compute_freqsel(struct clk *clk, u8 n)
473 unsigned long fint; 473 unsigned long fint;
474 u16 f = 0; 474 u16 f = 0;
475 475
476 fint = clk->dpll_data->clk_ref->rate / (n + 1); 476 fint = clk->dpll_data->clk_ref->rate / n;
477 477
478 pr_debug("clock: fint is %lu\n", fint); 478 pr_debug("clock: fint is %lu\n", fint);
479 479
diff --git a/arch/arm/mach-omap2/clock34xx.h b/arch/arm/mach-omap2/clock34xx.h
index c8119781e00a..9565c05bebd2 100644
--- a/arch/arm/mach-omap2/clock34xx.h
+++ b/arch/arm/mach-omap2/clock34xx.h
@@ -489,9 +489,9 @@ static struct clk core_ck = {
489static struct clk dpll3_m2x2_ck = { 489static struct clk dpll3_m2x2_ck = {
490 .name = "dpll3_m2x2_ck", 490 .name = "dpll3_m2x2_ck",
491 .ops = &clkops_null, 491 .ops = &clkops_null,
492 .parent = &dpll3_x2_ck, 492 .parent = &dpll3_m2_ck,
493 .clkdm_name = "dpll3_clkdm", 493 .clkdm_name = "dpll3_clkdm",
494 .recalc = &followparent_recalc, 494 .recalc = &omap3_clkoutx2_recalc,
495}; 495};
496 496
497/* The PWRDN bit is apparently only available on 3430ES2 and above */ 497/* The PWRDN bit is apparently only available on 3430ES2 and above */
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
index 15876828db23..f3c992e29651 100644
--- a/arch/arm/mach-omap2/gpmc.c
+++ b/arch/arm/mach-omap2/gpmc.c
@@ -366,7 +366,7 @@ int gpmc_cs_request(int cs, unsigned long size, unsigned long *base)
366 if (r < 0) 366 if (r < 0)
367 goto out; 367 goto out;
368 368
369 gpmc_cs_enable_mem(cs, res->start, res->end - res->start + 1); 369 gpmc_cs_enable_mem(cs, res->start, resource_size(res));
370 *base = res->start; 370 *base = res->start;
371 gpmc_cs_set_reserved(cs, 1); 371 gpmc_cs_set_reserved(cs, 1);
372out: 372out:
@@ -378,7 +378,7 @@ EXPORT_SYMBOL(gpmc_cs_request);
378void gpmc_cs_free(int cs) 378void gpmc_cs_free(int cs)
379{ 379{
380 spin_lock(&gpmc_mem_lock); 380 spin_lock(&gpmc_mem_lock);
381 if (cs >= GPMC_CS_NUM || !gpmc_cs_reserved(cs)) { 381 if (cs >= GPMC_CS_NUM || cs < 0 || !gpmc_cs_reserved(cs)) {
382 printk(KERN_ERR "Trying to free non-reserved GPMC CS%d\n", cs); 382 printk(KERN_ERR "Trying to free non-reserved GPMC CS%d\n", cs);
383 BUG(); 383 BUG();
384 spin_unlock(&gpmc_mem_lock); 384 spin_unlock(&gpmc_mem_lock);
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index e3a3bad1d84f..56be87d13edb 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -302,7 +302,9 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
302 pwrdm_init(powerdomains_omap); 302 pwrdm_init(powerdomains_omap);
303 clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps); 303 clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps);
304 omap2_clk_init(); 304 omap2_clk_init();
305#endif
305 omap_serial_early_init(); 306 omap_serial_early_init();
307#ifndef CONFIG_ARCH_OMAP4
306 omap_hwmod_late_init(); 308 omap_hwmod_late_init();
307 omap_pm_if_init(); 309 omap_pm_if_init();
308 omap2_sdrc_init(sdrc_cs0, sdrc_cs1); 310 omap2_sdrc_init(sdrc_cs0, sdrc_cs1);
diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c
index c035ad3426d0..ef57b38a56a4 100644
--- a/arch/arm/mach-omap2/mailbox.c
+++ b/arch/arm/mach-omap2/mailbox.c
@@ -300,7 +300,7 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev)
300 dev_err(&pdev->dev, "invalid mem resource\n"); 300 dev_err(&pdev->dev, "invalid mem resource\n");
301 return -ENODEV; 301 return -ENODEV;
302 } 302 }
303 mbox_base = ioremap(res->start, res->end - res->start); 303 mbox_base = ioremap(res->start, resource_size(res));
304 if (!mbox_base) 304 if (!mbox_base)
305 return -ENOMEM; 305 return -ENOMEM;
306 306
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index 378c2f618358..89463190923a 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -639,14 +639,15 @@ static void __init prcm_setup_regs(void)
639 prm_write_mod_reg(OMAP3430_IO_EN | OMAP3430_WKUP_EN, 639 prm_write_mod_reg(OMAP3430_IO_EN | OMAP3430_WKUP_EN,
640 OCP_MOD, OMAP3_PRM_IRQENABLE_MPU_OFFSET); 640 OCP_MOD, OMAP3_PRM_IRQENABLE_MPU_OFFSET);
641 641
642 /* Enable GPIO wakeups in PER */ 642 /* Enable wakeups in PER */
643 prm_write_mod_reg(OMAP3430_EN_GPIO2 | OMAP3430_EN_GPIO3 | 643 prm_write_mod_reg(OMAP3430_EN_GPIO2 | OMAP3430_EN_GPIO3 |
644 OMAP3430_EN_GPIO4 | OMAP3430_EN_GPIO5 | 644 OMAP3430_EN_GPIO4 | OMAP3430_EN_GPIO5 |
645 OMAP3430_EN_GPIO6, OMAP3430_PER_MOD, PM_WKEN); 645 OMAP3430_EN_GPIO6 | OMAP3430_EN_UART3,
646 OMAP3430_PER_MOD, PM_WKEN);
646 /* and allow them to wake up MPU */ 647 /* and allow them to wake up MPU */
647 prm_write_mod_reg(OMAP3430_GRPSEL_GPIO2 | OMAP3430_EN_GPIO3 | 648 prm_write_mod_reg(OMAP3430_GRPSEL_GPIO2 | OMAP3430_EN_GPIO3 |
648 OMAP3430_GRPSEL_GPIO4 | OMAP3430_EN_GPIO5 | 649 OMAP3430_GRPSEL_GPIO4 | OMAP3430_EN_GPIO5 |
649 OMAP3430_GRPSEL_GPIO6, 650 OMAP3430_GRPSEL_GPIO6 | OMAP3430_EN_UART3,
650 OMAP3430_PER_MOD, OMAP3430_PM_MPUGRPSEL); 651 OMAP3430_PER_MOD, OMAP3430_PM_MPUGRPSEL);
651 652
652 /* Don't attach IVA interrupts */ 653 /* Don't attach IVA interrupts */
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index ae2186892c85..54dfeb5d5667 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -109,16 +109,6 @@ static struct plat_serial8250_port serial_platform_data2[] = {
109 .regshift = 2, 109 .regshift = 2,
110 .uartclk = OMAP24XX_BASE_BAUD * 16, 110 .uartclk = OMAP24XX_BASE_BAUD * 16,
111 }, { 111 }, {
112#ifdef CONFIG_ARCH_OMAP4
113 .membase = OMAP2_IO_ADDRESS(OMAP_UART4_BASE),
114 .mapbase = OMAP_UART4_BASE,
115 .irq = 70,
116 .flags = UPF_BOOT_AUTOCONF,
117 .iotype = UPIO_MEM,
118 .regshift = 2,
119 .uartclk = OMAP24XX_BASE_BAUD * 16,
120 }, {
121#endif
122 .flags = 0 112 .flags = 0
123 } 113 }
124}; 114};
diff --git a/arch/arm/mach-pxa/cm-x300.c b/arch/arm/mach-pxa/cm-x300.c
index aac2cda60e09..102916f1e465 100644
--- a/arch/arm/mach-pxa/cm-x300.c
+++ b/arch/arm/mach-pxa/cm-x300.c
@@ -43,10 +43,10 @@
43 43
44#define CM_X300_ETH_PHYS 0x08000010 44#define CM_X300_ETH_PHYS 0x08000010
45 45
46#define GPIO82_MMC2_IRQ (82) 46#define GPIO82_MMC_IRQ (82)
47#define GPIO85_MMC2_WP (85) 47#define GPIO85_MMC_WP (85)
48 48
49#define CM_X300_MMC2_IRQ IRQ_GPIO(GPIO82_MMC2_IRQ) 49#define CM_X300_MMC_IRQ IRQ_GPIO(GPIO82_MMC_IRQ)
50 50
51#define GPIO95_RTC_CS (95) 51#define GPIO95_RTC_CS (95)
52#define GPIO96_RTC_WR (96) 52#define GPIO96_RTC_WR (96)
@@ -292,37 +292,37 @@ static inline void cm_x300_init_nand(void) {}
292#endif 292#endif
293 293
294#if defined(CONFIG_MMC) || defined(CONFIG_MMC_MODULE) 294#if defined(CONFIG_MMC) || defined(CONFIG_MMC_MODULE)
295/* The first MMC slot of CM-X300 is hardwired to Libertas card and has 295static struct pxamci_platform_data cm_x300_mci_platform_data = {
296 .detect_delay = 20,
297 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
298 .gpio_card_detect = GPIO82_MMC_IRQ,
299 .gpio_card_ro = GPIO85_MMC_WP,
300 .gpio_power = -1,
301};
302
303/* The second MMC slot of CM-X300 is hardwired to Libertas card and has
296 no detection/ro pins */ 304 no detection/ro pins */
297static int cm_x300_mci_init(struct device *dev, 305static int cm_x300_mci2_init(struct device *dev,
298 irq_handler_t cm_x300_detect_int, 306 irq_handler_t cm_x300_detect_int,
299 void *data) 307 void *data)
300{ 308{
301 return 0; 309 return 0;
302} 310}
303 311
304static void cm_x300_mci_exit(struct device *dev, void *data) 312static void cm_x300_mci2_exit(struct device *dev, void *data)
305{ 313{
306} 314}
307 315
308static struct pxamci_platform_data cm_x300_mci_platform_data = { 316static struct pxamci_platform_data cm_x300_mci2_platform_data = {
309 .detect_delay = 20, 317 .detect_delay = 20,
310 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 318 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
311 .init = cm_x300_mci_init, 319 .init = cm_x300_mci2_init,
312 .exit = cm_x300_mci_exit, 320 .exit = cm_x300_mci2_exit,
313 .gpio_card_detect = -1, 321 .gpio_card_detect = -1,
314 .gpio_card_ro = -1, 322 .gpio_card_ro = -1,
315 .gpio_power = -1, 323 .gpio_power = -1,
316}; 324};
317 325
318static struct pxamci_platform_data cm_x300_mci2_platform_data = {
319 .detect_delay = 20,
320 .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
321 .gpio_card_detect = GPIO82_MMC2_IRQ,
322 .gpio_card_ro = GPIO85_MMC2_WP,
323 .gpio_power = -1,
324};
325
326static void __init cm_x300_init_mmc(void) 326static void __init cm_x300_init_mmc(void)
327{ 327{
328 pxa_set_mci_info(&cm_x300_mci_platform_data); 328 pxa_set_mci_info(&cm_x300_mci_platform_data);
diff --git a/arch/arm/mach-pxa/colibri-pxa320.c b/arch/arm/mach-pxa/colibri-pxa320.c
index 494572825c7d..ec0e14b96682 100644
--- a/arch/arm/mach-pxa/colibri-pxa320.c
+++ b/arch/arm/mach-pxa/colibri-pxa320.c
@@ -27,6 +27,7 @@
27#include <mach/colibri.h> 27#include <mach/colibri.h>
28#include <mach/pxafb.h> 28#include <mach/pxafb.h>
29#include <mach/ohci.h> 29#include <mach/ohci.h>
30#include <mach/audio.h>
30 31
31#include "generic.h" 32#include "generic.h"
32#include "devices.h" 33#include "devices.h"
@@ -145,7 +146,8 @@ static void __init colibri_pxa320_init_lcd(void)
145static inline void colibri_pxa320_init_lcd(void) {} 146static inline void colibri_pxa320_init_lcd(void) {}
146#endif 147#endif
147 148
148#if defined(SND_AC97_CODEC) || defined(SND_AC97_CODEC_MODULE) 149#if defined(CONFIG_SND_AC97_CODEC) || \
150 defined(CONFIG_SND_AC97_CODEC_MODULE)
149static mfp_cfg_t colibri_pxa320_ac97_pin_config[] __initdata = { 151static mfp_cfg_t colibri_pxa320_ac97_pin_config[] __initdata = {
150 GPIO34_AC97_SYSCLK, 152 GPIO34_AC97_SYSCLK,
151 GPIO35_AC97_SDATA_IN_0, 153 GPIO35_AC97_SDATA_IN_0,
diff --git a/arch/arm/mach-pxa/cpufreq-pxa2xx.c b/arch/arm/mach-pxa/cpufreq-pxa2xx.c
index 983cc8c20081..9e4d9816726a 100644
--- a/arch/arm/mach-pxa/cpufreq-pxa2xx.c
+++ b/arch/arm/mach-pxa/cpufreq-pxa2xx.c
@@ -447,6 +447,7 @@ static __init int pxa_cpufreq_init(struct cpufreq_policy *policy)
447 pxa27x_freq_table[i].frequency = freq; 447 pxa27x_freq_table[i].frequency = freq;
448 pxa27x_freq_table[i].index = i; 448 pxa27x_freq_table[i].index = i;
449 } 449 }
450 pxa27x_freq_table[i].index = i;
450 pxa27x_freq_table[i].frequency = CPUFREQ_TABLE_END; 451 pxa27x_freq_table[i].frequency = CPUFREQ_TABLE_END;
451 452
452 /* 453 /*
diff --git a/arch/arm/mach-pxa/cpufreq-pxa3xx.c b/arch/arm/mach-pxa/cpufreq-pxa3xx.c
index 67f34a8d8e60..149cdd9aee4d 100644
--- a/arch/arm/mach-pxa/cpufreq-pxa3xx.c
+++ b/arch/arm/mach-pxa/cpufreq-pxa3xx.c
@@ -102,7 +102,7 @@ static int setup_freqs_table(struct cpufreq_policy *policy,
102 table[i].index = i; 102 table[i].index = i;
103 table[i].frequency = freqs[i].cpufreq_mhz * 1000; 103 table[i].frequency = freqs[i].cpufreq_mhz * 1000;
104 } 104 }
105 table[num].frequency = i; 105 table[num].index = i;
106 table[num].frequency = CPUFREQ_TABLE_END; 106 table[num].frequency = CPUFREQ_TABLE_END;
107 107
108 pxa3xx_freqs = freqs; 108 pxa3xx_freqs = freqs;
diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c
index abff9e132749..83bd3c6e3884 100644
--- a/arch/arm/mach-pxa/hx4700.c
+++ b/arch/arm/mach-pxa/hx4700.c
@@ -604,7 +604,7 @@ static struct platform_device gpio_vbus = {
604static const struct ads7846_platform_data tsc2046_info = { 604static const struct ads7846_platform_data tsc2046_info = {
605 .model = 7846, 605 .model = 7846,
606 .vref_delay_usecs = 100, 606 .vref_delay_usecs = 100,
607 .pressure_max = 512, 607 .pressure_max = 1024,
608 .debounce_max = 10, 608 .debounce_max = 10,
609 .debounce_tol = 3, 609 .debounce_tol = 3,
610 .debounce_rep = 1, 610 .debounce_rep = 1,
diff --git a/arch/arm/mach-pxa/include/mach/entry-macro.S b/arch/arm/mach-pxa/include/mach/entry-macro.S
index 241880608ac6..a73bc86a3c26 100644
--- a/arch/arm/mach-pxa/include/mach/entry-macro.S
+++ b/arch/arm/mach-pxa/include/mach/entry-macro.S
@@ -46,5 +46,6 @@
46 beq 1001f 46 beq 1001f
47 bic \irqstat, \irqstat, #0x80000000 47 bic \irqstat, \irqstat, #0x80000000
48 mov \irqnr, \irqstat, lsr #16 48 mov \irqnr, \irqstat, lsr #16
49 add \irqnr, \irqnr, #(PXA_IRQ(0))
491001: 501001:
50 .endm 51 .endm
diff --git a/arch/arm/mach-pxa/irq.c b/arch/arm/mach-pxa/irq.c
index d694ce289668..6112af431fa4 100644
--- a/arch/arm/mach-pxa/irq.c
+++ b/arch/arm/mach-pxa/irq.c
@@ -25,6 +25,8 @@
25 25
26#include "generic.h" 26#include "generic.h"
27 27
28#define MAX_INTERNAL_IRQS 128
29
28#define IRQ_BIT(n) (((n) - PXA_IRQ(0)) & 0x1f) 30#define IRQ_BIT(n) (((n) - PXA_IRQ(0)) & 0x1f)
29#define _ICMR(n) (*((((n) - PXA_IRQ(0)) & ~0x1f) ? &ICMR2 : &ICMR)) 31#define _ICMR(n) (*((((n) - PXA_IRQ(0)) & ~0x1f) ? &ICMR2 : &ICMR))
30#define _ICLR(n) (*((((n) - PXA_IRQ(0)) & ~0x1f) ? &ICLR2 : &ICLR)) 32#define _ICLR(n) (*((((n) - PXA_IRQ(0)) & ~0x1f) ? &ICLR2 : &ICLR))
@@ -122,6 +124,8 @@ void __init pxa_init_irq(int irq_nr, set_wake_t fn)
122{ 124{
123 int irq, i; 125 int irq, i;
124 126
127 BUG_ON(irq_nr > MAX_INTERNAL_IRQS);
128
125 pxa_internal_irq_nr = irq_nr; 129 pxa_internal_irq_nr = irq_nr;
126 130
127 for (irq = PXA_IRQ(0); irq < PXA_IRQ(irq_nr); irq += 32) { 131 for (irq = PXA_IRQ(0); irq < PXA_IRQ(irq_nr); irq += 32) {
@@ -149,7 +153,8 @@ void __init pxa_init_irq(int irq_nr, set_wake_t fn)
149} 153}
150 154
151#ifdef CONFIG_PM 155#ifdef CONFIG_PM
152static unsigned long saved_icmr[2]; 156static unsigned long saved_icmr[MAX_INTERNAL_IRQS/32];
157static unsigned long saved_ipr[MAX_INTERNAL_IRQS];
153 158
154static int pxa_irq_suspend(struct sys_device *dev, pm_message_t state) 159static int pxa_irq_suspend(struct sys_device *dev, pm_message_t state)
155{ 160{
@@ -159,6 +164,8 @@ static int pxa_irq_suspend(struct sys_device *dev, pm_message_t state)
159 saved_icmr[i] = _ICMR(irq); 164 saved_icmr[i] = _ICMR(irq);
160 _ICMR(irq) = 0; 165 _ICMR(irq) = 0;
161 } 166 }
167 for (i = 0; i < pxa_internal_irq_nr; i++)
168 saved_ipr[i] = IPR(i);
162 169
163 return 0; 170 return 0;
164} 171}
@@ -171,6 +178,8 @@ static int pxa_irq_resume(struct sys_device *dev)
171 _ICMR(irq) = saved_icmr[i]; 178 _ICMR(irq) = saved_icmr[i];
172 _ICLR(irq) = 0; 179 _ICLR(irq) = 0;
173 } 180 }
181 for (i = 0; i < pxa_internal_irq_nr; i++)
182 IPR(i) = saved_ipr[i];
174 183
175 ICCR = 1; 184 ICCR = 1;
176 return 0; 185 return 0;
diff --git a/arch/arm/mach-pxa/palmtc.c b/arch/arm/mach-pxa/palmtc.c
index bb2cc0dd44ec..0b92291a58f6 100644
--- a/arch/arm/mach-pxa/palmtc.c
+++ b/arch/arm/mach-pxa/palmtc.c
@@ -292,10 +292,10 @@ const static unsigned int palmtc_keypad_col_gpios[] = {
292 292
293static struct matrix_keypad_platform_data palmtc_keypad_platform_data = { 293static struct matrix_keypad_platform_data palmtc_keypad_platform_data = {
294 .keymap_data = &palmtc_keymap_data, 294 .keymap_data = &palmtc_keymap_data,
295 .col_gpios = palmtc_keypad_row_gpios, 295 .row_gpios = palmtc_keypad_row_gpios,
296 .num_col_gpios = 12, 296 .num_row_gpios = ARRAY_SIZE(palmtc_keypad_row_gpios),
297 .row_gpios = palmtc_keypad_col_gpios, 297 .col_gpios = palmtc_keypad_col_gpios,
298 .num_row_gpios = 4, 298 .num_col_gpios = ARRAY_SIZE(palmtc_keypad_col_gpios),
299 .active_low = 1, 299 .active_low = 1,
300 300
301 .debounce_ms = 20, 301 .debounce_ms = 20,
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
index ee8d6038ce82..d98023f55503 100644
--- a/arch/arm/mach-pxa/spitz.c
+++ b/arch/arm/mach-pxa/spitz.c
@@ -15,6 +15,7 @@
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/delay.h> 17#include <linux/delay.h>
18#include <linux/gpio_keys.h>
18#include <linux/gpio.h> 19#include <linux/gpio.h>
19#include <linux/leds.h> 20#include <linux/leds.h>
20#include <linux/mtd/physmap.h> 21#include <linux/mtd/physmap.h>
@@ -375,6 +376,43 @@ static struct platform_device spitzkbd_device = {
375}; 376};
376 377
377 378
379static struct gpio_keys_button spitz_gpio_keys[] = {
380 {
381 .type = EV_PWR,
382 .code = KEY_SUSPEND,
383 .gpio = SPITZ_GPIO_ON_KEY,
384 .desc = "On/Off",
385 .wakeup = 1,
386 },
387 /* Two buttons detecting the lid state */
388 {
389 .type = EV_SW,
390 .code = 0,
391 .gpio = SPITZ_GPIO_SWA,
392 .desc = "Display Down",
393 },
394 {
395 .type = EV_SW,
396 .code = 1,
397 .gpio = SPITZ_GPIO_SWB,
398 .desc = "Lid Closed",
399 },
400};
401
402static struct gpio_keys_platform_data spitz_gpio_keys_platform_data = {
403 .buttons = spitz_gpio_keys,
404 .nbuttons = ARRAY_SIZE(spitz_gpio_keys),
405};
406
407static struct platform_device spitz_gpio_keys_device = {
408 .name = "gpio-keys",
409 .id = -1,
410 .dev = {
411 .platform_data = &spitz_gpio_keys_platform_data,
412 },
413};
414
415
378/* 416/*
379 * Spitz LEDs 417 * Spitz LEDs
380 */ 418 */
@@ -689,6 +727,7 @@ static struct platform_device sharpsl_rom_device = {
689static struct platform_device *devices[] __initdata = { 727static struct platform_device *devices[] __initdata = {
690 &spitzscoop_device, 728 &spitzscoop_device,
691 &spitzkbd_device, 729 &spitzkbd_device,
730 &spitz_gpio_keys_device,
692 &spitzled_device, 731 &spitzled_device,
693 &sharpsl_nand_device, 732 &sharpsl_nand_device,
694 &sharpsl_rom_device, 733 &sharpsl_rom_device,
@@ -740,11 +779,36 @@ static void __init common_init(void)
740 pxa_set_i2c_info(NULL); 779 pxa_set_i2c_info(NULL);
741} 780}
742 781
782#if defined(CONFIG_MACH_AKITA) || defined(CONFIG_MACH_BORZOI)
783static struct nand_bbt_descr sharpsl_akita_bbt = {
784 .options = 0,
785 .offs = 4,
786 .len = 1,
787 .pattern = scan_ff_pattern
788};
789
790static struct nand_ecclayout akita_oobinfo = {
791 .eccbytes = 24,
792 .eccpos = {
793 0x5, 0x1, 0x2, 0x3, 0x6, 0x7, 0x15, 0x11,
794 0x12, 0x13, 0x16, 0x17, 0x25, 0x21, 0x22, 0x23,
795 0x26, 0x27, 0x35, 0x31, 0x32, 0x33, 0x36, 0x37},
796 .oobfree = {{0x08, 0x09}}
797};
798#endif
799
743#if defined(CONFIG_MACH_SPITZ) || defined(CONFIG_MACH_BORZOI) 800#if defined(CONFIG_MACH_SPITZ) || defined(CONFIG_MACH_BORZOI)
744static void __init spitz_init(void) 801static void __init spitz_init(void)
745{ 802{
746 spitz_ficp_platform_data.gpio_pwdown = SPITZ_GPIO_IR_ON; 803 spitz_ficp_platform_data.gpio_pwdown = SPITZ_GPIO_IR_ON;
747 804
805#ifdef CONFIG_MACH_BORZOI
806 if (machine_is_borzoi()) {
807 sharpsl_nand_platform_data.badblock_pattern = &sharpsl_akita_bbt;
808 sharpsl_nand_platform_data.ecc_layout = &akita_oobinfo;
809 }
810#endif
811
748 platform_scoop_config = &spitz_pcmcia_config; 812 platform_scoop_config = &spitz_pcmcia_config;
749 813
750 common_init(); 814 common_init();
@@ -769,22 +833,6 @@ static struct i2c_board_info akita_i2c_board_info[] = {
769 }, 833 },
770}; 834};
771 835
772static struct nand_bbt_descr sharpsl_akita_bbt = {
773 .options = 0,
774 .offs = 4,
775 .len = 1,
776 .pattern = scan_ff_pattern
777};
778
779static struct nand_ecclayout akita_oobinfo = {
780 .eccbytes = 24,
781 .eccpos = {
782 0x5, 0x1, 0x2, 0x3, 0x6, 0x7, 0x15, 0x11,
783 0x12, 0x13, 0x16, 0x17, 0x25, 0x21, 0x22, 0x23,
784 0x26, 0x27, 0x35, 0x31, 0x32, 0x33, 0x36, 0x37},
785 .oobfree = {{0x08, 0x09}}
786};
787
788static void __init akita_init(void) 836static void __init akita_init(void)
789{ 837{
790 spitz_ficp_platform_data.gpio_pwdown = AKITA_GPIO_IR_ON; 838 spitz_ficp_platform_data.gpio_pwdown = AKITA_GPIO_IR_ON;
diff --git a/arch/arm/mach-realview/Kconfig b/arch/arm/mach-realview/Kconfig
index dfc9b0bc6eb2..c48e1f2c3349 100644
--- a/arch/arm/mach-realview/Kconfig
+++ b/arch/arm/mach-realview/Kconfig
@@ -70,6 +70,8 @@ config MACH_REALVIEW_PBX
70 bool "Support RealView/PBX platform" 70 bool "Support RealView/PBX platform"
71 select ARM_GIC 71 select ARM_GIC
72 select HAVE_PATA_PLATFORM 72 select HAVE_PATA_PLATFORM
73 select ARCH_SPARSEMEM_ENABLE if CPU_V7 && !HIGH_PHYS_OFFSET
74 select ZONE_DMA if SPARSEMEM
73 help 75 help
74 Include support for the ARM(R) RealView PBX platform. 76 Include support for the ARM(R) RealView PBX platform.
75 77
@@ -82,6 +84,7 @@ config REALVIEW_HIGH_PHYS_OFFSET
82 0x70000000, 256MB of which being mirrored at 0x00000000. If 84 0x70000000, 256MB of which being mirrored at 0x00000000. If
83 the board supports 512MB of RAM, this option allows the 85 the board supports 512MB of RAM, this option allows the
84 memory to be accessed contiguously at the high physical 86 memory to be accessed contiguously at the high physical
85 offset. 87 offset. On the PBX board, disabling this option allows 1GB of
88 RAM to be used with SPARSEMEM.
86 89
87endmenu 90endmenu
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c
index a2083b60e3fb..9f293438e020 100644
--- a/arch/arm/mach-realview/core.c
+++ b/arch/arm/mach-realview/core.c
@@ -59,6 +59,25 @@
59/* used by entry-macro.S and platsmp.c */ 59/* used by entry-macro.S and platsmp.c */
60void __iomem *gic_cpu_base_addr; 60void __iomem *gic_cpu_base_addr;
61 61
62#ifdef CONFIG_ZONE_DMA
63/*
64 * Adjust the zones if there are restrictions for DMA access.
65 */
66void __init realview_adjust_zones(int node, unsigned long *size,
67 unsigned long *hole)
68{
69 unsigned long dma_size = SZ_256M >> PAGE_SHIFT;
70
71 if (!machine_is_realview_pbx() || node || (size[0] <= dma_size))
72 return;
73
74 size[ZONE_NORMAL] = size[0] - dma_size;
75 size[ZONE_DMA] = dma_size;
76 hole[ZONE_NORMAL] = hole[0];
77 hole[ZONE_DMA] = 0;
78}
79#endif
80
62/* 81/*
63 * This is the RealView sched_clock implementation. This has 82 * This is the RealView sched_clock implementation. This has
64 * a resolution of 41.7ns, and a maximum value of about 179s. 83 * a resolution of 41.7ns, and a maximum value of about 179s.
@@ -543,7 +562,7 @@ static int realview_clcd_setup(struct clcd_fb *fb)
543 fb->panel = realview_clcd_panel(); 562 fb->panel = realview_clcd_panel();
544 563
545 fb->fb.screen_base = dma_alloc_writecombine(&fb->dev->dev, framesize, 564 fb->fb.screen_base = dma_alloc_writecombine(&fb->dev->dev, framesize,
546 &dma, GFP_KERNEL); 565 &dma, GFP_KERNEL | GFP_DMA);
547 if (!fb->fb.screen_base) { 566 if (!fb->fb.screen_base) {
548 printk(KERN_ERR "CLCD: unable to map framebuffer\n"); 567 printk(KERN_ERR "CLCD: unable to map framebuffer\n");
549 return -ENOMEM; 568 return -ENOMEM;
@@ -788,3 +807,24 @@ void __init realview_timer_init(unsigned int timer_irq)
788 realview_clocksource_init(); 807 realview_clocksource_init();
789 realview_clockevents_init(timer_irq); 808 realview_clockevents_init(timer_irq);
790} 809}
810
811/*
812 * Setup the memory banks.
813 */
814void realview_fixup(struct machine_desc *mdesc, struct tag *tags, char **from,
815 struct meminfo *meminfo)
816{
817 /*
818 * Most RealView platforms have 512MB contiguous RAM at 0x70000000.
819 * Half of this is mirrored at 0.
820 */
821#ifdef CONFIG_REALVIEW_HIGH_PHYS_OFFSET
822 meminfo->bank[0].start = 0x70000000;
823 meminfo->bank[0].size = SZ_512M;
824 meminfo->nr_banks = 1;
825#else
826 meminfo->bank[0].start = 0;
827 meminfo->bank[0].size = SZ_256M;
828 meminfo->nr_banks = 1;
829#endif
830}
diff --git a/arch/arm/mach-realview/core.h b/arch/arm/mach-realview/core.h
index 46cd6acb4d40..781bca68a9fa 100644
--- a/arch/arm/mach-realview/core.h
+++ b/arch/arm/mach-realview/core.h
@@ -25,6 +25,7 @@
25#include <linux/amba/bus.h> 25#include <linux/amba/bus.h>
26#include <linux/io.h> 26#include <linux/io.h>
27 27
28#include <asm/setup.h>
28#include <asm/leds.h> 29#include <asm/leds.h>
29 30
30#define AMBA_DEVICE(name,busid,base,plat) \ 31#define AMBA_DEVICE(name,busid,base,plat) \
@@ -44,6 +45,8 @@ static struct amba_device name##_device = { \
44 /* .dma = base##_DMA,*/ \ 45 /* .dma = base##_DMA,*/ \
45} 46}
46 47
48struct machine_desc;
49
47extern struct platform_device realview_flash_device; 50extern struct platform_device realview_flash_device;
48extern struct platform_device realview_cf_device; 51extern struct platform_device realview_cf_device;
49extern struct platform_device realview_i2c_device; 52extern struct platform_device realview_i2c_device;
@@ -61,5 +64,8 @@ extern void realview_timer_init(unsigned int timer_irq);
61extern int realview_flash_register(struct resource *res, u32 num); 64extern int realview_flash_register(struct resource *res, u32 num);
62extern int realview_eth_register(const char *name, struct resource *res); 65extern int realview_eth_register(const char *name, struct resource *res);
63extern int realview_usb_register(struct resource *res); 66extern int realview_usb_register(struct resource *res);
67extern void realview_fixup(struct machine_desc *mdesc, struct tag *tags,
68 char **from, struct meminfo *meminfo);
69extern void (*realview_reset)(char);
64 70
65#endif 71#endif
diff --git a/arch/arm/mach-realview/include/mach/board-pb1176.h b/arch/arm/mach-realview/include/mach/board-pb1176.h
index 98f8e7eeacc2..34b80b7d40b8 100644
--- a/arch/arm/mach-realview/include/mach/board-pb1176.h
+++ b/arch/arm/mach-realview/include/mach/board-pb1176.h
@@ -73,4 +73,9 @@
73#define REALVIEW_PB1176_GIC_DIST_BASE 0x10041000 /* GIC distributor, on FPGA */ 73#define REALVIEW_PB1176_GIC_DIST_BASE 0x10041000 /* GIC distributor, on FPGA */
74#define REALVIEW_PB1176_L220_BASE 0x10110000 /* L220 registers */ 74#define REALVIEW_PB1176_L220_BASE 0x10110000 /* L220 registers */
75 75
76/*
77 * Control register SYS_RESETCTL is set to 1 to force a soft reset
78 */
79#define REALVIEW_PB1176_SYS_LOCKVAL_RSTCTL 0x0100
80
76#endif /* __ASM_ARCH_BOARD_PB1176_H */ 81#endif /* __ASM_ARCH_BOARD_PB1176_H */
diff --git a/arch/arm/mach-realview/include/mach/board-pb11mp.h b/arch/arm/mach-realview/include/mach/board-pb11mp.h
index f0d68e0fea01..7abf918b77e9 100644
--- a/arch/arm/mach-realview/include/mach/board-pb11mp.h
+++ b/arch/arm/mach-realview/include/mach/board-pb11mp.h
@@ -81,4 +81,16 @@
81#define REALVIEW_TC11MP_GIC_DIST_BASE 0x1F001000 /* Test chip interrupt controller distributor */ 81#define REALVIEW_TC11MP_GIC_DIST_BASE 0x1F001000 /* Test chip interrupt controller distributor */
82#define REALVIEW_TC11MP_L220_BASE 0x1F002000 /* L220 registers */ 82#define REALVIEW_TC11MP_L220_BASE 0x1F002000 /* L220 registers */
83 83
84 /*
85 * Values for REALVIEW_SYS_RESET_CTRL
86 */
87#define REALVIEW_PB11MP_SYS_CTRL_RESET_CONFIGCLR 0x01
88#define REALVIEW_PB11MP_SYS_CTRL_RESET_CONFIGINIT 0x02
89#define REALVIEW_PB11MP_SYS_CTRL_RESET_DLLRESET 0x03
90#define REALVIEW_PB11MP_SYS_CTRL_RESET_PLLRESET 0x04
91#define REALVIEW_PB11MP_SYS_CTRL_RESET_POR 0x05
92#define REALVIEW_PB11MP_SYS_CTRL_RESET_DoC 0x06
93
94#define REALVIEW_PB11MP_SYS_CTRL_LED (1 << 0)
95
84#endif /* __ASM_ARCH_BOARD_PB11MP_H */ 96#endif /* __ASM_ARCH_BOARD_PB11MP_H */
diff --git a/arch/arm/mach-realview/include/mach/memory.h b/arch/arm/mach-realview/include/mach/memory.h
index 293c30025e7e..2417bbcf97fd 100644
--- a/arch/arm/mach-realview/include/mach/memory.h
+++ b/arch/arm/mach-realview/include/mach/memory.h
@@ -29,4 +29,53 @@
29#define PHYS_OFFSET UL(0x00000000) 29#define PHYS_OFFSET UL(0x00000000)
30#endif 30#endif
31 31
32#if !defined(__ASSEMBLY__) && defined(CONFIG_ZONE_DMA)
33extern void realview_adjust_zones(int node, unsigned long *size,
34 unsigned long *hole);
35#define arch_adjust_zones(node, size, hole) \
36 realview_adjust_zones(node, size, hole)
37
38#define ISA_DMA_THRESHOLD (PHYS_OFFSET + SZ_256M - 1)
39#define MAX_DMA_ADDRESS (PAGE_OFFSET + SZ_256M)
40#endif
41
42#ifdef CONFIG_SPARSEMEM
43
44/*
45 * Sparsemem definitions for RealView PBX.
46 *
47 * The RealView PBX board has another block of 512MB of RAM at 0x20000000,
48 * however only the block at 0x70000000 (or the 256MB mirror at 0x00000000)
49 * may be used for DMA.
50 *
51 * The macros below define a section size of 256MB and a non-linear virtual to
52 * physical mapping:
53 *
54 * 256MB @ 0x00000000 -> PAGE_OFFSET
55 * 512MB @ 0x20000000 -> PAGE_OFFSET + 0x10000000
56 * 256MB @ 0x80000000 -> PAGE_OFFSET + 0x30000000
57 */
58#ifdef CONFIG_REALVIEW_HIGH_PHYS_OFFSET
59#error "SPARSEMEM not available with REALVIEW_HIGH_PHYS_OFFSET"
60#endif
61
62#define MAX_PHYSMEM_BITS 32
63#define SECTION_SIZE_BITS 28
64
65/* bank page offsets */
66#define PAGE_OFFSET1 (PAGE_OFFSET + 0x10000000)
67#define PAGE_OFFSET2 (PAGE_OFFSET + 0x30000000)
68
69#define __phys_to_virt(phys) \
70 ((phys) >= 0x80000000 ? (phys) - 0x80000000 + PAGE_OFFSET2 : \
71 (phys) >= 0x20000000 ? (phys) - 0x20000000 + PAGE_OFFSET1 : \
72 (phys) + PAGE_OFFSET)
73
74#define __virt_to_phys(virt) \
75 ((virt) >= PAGE_OFFSET2 ? (virt) - PAGE_OFFSET2 + 0x80000000 : \
76 (virt) >= PAGE_OFFSET1 ? (virt) - PAGE_OFFSET1 + 0x20000000 : \
77 (virt) - PAGE_OFFSET)
78
79#endif /* CONFIG_SPARSEMEM */
80
32#endif 81#endif
diff --git a/arch/arm/mach-realview/include/mach/platform.h b/arch/arm/mach-realview/include/mach/platform.h
index c8f50835fed2..4f46bf71e752 100644
--- a/arch/arm/mach-realview/include/mach/platform.h
+++ b/arch/arm/mach-realview/include/mach/platform.h
@@ -119,19 +119,6 @@
119#define REALVIEW_SYS_TEST_OSC3 (REALVIEW_SYS_BASE + REALVIEW_SYS_TEST_OSC3_OFFSET) 119#define REALVIEW_SYS_TEST_OSC3 (REALVIEW_SYS_BASE + REALVIEW_SYS_TEST_OSC3_OFFSET)
120#define REALVIEW_SYS_TEST_OSC4 (REALVIEW_SYS_BASE + REALVIEW_SYS_TEST_OSC4_OFFSET) 120#define REALVIEW_SYS_TEST_OSC4 (REALVIEW_SYS_BASE + REALVIEW_SYS_TEST_OSC4_OFFSET)
121 121
122/*
123 * Values for REALVIEW_SYS_RESET_CTRL
124 */
125#define REALVIEW_SYS_CTRL_RESET_CONFIGCLR 0x01
126#define REALVIEW_SYS_CTRL_RESET_CONFIGINIT 0x02
127#define REALVIEW_SYS_CTRL_RESET_DLLRESET 0x03
128#define REALVIEW_SYS_CTRL_RESET_PLLRESET 0x04
129#define REALVIEW_SYS_CTRL_RESET_POR 0x05
130#define REALVIEW_SYS_CTRL_RESET_DoC 0x06
131
132#define REALVIEW_SYS_CTRL_LED (1 << 0)
133
134
135/* ------------------------------------------------------------------------ 122/* ------------------------------------------------------------------------
136 * RealView control registers 123 * RealView control registers
137 * ------------------------------------------------------------------------ 124 * ------------------------------------------------------------------------
@@ -153,7 +140,7 @@
153 * SYS_CLD, SYS_BOOTCS 140 * SYS_CLD, SYS_BOOTCS
154 */ 141 */
155#define REALVIEW_SYS_LOCK_LOCKED (1 << 16) 142#define REALVIEW_SYS_LOCK_LOCKED (1 << 16)
156#define REALVIEW_SYS_LOCKVAL_MASK 0xFFFF /* write 0xA05F to enable write access */ 143#define REALVIEW_SYS_LOCKVAL_MASK 0xA05F /* Enable write access */
157 144
158/* 145/*
159 * REALVIEW_SYS_FLASH 146 * REALVIEW_SYS_FLASH
diff --git a/arch/arm/mach-realview/include/mach/system.h b/arch/arm/mach-realview/include/mach/system.h
index 1a15a441e027..a30f2e3ec178 100644
--- a/arch/arm/mach-realview/include/mach/system.h
+++ b/arch/arm/mach-realview/include/mach/system.h
@@ -25,6 +25,8 @@
25#include <mach/hardware.h> 25#include <mach/hardware.h>
26#include <mach/platform.h> 26#include <mach/platform.h>
27 27
28void (*realview_reset)(char mode);
29
28static inline void arch_idle(void) 30static inline void arch_idle(void)
29{ 31{
30 /* 32 /*
@@ -36,16 +38,12 @@ static inline void arch_idle(void)
36 38
37static inline void arch_reset(char mode, const char *cmd) 39static inline void arch_reset(char mode, const char *cmd)
38{ 40{
39 void __iomem *hdr_ctrl = __io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_RESETCTL_OFFSET;
40 unsigned int val;
41
42 /* 41 /*
43 * To reset, we hit the on-board reset register 42 * To reset, we hit the on-board reset register
44 * in the system FPGA 43 * in the system FPGA
45 */ 44 */
46 val = __raw_readl(hdr_ctrl); 45 if (realview_reset)
47 val |= REALVIEW_SYS_CTRL_RESET_CONFIGCLR; 46 realview_reset(mode);
48 __raw_writel(val, hdr_ctrl);
49} 47}
50 48
51#endif 49#endif
diff --git a/arch/arm/mach-realview/platsmp.c b/arch/arm/mach-realview/platsmp.c
index a88458b4799d..009265818d55 100644
--- a/arch/arm/mach-realview/platsmp.c
+++ b/arch/arm/mach-realview/platsmp.c
@@ -146,11 +146,8 @@ static void __init poke_milo(void)
146 * register. The BootMonitor waits for this register to become 146 * register. The BootMonitor waits for this register to become
147 * non-zero. 147 * non-zero.
148 */ 148 */
149#define REALVIEW_SYS_FLAGSS_OFFSET 0x30
150#define REALVIEW_SYS_FLAGSC_OFFSET 0x34
151 __raw_writel(BSYM(virt_to_phys(realview_secondary_startup)), 149 __raw_writel(BSYM(virt_to_phys(realview_secondary_startup)),
152 __io_address(REALVIEW_SYS_BASE) + 150 __io_address(REALVIEW_SYS_FLAGSSET));
153 REALVIEW_SYS_FLAGSS_OFFSET);
154 151
155 mb(); 152 mb();
156} 153}
diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c
index 1d65e64ae571..917f8ca3abff 100644
--- a/arch/arm/mach-realview/realview_eb.c
+++ b/arch/arm/mach-realview/realview_eb.c
@@ -415,6 +415,7 @@ MACHINE_START(REALVIEW_EB, "ARM-RealView EB")
415 .phys_io = REALVIEW_EB_UART0_BASE, 415 .phys_io = REALVIEW_EB_UART0_BASE,
416 .io_pg_offst = (IO_ADDRESS(REALVIEW_EB_UART0_BASE) >> 18) & 0xfffc, 416 .io_pg_offst = (IO_ADDRESS(REALVIEW_EB_UART0_BASE) >> 18) & 0xfffc,
417 .boot_params = PHYS_OFFSET + 0x00000100, 417 .boot_params = PHYS_OFFSET + 0x00000100,
418 .fixup = realview_fixup,
418 .map_io = realview_eb_map_io, 419 .map_io = realview_eb_map_io,
419 .init_irq = gic_init_irq, 420 .init_irq = gic_init_irq,
420 .timer = &realview_eb_timer, 421 .timer = &realview_eb_timer,
diff --git a/arch/arm/mach-realview/realview_pb1176.c b/arch/arm/mach-realview/realview_pb1176.c
index 2817fe099319..7fb726d5f8b9 100644
--- a/arch/arm/mach-realview/realview_pb1176.c
+++ b/arch/arm/mach-realview/realview_pb1176.c
@@ -290,6 +290,28 @@ static struct sys_timer realview_pb1176_timer = {
290 .init = realview_pb1176_timer_init, 290 .init = realview_pb1176_timer_init,
291}; 291};
292 292
293static void realview_pb1176_reset(char mode)
294{
295 void __iomem *hdr_ctrl = __io_address(REALVIEW_SYS_BASE) +
296 REALVIEW_SYS_RESETCTL_OFFSET;
297 void __iomem *rst_hdr_ctrl = __io_address(REALVIEW_SYS_BASE) +
298 REALVIEW_SYS_LOCK_OFFSET;
299 __raw_writel(REALVIEW_SYS_LOCKVAL_MASK, rst_hdr_ctrl);
300 __raw_writel(REALVIEW_PB1176_SYS_LOCKVAL_RSTCTL, hdr_ctrl);
301}
302
303static void realview_pb1176_fixup(struct machine_desc *mdesc,
304 struct tag *tags, char **from,
305 struct meminfo *meminfo)
306{
307 /*
308 * RealView PB1176 only has 128MB of RAM mapped at 0.
309 */
310 meminfo->bank[0].start = 0;
311 meminfo->bank[0].size = SZ_128M;
312 meminfo->nr_banks = 1;
313}
314
293static void __init realview_pb1176_init(void) 315static void __init realview_pb1176_init(void)
294{ 316{
295 int i; 317 int i;
@@ -313,6 +335,7 @@ static void __init realview_pb1176_init(void)
313#ifdef CONFIG_LEDS 335#ifdef CONFIG_LEDS
314 leds_event = realview_leds_event; 336 leds_event = realview_leds_event;
315#endif 337#endif
338 realview_reset = realview_pb1176_reset;
316} 339}
317 340
318MACHINE_START(REALVIEW_PB1176, "ARM-RealView PB1176") 341MACHINE_START(REALVIEW_PB1176, "ARM-RealView PB1176")
@@ -320,6 +343,7 @@ MACHINE_START(REALVIEW_PB1176, "ARM-RealView PB1176")
320 .phys_io = REALVIEW_PB1176_UART0_BASE, 343 .phys_io = REALVIEW_PB1176_UART0_BASE,
321 .io_pg_offst = (IO_ADDRESS(REALVIEW_PB1176_UART0_BASE) >> 18) & 0xfffc, 344 .io_pg_offst = (IO_ADDRESS(REALVIEW_PB1176_UART0_BASE) >> 18) & 0xfffc,
322 .boot_params = PHYS_OFFSET + 0x00000100, 345 .boot_params = PHYS_OFFSET + 0x00000100,
346 .fixup = realview_pb1176_fixup,
323 .map_io = realview_pb1176_map_io, 347 .map_io = realview_pb1176_map_io,
324 .init_irq = gic_init_irq, 348 .init_irq = gic_init_irq,
325 .timer = &realview_pb1176_timer, 349 .timer = &realview_pb1176_timer,
diff --git a/arch/arm/mach-realview/realview_pb11mp.c b/arch/arm/mach-realview/realview_pb11mp.c
index 94680fcf726d..9bbbfc05f225 100644
--- a/arch/arm/mach-realview/realview_pb11mp.c
+++ b/arch/arm/mach-realview/realview_pb11mp.c
@@ -299,6 +299,21 @@ static struct sys_timer realview_pb11mp_timer = {
299 .init = realview_pb11mp_timer_init, 299 .init = realview_pb11mp_timer_init,
300}; 300};
301 301
302static void realview_pb11mp_reset(char mode)
303{
304 void __iomem *hdr_ctrl = __io_address(REALVIEW_SYS_BASE) +
305 REALVIEW_SYS_RESETCTL_OFFSET;
306 unsigned int val;
307
308 /*
309 * To reset, we hit the on-board reset register
310 * in the system FPGA
311 */
312 val = __raw_readl(hdr_ctrl);
313 val |= REALVIEW_PB11MP_SYS_CTRL_RESET_CONFIGCLR;
314 __raw_writel(val, hdr_ctrl);
315}
316
302static void __init realview_pb11mp_init(void) 317static void __init realview_pb11mp_init(void)
303{ 318{
304 int i; 319 int i;
@@ -324,6 +339,7 @@ static void __init realview_pb11mp_init(void)
324#ifdef CONFIG_LEDS 339#ifdef CONFIG_LEDS
325 leds_event = realview_leds_event; 340 leds_event = realview_leds_event;
326#endif 341#endif
342 realview_reset = realview_pb11mp_reset;
327} 343}
328 344
329MACHINE_START(REALVIEW_PB11MP, "ARM-RealView PB11MPCore") 345MACHINE_START(REALVIEW_PB11MP, "ARM-RealView PB11MPCore")
@@ -331,6 +347,7 @@ MACHINE_START(REALVIEW_PB11MP, "ARM-RealView PB11MPCore")
331 .phys_io = REALVIEW_PB11MP_UART0_BASE, 347 .phys_io = REALVIEW_PB11MP_UART0_BASE,
332 .io_pg_offst = (IO_ADDRESS(REALVIEW_PB11MP_UART0_BASE) >> 18) & 0xfffc, 348 .io_pg_offst = (IO_ADDRESS(REALVIEW_PB11MP_UART0_BASE) >> 18) & 0xfffc,
333 .boot_params = PHYS_OFFSET + 0x00000100, 349 .boot_params = PHYS_OFFSET + 0x00000100,
350 .fixup = realview_fixup,
334 .map_io = realview_pb11mp_map_io, 351 .map_io = realview_pb11mp_map_io,
335 .init_irq = gic_init_irq, 352 .init_irq = gic_init_irq,
336 .timer = &realview_pb11mp_timer, 353 .timer = &realview_pb11mp_timer,
diff --git a/arch/arm/mach-realview/realview_pba8.c b/arch/arm/mach-realview/realview_pba8.c
index 941beb2b9709..fe861e96c566 100644
--- a/arch/arm/mach-realview/realview_pba8.c
+++ b/arch/arm/mach-realview/realview_pba8.c
@@ -298,6 +298,7 @@ MACHINE_START(REALVIEW_PBA8, "ARM-RealView PB-A8")
298 .phys_io = REALVIEW_PBA8_UART0_BASE, 298 .phys_io = REALVIEW_PBA8_UART0_BASE,
299 .io_pg_offst = (IO_ADDRESS(REALVIEW_PBA8_UART0_BASE) >> 18) & 0xfffc, 299 .io_pg_offst = (IO_ADDRESS(REALVIEW_PBA8_UART0_BASE) >> 18) & 0xfffc,
300 .boot_params = PHYS_OFFSET + 0x00000100, 300 .boot_params = PHYS_OFFSET + 0x00000100,
301 .fixup = realview_fixup,
301 .map_io = realview_pba8_map_io, 302 .map_io = realview_pba8_map_io,
302 .init_irq = gic_init_irq, 303 .init_irq = gic_init_irq,
303 .timer = &realview_pba8_timer, 304 .timer = &realview_pba8_timer,
diff --git a/arch/arm/mach-realview/realview_pbx.c b/arch/arm/mach-realview/realview_pbx.c
index 7e4bc6cdca52..ec39488e2b42 100644
--- a/arch/arm/mach-realview/realview_pbx.c
+++ b/arch/arm/mach-realview/realview_pbx.c
@@ -304,6 +304,26 @@ static struct sys_timer realview_pbx_timer = {
304 .init = realview_pbx_timer_init, 304 .init = realview_pbx_timer_init,
305}; 305};
306 306
307static void realview_pbx_fixup(struct machine_desc *mdesc, struct tag *tags,
308 char **from, struct meminfo *meminfo)
309{
310#ifdef CONFIG_SPARSEMEM
311 /*
312 * Memory configuration with SPARSEMEM enabled on RealView PBX (see
313 * asm/mach/memory.h for more information).
314 */
315 meminfo->bank[0].start = 0;
316 meminfo->bank[0].size = SZ_256M;
317 meminfo->bank[1].start = 0x20000000;
318 meminfo->bank[1].size = SZ_512M;
319 meminfo->bank[2].start = 0x80000000;
320 meminfo->bank[2].size = SZ_256M;
321 meminfo->nr_banks = 3;
322#else
323 realview_fixup(mdesc, tags, from, meminfo);
324#endif
325}
326
307static void __init realview_pbx_init(void) 327static void __init realview_pbx_init(void)
308{ 328{
309 int i; 329 int i;
@@ -345,6 +365,7 @@ MACHINE_START(REALVIEW_PBX, "ARM-RealView PBX")
345 .phys_io = REALVIEW_PBX_UART0_BASE, 365 .phys_io = REALVIEW_PBX_UART0_BASE,
346 .io_pg_offst = (IO_ADDRESS(REALVIEW_PBX_UART0_BASE) >> 18) & 0xfffc, 366 .io_pg_offst = (IO_ADDRESS(REALVIEW_PBX_UART0_BASE) >> 18) & 0xfffc,
347 .boot_params = PHYS_OFFSET + 0x00000100, 367 .boot_params = PHYS_OFFSET + 0x00000100,
368 .fixup = realview_pbx_fixup,
348 .map_io = realview_pbx_map_io, 369 .map_io = realview_pbx_map_io,
349 .init_irq = gic_init_irq, 370 .init_irq = gic_init_irq,
350 .timer = &realview_pbx_timer, 371 .timer = &realview_pbx_timer,
diff --git a/arch/arm/mach-s3c2410/gpio.c b/arch/arm/mach-s3c2410/gpio.c
index 7974afca297c..9664e011dae2 100644
--- a/arch/arm/mach-s3c2410/gpio.c
+++ b/arch/arm/mach-s3c2410/gpio.c
@@ -28,6 +28,7 @@
28#include <linux/io.h> 28#include <linux/io.h>
29 29
30#include <mach/hardware.h> 30#include <mach/hardware.h>
31#include <mach/gpio-fns.h>
31#include <asm/irq.h> 32#include <asm/irq.h>
32 33
33#include <mach/regs-gpio.h> 34#include <mach/regs-gpio.h>
diff --git a/arch/arm/mach-s3c2410/include/mach/dma.h b/arch/arm/mach-s3c2410/include/mach/dma.h
index c3a2629e0ded..92e2687009ea 100644
--- a/arch/arm/mach-s3c2410/include/mach/dma.h
+++ b/arch/arm/mach-s3c2410/include/mach/dma.h
@@ -110,6 +110,8 @@ enum s3c2410_dma_loadst {
110 * waiting for reloads */ 110 * waiting for reloads */
111#define S3C2410_DMAF_AUTOSTART (1<<1) /* auto-start if buffer queued */ 111#define S3C2410_DMAF_AUTOSTART (1<<1) /* auto-start if buffer queued */
112 112
113#define S3C2410_DMAF_CIRCULAR (1 << 2) /* no circular dma support */
114
113/* dma buffer */ 115/* dma buffer */
114 116
115struct s3c2410_dma_buf; 117struct s3c2410_dma_buf;
@@ -194,4 +196,9 @@ struct s3c2410_dma_chan {
194 196
195typedef unsigned long dma_device_t; 197typedef unsigned long dma_device_t;
196 198
199static inline bool s3c_dma_has_circular(void)
200{
201 return false;
202}
203
197#endif /* __ASM_ARCH_DMA_H */ 204#endif /* __ASM_ARCH_DMA_H */
diff --git a/arch/arm/mach-s3c2440/Kconfig b/arch/arm/mach-s3c2440/Kconfig
index d7bba919a77e..a8b69d77571b 100644
--- a/arch/arm/mach-s3c2440/Kconfig
+++ b/arch/arm/mach-s3c2440/Kconfig
@@ -103,6 +103,7 @@ config MACH_MINI2440
103 select LEDS_TRIGGER_BACKLIGHT 103 select LEDS_TRIGGER_BACKLIGHT
104 select SND_S3C24XX_SOC_S3C24XX_UDA134X 104 select SND_S3C24XX_SOC_S3C24XX_UDA134X
105 select S3C_DEV_NAND 105 select S3C_DEV_NAND
106 select S3C_DEV_USB_HOST
106 help 107 help
107 Say Y here to select support for the MINI2440. Is a 10cm x 10cm board 108 Say Y here to select support for the MINI2440. Is a 10cm x 10cm board
108 available via various sources. It can come with a 3.5" or 7" touch LCD. 109 available via various sources. It can come with a 3.5" or 7" touch LCD.
diff --git a/arch/arm/mach-s3c2440/mach-mini2440.c b/arch/arm/mach-s3c2440/mach-mini2440.c
index ec71a6965786..1c3382fefdd2 100644
--- a/arch/arm/mach-s3c2440/mach-mini2440.c
+++ b/arch/arm/mach-s3c2440/mach-mini2440.c
@@ -144,7 +144,7 @@ static struct s3c2410_udc_mach_info mini2440_udc_cfg __initdata = {
144 .type = (S3C2410_LCDCON1_TFT16BPP |\ 144 .type = (S3C2410_LCDCON1_TFT16BPP |\
145 S3C2410_LCDCON1_TFT) 145 S3C2410_LCDCON1_TFT)
146 146
147struct s3c2410fb_display mini2440_lcd_cfg[] __initdata = { 147static struct s3c2410fb_display mini2440_lcd_cfg[] __initdata = {
148 [0] = { /* mini2440 + 3.5" TFT + touchscreen */ 148 [0] = { /* mini2440 + 3.5" TFT + touchscreen */
149 _LCD_DECLARE( 149 _LCD_DECLARE(
150 7, /* The 3.5 is quite fast */ 150 7, /* The 3.5 is quite fast */
@@ -191,7 +191,7 @@ struct s3c2410fb_display mini2440_lcd_cfg[] __initdata = {
191#define S3C2410_GPCCON_MASK(x) (3 << ((x) * 2)) 191#define S3C2410_GPCCON_MASK(x) (3 << ((x) * 2))
192#define S3C2410_GPDCON_MASK(x) (3 << ((x) * 2)) 192#define S3C2410_GPDCON_MASK(x) (3 << ((x) * 2))
193 193
194struct s3c2410fb_mach_info mini2440_fb_info __initdata = { 194static struct s3c2410fb_mach_info mini2440_fb_info __initdata = {
195 .displays = &mini2440_lcd_cfg[0], /* not constant! see init */ 195 .displays = &mini2440_lcd_cfg[0], /* not constant! see init */
196 .num_displays = 1, 196 .num_displays = 1,
197 .default_display = 0, 197 .default_display = 0,
diff --git a/arch/arm/mach-s3c6400/include/mach/dma.h b/arch/arm/mach-s3c6400/include/mach/dma.h
index 1067619f0ba0..6723860748be 100644
--- a/arch/arm/mach-s3c6400/include/mach/dma.h
+++ b/arch/arm/mach-s3c6400/include/mach/dma.h
@@ -58,12 +58,9 @@ enum dma_ch {
58 DMACH_MAX /* the end */ 58 DMACH_MAX /* the end */
59}; 59};
60 60
61static __inline__ int s3c_dma_has_circular(void) 61static __inline__ bool s3c_dma_has_circular(void)
62{ 62{
63 /* we will be supporting ciruclar buffers as soon as we have DMA 63 return true;
64 * engine support.
65 */
66 return 1;
67} 64}
68 65
69#define S3C2410_DMAF_CIRCULAR (1 << 0) 66#define S3C2410_DMAF_CIRCULAR (1 << 0)
diff --git a/arch/arm/mach-s3c6410/Kconfig b/arch/arm/mach-s3c6410/Kconfig
index 53fc3ff657f7..72d4b11b2077 100644
--- a/arch/arm/mach-s3c6410/Kconfig
+++ b/arch/arm/mach-s3c6410/Kconfig
@@ -77,6 +77,7 @@ config SMDK6410_WM1190_EV1
77 depends on MACH_SMDK6410 77 depends on MACH_SMDK6410
78 select REGULATOR 78 select REGULATOR
79 select REGULATOR_WM8350 79 select REGULATOR_WM8350
80 select S3C24XX_GPIO_EXTRA64
80 select MFD_WM8350_I2C 81 select MFD_WM8350_I2C
81 select MFD_WM8350_CONFIG_MODE_0 82 select MFD_WM8350_CONFIG_MODE_0
82 select MFD_WM8350_CONFIG_MODE_3 83 select MFD_WM8350_CONFIG_MODE_3
diff --git a/arch/arm/mach-s3c6410/mach-smdk6410.c b/arch/arm/mach-s3c6410/mach-smdk6410.c
index ea51dbe76e3e..9f1a21462620 100644
--- a/arch/arm/mach-s3c6410/mach-smdk6410.c
+++ b/arch/arm/mach-s3c6410/mach-smdk6410.c
@@ -320,6 +320,9 @@ static int __init smdk6410_wm8350_init(struct wm8350 *wm8350)
320{ 320{
321 int i; 321 int i;
322 322
323 /* Configure the IRQ line */
324 s3c_gpio_setpull(S3C64XX_GPN(12), S3C_GPIO_PULL_UP);
325
323 /* Instantiate the regulators */ 326 /* Instantiate the regulators */
324 for (i = 0; i < ARRAY_SIZE(wm1190_regulators); i++) 327 for (i = 0; i < ARRAY_SIZE(wm1190_regulators); i++)
325 wm8350_register_regulator(wm8350, 328 wm8350_register_regulator(wm8350,
diff --git a/arch/arm/mach-u300/core.c b/arch/arm/mach-u300/core.c
index be60d6deee8b..653e25be3dd8 100644
--- a/arch/arm/mach-u300/core.c
+++ b/arch/arm/mach-u300/core.c
@@ -408,7 +408,7 @@ static struct platform_device keypad_device = {
408}; 408};
409 409
410static struct platform_device rtc_device = { 410static struct platform_device rtc_device = {
411 .name = "rtc0", 411 .name = "rtc-coh901331",
412 .id = -1, 412 .id = -1,
413 .num_resources = ARRAY_SIZE(rtc_resources), 413 .num_resources = ARRAY_SIZE(rtc_resources),
414 .resource = rtc_resources, 414 .resource = rtc_resources,
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
index e993140edd88..9264d814cd7a 100644
--- a/arch/arm/mm/Kconfig
+++ b/arch/arm/mm/Kconfig
@@ -122,10 +122,7 @@ config CPU_ARM920T
122 select CPU_TLB_V4WBI if MMU 122 select CPU_TLB_V4WBI if MMU
123 help 123 help
124 The ARM920T is licensed to be produced by numerous vendors, 124 The ARM920T is licensed to be produced by numerous vendors,
125 and is used in the Maverick EP9312 and the Samsung S3C2410. 125 and is used in the Cirrus EP93xx and the Samsung S3C2410.
126
127 More information on the Maverick EP9312 at
128 <http://linuxdevices.com/products/PD2382866068.html>.
129 126
130 Say Y if you want support for the ARM920T processor. 127 Say Y if you want support for the ARM920T processor.
131 Otherwise, say N. 128 Otherwise, say N.
diff --git a/arch/arm/mm/context.c b/arch/arm/mm/context.c
index 6bda76a43199..a9e22e31eaa1 100644
--- a/arch/arm/mm/context.c
+++ b/arch/arm/mm/context.c
@@ -50,10 +50,7 @@ void __new_context(struct mm_struct *mm)
50 isb(); 50 isb();
51 flush_tlb_all(); 51 flush_tlb_all();
52 if (icache_is_vivt_asid_tagged()) { 52 if (icache_is_vivt_asid_tagged()) {
53 asm("mcr p15, 0, %0, c7, c5, 0 @ invalidate I-cache\n" 53 __flush_icache_all();
54 "mcr p15, 0, %0, c7, c5, 6 @ flush BTAC/BTB\n"
55 :
56 : "r" (0));
57 dsb(); 54 dsb();
58 } 55 }
59 } 56 }
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
index b30925fcbcdc..b9590a7085ca 100644
--- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c
@@ -205,7 +205,7 @@ __dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp,
205 205
206 order = get_order(size); 206 order = get_order(size);
207 207
208 if (mask != 0xffffffff) 208 if (mask < 0xffffffffULL)
209 gfp |= GFP_DMA; 209 gfp |= GFP_DMA;
210 210
211 page = alloc_pages(gfp, order); 211 page = alloc_pages(gfp, order);
@@ -289,7 +289,7 @@ __dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp,
289 if (!mask) 289 if (!mask)
290 goto error; 290 goto error;
291 291
292 if (mask != 0xffffffff) 292 if (mask < 0xffffffffULL)
293 gfp |= GFP_DMA; 293 gfp |= GFP_DMA;
294 virt = kmalloc(size, gfp); 294 virt = kmalloc(size, gfp);
295 if (!virt) 295 if (!virt)
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c
index b27942909b23..7f294f307c83 100644
--- a/arch/arm/mm/flush.c
+++ b/arch/arm/mm/flush.c
@@ -18,10 +18,6 @@
18 18
19#include "mm.h" 19#include "mm.h"
20 20
21#ifdef CONFIG_ARM_ERRATA_411920
22extern void v6_icache_inval_all(void);
23#endif
24
25#ifdef CONFIG_CPU_CACHE_VIPT 21#ifdef CONFIG_CPU_CACHE_VIPT
26 22
27#define ALIAS_FLUSH_START 0xffff4000 23#define ALIAS_FLUSH_START 0xffff4000
@@ -35,16 +31,11 @@ static void flush_pfn_alias(unsigned long pfn, unsigned long vaddr)
35 flush_tlb_kernel_page(to); 31 flush_tlb_kernel_page(to);
36 32
37 asm( "mcrr p15, 0, %1, %0, c14\n" 33 asm( "mcrr p15, 0, %1, %0, c14\n"
38 " mcr p15, 0, %2, c7, c10, 4\n" 34 " mcr p15, 0, %2, c7, c10, 4"
39#ifndef CONFIG_ARM_ERRATA_411920
40 " mcr p15, 0, %2, c7, c5, 0\n"
41#endif
42 : 35 :
43 : "r" (to), "r" (to + PAGE_SIZE - L1_CACHE_BYTES), "r" (zero) 36 : "r" (to), "r" (to + PAGE_SIZE - L1_CACHE_BYTES), "r" (zero)
44 : "cc"); 37 : "cc");
45#ifdef CONFIG_ARM_ERRATA_411920 38 __flush_icache_all();
46 v6_icache_inval_all();
47#endif
48} 39}
49 40
50void flush_cache_mm(struct mm_struct *mm) 41void flush_cache_mm(struct mm_struct *mm)
@@ -57,16 +48,11 @@ void flush_cache_mm(struct mm_struct *mm)
57 48
58 if (cache_is_vipt_aliasing()) { 49 if (cache_is_vipt_aliasing()) {
59 asm( "mcr p15, 0, %0, c7, c14, 0\n" 50 asm( "mcr p15, 0, %0, c7, c14, 0\n"
60 " mcr p15, 0, %0, c7, c10, 4\n" 51 " mcr p15, 0, %0, c7, c10, 4"
61#ifndef CONFIG_ARM_ERRATA_411920
62 " mcr p15, 0, %0, c7, c5, 0\n"
63#endif
64 : 52 :
65 : "r" (0) 53 : "r" (0)
66 : "cc"); 54 : "cc");
67#ifdef CONFIG_ARM_ERRATA_411920 55 __flush_icache_all();
68 v6_icache_inval_all();
69#endif
70 } 56 }
71} 57}
72 58
@@ -81,16 +67,11 @@ void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned
81 67
82 if (cache_is_vipt_aliasing()) { 68 if (cache_is_vipt_aliasing()) {
83 asm( "mcr p15, 0, %0, c7, c14, 0\n" 69 asm( "mcr p15, 0, %0, c7, c14, 0\n"
84 " mcr p15, 0, %0, c7, c10, 4\n" 70 " mcr p15, 0, %0, c7, c10, 4"
85#ifndef CONFIG_ARM_ERRATA_411920
86 " mcr p15, 0, %0, c7, c5, 0\n"
87#endif
88 : 71 :
89 : "r" (0) 72 : "r" (0)
90 : "cc"); 73 : "cc");
91#ifdef CONFIG_ARM_ERRATA_411920 74 __flush_icache_all();
92 v6_icache_inval_all();
93#endif
94 } 75 }
95} 76}
96 77
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index 40940d7ce4ff..52c40d155672 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -273,7 +273,6 @@ static void __init bootmem_init_node(int node, struct meminfo *mi,
273 struct membank *bank = &mi->bank[i]; 273 struct membank *bank = &mi->bank[i];
274 if (!bank->highmem) 274 if (!bank->highmem)
275 free_bootmem_node(pgdat, bank_phys_start(bank), bank_phys_size(bank)); 275 free_bootmem_node(pgdat, bank_phys_start(bank), bank_phys_size(bank));
276 memory_present(node, bank_pfn_start(bank), bank_pfn_end(bank));
277 } 276 }
278 277
279 /* 278 /*
@@ -370,6 +369,19 @@ int pfn_valid(unsigned long pfn)
370 return 0; 369 return 0;
371} 370}
372EXPORT_SYMBOL(pfn_valid); 371EXPORT_SYMBOL(pfn_valid);
372
373static void arm_memory_present(struct meminfo *mi, int node)
374{
375}
376#else
377static void arm_memory_present(struct meminfo *mi, int node)
378{
379 int i;
380 for_each_nodebank(i, mi, node) {
381 struct membank *bank = &mi->bank[i];
382 memory_present(node, bank_pfn_start(bank), bank_pfn_end(bank));
383 }
384}
373#endif 385#endif
374 386
375static int __init meminfo_cmp(const void *_a, const void *_b) 387static int __init meminfo_cmp(const void *_a, const void *_b)
@@ -427,6 +439,12 @@ void __init bootmem_init(void)
427 */ 439 */
428 if (node == initrd_node) 440 if (node == initrd_node)
429 bootmem_reserve_initrd(node); 441 bootmem_reserve_initrd(node);
442
443 /*
444 * Sparsemem tries to allocate bootmem in memory_present(),
445 * so must be done after the fixed reservations
446 */
447 arm_memory_present(mi, node);
430 } 448 }
431 449
432 /* 450 /*
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index 02243eeccf50..ea67be0223ac 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -117,6 +117,13 @@ static void __init early_cachepolicy(char **p)
117 } 117 }
118 if (i == ARRAY_SIZE(cache_policies)) 118 if (i == ARRAY_SIZE(cache_policies))
119 printk(KERN_ERR "ERROR: unknown or unsupported cache policy\n"); 119 printk(KERN_ERR "ERROR: unknown or unsupported cache policy\n");
120 /*
121 * This restriction is partly to do with the way we boot; it is
122 * unpredictable to have memory mapped using two different sets of
123 * memory attributes (shared, type, and cache attribs). We can not
124 * change these attributes once the initial assembly has setup the
125 * page tables.
126 */
120 if (cpu_architecture() >= CPU_ARCH_ARMv6) { 127 if (cpu_architecture() >= CPU_ARCH_ARMv6) {
121 printk(KERN_WARNING "Only cachepolicy=writeback supported on ARMv6 and later\n"); 128 printk(KERN_WARNING "Only cachepolicy=writeback supported on ARMv6 and later\n");
122 cachepolicy = CPOLICY_WRITEBACK; 129 cachepolicy = CPOLICY_WRITEBACK;
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S
index 194737d60a22..70f75d2e3ead 100644
--- a/arch/arm/mm/proc-v6.S
+++ b/arch/arm/mm/proc-v6.S
@@ -32,8 +32,10 @@
32 32
33#ifndef CONFIG_SMP 33#ifndef CONFIG_SMP
34#define TTB_FLAGS TTB_RGN_WBWA 34#define TTB_FLAGS TTB_RGN_WBWA
35#define PMD_FLAGS PMD_SECT_WB
35#else 36#else
36#define TTB_FLAGS TTB_RGN_WBWA|TTB_S 37#define TTB_FLAGS TTB_RGN_WBWA|TTB_S
38#define PMD_FLAGS PMD_SECT_WBWA|PMD_SECT_S
37#endif 39#endif
38 40
39ENTRY(cpu_v6_proc_init) 41ENTRY(cpu_v6_proc_init)
@@ -222,10 +224,9 @@ __v6_proc_info:
222 .long 0x0007b000 224 .long 0x0007b000
223 .long 0x0007f000 225 .long 0x0007f000
224 .long PMD_TYPE_SECT | \ 226 .long PMD_TYPE_SECT | \
225 PMD_SECT_BUFFERABLE | \
226 PMD_SECT_CACHEABLE | \
227 PMD_SECT_AP_WRITE | \ 227 PMD_SECT_AP_WRITE | \
228 PMD_SECT_AP_READ 228 PMD_SECT_AP_READ | \
229 PMD_FLAGS
229 .long PMD_TYPE_SECT | \ 230 .long PMD_TYPE_SECT | \
230 PMD_SECT_XN | \ 231 PMD_SECT_XN | \
231 PMD_SECT_AP_WRITE | \ 232 PMD_SECT_AP_WRITE | \
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S
index 23ebcf6eab9f..3a285218fd15 100644
--- a/arch/arm/mm/proc-v7.S
+++ b/arch/arm/mm/proc-v7.S
@@ -33,9 +33,11 @@
33#ifndef CONFIG_SMP 33#ifndef CONFIG_SMP
34/* PTWs cacheable, inner WB not shareable, outer WB not shareable */ 34/* PTWs cacheable, inner WB not shareable, outer WB not shareable */
35#define TTB_FLAGS TTB_IRGN_WB|TTB_RGN_OC_WB 35#define TTB_FLAGS TTB_IRGN_WB|TTB_RGN_OC_WB
36#define PMD_FLAGS PMD_SECT_WB
36#else 37#else
37/* PTWs cacheable, inner WBWA shareable, outer WBWA not shareable */ 38/* PTWs cacheable, inner WBWA shareable, outer WBWA not shareable */
38#define TTB_FLAGS TTB_IRGN_WBWA|TTB_S|TTB_NOS|TTB_RGN_OC_WBWA 39#define TTB_FLAGS TTB_IRGN_WBWA|TTB_S|TTB_NOS|TTB_RGN_OC_WBWA
40#define PMD_FLAGS PMD_SECT_WBWA|PMD_SECT_S
39#endif 41#endif
40 42
41ENTRY(cpu_v7_proc_init) 43ENTRY(cpu_v7_proc_init)
@@ -184,9 +186,10 @@ cpu_v7_name:
184 */ 186 */
185__v7_setup: 187__v7_setup:
186#ifdef CONFIG_SMP 188#ifdef CONFIG_SMP
187 mrc p15, 0, r0, c1, c0, 1 @ Enable SMP/nAMP mode and 189 mrc p15, 0, r0, c1, c0, 1
188 orr r0, r0, #(1 << 6) | (1 << 0) @ TLB ops broadcasting 190 tst r0, #(1 << 6) @ SMP/nAMP mode enabled?
189 mcr p15, 0, r0, c1, c0, 1 191 orreq r0, r0, #(1 << 6) | (1 << 0) @ Enable SMP/nAMP mode and
192 mcreq p15, 0, r0, c1, c0, 1 @ TLB ops broadcasting
190#endif 193#endif
191 adr r12, __v7_setup_stack @ the local stack 194 adr r12, __v7_setup_stack @ the local stack
192 stmia r12, {r0-r5, r7, r9, r11, lr} 195 stmia r12, {r0-r5, r7, r9, r11, lr}
@@ -326,10 +329,9 @@ __v7_proc_info:
326 .long 0x000f0000 @ Required ID value 329 .long 0x000f0000 @ Required ID value
327 .long 0x000f0000 @ Mask for ID 330 .long 0x000f0000 @ Mask for ID
328 .long PMD_TYPE_SECT | \ 331 .long PMD_TYPE_SECT | \
329 PMD_SECT_BUFFERABLE | \
330 PMD_SECT_CACHEABLE | \
331 PMD_SECT_AP_WRITE | \ 332 PMD_SECT_AP_WRITE | \
332 PMD_SECT_AP_READ 333 PMD_SECT_AP_READ | \
334 PMD_FLAGS
333 .long PMD_TYPE_SECT | \ 335 .long PMD_TYPE_SECT | \
334 PMD_SECT_XN | \ 336 PMD_SECT_XN | \
335 PMD_SECT_AP_WRITE | \ 337 PMD_SECT_AP_WRITE | \
diff --git a/arch/arm/oprofile/op_model_v6.c b/arch/arm/oprofile/op_model_v6.c
index fe581383d3e2..f7d2ec5ee9a1 100644
--- a/arch/arm/oprofile/op_model_v6.c
+++ b/arch/arm/oprofile/op_model_v6.c
@@ -33,6 +33,9 @@ static int irqs[] = {
33#ifdef CONFIG_ARCH_OMAP2 33#ifdef CONFIG_ARCH_OMAP2
34 3, 34 3,
35#endif 35#endif
36#ifdef CONFIG_ARCH_BCMRING
37 IRQ_PMUIRQ, /* for BCMRING, ARM PMU interrupt is 43 */
38#endif
36}; 39};
37 40
38static void armv6_pmu_stop(void) 41static void armv6_pmu_stop(void)
diff --git a/arch/arm/plat-omap/cpu-omap.c b/arch/arm/plat-omap/cpu-omap.c
index 1868c0d8f9b5..341235c278ac 100644
--- a/arch/arm/plat-omap/cpu-omap.c
+++ b/arch/arm/plat-omap/cpu-omap.c
@@ -127,7 +127,7 @@ static int __init omap_cpu_init(struct cpufreq_policy *policy)
127 } 127 }
128 128
129 /* FIXME: what's the actual transition time? */ 129 /* FIXME: what's the actual transition time? */
130 policy->cpuinfo.transition_latency = 10 * 1000 * 1000; 130 policy->cpuinfo.transition_latency = 300 * 1000;
131 131
132 return 0; 132 return 0;
133} 133}
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
index 0eb676d7e807..68eaae324b6a 100644
--- a/arch/arm/plat-omap/dma.c
+++ b/arch/arm/plat-omap/dma.c
@@ -691,13 +691,16 @@ static inline void disable_lnk(int lch)
691static inline void omap2_enable_irq_lch(int lch) 691static inline void omap2_enable_irq_lch(int lch)
692{ 692{
693 u32 val; 693 u32 val;
694 unsigned long flags;
694 695
695 if (!cpu_class_is_omap2()) 696 if (!cpu_class_is_omap2())
696 return; 697 return;
697 698
699 spin_lock_irqsave(&dma_chan_lock, flags);
698 val = dma_read(IRQENABLE_L0); 700 val = dma_read(IRQENABLE_L0);
699 val |= 1 << lch; 701 val |= 1 << lch;
700 dma_write(val, IRQENABLE_L0); 702 dma_write(val, IRQENABLE_L0);
703 spin_unlock_irqrestore(&dma_chan_lock, flags);
701} 704}
702 705
703int omap_request_dma(int dev_id, const char *dev_name, 706int omap_request_dma(int dev_id, const char *dev_name,
@@ -799,10 +802,13 @@ void omap_free_dma(int lch)
799 802
800 if (cpu_class_is_omap2()) { 803 if (cpu_class_is_omap2()) {
801 u32 val; 804 u32 val;
805
806 spin_lock_irqsave(&dma_chan_lock, flags);
802 /* Disable interrupts */ 807 /* Disable interrupts */
803 val = dma_read(IRQENABLE_L0); 808 val = dma_read(IRQENABLE_L0);
804 val &= ~(1 << lch); 809 val &= ~(1 << lch);
805 dma_write(val, IRQENABLE_L0); 810 dma_write(val, IRQENABLE_L0);
811 spin_unlock_irqrestore(&dma_chan_lock, flags);
806 812
807 /* Clear the CSR register and IRQ status register */ 813 /* Clear the CSR register and IRQ status register */
808 dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR(lch)); 814 dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR(lch));
@@ -978,6 +984,14 @@ void omap_stop_dma(int lch)
978{ 984{
979 u32 l; 985 u32 l;
980 986
987 /* Disable all interrupts on the channel */
988 if (cpu_class_is_omap1())
989 dma_write(0, CICR(lch));
990
991 l = dma_read(CCR(lch));
992 l &= ~OMAP_DMA_CCR_EN;
993 dma_write(l, CCR(lch));
994
981 if (!omap_dma_in_1510_mode() && dma_chan[lch].next_lch != -1) { 995 if (!omap_dma_in_1510_mode() && dma_chan[lch].next_lch != -1) {
982 int next_lch, cur_lch = lch; 996 int next_lch, cur_lch = lch;
983 char dma_chan_link_map[OMAP_DMA4_LOGICAL_DMA_CH_COUNT]; 997 char dma_chan_link_map[OMAP_DMA4_LOGICAL_DMA_CH_COUNT];
@@ -995,18 +1009,8 @@ void omap_stop_dma(int lch)
995 next_lch = dma_chan[cur_lch].next_lch; 1009 next_lch = dma_chan[cur_lch].next_lch;
996 cur_lch = next_lch; 1010 cur_lch = next_lch;
997 } while (next_lch != -1); 1011 } while (next_lch != -1);
998
999 return;
1000 } 1012 }
1001 1013
1002 /* Disable all interrupts on the channel */
1003 if (cpu_class_is_omap1())
1004 dma_write(0, CICR(lch));
1005
1006 l = dma_read(CCR(lch));
1007 l &= ~OMAP_DMA_CCR_EN;
1008 dma_write(l, CCR(lch));
1009
1010 dma_chan[lch].flags &= ~OMAP_DMA_ACTIVE; 1014 dma_chan[lch].flags &= ~OMAP_DMA_ACTIVE;
1011} 1015}
1012EXPORT_SYMBOL(omap_stop_dma); 1016EXPORT_SYMBOL(omap_stop_dma);
@@ -1110,6 +1114,14 @@ int omap_dma_running(void)
1110{ 1114{
1111 int lch; 1115 int lch;
1112 1116
1117 /*
1118 * On OMAP1510, internal LCD controller will start the transfer
1119 * when it gets enabled, so assume DMA running if LCD enabled.
1120 */
1121 if (cpu_is_omap1510())
1122 if (omap_readw(0xfffec000 + 0x00) & (1 << 0))
1123 return 1;
1124
1113 /* Check if LCD DMA is running */ 1125 /* Check if LCD DMA is running */
1114 if (cpu_is_omap16xx()) 1126 if (cpu_is_omap16xx())
1115 if (omap_readw(OMAP1610_DMA_LCD_CCR) & OMAP_DMA_CCR_EN) 1127 if (omap_readw(OMAP1610_DMA_LCD_CCR) & OMAP_DMA_CCR_EN)
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c
index 71ebd7fcfea1..7c345b757df1 100644
--- a/arch/arm/plat-omap/gpio.c
+++ b/arch/arm/plat-omap/gpio.c
@@ -373,7 +373,7 @@ static inline int gpio_valid(int gpio)
373 373
374static int check_gpio(int gpio) 374static int check_gpio(int gpio)
375{ 375{
376 if (unlikely(gpio_valid(gpio)) < 0) { 376 if (unlikely(gpio_valid(gpio) < 0)) {
377 printk(KERN_ERR "omap-gpio: invalid GPIO %d\n", gpio); 377 printk(KERN_ERR "omap-gpio: invalid GPIO %d\n", gpio);
378 dump_stack(); 378 dump_stack();
379 return -1; 379 return -1;
diff --git a/arch/arm/plat-omap/include/mach/keypad.h b/arch/arm/plat-omap/include/mach/keypad.h
index d91b9be334ff..3ae52ccc793c 100644
--- a/arch/arm/plat-omap/include/mach/keypad.h
+++ b/arch/arm/plat-omap/include/mach/keypad.h
@@ -10,7 +10,7 @@
10#ifndef ASMARM_ARCH_KEYPAD_H 10#ifndef ASMARM_ARCH_KEYPAD_H
11#define ASMARM_ARCH_KEYPAD_H 11#define ASMARM_ARCH_KEYPAD_H
12 12
13#include <linux/input/matrix_keypad.h> 13#warning: Please update the board to use matrix_keypad.h instead
14 14
15struct omap_kp_platform_data { 15struct omap_kp_platform_data {
16 int rows; 16 int rows;
@@ -37,6 +37,9 @@ struct omap_kp_platform_data {
37 37
38#define KEY_PERSISTENT 0x00800000 38#define KEY_PERSISTENT 0x00800000
39#define KEYNUM_MASK 0x00EFFFFF 39#define KEYNUM_MASK 0x00EFFFFF
40#define KEY(col, row, val) (((col) << 28) | ((row) << 24) | (val))
41#define PERSISTENT_KEY(col, row) (((col) << 28) | ((row) << 24) | \
42 KEY_PERSISTENT)
40 43
41#endif 44#endif
42 45
diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c
index 4b6012707307..94584f167a82 100644
--- a/arch/arm/plat-omap/iommu.c
+++ b/arch/arm/plat-omap/iommu.c
@@ -664,7 +664,7 @@ static size_t iopgtable_clear_entry_core(struct iommu *obj, u32 da)
664 nent = 1; /* for the next L1 entry */ 664 nent = 1; /* for the next L1 entry */
665 } else { 665 } else {
666 bytes = IOPGD_SIZE; 666 bytes = IOPGD_SIZE;
667 if (*iopgd & IOPGD_SUPER) { 667 if ((*iopgd & IOPGD_SUPER) == IOPGD_SUPER) {
668 nent *= 16; 668 nent *= 16;
669 /* rewind to the 1st entry */ 669 /* rewind to the 1st entry */
670 iopgd = (u32 *)((u32)iopgd & IOSUPER_MASK); 670 iopgd = (u32 *)((u32)iopgd & IOSUPER_MASK);
diff --git a/arch/arm/plat-pxa/include/plat/mfp.h b/arch/arm/plat-pxa/include/plat/mfp.h
index 22086e696e8e..857a6839071c 100644
--- a/arch/arm/plat-pxa/include/plat/mfp.h
+++ b/arch/arm/plat-pxa/include/plat/mfp.h
@@ -16,7 +16,7 @@
16#ifndef __ASM_PLAT_MFP_H 16#ifndef __ASM_PLAT_MFP_H
17#define __ASM_PLAT_MFP_H 17#define __ASM_PLAT_MFP_H
18 18
19#define mfp_to_gpio(m) ((m) % 128) 19#define mfp_to_gpio(m) ((m) % 256)
20 20
21/* list of all the configurable MFP pins */ 21/* list of all the configurable MFP pins */
22enum { 22enum {
diff --git a/arch/arm/plat-pxa/mfp.c b/arch/arm/plat-pxa/mfp.c
index 9405d0379c85..be58f9fe65b0 100644
--- a/arch/arm/plat-pxa/mfp.c
+++ b/arch/arm/plat-pxa/mfp.c
@@ -207,7 +207,7 @@ unsigned long mfp_read(int mfp)
207{ 207{
208 unsigned long val, flags; 208 unsigned long val, flags;
209 209
210 BUG_ON(mfp >= MFP_PIN_MAX); 210 BUG_ON(mfp < 0 || mfp >= MFP_PIN_MAX);
211 211
212 spin_lock_irqsave(&mfp_spin_lock, flags); 212 spin_lock_irqsave(&mfp_spin_lock, flags);
213 val = mfpr_readl(mfp_table[mfp].mfpr_off); 213 val = mfpr_readl(mfp_table[mfp].mfpr_off);
@@ -220,7 +220,7 @@ void mfp_write(int mfp, unsigned long val)
220{ 220{
221 unsigned long flags; 221 unsigned long flags;
222 222
223 BUG_ON(mfp >= MFP_PIN_MAX); 223 BUG_ON(mfp < 0 || mfp >= MFP_PIN_MAX);
224 224
225 spin_lock_irqsave(&mfp_spin_lock, flags); 225 spin_lock_irqsave(&mfp_spin_lock, flags);
226 mfpr_writel(mfp_table[mfp].mfpr_off, val); 226 mfpr_writel(mfp_table[mfp].mfpr_off, val);
diff --git a/arch/arm/plat-s3c24xx/adc.c b/arch/arm/plat-s3c24xx/adc.c
index 4d36b784fb8b..df47322492d5 100644
--- a/arch/arm/plat-s3c24xx/adc.c
+++ b/arch/arm/plat-s3c24xx/adc.c
@@ -189,7 +189,7 @@ int s3c_adc_read(struct s3c_adc_client *client, unsigned int ch)
189err: 189err:
190 return ret; 190 return ret;
191} 191}
192EXPORT_SYMBOL_GPL(s3c_adc_convert); 192EXPORT_SYMBOL_GPL(s3c_adc_read);
193 193
194static void s3c_adc_default_select(struct s3c_adc_client *client, 194static void s3c_adc_default_select(struct s3c_adc_client *client,
195 unsigned select) 195 unsigned select)
diff --git a/arch/arm/plat-s3c24xx/cpu.c b/arch/arm/plat-s3c24xx/cpu.c
index 5447e60f3936..4af9dd948793 100644
--- a/arch/arm/plat-s3c24xx/cpu.c
+++ b/arch/arm/plat-s3c24xx/cpu.c
@@ -61,6 +61,7 @@ static const char name_s3c2410[] = "S3C2410";
61static const char name_s3c2412[] = "S3C2412"; 61static const char name_s3c2412[] = "S3C2412";
62static const char name_s3c2440[] = "S3C2440"; 62static const char name_s3c2440[] = "S3C2440";
63static const char name_s3c2442[] = "S3C2442"; 63static const char name_s3c2442[] = "S3C2442";
64static const char name_s3c2442b[] = "S3C2442B";
64static const char name_s3c2443[] = "S3C2443"; 65static const char name_s3c2443[] = "S3C2443";
65static const char name_s3c2410a[] = "S3C2410A"; 66static const char name_s3c2410a[] = "S3C2410A";
66static const char name_s3c2440a[] = "S3C2440A"; 67static const char name_s3c2440a[] = "S3C2440A";
@@ -112,6 +113,15 @@ static struct cpu_table cpu_ids[] __initdata = {
112 .name = name_s3c2442 113 .name = name_s3c2442
113 }, 114 },
114 { 115 {
116 .idcode = 0x32440aab,
117 .idmask = 0xffffffff,
118 .map_io = s3c244x_map_io,
119 .init_clocks = s3c244x_init_clocks,
120 .init_uarts = s3c244x_init_uarts,
121 .init = s3c2442_init,
122 .name = name_s3c2442b
123 },
124 {
115 .idcode = 0x32412001, 125 .idcode = 0x32412001,
116 .idmask = 0xffffffff, 126 .idmask = 0xffffffff,
117 .map_io = s3c2412_map_io, 127 .map_io = s3c2412_map_io,
diff --git a/arch/arm/plat-s3c24xx/dma.c b/arch/arm/plat-s3c24xx/dma.c
index 196b19123653..f046f8c51084 100644
--- a/arch/arm/plat-s3c24xx/dma.c
+++ b/arch/arm/plat-s3c24xx/dma.c
@@ -208,14 +208,14 @@ s3c2410_dma_loadbuffer(struct s3c2410_dma_chan *chan,
208{ 208{
209 unsigned long reload; 209 unsigned long reload;
210 210
211 pr_debug("s3c2410_chan_loadbuffer: loading buff %p (0x%08lx,0x%06x)\n",
212 buf, (unsigned long)buf->data, buf->size);
213
214 if (buf == NULL) { 211 if (buf == NULL) {
215 dmawarn("buffer is NULL\n"); 212 dmawarn("buffer is NULL\n");
216 return -EINVAL; 213 return -EINVAL;
217 } 214 }
218 215
216 pr_debug("s3c2410_chan_loadbuffer: loading buff %p (0x%08lx,0x%06x)\n",
217 buf, (unsigned long)buf->data, buf->size);
218
219 /* check the state of the channel before we do anything */ 219 /* check the state of the channel before we do anything */
220 220
221 if (chan->load_state == S3C2410_DMALOAD_1LOADED) { 221 if (chan->load_state == S3C2410_DMALOAD_1LOADED) {
diff --git a/arch/arm/plat-s3c24xx/gpio.c b/arch/arm/plat-s3c24xx/gpio.c
index 95df059b5a1d..5467470badfd 100644
--- a/arch/arm/plat-s3c24xx/gpio.c
+++ b/arch/arm/plat-s3c24xx/gpio.c
@@ -29,6 +29,7 @@
29#include <linux/io.h> 29#include <linux/io.h>
30 30
31#include <mach/hardware.h> 31#include <mach/hardware.h>
32#include <mach/gpio-fns.h>
32#include <asm/irq.h> 33#include <asm/irq.h>
33 34
34#include <mach/regs-gpio.h> 35#include <mach/regs-gpio.h>
diff --git a/arch/arm/plat-s3c24xx/include/plat/cpu-freq-core.h b/arch/arm/plat-s3c24xx/include/plat/cpu-freq-core.h
index efeb025affc7..c776120b99e6 100644
--- a/arch/arm/plat-s3c24xx/include/plat/cpu-freq-core.h
+++ b/arch/arm/plat-s3c24xx/include/plat/cpu-freq-core.h
@@ -222,7 +222,9 @@ extern struct clk *s3c_cpufreq_clk_get(struct device *, const char *);
222/* S3C2410 and compatible exported functions */ 222/* S3C2410 and compatible exported functions */
223 223
224extern void s3c2410_cpufreq_setrefresh(struct s3c_cpufreq_config *cfg); 224extern void s3c2410_cpufreq_setrefresh(struct s3c_cpufreq_config *cfg);
225extern void s3c2410_set_fvco(struct s3c_cpufreq_config *cfg);
225 226
227#ifdef CONFIG_S3C2410_IOTIMING
226extern int s3c2410_iotiming_calc(struct s3c_cpufreq_config *cfg, 228extern int s3c2410_iotiming_calc(struct s3c_cpufreq_config *cfg,
227 struct s3c_iotimings *iot); 229 struct s3c_iotimings *iot);
228 230
@@ -231,8 +233,11 @@ extern int s3c2410_iotiming_get(struct s3c_cpufreq_config *cfg,
231 233
232extern void s3c2410_iotiming_set(struct s3c_cpufreq_config *cfg, 234extern void s3c2410_iotiming_set(struct s3c_cpufreq_config *cfg,
233 struct s3c_iotimings *iot); 235 struct s3c_iotimings *iot);
234 236#else
235extern void s3c2410_set_fvco(struct s3c_cpufreq_config *cfg); 237#define s3c2410_iotiming_calc NULL
238#define s3c2410_iotiming_get NULL
239#define s3c2410_iotiming_set NULL
240#endif /* CONFIG_S3C2410_IOTIMING */
236 241
237/* S3C2412 compatible routines */ 242/* S3C2412 compatible routines */
238 243
diff --git a/arch/arm/plat-s3c24xx/include/plat/s3c2410.h b/arch/arm/plat-s3c24xx/include/plat/s3c2410.h
index b6deeef8f663..82ab4aad1bbe 100644
--- a/arch/arm/plat-s3c24xx/include/plat/s3c2410.h
+++ b/arch/arm/plat-s3c24xx/include/plat/s3c2410.h
@@ -27,6 +27,7 @@ extern void s3c2410_init_clocks(int xtal);
27#define s3c2410_init_uarts NULL 27#define s3c2410_init_uarts NULL
28#define s3c2410_map_io NULL 28#define s3c2410_map_io NULL
29#define s3c2410_init NULL 29#define s3c2410_init NULL
30#define s3c2410a_init NULL
30#endif 31#endif
31 32
32extern int s3c2410_baseclk_add(void); 33extern int s3c2410_baseclk_add(void);
diff --git a/arch/arm/plat-s3c64xx/dma.c b/arch/arm/plat-s3c64xx/dma.c
index 266a10745a85..d554b936fcfb 100644
--- a/arch/arm/plat-s3c64xx/dma.c
+++ b/arch/arm/plat-s3c64xx/dma.c
@@ -151,8 +151,6 @@ static void s3c64xx_dma_fill_lli(struct s3c2410_dma_chan *chan,
151 src = chan->dev_addr; 151 src = chan->dev_addr;
152 dst = data; 152 dst = data;
153 control0 = PL080_CONTROL_SRC_AHB2; 153 control0 = PL080_CONTROL_SRC_AHB2;
154 control0 |= (u32)chan->hw_width << PL080_CONTROL_SWIDTH_SHIFT;
155 control0 |= 2 << PL080_CONTROL_DWIDTH_SHIFT;
156 control0 |= PL080_CONTROL_DST_INCR; 154 control0 |= PL080_CONTROL_DST_INCR;
157 break; 155 break;
158 156
@@ -160,8 +158,6 @@ static void s3c64xx_dma_fill_lli(struct s3c2410_dma_chan *chan,
160 src = data; 158 src = data;
161 dst = chan->dev_addr; 159 dst = chan->dev_addr;
162 control0 = PL080_CONTROL_DST_AHB2; 160 control0 = PL080_CONTROL_DST_AHB2;
163 control0 |= (u32)chan->hw_width << PL080_CONTROL_DWIDTH_SHIFT;
164 control0 |= 2 << PL080_CONTROL_SWIDTH_SHIFT;
165 control0 |= PL080_CONTROL_SRC_INCR; 161 control0 |= PL080_CONTROL_SRC_INCR;
166 break; 162 break;
167 default: 163 default:
@@ -173,6 +169,8 @@ static void s3c64xx_dma_fill_lli(struct s3c2410_dma_chan *chan,
173 control1 = size >> chan->hw_width; /* size in no of xfers */ 169 control1 = size >> chan->hw_width; /* size in no of xfers */
174 control0 |= PL080_CONTROL_PROT_SYS; /* always in priv. mode */ 170 control0 |= PL080_CONTROL_PROT_SYS; /* always in priv. mode */
175 control0 |= PL080_CONTROL_TC_IRQ_EN; /* always fire IRQ */ 171 control0 |= PL080_CONTROL_TC_IRQ_EN; /* always fire IRQ */
172 control0 |= (u32)chan->hw_width << PL080_CONTROL_DWIDTH_SHIFT;
173 control0 |= (u32)chan->hw_width << PL080_CONTROL_SWIDTH_SHIFT;
176 174
177 lli->src_addr = src; 175 lli->src_addr = src;
178 lli->dst_addr = dst; 176 lli->dst_addr = dst;
@@ -339,6 +337,7 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id,
339 struct s3c64xx_dma_buff *next; 337 struct s3c64xx_dma_buff *next;
340 struct s3c64xx_dma_buff *buff; 338 struct s3c64xx_dma_buff *buff;
341 struct pl080s_lli *lli; 339 struct pl080s_lli *lli;
340 unsigned long flags;
342 int ret; 341 int ret;
343 342
344 WARN_ON(!chan); 343 WARN_ON(!chan);
@@ -366,6 +365,8 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id,
366 365
367 s3c64xx_dma_fill_lli(chan, lli, data, size); 366 s3c64xx_dma_fill_lli(chan, lli, data, size);
368 367
368 local_irq_save(flags);
369
369 if ((next = chan->next) != NULL) { 370 if ((next = chan->next) != NULL) {
370 struct s3c64xx_dma_buff *end = chan->end; 371 struct s3c64xx_dma_buff *end = chan->end;
371 struct pl080s_lli *endlli = end->lli; 372 struct pl080s_lli *endlli = end->lli;
@@ -397,6 +398,8 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id,
397 s3c64xx_lli_to_regs(chan, lli); 398 s3c64xx_lli_to_regs(chan, lli);
398 } 399 }
399 400
401 local_irq_restore(flags);
402
400 show_lli(lli); 403 show_lli(lli);
401 404
402 dbg_showchan(chan); 405 dbg_showchan(chan);
@@ -560,26 +563,11 @@ int s3c2410_dma_free(unsigned int channel, struct s3c2410_dma_client *client)
560 563
561EXPORT_SYMBOL(s3c2410_dma_free); 564EXPORT_SYMBOL(s3c2410_dma_free);
562 565
563
564static void s3c64xx_dma_tcirq(struct s3c64xx_dmac *dmac, int offs)
565{
566 struct s3c2410_dma_chan *chan = dmac->channels + offs;
567
568 /* note, we currently do not bother to work out which buffer
569 * or buffers have been completed since the last tc-irq. */
570
571 if (chan->callback_fn)
572 (chan->callback_fn)(chan, chan->curr->pw, 0, S3C2410_RES_OK);
573}
574
575static void s3c64xx_dma_errirq(struct s3c64xx_dmac *dmac, int offs)
576{
577 printk(KERN_DEBUG "%s: offs %d\n", __func__, offs);
578}
579
580static irqreturn_t s3c64xx_dma_irq(int irq, void *pw) 566static irqreturn_t s3c64xx_dma_irq(int irq, void *pw)
581{ 567{
582 struct s3c64xx_dmac *dmac = pw; 568 struct s3c64xx_dmac *dmac = pw;
569 struct s3c2410_dma_chan *chan;
570 enum s3c2410_dma_buffresult res;
583 u32 tcstat, errstat; 571 u32 tcstat, errstat;
584 u32 bit; 572 u32 bit;
585 int offs; 573 int offs;
@@ -588,14 +576,54 @@ static irqreturn_t s3c64xx_dma_irq(int irq, void *pw)
588 errstat = readl(dmac->regs + PL080_ERR_STATUS); 576 errstat = readl(dmac->regs + PL080_ERR_STATUS);
589 577
590 for (offs = 0, bit = 1; offs < 8; offs++, bit <<= 1) { 578 for (offs = 0, bit = 1; offs < 8; offs++, bit <<= 1) {
579 struct s3c64xx_dma_buff *buff;
580
581 if (!(errstat & bit) && !(tcstat & bit))
582 continue;
583
584 chan = dmac->channels + offs;
585 res = S3C2410_RES_ERR;
586
591 if (tcstat & bit) { 587 if (tcstat & bit) {
592 writel(bit, dmac->regs + PL080_TC_CLEAR); 588 writel(bit, dmac->regs + PL080_TC_CLEAR);
593 s3c64xx_dma_tcirq(dmac, offs); 589 res = S3C2410_RES_OK;
594 } 590 }
595 591
596 if (errstat & bit) { 592 if (errstat & bit)
597 s3c64xx_dma_errirq(dmac, offs);
598 writel(bit, dmac->regs + PL080_ERR_CLEAR); 593 writel(bit, dmac->regs + PL080_ERR_CLEAR);
594
595 /* 'next' points to the buffer that is next to the
596 * currently active buffer.
597 * For CIRCULAR queues, 'next' will be same as 'curr'
598 * when 'end' is the active buffer.
599 */
600 buff = chan->curr;
601 while (buff && buff != chan->next
602 && buff->next != chan->next)
603 buff = buff->next;
604
605 if (!buff)
606 BUG();
607
608 if (buff == chan->next)
609 buff = chan->end;
610
611 s3c64xx_dma_bufffdone(chan, buff, res);
612
613 /* Free the node and update curr, if non-circular queue */
614 if (!(chan->flags & S3C2410_DMAF_CIRCULAR)) {
615 chan->curr = buff->next;
616 s3c64xx_dma_freebuff(buff);
617 }
618
619 /* Update 'next' */
620 buff = chan->next;
621 if (chan->next == chan->end) {
622 chan->next = chan->curr;
623 if (!(chan->flags & S3C2410_DMAF_CIRCULAR))
624 chan->end = NULL;
625 } else {
626 chan->next = buff->next;
599 } 627 }
600 } 628 }
601 629
diff --git a/arch/arm/plat-s3c64xx/include/plat/regs-clock.h b/arch/arm/plat-s3c64xx/include/plat/regs-clock.h
index a8777a755dfa..ff46e7fa957a 100644
--- a/arch/arm/plat-s3c64xx/include/plat/regs-clock.h
+++ b/arch/arm/plat-s3c64xx/include/plat/regs-clock.h
@@ -51,8 +51,8 @@
51#define S3C6400_CLKDIV0_HCLK_SHIFT (8) 51#define S3C6400_CLKDIV0_HCLK_SHIFT (8)
52#define S3C6400_CLKDIV0_MPLL_MASK (0x1 << 4) 52#define S3C6400_CLKDIV0_MPLL_MASK (0x1 << 4)
53#define S3C6400_CLKDIV0_MPLL_SHIFT (4) 53#define S3C6400_CLKDIV0_MPLL_SHIFT (4)
54#define S3C6400_CLKDIV0_ARM_MASK (0x3 << 0) 54#define S3C6400_CLKDIV0_ARM_MASK (0x7 << 0)
55#define S3C6410_CLKDIV0_ARM_MASK (0x7 << 0) 55#define S3C6410_CLKDIV0_ARM_MASK (0xf << 0)
56#define S3C6400_CLKDIV0_ARM_SHIFT (0) 56#define S3C6400_CLKDIV0_ARM_SHIFT (0)
57 57
58/* CLKDIV1 */ 58/* CLKDIV1 */
diff --git a/arch/arm/plat-s3c64xx/s3c6400-clock.c b/arch/arm/plat-s3c64xx/s3c6400-clock.c
index 9745852261e0..6ffa21eb1b91 100644
--- a/arch/arm/plat-s3c64xx/s3c6400-clock.c
+++ b/arch/arm/plat-s3c64xx/s3c6400-clock.c
@@ -677,6 +677,9 @@ void __init_or_cpufreq s3c6400_setup_clocks(void)
677 677
678 printk(KERN_DEBUG "%s: xtal is %ld\n", __func__, xtal); 678 printk(KERN_DEBUG "%s: xtal is %ld\n", __func__, xtal);
679 679
680 /* For now assume the mux always selects the crystal */
681 clk_ext_xtal_mux.parent = xtal_clk;
682
680 epll = s3c6400_get_epll(xtal); 683 epll = s3c6400_get_epll(xtal);
681 mpll = s3c6400_get_pll(xtal, __raw_readl(S3C_MPLL_CON)); 684 mpll = s3c6400_get_pll(xtal, __raw_readl(S3C_MPLL_CON));
682 apll = s3c6400_get_pll(xtal, __raw_readl(S3C_APLL_CON)); 685 apll = s3c6400_get_pll(xtal, __raw_readl(S3C_APLL_CON));
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types
index 94be7bb6cb9a..07b976da6174 100644
--- a/arch/arm/tools/mach-types
+++ b/arch/arm/tools/mach-types
@@ -12,7 +12,7 @@
12# 12#
13# http://www.arm.linux.org.uk/developer/machines/?action=new 13# http://www.arm.linux.org.uk/developer/machines/?action=new
14# 14#
15# Last update: Fri Sep 18 21:42:00 2009 15# Last update: Wed Nov 25 22:14:58 2009
16# 16#
17# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number 17# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
18# 18#
@@ -928,7 +928,7 @@ palmt5 MACH_PALMT5 PALMT5 917
928palmtc MACH_PALMTC PALMTC 918 928palmtc MACH_PALMTC PALMTC 918
929omap_apollon MACH_OMAP_APOLLON OMAP_APOLLON 919 929omap_apollon MACH_OMAP_APOLLON OMAP_APOLLON 919
930mxc30030evb MACH_MXC30030EVB MXC30030EVB 920 930mxc30030evb MACH_MXC30030EVB MXC30030EVB 920
931rea_2d MACH_REA_2D REA_2D 921 931rea_cpu2 MACH_REA_2D REA_2D 921
932eti3e524 MACH_TI3E524 TI3E524 922 932eti3e524 MACH_TI3E524 TI3E524 922
933ateb9200 MACH_ATEB9200 ATEB9200 923 933ateb9200 MACH_ATEB9200 ATEB9200 923
934auckland MACH_AUCKLAND AUCKLAND 924 934auckland MACH_AUCKLAND AUCKLAND 924
@@ -2421,3 +2421,118 @@ liberty MACH_LIBERTY LIBERTY 2434
2421mh355 MACH_MH355 MH355 2435 2421mh355 MACH_MH355 MH355 2435
2422pc7802 MACH_PC7802 PC7802 2436 2422pc7802 MACH_PC7802 PC7802 2436
2423gnet_sgc MACH_GNET_SGC GNET_SGC 2437 2423gnet_sgc MACH_GNET_SGC GNET_SGC 2437
2424einstein15 MACH_EINSTEIN15 EINSTEIN15 2438
2425cmpd MACH_CMPD CMPD 2439
2426davinci_hase1 MACH_DAVINCI_HASE1 DAVINCI_HASE1 2440
2427lgeincitephone MACH_LGEINCITEPHONE LGEINCITEPHONE 2441
2428ea313x MACH_EA313X EA313X 2442
2429fwbd_39064 MACH_FWBD_39064 FWBD_39064 2443
2430fwbd_390128 MACH_FWBD_390128 FWBD_390128 2444
2431pelco_moe MACH_PELCO_MOE PELCO_MOE 2445
2432minimix27 MACH_MINIMIX27 MINIMIX27 2446
2433omap3_thunder MACH_OMAP3_THUNDER OMAP3_THUNDER 2447
2434passionc MACH_PASSIONC PASSIONC 2448
2435mx27amata MACH_MX27AMATA MX27AMATA 2449
2436bgat1 MACH_BGAT1 BGAT1 2450
2437buzz MACH_BUZZ BUZZ 2451
2438mb9g20 MACH_MB9G20 MB9G20 2452
2439yushan MACH_YUSHAN YUSHAN 2453
2440lizard MACH_LIZARD LIZARD 2454
2441omap3polycom MACH_OMAP3POLYCOM OMAP3POLYCOM 2455
2442smdkv210 MACH_SMDKV210 SMDKV210 2456
2443bravo MACH_BRAVO BRAVO 2457
2444siogentoo1 MACH_SIOGENTOO1 SIOGENTOO1 2458
2445siogentoo2 MACH_SIOGENTOO2 SIOGENTOO2 2459
2446sm3k MACH_SM3K SM3K 2460
2447acer_tempo_f900 MACH_ACER_TEMPO_F900 ACER_TEMPO_F900 2461
2448sst61vc010_dev MACH_SST61VC010_DEV SST61VC010_DEV 2462
2449glittertind MACH_GLITTERTIND GLITTERTIND 2463
2450omap_zoom3 MACH_OMAP_ZOOM3 OMAP_ZOOM3 2464
2451omap_3630sdp MACH_OMAP_3630SDP OMAP_3630SDP 2465
2452cybook2440 MACH_CYBOOK2440 CYBOOK2440 2466
2453torino_s MACH_TORINO_S TORINO_S 2467
2454havana MACH_HAVANA HAVANA 2468
2455beaumont_11 MACH_BEAUMONT_11 BEAUMONT_11 2469
2456vanguard MACH_VANGUARD VANGUARD 2470
2457s5pc110_draco MACH_S5PC110_DRACO S5PC110_DRACO 2471
2458cartesio_two MACH_CARTESIO_TWO CARTESIO_TWO 2472
2459aster MACH_ASTER ASTER 2473
2460voguesv210 MACH_VOGUESV210 VOGUESV210 2474
2461acm500x MACH_ACM500X ACM500X 2475
2462km9260 MACH_KM9260 KM9260 2476
2463nideflexg1 MACH_NIDEFLEXG1 NIDEFLEXG1 2477
2464ctera_plug_io MACH_CTERA_PLUG_IO CTERA_PLUG_IO 2478
2465smartq7 MACH_SMARTQ7 SMARTQ7 2479
2466at91sam9g10ek2 MACH_AT91SAM9G10EK2 AT91SAM9G10EK2 2480
2467asusp527 MACH_ASUSP527 ASUSP527 2481
2468at91sam9g20mpm2 MACH_AT91SAM9G20MPM2 AT91SAM9G20MPM2 2482
2469topasa900 MACH_TOPASA900 TOPASA900 2483
2470electrum_100 MACH_ELECTRUM_100 ELECTRUM_100 2484
2471mx51grb MACH_MX51GRB MX51GRB 2485
2472xea300 MACH_XEA300 XEA300 2486
2473htcstartrek MACH_HTCSTARTREK HTCSTARTREK 2487
2474lima MACH_LIMA LIMA 2488
2475csb740 MACH_CSB740 CSB740 2489
2476usb_s8815 MACH_USB_S8815 USB_S8815 2490
2477watson_efm_plugin MACH_WATSON_EFM_PLUGIN WATSON_EFM_PLUGIN 2491
2478milkyway MACH_MILKYWAY MILKYWAY 2492
2479g4evm MACH_G4EVM G4EVM 2493
2480picomod6 MACH_PICOMOD6 PICOMOD6 2494
2481omapl138_hawkboard MACH_OMAPL138_HAWKBOARD OMAPL138_HAWKBOARD 2495
2482ip6000 MACH_IP6000 IP6000 2496
2483ip6010 MACH_IP6010 IP6010 2497
2484utm400 MACH_UTM400 UTM400 2498
2485omap3_zybex MACH_OMAP3_ZYBEX OMAP3_ZYBEX 2499
2486wireless_space MACH_WIRELESS_SPACE WIRELESS_SPACE 2500
2487sx560 MACH_SX560 SX560 2501
2488ts41x MACH_TS41X TS41X 2502
2489elphel10373 MACH_ELPHEL10373 ELPHEL10373 2503
2490rhobot MACH_RHOBOT RHOBOT 2504
2491mx51_refresh MACH_MX51_REFRESH MX51_REFRESH 2505
2492ls9260 MACH_LS9260 LS9260 2506
2493shank MACH_SHANK SHANK 2507
2494qsd8x50_st1 MACH_QSD8X50_ST1 QSD8X50_ST1 2508
2495at91sam9m10ekes MACH_AT91SAM9M10EKES AT91SAM9M10EKES 2509
2496hiram MACH_HIRAM HIRAM 2510
2497phy3250 MACH_PHY3250 PHY3250 2511
2498ea3250 MACH_EA3250 EA3250 2512
2499fdi3250 MACH_FDI3250 FDI3250 2513
2500whitestone MACH_WHITESTONE WHITESTONE 2514
2501at91sam9263nit MACH_AT91SAM9263NIT AT91SAM9263NIT 2515
2502ccmx51 MACH_CCMX51 CCMX51 2516
2503ccmx51js MACH_CCMX51JS CCMX51JS 2517
2504ccwmx51 MACH_CCWMX51 CCWMX51 2518
2505ccwmx51js MACH_CCWMX51JS CCWMX51JS 2519
2506mini6410 MACH_MINI6410 MINI6410 2520
2507tiny6410 MACH_TINY6410 TINY6410 2521
2508nano6410 MACH_NANO6410 NANO6410 2522
2509at572d940hfnldb MACH_AT572D940HFNLDB AT572D940HFNLDB 2523
2510htcleo MACH_HTCLEO HTCLEO 2524
2511avp13 MACH_AVP13 AVP13 2525
2512xxsvideod MACH_XXSVIDEOD XXSVIDEOD 2526
2513vpnext MACH_VPNEXT VPNEXT 2527
2514swarco_itc3 MACH_SWARCO_ITC3 SWARCO_ITC3 2528
2515tx51 MACH_TX51 TX51 2529
2516dolby_cat1021 MACH_DOLBY_CAT1021 DOLBY_CAT1021 2530
2517mx28evk MACH_MX28EVK MX28EVK 2531
2518phoenix260 MACH_PHOENIX260 PHOENIX260 2532
2519uvaca_stork MACH_UVACA_STORK UVACA_STORK 2533
2520smartq5 MACH_SMARTQ5 SMARTQ5 2534
2521all3078 MACH_ALL3078 ALL3078 2535
2522ctera_2bay_ds MACH_CTERA_2BAY_DS CTERA_2BAY_DS 2536
2523siogentoo3 MACH_SIOGENTOO3 SIOGENTOO3 2537
2524epb5000 MACH_EPB5000 EPB5000 2538
2525hy9263 MACH_HY9263 HY9263 2539
2526acer_tempo_m900 MACH_ACER_TEMPO_M900 ACER_TEMPO_M900 2540
2527acer_tempo_dx650 MACH_ACER_TEMPO_DX900 ACER_TEMPO_DX900 2541
2528acer_tempo_x960 MACH_ACER_TEMPO_X960 ACER_TEMPO_X960 2542
2529acer_eten_v900 MACH_ACER_ETEN_V900 ACER_ETEN_V900 2543
2530acer_eten_x900 MACH_ACER_ETEN_X900 ACER_ETEN_X900 2544
2531bonnell MACH_BONNELL BONNELL 2545
2532oht_mx27 MACH_OHT_MX27 OHT_MX27 2546
2533htcquartz MACH_HTCQUARTZ HTCQUARTZ 2547
2534davinci_dm6467tevm MACH_DAVINCI_DM6467TEVM DAVINCI_DM6467TEVM 2548
2535c3ax03 MACH_C3AX03 C3AX03 2549
2536mxt_td60 MACH_MXT_TD60 MXT_TD60 2550
2537esyx MACH_ESYX ESYX 2551
2538bulldog MACH_BULLDOG BULLDOG 2553
diff --git a/arch/avr32/mach-at32ap/include/mach/cpu.h b/arch/avr32/mach-at32ap/include/mach/cpu.h
index 44d0bfa1f409..9c96a130f3a8 100644
--- a/arch/avr32/mach-at32ap/include/mach/cpu.h
+++ b/arch/avr32/mach-at32ap/include/mach/cpu.h
@@ -31,5 +31,8 @@
31#define cpu_is_at91sam9263() (0) 31#define cpu_is_at91sam9263() (0)
32#define cpu_is_at91sam9rl() (0) 32#define cpu_is_at91sam9rl() (0)
33#define cpu_is_at91cap9() (0) 33#define cpu_is_at91cap9() (0)
34#define cpu_is_at91sam9g10() (0)
35#define cpu_is_at91sam9g45() (0)
36#define cpu_is_at91sam9g45es() (0)
34 37
35#endif /* __ASM_ARCH_CPU_H */ 38#endif /* __ASM_ARCH_CPU_H */
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c
index 1f170216d2f9..3946aff4f414 100644
--- a/arch/blackfin/kernel/bfin_dma_5xx.c
+++ b/arch/blackfin/kernel/bfin_dma_5xx.c
@@ -225,8 +225,13 @@ int blackfin_dma_suspend(void)
225void blackfin_dma_resume(void) 225void blackfin_dma_resume(void)
226{ 226{
227 int i; 227 int i;
228 for (i = 0; i < MAX_DMA_SUSPEND_CHANNELS; ++i) 228
229 dma_ch[i].regs->peripheral_map = dma_ch[i].saved_peripheral_map; 229 for (i = 0; i < MAX_DMA_CHANNELS; ++i) {
230 dma_ch[i].regs->cfg = 0;
231
232 if (i < MAX_DMA_SUSPEND_CHANNELS)
233 dma_ch[i].regs->peripheral_map = dma_ch[i].saved_peripheral_map;
234 }
230} 235}
231#endif 236#endif
232 237
diff --git a/arch/blackfin/kernel/cplb-mpu/cplbinit.c b/arch/blackfin/kernel/cplb-mpu/cplbinit.c
index f7b9cdce8239..b52c1f8c4bc0 100644
--- a/arch/blackfin/kernel/cplb-mpu/cplbinit.c
+++ b/arch/blackfin/kernel/cplb-mpu/cplbinit.c
@@ -38,7 +38,7 @@ void __init generate_cplb_tables_cpu(unsigned int cpu)
38 38
39#ifdef CONFIG_BFIN_EXTMEM_DCACHEABLE 39#ifdef CONFIG_BFIN_EXTMEM_DCACHEABLE
40 d_cache = CPLB_L1_CHBL; 40 d_cache = CPLB_L1_CHBL;
41#ifdef CONFIG_BFIN_EXTMEM_WRITETROUGH 41#ifdef CONFIG_BFIN_EXTMEM_WRITETHROUGH
42 d_cache |= CPLB_L1_AOW | CPLB_WT; 42 d_cache |= CPLB_L1_AOW | CPLB_WT;
43#endif 43#endif
44#endif 44#endif
diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c
index 430ae39456e8..5cc7e2e9e415 100644
--- a/arch/blackfin/kernel/process.c
+++ b/arch/blackfin/kernel/process.c
@@ -151,7 +151,7 @@ void start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_
151 regs->pc = new_ip; 151 regs->pc = new_ip;
152 if (current->mm) 152 if (current->mm)
153 regs->p5 = current->mm->start_data; 153 regs->p5 = current->mm->start_data;
154#ifdef CONFIG_SMP 154#ifndef CONFIG_SMP
155 task_thread_info(current)->l1_task_info.stack_start = 155 task_thread_info(current)->l1_task_info.stack_start =
156 (void *)current->mm->context.stack_start; 156 (void *)current->mm->context.stack_start;
157 task_thread_info(current)->l1_task_info.lowest_sp = (void *)new_sp; 157 task_thread_info(current)->l1_task_info.lowest_sp = (void *)new_sp;
diff --git a/arch/blackfin/kernel/ptrace.c b/arch/blackfin/kernel/ptrace.c
index 0982b5d5af10..56b0ba12175f 100644
--- a/arch/blackfin/kernel/ptrace.c
+++ b/arch/blackfin/kernel/ptrace.c
@@ -315,7 +315,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
315 case BFIN_MEM_ACCESS_CORE: 315 case BFIN_MEM_ACCESS_CORE:
316 case BFIN_MEM_ACCESS_CORE_ONLY: 316 case BFIN_MEM_ACCESS_CORE_ONLY:
317 copied = access_process_vm(child, addr, &data, 317 copied = access_process_vm(child, addr, &data,
318 to_copy, 0); 318 to_copy, 1);
319 if (copied) 319 if (copied)
320 break; 320 break;
321 321
diff --git a/arch/blackfin/mach-bf518/include/mach/anomaly.h b/arch/blackfin/mach-bf518/include/mach/anomaly.h
index e9c65390edd1..2829dd0400f1 100644
--- a/arch/blackfin/mach-bf518/include/mach/anomaly.h
+++ b/arch/blackfin/mach-bf518/include/mach/anomaly.h
@@ -1,9 +1,13 @@
1/* 1/*
2 * File: include/asm-blackfin/mach-bf518/anomaly.h 2 * DO NOT EDIT THIS FILE
3 * Bugs: Enter bugs at http://blackfin.uclinux.org/ 3 * This file is under version control at
4 * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/
5 * and can be replaced with that version at any time
6 * DO NOT EDIT THIS FILE
4 * 7 *
5 * Copyright (C) 2004-2009 Analog Devices Inc. 8 * Copyright 2004-2009 Analog Devices Inc.
6 * Licensed under the GPL-2 or later. 9 * Licensed under the ADI BSD license.
10 * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd
7 */ 11 */
8 12
9/* This file should be up to date with: 13/* This file should be up to date with:
@@ -70,6 +74,10 @@
70#define ANOMALY_05000461 (1) 74#define ANOMALY_05000461 (1)
71/* Synchronization Problem at Startup May Cause SPORT Transmit Channels to Misalign */ 75/* Synchronization Problem at Startup May Cause SPORT Transmit Channels to Misalign */
72#define ANOMALY_05000462 (1) 76#define ANOMALY_05000462 (1)
77/* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */
78#define ANOMALY_05000473 (1)
79/* TESTSET Instruction Cannot Be Interrupted */
80#define ANOMALY_05000477 (1)
73 81
74/* Anomalies that don't exist on this proc */ 82/* Anomalies that don't exist on this proc */
75#define ANOMALY_05000099 (0) 83#define ANOMALY_05000099 (0)
@@ -133,5 +141,7 @@
133#define ANOMALY_05000450 (0) 141#define ANOMALY_05000450 (0)
134#define ANOMALY_05000465 (0) 142#define ANOMALY_05000465 (0)
135#define ANOMALY_05000467 (0) 143#define ANOMALY_05000467 (0)
144#define ANOMALY_05000474 (0)
145#define ANOMALY_05000475 (0)
136 146
137#endif 147#endif
diff --git a/arch/blackfin/mach-bf527/include/mach/anomaly.h b/arch/blackfin/mach-bf527/include/mach/anomaly.h
index 3f9052687fa8..02040df8ec80 100644
--- a/arch/blackfin/mach-bf527/include/mach/anomaly.h
+++ b/arch/blackfin/mach-bf527/include/mach/anomaly.h
@@ -1,14 +1,18 @@
1/* 1/*
2 * File: include/asm-blackfin/mach-bf527/anomaly.h 2 * DO NOT EDIT THIS FILE
3 * Bugs: Enter bugs at http://blackfin.uclinux.org/ 3 * This file is under version control at
4 * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/
5 * and can be replaced with that version at any time
6 * DO NOT EDIT THIS FILE
4 * 7 *
5 * Copyright (C) 2004-2009 Analog Devices Inc. 8 * Copyright 2004-2009 Analog Devices Inc.
6 * Licensed under the GPL-2 or later. 9 * Licensed under the ADI BSD license.
10 * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd
7 */ 11 */
8 12
9/* This file should be up to date with: 13/* This file should be up to date with:
10 * - Revision D, 08/14/2009; ADSP-BF526 Blackfin Processor Anomaly List 14 * - Revision D, 08/14/2009; ADSP-BF526 Blackfin Processor Anomaly List
11 * - Revision F, 03/03/2009; ADSP-BF527 Blackfin Processor Anomaly List 15 * - Revision G, 08/25/2009; ADSP-BF527 Blackfin Processor Anomaly List
12 */ 16 */
13 17
14#ifndef _MACH_ANOMALY_H_ 18#ifndef _MACH_ANOMALY_H_
@@ -200,6 +204,10 @@
200#define ANOMALY_05000467 (1) 204#define ANOMALY_05000467 (1)
201/* PLL Latches Incorrect Settings During Reset */ 205/* PLL Latches Incorrect Settings During Reset */
202#define ANOMALY_05000469 (1) 206#define ANOMALY_05000469 (1)
207/* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */
208#define ANOMALY_05000473 (1)
209/* TESTSET Instruction Cannot Be Interrupted */
210#define ANOMALY_05000477 (1)
203 211
204/* Anomalies that don't exist on this proc */ 212/* Anomalies that don't exist on this proc */
205#define ANOMALY_05000099 (0) 213#define ANOMALY_05000099 (0)
@@ -250,5 +258,7 @@
250#define ANOMALY_05000412 (0) 258#define ANOMALY_05000412 (0)
251#define ANOMALY_05000447 (0) 259#define ANOMALY_05000447 (0)
252#define ANOMALY_05000448 (0) 260#define ANOMALY_05000448 (0)
261#define ANOMALY_05000474 (0)
262#define ANOMALY_05000475 (0)
253 263
254#endif 264#endif
diff --git a/arch/blackfin/mach-bf533/include/mach/anomaly.h b/arch/blackfin/mach-bf533/include/mach/anomaly.h
index cd83db2fb1a1..9b3f7a27714d 100644
--- a/arch/blackfin/mach-bf533/include/mach/anomaly.h
+++ b/arch/blackfin/mach-bf533/include/mach/anomaly.h
@@ -1,9 +1,13 @@
1/* 1/*
2 * File: include/asm-blackfin/mach-bf533/anomaly.h 2 * DO NOT EDIT THIS FILE
3 * Bugs: Enter bugs at http://blackfin.uclinux.org/ 3 * This file is under version control at
4 * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/
5 * and can be replaced with that version at any time
6 * DO NOT EDIT THIS FILE
4 * 7 *
5 * Copyright (C) 2004-2009 Analog Devices Inc. 8 * Copyright 2004-2009 Analog Devices Inc.
6 * Licensed under the GPL-2 or later. 9 * Licensed under the ADI BSD license.
10 * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd
7 */ 11 */
8 12
9/* This file should be up to date with: 13/* This file should be up to date with:
@@ -202,6 +206,10 @@
202#define ANOMALY_05000443 (1) 206#define ANOMALY_05000443 (1)
203/* False Hardware Error when RETI Points to Invalid Memory */ 207/* False Hardware Error when RETI Points to Invalid Memory */
204#define ANOMALY_05000461 (1) 208#define ANOMALY_05000461 (1)
209/* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */
210#define ANOMALY_05000473 (1)
211/* TESTSET Instruction Cannot Be Interrupted */
212#define ANOMALY_05000477 (1)
205 213
206/* These anomalies have been "phased" out of analog.com anomaly sheets and are 214/* These anomalies have been "phased" out of analog.com anomaly sheets and are
207 * here to show running on older silicon just isn't feasible. 215 * here to show running on older silicon just isn't feasible.
@@ -349,5 +357,7 @@
349#define ANOMALY_05000450 (0) 357#define ANOMALY_05000450 (0)
350#define ANOMALY_05000465 (0) 358#define ANOMALY_05000465 (0)
351#define ANOMALY_05000467 (0) 359#define ANOMALY_05000467 (0)
360#define ANOMALY_05000474 (0)
361#define ANOMALY_05000475 (0)
352 362
353#endif 363#endif
diff --git a/arch/blackfin/mach-bf537/include/mach/anomaly.h b/arch/blackfin/mach-bf537/include/mach/anomaly.h
index f091ad2d8ea8..d2c427bc6656 100644
--- a/arch/blackfin/mach-bf537/include/mach/anomaly.h
+++ b/arch/blackfin/mach-bf537/include/mach/anomaly.h
@@ -1,9 +1,13 @@
1/* 1/*
2 * File: include/asm-blackfin/mach-bf537/anomaly.h 2 * DO NOT EDIT THIS FILE
3 * Bugs: Enter bugs at http://blackfin.uclinux.org/ 3 * This file is under version control at
4 * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/
5 * and can be replaced with that version at any time
6 * DO NOT EDIT THIS FILE
4 * 7 *
5 * Copyright (C) 2004-2009 Analog Devices Inc. 8 * Copyright 2004-2009 Analog Devices Inc.
6 * Licensed under the GPL-2 or later. 9 * Licensed under the ADI BSD license.
10 * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd
7 */ 11 */
8 12
9/* This file should be up to date with: 13/* This file should be up to date with:
@@ -156,6 +160,10 @@
156#define ANOMALY_05000443 (1) 160#define ANOMALY_05000443 (1)
157/* False Hardware Error when RETI Points to Invalid Memory */ 161/* False Hardware Error when RETI Points to Invalid Memory */
158#define ANOMALY_05000461 (1) 162#define ANOMALY_05000461 (1)
163/* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */
164#define ANOMALY_05000473 (1)
165/* TESTSET Instruction Cannot Be Interrupted */
166#define ANOMALY_05000477 (1)
159 167
160/* Anomalies that don't exist on this proc */ 168/* Anomalies that don't exist on this proc */
161#define ANOMALY_05000099 (0) 169#define ANOMALY_05000099 (0)
@@ -202,5 +210,7 @@
202#define ANOMALY_05000450 (0) 210#define ANOMALY_05000450 (0)
203#define ANOMALY_05000465 (0) 211#define ANOMALY_05000465 (0)
204#define ANOMALY_05000467 (0) 212#define ANOMALY_05000467 (0)
213#define ANOMALY_05000474 (0)
214#define ANOMALY_05000475 (0)
205 215
206#endif 216#endif
diff --git a/arch/blackfin/mach-bf538/include/mach/anomaly.h b/arch/blackfin/mach-bf538/include/mach/anomaly.h
index 26b76083e14c..d882b7e6f59b 100644
--- a/arch/blackfin/mach-bf538/include/mach/anomaly.h
+++ b/arch/blackfin/mach-bf538/include/mach/anomaly.h
@@ -1,9 +1,13 @@
1/* 1/*
2 * File: include/asm-blackfin/mach-bf538/anomaly.h 2 * DO NOT EDIT THIS FILE
3 * Bugs: Enter bugs at http://blackfin.uclinux.org/ 3 * This file is under version control at
4 * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/
5 * and can be replaced with that version at any time
6 * DO NOT EDIT THIS FILE
4 * 7 *
5 * Copyright (C) 2004-2009 Analog Devices Inc. 8 * Copyright 2004-2009 Analog Devices Inc.
6 * Licensed under the GPL-2 or later. 9 * Licensed under the ADI BSD license.
10 * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd
7 */ 11 */
8 12
9/* This file should be up to date with: 13/* This file should be up to date with:
@@ -128,6 +132,10 @@
128#define ANOMALY_05000443 (1) 132#define ANOMALY_05000443 (1)
129/* False Hardware Error when RETI Points to Invalid Memory */ 133/* False Hardware Error when RETI Points to Invalid Memory */
130#define ANOMALY_05000461 (1) 134#define ANOMALY_05000461 (1)
135/* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */
136#define ANOMALY_05000473 (1)
137/* TESTSET Instruction Cannot Be Interrupted */
138#define ANOMALY_05000477 (1)
131 139
132/* Anomalies that don't exist on this proc */ 140/* Anomalies that don't exist on this proc */
133#define ANOMALY_05000099 (0) 141#define ANOMALY_05000099 (0)
@@ -176,5 +184,7 @@
176#define ANOMALY_05000450 (0) 184#define ANOMALY_05000450 (0)
177#define ANOMALY_05000465 (0) 185#define ANOMALY_05000465 (0)
178#define ANOMALY_05000467 (0) 186#define ANOMALY_05000467 (0)
187#define ANOMALY_05000474 (0)
188#define ANOMALY_05000475 (0)
179 189
180#endif 190#endif
diff --git a/arch/blackfin/mach-bf548/include/mach/anomaly.h b/arch/blackfin/mach-bf548/include/mach/anomaly.h
index 52b116ae522a..7d08c7524498 100644
--- a/arch/blackfin/mach-bf548/include/mach/anomaly.h
+++ b/arch/blackfin/mach-bf548/include/mach/anomaly.h
@@ -1,9 +1,13 @@
1/* 1/*
2 * File: include/asm-blackfin/mach-bf548/anomaly.h 2 * DO NOT EDIT THIS FILE
3 * Bugs: Enter bugs at http://blackfin.uclinux.org/ 3 * This file is under version control at
4 * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/
5 * and can be replaced with that version at any time
6 * DO NOT EDIT THIS FILE
4 * 7 *
5 * Copyright (C) 2004-2009 Analog Devices Inc. 8 * Copyright 2004-2009 Analog Devices Inc.
6 * Licensed under the GPL-2 or later. 9 * Licensed under the ADI BSD license.
10 * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd
7 */ 11 */
8 12
9/* This file should be up to date with: 13/* This file should be up to date with:
@@ -24,6 +28,8 @@
24#define ANOMALY_05000119 (1) 28#define ANOMALY_05000119 (1)
25/* Rx.H Cannot Be Used to Access 16-bit System MMR Registers */ 29/* Rx.H Cannot Be Used to Access 16-bit System MMR Registers */
26#define ANOMALY_05000122 (1) 30#define ANOMALY_05000122 (1)
31/* Data Corruption with Cached External Memory and Non-Cached On-Chip L2 Memory */
32#define ANOMALY_05000220 (1)
27/* False Hardware Error from an Access in the Shadow of a Conditional Branch */ 33/* False Hardware Error from an Access in the Shadow of a Conditional Branch */
28#define ANOMALY_05000245 (1) 34#define ANOMALY_05000245 (1)
29/* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */ 35/* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */
@@ -200,6 +206,14 @@
200#define ANOMALY_05000466 (1) 206#define ANOMALY_05000466 (1)
201/* Possible RX data corruption when control & data EP FIFOs are accessed via the core */ 207/* Possible RX data corruption when control & data EP FIFOs are accessed via the core */
202#define ANOMALY_05000467 (1) 208#define ANOMALY_05000467 (1)
209/* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */
210#define ANOMALY_05000473 (1)
211/* Access to DDR-SDRAM causes system hang under certain PLL/VR settings */
212#define ANOMALY_05000474 (1)
213/* Core Hang With L2/L3 Configured in Writeback Cache Mode */
214#define ANOMALY_05000475 (1)
215/* TESTSET Instruction Cannot Be Interrupted */
216#define ANOMALY_05000477 (1)
203 217
204/* Anomalies that don't exist on this proc */ 218/* Anomalies that don't exist on this proc */
205#define ANOMALY_05000099 (0) 219#define ANOMALY_05000099 (0)
@@ -215,7 +229,6 @@
215#define ANOMALY_05000198 (0) 229#define ANOMALY_05000198 (0)
216#define ANOMALY_05000202 (0) 230#define ANOMALY_05000202 (0)
217#define ANOMALY_05000215 (0) 231#define ANOMALY_05000215 (0)
218#define ANOMALY_05000220 (0)
219#define ANOMALY_05000227 (0) 232#define ANOMALY_05000227 (0)
220#define ANOMALY_05000230 (0) 233#define ANOMALY_05000230 (0)
221#define ANOMALY_05000231 (0) 234#define ANOMALY_05000231 (0)
diff --git a/arch/blackfin/mach-bf561/atomic.S b/arch/blackfin/mach-bf561/atomic.S
index 0261a5e751b3..f99f174b129f 100644
--- a/arch/blackfin/mach-bf561/atomic.S
+++ b/arch/blackfin/mach-bf561/atomic.S
@@ -19,6 +19,16 @@
19 \reg\().h = _corelock; 19 \reg\().h = _corelock;
20.endm 20.endm
21 21
22.macro safe_testset addr:req, scratch:req
23#if ANOMALY_05000477
24 cli \scratch;
25 testset (\addr);
26 sti \scratch;
27#else
28 testset (\addr);
29#endif
30.endm
31
22/* 32/*
23 * r0 = address of atomic data to flush and invalidate (32bit). 33 * r0 = address of atomic data to flush and invalidate (32bit).
24 * 34 *
@@ -33,7 +43,7 @@ ENTRY(_get_core_lock)
33 cli r0; 43 cli r0;
34 coreslot_loadaddr p0; 44 coreslot_loadaddr p0;
35.Lretry_corelock: 45.Lretry_corelock:
36 testset (p0); 46 safe_testset p0, r2;
37 if cc jump .Ldone_corelock; 47 if cc jump .Ldone_corelock;
38 SSYNC(r2); 48 SSYNC(r2);
39 jump .Lretry_corelock 49 jump .Lretry_corelock
@@ -56,7 +66,7 @@ ENTRY(_get_core_lock_noflush)
56 cli r0; 66 cli r0;
57 coreslot_loadaddr p0; 67 coreslot_loadaddr p0;
58.Lretry_corelock_noflush: 68.Lretry_corelock_noflush:
59 testset (p0); 69 safe_testset p0, r2;
60 if cc jump .Ldone_corelock_noflush; 70 if cc jump .Ldone_corelock_noflush;
61 SSYNC(r2); 71 SSYNC(r2);
62 jump .Lretry_corelock_noflush 72 jump .Lretry_corelock_noflush
diff --git a/arch/blackfin/mach-bf561/include/mach/anomaly.h b/arch/blackfin/mach-bf561/include/mach/anomaly.h
index 70da495c9665..5ddc981e9937 100644
--- a/arch/blackfin/mach-bf561/include/mach/anomaly.h
+++ b/arch/blackfin/mach-bf561/include/mach/anomaly.h
@@ -1,9 +1,13 @@
1/* 1/*
2 * File: include/asm-blackfin/mach-bf561/anomaly.h 2 * DO NOT EDIT THIS FILE
3 * Bugs: Enter bugs at http://blackfin.uclinux.org/ 3 * This file is under version control at
4 * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/
5 * and can be replaced with that version at any time
6 * DO NOT EDIT THIS FILE
4 * 7 *
5 * Copyright (C) 2004-2009 Analog Devices Inc. 8 * Copyright 2004-2009 Analog Devices Inc.
6 * Licensed under the GPL-2 or later. 9 * Licensed under the ADI BSD license.
10 * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd
7 */ 11 */
8 12
9/* This file should be up to date with: 13/* This file should be up to date with:
@@ -213,7 +217,11 @@
213/* Disabling Peripherals with DMA Running May Cause DMA System Instability */ 217/* Disabling Peripherals with DMA Running May Cause DMA System Instability */
214#define ANOMALY_05000278 (__SILICON_REVISION__ < 5) 218#define ANOMALY_05000278 (__SILICON_REVISION__ < 5)
215/* False Hardware Error Exception when ISR Context Is Not Restored */ 219/* False Hardware Error Exception when ISR Context Is Not Restored */
216#define ANOMALY_05000281 (__SILICON_REVISION__ < 5) 220/* Temporarily walk around for bug 5423 till this issue is confirmed by
221 * official anomaly document. It looks 05000281 still exists on bf561
222 * v0.5.
223 */
224#define ANOMALY_05000281 (__SILICON_REVISION__ <= 5)
217/* System MMR Write Is Stalled Indefinitely when Killed in a Particular Stage */ 225/* System MMR Write Is Stalled Indefinitely when Killed in a Particular Stage */
218#define ANOMALY_05000283 (1) 226#define ANOMALY_05000283 (1)
219/* Reads Will Receive Incorrect Data under Certain Conditions */ 227/* Reads Will Receive Incorrect Data under Certain Conditions */
@@ -280,6 +288,12 @@
280#define ANOMALY_05000443 (1) 288#define ANOMALY_05000443 (1)
281/* False Hardware Error when RETI Points to Invalid Memory */ 289/* False Hardware Error when RETI Points to Invalid Memory */
282#define ANOMALY_05000461 (1) 290#define ANOMALY_05000461 (1)
291/* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */
292#define ANOMALY_05000473 (1)
293/* Core Hang With L2/L3 Configured in Writeback Cache Mode */
294#define ANOMALY_05000475 (__SILICON_REVISION__ < 4)
295/* TESTSET Instruction Cannot Be Interrupted */
296#define ANOMALY_05000477 (1)
283 297
284/* Anomalies that don't exist on this proc */ 298/* Anomalies that don't exist on this proc */
285#define ANOMALY_05000119 (0) 299#define ANOMALY_05000119 (0)
@@ -304,5 +318,6 @@
304#define ANOMALY_05000450 (0) 318#define ANOMALY_05000450 (0)
305#define ANOMALY_05000465 (0) 319#define ANOMALY_05000465 (0)
306#define ANOMALY_05000467 (0) 320#define ANOMALY_05000467 (0)
321#define ANOMALY_05000474 (0)
307 322
308#endif 323#endif
diff --git a/arch/blackfin/mach-common/arch_checks.c b/arch/blackfin/mach-common/arch_checks.c
index 9dbafcdcf479..f2ca211a76a0 100644
--- a/arch/blackfin/mach-common/arch_checks.c
+++ b/arch/blackfin/mach-common/arch_checks.c
@@ -57,3 +57,8 @@
57 (!defined(CONFIG_BFIN_EXTMEM_DCACHEABLE) && defined(CONFIG_BFIN_L2_WRITEBACK))) 57 (!defined(CONFIG_BFIN_EXTMEM_DCACHEABLE) && defined(CONFIG_BFIN_L2_WRITEBACK)))
58# error You are exposing Anomaly 220 in this config, either config L2 as Write Through, or make External Memory WB. 58# error You are exposing Anomaly 220 in this config, either config L2 as Write Through, or make External Memory WB.
59#endif 59#endif
60
61#if ANOMALY_05000475 && \
62 (defined(CONFIG_BFIN_EXTMEM_WRITEBACK) || defined(CONFIG_BFIN_L2_WRITEBACK))
63# error "Anomaly 475 does not allow you to use Write Back cache with L2 or External Memory"
64#endif
diff --git a/arch/blackfin/mach-common/smp.c b/arch/blackfin/mach-common/smp.c
index d98585f3237d..d92b168c8328 100644
--- a/arch/blackfin/mach-common/smp.c
+++ b/arch/blackfin/mach-common/smp.c
@@ -276,10 +276,9 @@ void smp_send_reschedule(int cpu)
276 if (cpu_is_offline(cpu)) 276 if (cpu_is_offline(cpu))
277 return; 277 return;
278 278
279 msg = kmalloc(sizeof(*msg), GFP_ATOMIC); 279 msg = kzalloc(sizeof(*msg), GFP_ATOMIC);
280 if (!msg) 280 if (!msg)
281 return; 281 return;
282 memset(msg, 0, sizeof(msg));
283 INIT_LIST_HEAD(&msg->list); 282 INIT_LIST_HEAD(&msg->list);
284 msg->type = BFIN_IPI_RESCHEDULE; 283 msg->type = BFIN_IPI_RESCHEDULE;
285 284
@@ -305,10 +304,9 @@ void smp_send_stop(void)
305 if (cpus_empty(callmap)) 304 if (cpus_empty(callmap))
306 return; 305 return;
307 306
308 msg = kmalloc(sizeof(*msg), GFP_ATOMIC); 307 msg = kzalloc(sizeof(*msg), GFP_ATOMIC);
309 if (!msg) 308 if (!msg)
310 return; 309 return;
311 memset(msg, 0, sizeof(msg));
312 INIT_LIST_HEAD(&msg->list); 310 INIT_LIST_HEAD(&msg->list);
313 msg->type = BFIN_IPI_CPU_STOP; 311 msg->type = BFIN_IPI_CPU_STOP;
314 312
diff --git a/arch/frv/kernel/signal.c b/arch/frv/kernel/signal.c
index 6b0a2b6fed6a..0974c0ecc594 100644
--- a/arch/frv/kernel/signal.c
+++ b/arch/frv/kernel/signal.c
@@ -527,7 +527,7 @@ static void do_signal(void)
527 527
528no_signal: 528no_signal:
529 /* Did we come from a system call? */ 529 /* Did we come from a system call? */
530 if (__frame->syscallno >= 0) { 530 if (__frame->syscallno != -1) {
531 /* Restart the system call - no handlers present */ 531 /* Restart the system call - no handlers present */
532 switch (__frame->gr8) { 532 switch (__frame->gr8) {
533 case -ERESTARTNOHAND: 533 case -ERESTARTNOHAND:
diff --git a/arch/ia64/include/asm/spinlock.h b/arch/ia64/include/asm/spinlock.h
index 30bb930e1111..239ecdc9516d 100644
--- a/arch/ia64/include/asm/spinlock.h
+++ b/arch/ia64/include/asm/spinlock.h
@@ -25,61 +25,82 @@
25 * by atomically noting the tail and incrementing it by one (thus adding 25 * by atomically noting the tail and incrementing it by one (thus adding
26 * ourself to the queue and noting our position), then waiting until the head 26 * ourself to the queue and noting our position), then waiting until the head
27 * becomes equal to the the initial value of the tail. 27 * becomes equal to the the initial value of the tail.
28 * The pad bits in the middle are used to prevent the next_ticket number
29 * overflowing into the now_serving number.
28 * 30 *
29 * 63 32 31 0 31 * 31 17 16 15 14 0
30 * +----------------------------------------------------+ 32 * +----------------------------------------------------+
31 * | next_ticket_number | now_serving | 33 * | now_serving | padding | next_ticket |
32 * +----------------------------------------------------+ 34 * +----------------------------------------------------+
33 */ 35 */
34 36
35#define TICKET_SHIFT 32 37#define TICKET_SHIFT 17
38#define TICKET_BITS 15
39#define TICKET_MASK ((1 << TICKET_BITS) - 1)
36 40
37static __always_inline void __ticket_spin_lock(raw_spinlock_t *lock) 41static __always_inline void __ticket_spin_lock(raw_spinlock_t *lock)
38{ 42{
39 int *p = (int *)&lock->lock, turn, now_serving; 43 int *p = (int *)&lock->lock, ticket, serve;
40 44
41 now_serving = *p; 45 ticket = ia64_fetchadd(1, p, acq);
42 turn = ia64_fetchadd(1, p+1, acq);
43 46
44 if (turn == now_serving) 47 if (!(((ticket >> TICKET_SHIFT) ^ ticket) & TICKET_MASK))
45 return; 48 return;
46 49
47 do { 50 ia64_invala();
51
52 for (;;) {
53 asm volatile ("ld4.c.nc %0=[%1]" : "=r"(serve) : "r"(p) : "memory");
54
55 if (!(((serve >> TICKET_SHIFT) ^ ticket) & TICKET_MASK))
56 return;
48 cpu_relax(); 57 cpu_relax();
49 } while (ACCESS_ONCE(*p) != turn); 58 }
50} 59}
51 60
52static __always_inline int __ticket_spin_trylock(raw_spinlock_t *lock) 61static __always_inline int __ticket_spin_trylock(raw_spinlock_t *lock)
53{ 62{
54 long tmp = ACCESS_ONCE(lock->lock), try; 63 int tmp = ACCESS_ONCE(lock->lock);
55
56 if (!(((tmp >> TICKET_SHIFT) ^ tmp) & ((1L << TICKET_SHIFT) - 1))) {
57 try = tmp + (1L << TICKET_SHIFT);
58 64
59 return ia64_cmpxchg(acq, &lock->lock, tmp, try, sizeof (tmp)) == tmp; 65 if (!(((tmp >> TICKET_SHIFT) ^ tmp) & TICKET_MASK))
60 } 66 return ia64_cmpxchg(acq, &lock->lock, tmp, tmp + 1, sizeof (tmp)) == tmp;
61 return 0; 67 return 0;
62} 68}
63 69
64static __always_inline void __ticket_spin_unlock(raw_spinlock_t *lock) 70static __always_inline void __ticket_spin_unlock(raw_spinlock_t *lock)
65{ 71{
66 int *p = (int *)&lock->lock; 72 unsigned short *p = (unsigned short *)&lock->lock + 1, tmp;
67 73
68 (void)ia64_fetchadd(1, p, rel); 74 asm volatile ("ld2.bias %0=[%1]" : "=r"(tmp) : "r"(p));
75 ACCESS_ONCE(*p) = (tmp + 2) & ~1;
76}
77
78static __always_inline void __ticket_spin_unlock_wait(raw_spinlock_t *lock)
79{
80 int *p = (int *)&lock->lock, ticket;
81
82 ia64_invala();
83
84 for (;;) {
85 asm volatile ("ld4.c.nc %0=[%1]" : "=r"(ticket) : "r"(p) : "memory");
86 if (!(((ticket >> TICKET_SHIFT) ^ ticket) & TICKET_MASK))
87 return;
88 cpu_relax();
89 }
69} 90}
70 91
71static inline int __ticket_spin_is_locked(raw_spinlock_t *lock) 92static inline int __ticket_spin_is_locked(raw_spinlock_t *lock)
72{ 93{
73 long tmp = ACCESS_ONCE(lock->lock); 94 long tmp = ACCESS_ONCE(lock->lock);
74 95
75 return !!(((tmp >> TICKET_SHIFT) ^ tmp) & ((1L << TICKET_SHIFT) - 1)); 96 return !!(((tmp >> TICKET_SHIFT) ^ tmp) & TICKET_MASK);
76} 97}
77 98
78static inline int __ticket_spin_is_contended(raw_spinlock_t *lock) 99static inline int __ticket_spin_is_contended(raw_spinlock_t *lock)
79{ 100{
80 long tmp = ACCESS_ONCE(lock->lock); 101 long tmp = ACCESS_ONCE(lock->lock);
81 102
82 return (((tmp >> TICKET_SHIFT) - tmp) & ((1L << TICKET_SHIFT) - 1)) > 1; 103 return ((tmp - (tmp >> TICKET_SHIFT)) & TICKET_MASK) > 1;
83} 104}
84 105
85static inline int __raw_spin_is_locked(raw_spinlock_t *lock) 106static inline int __raw_spin_is_locked(raw_spinlock_t *lock)
@@ -116,8 +137,7 @@ static __always_inline void __raw_spin_lock_flags(raw_spinlock_t *lock,
116 137
117static inline void __raw_spin_unlock_wait(raw_spinlock_t *lock) 138static inline void __raw_spin_unlock_wait(raw_spinlock_t *lock)
118{ 139{
119 while (__raw_spin_is_locked(lock)) 140 __ticket_spin_unlock_wait(lock);
120 cpu_relax();
121} 141}
122 142
123#define __raw_read_can_lock(rw) (*(volatile int *)(rw) >= 0) 143#define __raw_read_can_lock(rw) (*(volatile int *)(rw) >= 0)
diff --git a/arch/ia64/include/asm/spinlock_types.h b/arch/ia64/include/asm/spinlock_types.h
index b61d136d9bc2..474e46f1ab4a 100644
--- a/arch/ia64/include/asm/spinlock_types.h
+++ b/arch/ia64/include/asm/spinlock_types.h
@@ -6,7 +6,7 @@
6#endif 6#endif
7 7
8typedef struct { 8typedef struct {
9 volatile unsigned long lock; 9 volatile unsigned int lock;
10} raw_spinlock_t; 10} raw_spinlock_t;
11 11
12#define __RAW_SPIN_LOCK_UNLOCKED { 0 } 12#define __RAW_SPIN_LOCK_UNLOCKED { 0 }
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c
index d2877a7bfe2e..496ac7a99488 100644
--- a/arch/ia64/kernel/mca.c
+++ b/arch/ia64/kernel/mca.c
@@ -887,6 +887,60 @@ ia64_mca_modify_comm(const struct task_struct *previous_current)
887 memcpy(current->comm, comm, sizeof(current->comm)); 887 memcpy(current->comm, comm, sizeof(current->comm));
888} 888}
889 889
890static void
891finish_pt_regs(struct pt_regs *regs, const pal_min_state_area_t *ms,
892 unsigned long *nat)
893{
894 const u64 *bank;
895
896 /* If ipsr.ic then use pmsa_{iip,ipsr,ifs}, else use
897 * pmsa_{xip,xpsr,xfs}
898 */
899 if (ia64_psr(regs)->ic) {
900 regs->cr_iip = ms->pmsa_iip;
901 regs->cr_ipsr = ms->pmsa_ipsr;
902 regs->cr_ifs = ms->pmsa_ifs;
903 } else {
904 regs->cr_iip = ms->pmsa_xip;
905 regs->cr_ipsr = ms->pmsa_xpsr;
906 regs->cr_ifs = ms->pmsa_xfs;
907 }
908 regs->pr = ms->pmsa_pr;
909 regs->b0 = ms->pmsa_br0;
910 regs->ar_rsc = ms->pmsa_rsc;
911 copy_reg(&ms->pmsa_gr[1-1], ms->pmsa_nat_bits, &regs->r1, nat);
912 copy_reg(&ms->pmsa_gr[2-1], ms->pmsa_nat_bits, &regs->r2, nat);
913 copy_reg(&ms->pmsa_gr[3-1], ms->pmsa_nat_bits, &regs->r3, nat);
914 copy_reg(&ms->pmsa_gr[8-1], ms->pmsa_nat_bits, &regs->r8, nat);
915 copy_reg(&ms->pmsa_gr[9-1], ms->pmsa_nat_bits, &regs->r9, nat);
916 copy_reg(&ms->pmsa_gr[10-1], ms->pmsa_nat_bits, &regs->r10, nat);
917 copy_reg(&ms->pmsa_gr[11-1], ms->pmsa_nat_bits, &regs->r11, nat);
918 copy_reg(&ms->pmsa_gr[12-1], ms->pmsa_nat_bits, &regs->r12, nat);
919 copy_reg(&ms->pmsa_gr[13-1], ms->pmsa_nat_bits, &regs->r13, nat);
920 copy_reg(&ms->pmsa_gr[14-1], ms->pmsa_nat_bits, &regs->r14, nat);
921 copy_reg(&ms->pmsa_gr[15-1], ms->pmsa_nat_bits, &regs->r15, nat);
922 if (ia64_psr(regs)->bn)
923 bank = ms->pmsa_bank1_gr;
924 else
925 bank = ms->pmsa_bank0_gr;
926 copy_reg(&bank[16-16], ms->pmsa_nat_bits, &regs->r16, nat);
927 copy_reg(&bank[17-16], ms->pmsa_nat_bits, &regs->r17, nat);
928 copy_reg(&bank[18-16], ms->pmsa_nat_bits, &regs->r18, nat);
929 copy_reg(&bank[19-16], ms->pmsa_nat_bits, &regs->r19, nat);
930 copy_reg(&bank[20-16], ms->pmsa_nat_bits, &regs->r20, nat);
931 copy_reg(&bank[21-16], ms->pmsa_nat_bits, &regs->r21, nat);
932 copy_reg(&bank[22-16], ms->pmsa_nat_bits, &regs->r22, nat);
933 copy_reg(&bank[23-16], ms->pmsa_nat_bits, &regs->r23, nat);
934 copy_reg(&bank[24-16], ms->pmsa_nat_bits, &regs->r24, nat);
935 copy_reg(&bank[25-16], ms->pmsa_nat_bits, &regs->r25, nat);
936 copy_reg(&bank[26-16], ms->pmsa_nat_bits, &regs->r26, nat);
937 copy_reg(&bank[27-16], ms->pmsa_nat_bits, &regs->r27, nat);
938 copy_reg(&bank[28-16], ms->pmsa_nat_bits, &regs->r28, nat);
939 copy_reg(&bank[29-16], ms->pmsa_nat_bits, &regs->r29, nat);
940 copy_reg(&bank[30-16], ms->pmsa_nat_bits, &regs->r30, nat);
941 copy_reg(&bank[31-16], ms->pmsa_nat_bits, &regs->r31, nat);
942}
943
890/* On entry to this routine, we are running on the per cpu stack, see 944/* On entry to this routine, we are running on the per cpu stack, see
891 * mca_asm.h. The original stack has not been touched by this event. Some of 945 * mca_asm.h. The original stack has not been touched by this event. Some of
892 * the original stack's registers will be in the RBS on this stack. This stack 946 * the original stack's registers will be in the RBS on this stack. This stack
@@ -921,7 +975,6 @@ ia64_mca_modify_original_stack(struct pt_regs *regs,
921 u64 r12 = ms->pmsa_gr[12-1], r13 = ms->pmsa_gr[13-1]; 975 u64 r12 = ms->pmsa_gr[12-1], r13 = ms->pmsa_gr[13-1];
922 u64 ar_bspstore = regs->ar_bspstore; 976 u64 ar_bspstore = regs->ar_bspstore;
923 u64 ar_bsp = regs->ar_bspstore + (loadrs >> 16); 977 u64 ar_bsp = regs->ar_bspstore + (loadrs >> 16);
924 const u64 *bank;
925 const char *msg; 978 const char *msg;
926 int cpu = smp_processor_id(); 979 int cpu = smp_processor_id();
927 980
@@ -1024,54 +1077,9 @@ ia64_mca_modify_original_stack(struct pt_regs *regs,
1024 p = (char *)r12 - sizeof(*regs); 1077 p = (char *)r12 - sizeof(*regs);
1025 old_regs = (struct pt_regs *)p; 1078 old_regs = (struct pt_regs *)p;
1026 memcpy(old_regs, regs, sizeof(*regs)); 1079 memcpy(old_regs, regs, sizeof(*regs));
1027 /* If ipsr.ic then use pmsa_{iip,ipsr,ifs}, else use
1028 * pmsa_{xip,xpsr,xfs}
1029 */
1030 if (ia64_psr(regs)->ic) {
1031 old_regs->cr_iip = ms->pmsa_iip;
1032 old_regs->cr_ipsr = ms->pmsa_ipsr;
1033 old_regs->cr_ifs = ms->pmsa_ifs;
1034 } else {
1035 old_regs->cr_iip = ms->pmsa_xip;
1036 old_regs->cr_ipsr = ms->pmsa_xpsr;
1037 old_regs->cr_ifs = ms->pmsa_xfs;
1038 }
1039 old_regs->pr = ms->pmsa_pr;
1040 old_regs->b0 = ms->pmsa_br0;
1041 old_regs->loadrs = loadrs; 1080 old_regs->loadrs = loadrs;
1042 old_regs->ar_rsc = ms->pmsa_rsc;
1043 old_unat = old_regs->ar_unat; 1081 old_unat = old_regs->ar_unat;
1044 copy_reg(&ms->pmsa_gr[1-1], ms->pmsa_nat_bits, &old_regs->r1, &old_unat); 1082 finish_pt_regs(old_regs, ms, &old_unat);
1045 copy_reg(&ms->pmsa_gr[2-1], ms->pmsa_nat_bits, &old_regs->r2, &old_unat);
1046 copy_reg(&ms->pmsa_gr[3-1], ms->pmsa_nat_bits, &old_regs->r3, &old_unat);
1047 copy_reg(&ms->pmsa_gr[8-1], ms->pmsa_nat_bits, &old_regs->r8, &old_unat);
1048 copy_reg(&ms->pmsa_gr[9-1], ms->pmsa_nat_bits, &old_regs->r9, &old_unat);
1049 copy_reg(&ms->pmsa_gr[10-1], ms->pmsa_nat_bits, &old_regs->r10, &old_unat);
1050 copy_reg(&ms->pmsa_gr[11-1], ms->pmsa_nat_bits, &old_regs->r11, &old_unat);
1051 copy_reg(&ms->pmsa_gr[12-1], ms->pmsa_nat_bits, &old_regs->r12, &old_unat);
1052 copy_reg(&ms->pmsa_gr[13-1], ms->pmsa_nat_bits, &old_regs->r13, &old_unat);
1053 copy_reg(&ms->pmsa_gr[14-1], ms->pmsa_nat_bits, &old_regs->r14, &old_unat);
1054 copy_reg(&ms->pmsa_gr[15-1], ms->pmsa_nat_bits, &old_regs->r15, &old_unat);
1055 if (ia64_psr(old_regs)->bn)
1056 bank = ms->pmsa_bank1_gr;
1057 else
1058 bank = ms->pmsa_bank0_gr;
1059 copy_reg(&bank[16-16], ms->pmsa_nat_bits, &old_regs->r16, &old_unat);
1060 copy_reg(&bank[17-16], ms->pmsa_nat_bits, &old_regs->r17, &old_unat);
1061 copy_reg(&bank[18-16], ms->pmsa_nat_bits, &old_regs->r18, &old_unat);
1062 copy_reg(&bank[19-16], ms->pmsa_nat_bits, &old_regs->r19, &old_unat);
1063 copy_reg(&bank[20-16], ms->pmsa_nat_bits, &old_regs->r20, &old_unat);
1064 copy_reg(&bank[21-16], ms->pmsa_nat_bits, &old_regs->r21, &old_unat);
1065 copy_reg(&bank[22-16], ms->pmsa_nat_bits, &old_regs->r22, &old_unat);
1066 copy_reg(&bank[23-16], ms->pmsa_nat_bits, &old_regs->r23, &old_unat);
1067 copy_reg(&bank[24-16], ms->pmsa_nat_bits, &old_regs->r24, &old_unat);
1068 copy_reg(&bank[25-16], ms->pmsa_nat_bits, &old_regs->r25, &old_unat);
1069 copy_reg(&bank[26-16], ms->pmsa_nat_bits, &old_regs->r26, &old_unat);
1070 copy_reg(&bank[27-16], ms->pmsa_nat_bits, &old_regs->r27, &old_unat);
1071 copy_reg(&bank[28-16], ms->pmsa_nat_bits, &old_regs->r28, &old_unat);
1072 copy_reg(&bank[29-16], ms->pmsa_nat_bits, &old_regs->r29, &old_unat);
1073 copy_reg(&bank[30-16], ms->pmsa_nat_bits, &old_regs->r30, &old_unat);
1074 copy_reg(&bank[31-16], ms->pmsa_nat_bits, &old_regs->r31, &old_unat);
1075 1083
1076 /* Next stack a struct switch_stack. mca_asm.S built a partial 1084 /* Next stack a struct switch_stack. mca_asm.S built a partial
1077 * switch_stack, copy it and fill in the blanks using pt_regs and 1085 * switch_stack, copy it and fill in the blanks using pt_regs and
@@ -1141,6 +1149,8 @@ ia64_mca_modify_original_stack(struct pt_regs *regs,
1141no_mod: 1149no_mod:
1142 mprintk(KERN_INFO "cpu %d, %s %s, original stack not modified\n", 1150 mprintk(KERN_INFO "cpu %d, %s %s, original stack not modified\n",
1143 smp_processor_id(), type, msg); 1151 smp_processor_id(), type, msg);
1152 old_unat = regs->ar_unat;
1153 finish_pt_regs(regs, ms, &old_unat);
1144 return previous_current; 1154 return previous_current;
1145} 1155}
1146 1156
diff --git a/arch/ia64/kernel/unaligned.c b/arch/ia64/kernel/unaligned.c
index 6db08599ebbc..776dd40397e2 100644
--- a/arch/ia64/kernel/unaligned.c
+++ b/arch/ia64/kernel/unaligned.c
@@ -60,7 +60,6 @@ dump (const char *str, void *vp, size_t len)
60 */ 60 */
61int no_unaligned_warning; 61int no_unaligned_warning;
62int unaligned_dump_stack; 62int unaligned_dump_stack;
63static int noprint_warning;
64 63
65/* 64/*
66 * For M-unit: 65 * For M-unit:
@@ -1357,9 +1356,8 @@ ia64_handle_unaligned (unsigned long ifa, struct pt_regs *regs)
1357 /* watch for command names containing %s */ 1356 /* watch for command names containing %s */
1358 printk(KERN_WARNING "%s", buf); 1357 printk(KERN_WARNING "%s", buf);
1359 } else { 1358 } else {
1360 if (no_unaligned_warning && !noprint_warning) { 1359 if (no_unaligned_warning) {
1361 noprint_warning = 1; 1360 printk_once(KERN_WARNING "%s(%d) encountered an "
1362 printk(KERN_WARNING "%s(%d) encountered an "
1363 "unaligned exception which required\n" 1361 "unaligned exception which required\n"
1364 "kernel assistance, which degrades " 1362 "kernel assistance, which degrades "
1365 "the performance of the application.\n" 1363 "the performance of the application.\n"
diff --git a/arch/ia64/mm/tlb.c b/arch/ia64/mm/tlb.c
index f426dc78d959..ee09d261f2e6 100644
--- a/arch/ia64/mm/tlb.c
+++ b/arch/ia64/mm/tlb.c
@@ -100,24 +100,36 @@ wrap_mmu_context (struct mm_struct *mm)
100 * this primitive it can be moved up to a spinaphore.h header. 100 * this primitive it can be moved up to a spinaphore.h header.
101 */ 101 */
102struct spinaphore { 102struct spinaphore {
103 atomic_t cur; 103 unsigned long ticket;
104 unsigned long serve;
104}; 105};
105 106
106static inline void spinaphore_init(struct spinaphore *ss, int val) 107static inline void spinaphore_init(struct spinaphore *ss, int val)
107{ 108{
108 atomic_set(&ss->cur, val); 109 ss->ticket = 0;
110 ss->serve = val;
109} 111}
110 112
111static inline void down_spin(struct spinaphore *ss) 113static inline void down_spin(struct spinaphore *ss)
112{ 114{
113 while (unlikely(!atomic_add_unless(&ss->cur, -1, 0))) 115 unsigned long t = ia64_fetchadd(1, &ss->ticket, acq), serve;
114 while (atomic_read(&ss->cur) == 0) 116
115 cpu_relax(); 117 if (time_before(t, ss->serve))
118 return;
119
120 ia64_invala();
121
122 for (;;) {
123 asm volatile ("ld4.c.nc %0=[%1]" : "=r"(serve) : "r"(&ss->serve) : "memory");
124 if (time_before(t, serve))
125 return;
126 cpu_relax();
127 }
116} 128}
117 129
118static inline void up_spin(struct spinaphore *ss) 130static inline void up_spin(struct spinaphore *ss)
119{ 131{
120 atomic_add(1, &ss->cur); 132 ia64_fetchadd(1, &ss->serve, rel);
121} 133}
122 134
123static struct spinaphore ptcg_sem; 135static struct spinaphore ptcg_sem;
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index 7de76dd352fe..c0fca2c1c858 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -56,10 +56,13 @@ int raw_pci_read(unsigned int seg, unsigned int bus, unsigned int devfn,
56 if ((seg | reg) <= 255) { 56 if ((seg | reg) <= 255) {
57 addr = PCI_SAL_ADDRESS(seg, bus, devfn, reg); 57 addr = PCI_SAL_ADDRESS(seg, bus, devfn, reg);
58 mode = 0; 58 mode = 0;
59 } else { 59 } else if (sal_revision >= SAL_VERSION_CODE(3,2)) {
60 addr = PCI_SAL_EXT_ADDRESS(seg, bus, devfn, reg); 60 addr = PCI_SAL_EXT_ADDRESS(seg, bus, devfn, reg);
61 mode = 1; 61 mode = 1;
62 } else {
63 return -EINVAL;
62 } 64 }
65
63 result = ia64_sal_pci_config_read(addr, mode, len, &data); 66 result = ia64_sal_pci_config_read(addr, mode, len, &data);
64 if (result != 0) 67 if (result != 0)
65 return -EINVAL; 68 return -EINVAL;
@@ -80,9 +83,11 @@ int raw_pci_write(unsigned int seg, unsigned int bus, unsigned int devfn,
80 if ((seg | reg) <= 255) { 83 if ((seg | reg) <= 255) {
81 addr = PCI_SAL_ADDRESS(seg, bus, devfn, reg); 84 addr = PCI_SAL_ADDRESS(seg, bus, devfn, reg);
82 mode = 0; 85 mode = 0;
83 } else { 86 } else if (sal_revision >= SAL_VERSION_CODE(3,2)) {
84 addr = PCI_SAL_EXT_ADDRESS(seg, bus, devfn, reg); 87 addr = PCI_SAL_EXT_ADDRESS(seg, bus, devfn, reg);
85 mode = 1; 88 mode = 1;
89 } else {
90 return -EINVAL;
86 } 91 }
87 result = ia64_sal_pci_config_write(addr, mode, len, value); 92 result = ia64_sal_pci_config_write(addr, mode, len, value);
88 if (result != 0) 93 if (result != 0)
diff --git a/arch/ia64/sn/kernel/io_common.c b/arch/ia64/sn/kernel/io_common.c
index 25831c47c579..308e6595110e 100644
--- a/arch/ia64/sn/kernel/io_common.c
+++ b/arch/ia64/sn/kernel/io_common.c
@@ -119,7 +119,6 @@ sn_pcidev_info_get(struct pci_dev *dev)
119 * Additionally note that the struct sn_flush_device_war also has to be 119 * Additionally note that the struct sn_flush_device_war also has to be
120 * removed from arch/ia64/sn/include/xtalk/hubdev.h 120 * removed from arch/ia64/sn/include/xtalk/hubdev.h
121 */ 121 */
122static u8 war_implemented = 0;
123 122
124static s64 sn_device_fixup_war(u64 nasid, u64 widget, int device, 123static s64 sn_device_fixup_war(u64 nasid, u64 widget, int device,
125 struct sn_flush_device_common *common) 124 struct sn_flush_device_common *common)
@@ -128,11 +127,8 @@ static s64 sn_device_fixup_war(u64 nasid, u64 widget, int device,
128 struct sn_flush_device_war *dev_entry; 127 struct sn_flush_device_war *dev_entry;
129 struct ia64_sal_retval isrv = {0,0,0,0}; 128 struct ia64_sal_retval isrv = {0,0,0,0};
130 129
131 if (!war_implemented) { 130 printk_once(KERN_WARNING
132 printk(KERN_WARNING "PROM version < 4.50 -- implementing old " 131 "PROM version < 4.50 -- implementing old PROM flush WAR\n");
133 "PROM flush WAR\n");
134 war_implemented = 1;
135 }
136 132
137 war_list = kzalloc(DEV_PER_WIDGET * sizeof(*war_list), GFP_KERNEL); 133 war_list = kzalloc(DEV_PER_WIDGET * sizeof(*war_list), GFP_KERNEL);
138 BUG_ON(!war_list); 134 BUG_ON(!war_list);
diff --git a/arch/ia64/sn/kernel/sn2/sn_hwperf.c b/arch/ia64/sn/kernel/sn2/sn_hwperf.c
index 4c7e74790958..55ac3c4e11d2 100644
--- a/arch/ia64/sn/kernel/sn2/sn_hwperf.c
+++ b/arch/ia64/sn/kernel/sn2/sn_hwperf.c
@@ -786,17 +786,18 @@ sn_hwperf_ioctl(struct inode *in, struct file *fp, u32 op, unsigned long arg)
786 break; 786 break;
787 787
788 case SN_HWPERF_GET_OBJ_NODE: 788 case SN_HWPERF_GET_OBJ_NODE:
789 if (a.sz != sizeof(u64) || a.arg < 0) { 789 i = a.arg;
790 if (a.sz != sizeof(u64) || i < 0) {
790 r = -EINVAL; 791 r = -EINVAL;
791 goto error; 792 goto error;
792 } 793 }
793 if ((r = sn_hwperf_enum_objects(&nobj, &objs)) == 0) { 794 if ((r = sn_hwperf_enum_objects(&nobj, &objs)) == 0) {
794 if (a.arg >= nobj) { 795 if (i >= nobj) {
795 r = -EINVAL; 796 r = -EINVAL;
796 vfree(objs); 797 vfree(objs);
797 goto error; 798 goto error;
798 } 799 }
799 if (objs[(i = a.arg)].id != a.arg) { 800 if (objs[i].id != a.arg) {
800 for (i = 0; i < nobj; i++) { 801 for (i = 0; i < nobj; i++) {
801 if (objs[i].id == a.arg) 802 if (objs[i].id == a.arg)
802 break; 803 break;
diff --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig
index c41234f1b825..3a9319f93e89 100644
--- a/arch/m32r/Kconfig
+++ b/arch/m32r/Kconfig
@@ -11,6 +11,9 @@ config M32R
11 select HAVE_IDE 11 select HAVE_IDE
12 select HAVE_OPROFILE 12 select HAVE_OPROFILE
13 select INIT_ALL_POSSIBLE 13 select INIT_ALL_POSSIBLE
14 select HAVE_KERNEL_GZIP
15 select HAVE_KERNEL_BZIP2
16 select HAVE_KERNEL_LZMA
14 17
15config SBUS 18config SBUS
16 bool 19 bool
diff --git a/arch/m32r/boot/compressed/Makefile b/arch/m32r/boot/compressed/Makefile
index 560484ae35ec..177716b1d613 100644
--- a/arch/m32r/boot/compressed/Makefile
+++ b/arch/m32r/boot/compressed/Makefile
@@ -1,11 +1,11 @@
1# 1#
2# linux/arch/sh/boot/compressed/Makefile 2# linux/arch/m32r/boot/compressed/Makefile
3# 3#
4# create a compressed vmlinux image from the original vmlinux 4# create a compressed vmlinux image from the original vmlinux
5# 5#
6 6
7targets := vmlinux vmlinux.bin vmlinux.bin.gz head.o misc.o \ 7targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 \
8 piggy.o vmlinux.lds 8 vmlinux.bin.lzma head.o misc.o piggy.o vmlinux.lds
9 9
10OBJECTS = $(obj)/head.o $(obj)/misc.o 10OBJECTS = $(obj)/head.o $(obj)/misc.o
11 11
@@ -27,6 +27,12 @@ $(obj)/vmlinux.bin: vmlinux FORCE
27$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE 27$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE
28 $(call if_changed,gzip) 28 $(call if_changed,gzip)
29 29
30$(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE
31 $(call if_changed,bzip2)
32
33$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE
34 $(call if_changed,lzma)
35
30CFLAGS_misc.o += -fpic 36CFLAGS_misc.o += -fpic
31 37
32ifdef CONFIG_MMU 38ifdef CONFIG_MMU
@@ -37,5 +43,9 @@ endif
37 43
38OBJCOPYFLAGS += -R .empty_zero_page 44OBJCOPYFLAGS += -R .empty_zero_page
39 45
40$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.gz FORCE 46suffix_$(CONFIG_KERNEL_GZIP) = gz
47suffix_$(CONFIG_KERNEL_BZIP2) = bz2
48suffix_$(CONFIG_KERNEL_LZMA) = lzma
49
50$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.$(suffix-y) FORCE
41 $(call if_changed,ld) 51 $(call if_changed,ld)
diff --git a/arch/m32r/boot/compressed/misc.c b/arch/m32r/boot/compressed/misc.c
index d394292498c0..370d60881977 100644
--- a/arch/m32r/boot/compressed/misc.c
+++ b/arch/m32r/boot/compressed/misc.c
@@ -9,140 +9,49 @@
9 * Adapted for SH by Stuart Menefy, Aug 1999 9 * Adapted for SH by Stuart Menefy, Aug 1999
10 * 10 *
11 * 2003-02-12: Support M32R by Takeo Takahashi 11 * 2003-02-12: Support M32R by Takeo Takahashi
12 * This is based on arch/sh/boot/compressed/misc.c.
13 */ 12 */
14 13
15#include <linux/string.h>
16
17/* 14/*
18 * gzip declarations 15 * gzip declarations
19 */ 16 */
20
21#define OF(args) args
22#define STATIC static 17#define STATIC static
23 18
24#undef memset 19#undef memset
25#undef memcpy 20#undef memcpy
26#define memzero(s, n) memset ((s), 0, (n)) 21#define memzero(s, n) memset ((s), 0, (n))
27 22
28typedef unsigned char uch;
29typedef unsigned short ush;
30typedef unsigned long ulg;
31
32#define WSIZE 0x8000 /* Window size must be at least 32k, */
33 /* and a power of two */
34
35static uch *inbuf; /* input buffer */
36static uch window[WSIZE]; /* Sliding window buffer */
37
38static unsigned insize = 0; /* valid bytes in inbuf */
39static unsigned inptr = 0; /* index of next byte to be processed in inbuf */
40static unsigned outcnt = 0; /* bytes in output buffer */
41
42/* gzip flag byte */
43#define ASCII_FLAG 0x01 /* bit 0 set: file probably ASCII text */
44#define CONTINUATION 0x02 /* bit 1 set: continuation of multi-part gzip file */
45#define EXTRA_FIELD 0x04 /* bit 2 set: extra field present */
46#define ORIG_NAME 0x08 /* bit 3 set: original file name present */
47#define COMMENT 0x10 /* bit 4 set: file comment present */
48#define ENCRYPTED 0x20 /* bit 5 set: file is encrypted */
49#define RESERVED 0xC0 /* bit 6,7: reserved */
50
51#define get_byte() (inptr < insize ? inbuf[inptr++] : fill_inbuf())
52
53/* Diagnostic functions */
54#ifdef DEBUG
55# define Assert(cond,msg) {if(!(cond)) error(msg);}
56# define Trace(x) fprintf x
57# define Tracev(x) {if (verbose) fprintf x ;}
58# define Tracevv(x) {if (verbose>1) fprintf x ;}
59# define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
60# define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
61#else
62# define Assert(cond,msg)
63# define Trace(x)
64# define Tracev(x)
65# define Tracevv(x)
66# define Tracec(c,x)
67# define Tracecv(c,x)
68#endif
69
70static int fill_inbuf(void);
71static void flush_window(void);
72static void error(char *m); 23static void error(char *m);
73 24
74static unsigned char *input_data;
75static int input_len;
76
77static long bytes_out = 0;
78static uch *output_data;
79static unsigned long output_ptr = 0;
80
81#include "m32r_sio.c" 25#include "m32r_sio.c"
82 26
83static unsigned long free_mem_ptr; 27static unsigned long free_mem_ptr;
84static unsigned long free_mem_end_ptr; 28static unsigned long free_mem_end_ptr;
85 29
86#define HEAP_SIZE 0x10000 30#ifdef CONFIG_KERNEL_BZIP2
87 31static void *memset(void *s, int c, size_t n)
88#include "../../../../lib/inflate.c"
89
90void* memset(void* s, int c, size_t n)
91{ 32{
92 int i; 33 char *ss = s;
93 char *ss = (char*)s;
94 34
95 for (i=0;i<n;i++) ss[i] = c; 35 while (n--)
36 *ss++ = c;
96 return s; 37 return s;
97} 38}
39#endif
98 40
99void* memcpy(void* __dest, __const void* __src, 41#ifdef CONFIG_KERNEL_GZIP
100 size_t __n) 42#define BOOT_HEAP_SIZE 0x10000
101{ 43#include "../../../../lib/decompress_inflate.c"
102 int i; 44#endif
103 char *d = (char *)__dest, *s = (char *)__src;
104
105 for (i=0;i<__n;i++) d[i] = s[i];
106 return __dest;
107}
108
109/* ===========================================================================
110 * Fill the input buffer. This is called only when the buffer is empty
111 * and at least one byte is really needed.
112 */
113static int fill_inbuf(void)
114{
115 if (insize != 0) {
116 error("ran out of input data");
117 }
118
119 inbuf = input_data;
120 insize = input_len;
121 inptr = 1;
122 return inbuf[0];
123}
124 45
125/* =========================================================================== 46#ifdef CONFIG_KERNEL_BZIP2
126 * Write the output window window[0..outcnt-1] and update crc and bytes_out. 47#define BOOT_HEAP_SIZE 0x400000
127 * (Used for the decompressed data only.) 48#include "../../../../lib/decompress_bunzip2.c"
128 */ 49#endif
129static void flush_window(void)
130{
131 ulg c = crc; /* temporary variable */
132 unsigned n;
133 uch *in, *out, ch;
134 50
135 in = window; 51#ifdef CONFIG_KERNEL_LZMA
136 out = &output_data[output_ptr]; 52#define BOOT_HEAP_SIZE 0x10000
137 for (n = 0; n < outcnt; n++) { 53#include "../../../../lib/decompress_unlzma.c"
138 ch = *out++ = *in++; 54#endif
139 c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
140 }
141 crc = c;
142 bytes_out += (ulg)outcnt;
143 output_ptr += (ulg)outcnt;
144 outcnt = 0;
145}
146 55
147static void error(char *x) 56static void error(char *x)
148{ 57{
@@ -153,20 +62,20 @@ static void error(char *x)
153 while(1); /* Halt */ 62 while(1); /* Halt */
154} 63}
155 64
156/* return decompressed size */
157void 65void
158decompress_kernel(int mmu_on, unsigned char *zimage_data, 66decompress_kernel(int mmu_on, unsigned char *zimage_data,
159 unsigned int zimage_len, unsigned long heap) 67 unsigned int zimage_len, unsigned long heap)
160{ 68{
69 unsigned char *input_data = zimage_data;
70 int input_len = zimage_len;
71 unsigned char *output_data;
72
161 output_data = (unsigned char *)CONFIG_MEMORY_START + 0x2000 73 output_data = (unsigned char *)CONFIG_MEMORY_START + 0x2000
162 + (mmu_on ? 0x80000000 : 0); 74 + (mmu_on ? 0x80000000 : 0);
163 free_mem_ptr = heap; 75 free_mem_ptr = heap;
164 free_mem_end_ptr = free_mem_ptr + HEAP_SIZE; 76 free_mem_end_ptr = free_mem_ptr + BOOT_HEAP_SIZE;
165 input_data = zimage_data;
166 input_len = zimage_len;
167 77
168 makecrc(); 78 puts("\nDecompressing Linux... ");
169 puts("Uncompressing Linux... "); 79 decompress(input_data, input_len, NULL, NULL, output_data, NULL, error);
170 gunzip(); 80 puts("done.\nBooting the kernel.\n");
171 puts("Ok, booting the kernel.\n");
172} 81}
diff --git a/arch/m32r/kernel/smp.c b/arch/m32r/kernel/smp.c
index 8a88f1f0a3e2..31cef20b2996 100644
--- a/arch/m32r/kernel/smp.c
+++ b/arch/m32r/kernel/smp.c
@@ -806,7 +806,7 @@ unsigned long send_IPI_mask_phys(cpumask_t physid_mask, int ipi_num,
806 806
807 if (mask & ~physids_coerce(phys_cpu_present_map)) 807 if (mask & ~physids_coerce(phys_cpu_present_map))
808 BUG(); 808 BUG();
809 if (ipi_num >= NR_IPIS) 809 if (ipi_num >= NR_IPIS || ipi_num < 0)
810 BUG(); 810 BUG();
811 811
812 mask <<= IPI_SHIFT; 812 mask <<= IPI_SHIFT;
diff --git a/arch/m32r/kernel/time.c b/arch/m32r/kernel/time.c
index e7fee0f198d5..9cedcef11575 100644
--- a/arch/m32r/kernel/time.c
+++ b/arch/m32r/kernel/time.c
@@ -75,7 +75,7 @@ u32 arch_gettimeoffset(void)
75 count = 0; 75 count = 0;
76 76
77 count = (latch - count) * TICK_SIZE; 77 count = (latch - count) * TICK_SIZE;
78 elapsed_time = (count + latch / 2) / latch; 78 elapsed_time = DIV_ROUND_CLOSEST(count, latch);
79 /* NOTE: LATCH is equal to the "interval" value (= reload count). */ 79 /* NOTE: LATCH is equal to the "interval" value (= reload count). */
80 80
81#else /* CONFIG_SMP */ 81#else /* CONFIG_SMP */
@@ -93,7 +93,7 @@ u32 arch_gettimeoffset(void)
93 p_count = count; 93 p_count = count;
94 94
95 count = (latch - count) * TICK_SIZE; 95 count = (latch - count) * TICK_SIZE;
96 elapsed_time = (count + latch / 2) / latch; 96 elapsed_time = DIV_ROUND_CLOSEST(count, latch);
97 /* NOTE: LATCH is equal to the "interval" value (= reload count). */ 97 /* NOTE: LATCH is equal to the "interval" value (= reload count). */
98#endif /* CONFIG_SMP */ 98#endif /* CONFIG_SMP */
99#elif defined(CONFIG_CHIP_M32310) 99#elif defined(CONFIG_CHIP_M32310)
@@ -211,7 +211,7 @@ void __init time_init(void)
211 211
212 bus_clock = boot_cpu_data.bus_clock; 212 bus_clock = boot_cpu_data.bus_clock;
213 divide = boot_cpu_data.timer_divide; 213 divide = boot_cpu_data.timer_divide;
214 latch = (bus_clock/divide + HZ / 2) / HZ; 214 latch = DIV_ROUND_CLOSEST(bus_clock/divide, HZ);
215 215
216 printk("Timer start : latch = %ld\n", latch); 216 printk("Timer start : latch = %ld\n", latch);
217 217
diff --git a/arch/m32r/kernel/vmlinux.lds.S b/arch/m32r/kernel/vmlinux.lds.S
index 8ceb6181d805..7da94eaa082b 100644
--- a/arch/m32r/kernel/vmlinux.lds.S
+++ b/arch/m32r/kernel/vmlinux.lds.S
@@ -42,6 +42,8 @@ SECTIONS
42 _etext = .; /* End of text section */ 42 _etext = .; /* End of text section */
43 43
44 EXCEPTION_TABLE(16) 44 EXCEPTION_TABLE(16)
45 NOTES
46
45 RODATA 47 RODATA
46 RW_DATA_SECTION(32, PAGE_SIZE, THREAD_SIZE) 48 RW_DATA_SECTION(32, PAGE_SIZE, THREAD_SIZE)
47 _edata = .; /* End of data section */ 49 _edata = .; /* End of data section */
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
index 29dd8489ffec..ecdc19a299b2 100644
--- a/arch/m68k/Kconfig
+++ b/arch/m68k/Kconfig
@@ -561,7 +561,7 @@ config HPAPCI
561 561
562config MVME147_SCC 562config MVME147_SCC
563 bool "SCC support for MVME147 serial ports" 563 bool "SCC support for MVME147 serial ports"
564 depends on MVME147 564 depends on MVME147 && BROKEN
565 help 565 help
566 This is the driver for the serial ports on the Motorola MVME147 566 This is the driver for the serial ports on the Motorola MVME147
567 boards. Everyone using one of these boards should say Y here. 567 boards. Everyone using one of these boards should say Y here.
@@ -576,14 +576,14 @@ config SERIAL167
576 576
577config MVME162_SCC 577config MVME162_SCC
578 bool "SCC support for MVME162 serial ports" 578 bool "SCC support for MVME162 serial ports"
579 depends on MVME16x 579 depends on MVME16x && BROKEN
580 help 580 help
581 This is the driver for the serial ports on the Motorola MVME162 and 581 This is the driver for the serial ports on the Motorola MVME162 and
582 172 boards. Everyone using one of these boards should say Y here. 582 172 boards. Everyone using one of these boards should say Y here.
583 583
584config BVME6000_SCC 584config BVME6000_SCC
585 bool "SCC support for BVME6000 serial ports" 585 bool "SCC support for BVME6000 serial ports"
586 depends on BVME6000 586 depends on BVME6000 && BROKEN
587 help 587 help
588 This is the driver for the serial ports on the BVME4000 and BVME6000 588 This is the driver for the serial ports on the BVME4000 and BVME6000
589 boards from BVM Ltd. Everyone using one of these boards should say 589 boards from BVM Ltd. Everyone using one of these boards should say
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 705a7a9170f3..fd7620f025fa 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1,6 +1,7 @@
1config MIPS 1config MIPS
2 bool 2 bool
3 default y 3 default y
4 select HAVE_GENERIC_DMA_COHERENT
4 select HAVE_IDE 5 select HAVE_IDE
5 select HAVE_OPROFILE 6 select HAVE_OPROFILE
6 select HAVE_ARCH_KGDB 7 select HAVE_ARCH_KGDB
@@ -357,7 +358,14 @@ config SGI_IP22
357 select SWAP_IO_SPACE 358 select SWAP_IO_SPACE
358 select SYS_HAS_CPU_R4X00 359 select SYS_HAS_CPU_R4X00
359 select SYS_HAS_CPU_R5000 360 select SYS_HAS_CPU_R5000
360 select SYS_HAS_EARLY_PRINTK 361 #
362 # Disable EARLY_PRINTK for now since it leads to overwritten prom
363 # memory during early boot on some machines.
364 #
365 # See http://www.linux-mips.org/cgi-bin/mesg.cgi?a=linux-mips&i=20091119164009.GA15038%40deprecation.cyrius.com
366 # for a more details discussion
367 #
368 # select SYS_HAS_EARLY_PRINTK
361 select SYS_SUPPORTS_32BIT_KERNEL 369 select SYS_SUPPORTS_32BIT_KERNEL
362 select SYS_SUPPORTS_64BIT_KERNEL 370 select SYS_SUPPORTS_64BIT_KERNEL
363 select SYS_SUPPORTS_BIG_ENDIAN 371 select SYS_SUPPORTS_BIG_ENDIAN
@@ -409,7 +417,14 @@ config SGI_IP28
409 select SGI_HAS_ZILOG 417 select SGI_HAS_ZILOG
410 select SWAP_IO_SPACE 418 select SWAP_IO_SPACE
411 select SYS_HAS_CPU_R10000 419 select SYS_HAS_CPU_R10000
412 select SYS_HAS_EARLY_PRINTK 420 #
421 # Disable EARLY_PRINTK for now since it leads to overwritten prom
422 # memory during early boot on some machines.
423 #
424 # See http://www.linux-mips.org/cgi-bin/mesg.cgi?a=linux-mips&i=20091119164009.GA15038%40deprecation.cyrius.com
425 # for a more details discussion
426 #
427 # select SYS_HAS_EARLY_PRINTK
413 select SYS_SUPPORTS_64BIT_KERNEL 428 select SYS_SUPPORTS_64BIT_KERNEL
414 select SYS_SUPPORTS_BIG_ENDIAN 429 select SYS_SUPPORTS_BIG_ENDIAN
415 help 430 help
@@ -1012,9 +1027,9 @@ config BOOT_ELF32
1012 1027
1013config MIPS_L1_CACHE_SHIFT 1028config MIPS_L1_CACHE_SHIFT
1014 int 1029 int
1015 default "4" if MACH_DECSTATION || MIKROTIK_RB532 1030 default "4" if MACH_DECSTATION || MIKROTIK_RB532 || PMC_MSP4200_EVAL
1031 default "6" if MIPS_CPU_SCACHE
1016 default "7" if SGI_IP22 || SGI_IP27 || SGI_IP28 || SNI_RM || CPU_CAVIUM_OCTEON 1032 default "7" if SGI_IP22 || SGI_IP27 || SGI_IP28 || SNI_RM || CPU_CAVIUM_OCTEON
1017 default "4" if PMC_MSP4200_EVAL
1018 default "5" 1033 default "5"
1019 1034
1020config HAVE_STD_PC_SERIAL_PORT 1035config HAVE_STD_PC_SERIAL_PORT
@@ -1438,6 +1453,7 @@ choice
1438 1453
1439config PAGE_SIZE_4KB 1454config PAGE_SIZE_4KB
1440 bool "4kB" 1455 bool "4kB"
1456 depends on !CPU_LOONGSON2
1441 help 1457 help
1442 This option select the standard 4kB Linux page size. On some 1458 This option select the standard 4kB Linux page size. On some
1443 R3000-family processors this is the only available page size. Using 1459 R3000-family processors this is the only available page size. Using
@@ -1762,7 +1778,7 @@ config SYS_SUPPORTS_SMARTMIPS
1762 1778
1763config ARCH_FLATMEM_ENABLE 1779config ARCH_FLATMEM_ENABLE
1764 def_bool y 1780 def_bool y
1765 depends on !NUMA 1781 depends on !NUMA && !CPU_LOONGSON2
1766 1782
1767config ARCH_DISCONTIGMEM_ENABLE 1783config ARCH_DISCONTIGMEM_ENABLE
1768 bool 1784 bool
diff --git a/arch/mips/alchemy/common/irq.c b/arch/mips/alchemy/common/irq.c
index c88c821b4c36..d670928afcfd 100644
--- a/arch/mips/alchemy/common/irq.c
+++ b/arch/mips/alchemy/common/irq.c
@@ -354,6 +354,28 @@ static void au1x_ic1_ack(unsigned int irq_nr)
354 au_sync(); 354 au_sync();
355} 355}
356 356
357static void au1x_ic0_maskack(unsigned int irq_nr)
358{
359 unsigned int bit = irq_nr - AU1000_INTC0_INT_BASE;
360
361 au_writel(1 << bit, IC0_WAKECLR);
362 au_writel(1 << bit, IC0_MASKCLR);
363 au_writel(1 << bit, IC0_RISINGCLR);
364 au_writel(1 << bit, IC0_FALLINGCLR);
365 au_sync();
366}
367
368static void au1x_ic1_maskack(unsigned int irq_nr)
369{
370 unsigned int bit = irq_nr - AU1000_INTC1_INT_BASE;
371
372 au_writel(1 << bit, IC1_WAKECLR);
373 au_writel(1 << bit, IC1_MASKCLR);
374 au_writel(1 << bit, IC1_RISINGCLR);
375 au_writel(1 << bit, IC1_FALLINGCLR);
376 au_sync();
377}
378
357static int au1x_ic1_setwake(unsigned int irq, unsigned int on) 379static int au1x_ic1_setwake(unsigned int irq, unsigned int on)
358{ 380{
359 unsigned int bit = irq - AU1000_INTC1_INT_BASE; 381 unsigned int bit = irq - AU1000_INTC1_INT_BASE;
@@ -379,25 +401,21 @@ static int au1x_ic1_setwake(unsigned int irq, unsigned int on)
379/* 401/*
380 * irq_chips for both ICs; this way the mask handlers can be 402 * irq_chips for both ICs; this way the mask handlers can be
381 * as short as possible. 403 * as short as possible.
382 *
383 * NOTE: the ->ack() callback is used by the handle_edge_irq
384 * flowhandler only, the ->mask_ack() one by handle_level_irq,
385 * so no need for an irq_chip for each type of irq (level/edge).
386 */ 404 */
387static struct irq_chip au1x_ic0_chip = { 405static struct irq_chip au1x_ic0_chip = {
388 .name = "Alchemy-IC0", 406 .name = "Alchemy-IC0",
389 .ack = au1x_ic0_ack, /* edge */ 407 .ack = au1x_ic0_ack,
390 .mask = au1x_ic0_mask, 408 .mask = au1x_ic0_mask,
391 .mask_ack = au1x_ic0_mask, /* level */ 409 .mask_ack = au1x_ic0_maskack,
392 .unmask = au1x_ic0_unmask, 410 .unmask = au1x_ic0_unmask,
393 .set_type = au1x_ic_settype, 411 .set_type = au1x_ic_settype,
394}; 412};
395 413
396static struct irq_chip au1x_ic1_chip = { 414static struct irq_chip au1x_ic1_chip = {
397 .name = "Alchemy-IC1", 415 .name = "Alchemy-IC1",
398 .ack = au1x_ic1_ack, /* edge */ 416 .ack = au1x_ic1_ack,
399 .mask = au1x_ic1_mask, 417 .mask = au1x_ic1_mask,
400 .mask_ack = au1x_ic1_mask, /* level */ 418 .mask_ack = au1x_ic1_maskack,
401 .unmask = au1x_ic1_unmask, 419 .unmask = au1x_ic1_unmask,
402 .set_type = au1x_ic_settype, 420 .set_type = au1x_ic_settype,
403 .set_wake = au1x_ic1_setwake, 421 .set_wake = au1x_ic1_setwake,
diff --git a/arch/mips/alchemy/mtx-1/board_setup.c b/arch/mips/alchemy/mtx-1/board_setup.c
index cc32c69a74ad..45b61c9b82b9 100644
--- a/arch/mips/alchemy/mtx-1/board_setup.c
+++ b/arch/mips/alchemy/mtx-1/board_setup.c
@@ -69,6 +69,7 @@ void __init board_setup(void)
69#else 69#else
70 au_writel(0xf, Au1500_PCI_CFG); 70 au_writel(0xf, Au1500_PCI_CFG);
71#endif 71#endif
72 board_pci_idsel = mtx1_pci_idsel;
72#endif 73#endif
73 74
74 /* Initialize sys_pinfunc */ 75 /* Initialize sys_pinfunc */
@@ -85,8 +86,6 @@ void __init board_setup(void)
85 alchemy_gpio_direction_output(211, 1); /* green on */ 86 alchemy_gpio_direction_output(211, 1); /* green on */
86 alchemy_gpio_direction_output(212, 0); /* red off */ 87 alchemy_gpio_direction_output(212, 0); /* red off */
87 88
88 board_pci_idsel = mtx1_pci_idsel;
89
90 printk(KERN_INFO "4G Systems MTX-1 Board\n"); 89 printk(KERN_INFO "4G Systems MTX-1 Board\n");
91} 90}
92 91
diff --git a/arch/mips/ar7/platform.c b/arch/mips/ar7/platform.c
index e2278c04459d..835f3f0319ca 100644
--- a/arch/mips/ar7/platform.c
+++ b/arch/mips/ar7/platform.c
@@ -503,6 +503,7 @@ static int __init ar7_register_devices(void)
503{ 503{
504 u16 chip_id; 504 u16 chip_id;
505 int res; 505 int res;
506 u32 *bootcr, val;
506#ifdef CONFIG_SERIAL_8250 507#ifdef CONFIG_SERIAL_8250
507 static struct uart_port uart_port[2]; 508 static struct uart_port uart_port[2];
508 509
@@ -595,7 +596,13 @@ static int __init ar7_register_devices(void)
595 596
596 ar7_wdt_res.end = ar7_wdt_res.start + 0x20; 597 ar7_wdt_res.end = ar7_wdt_res.start + 0x20;
597 598
598 res = platform_device_register(&ar7_wdt); 599 bootcr = (u32 *)ioremap_nocache(AR7_REGS_DCL, 4);
600 val = *bootcr;
601 iounmap(bootcr);
602
603 /* Register watchdog only if enabled in hardware */
604 if (val & AR7_WDT_HW_ENA)
605 res = platform_device_register(&ar7_wdt);
599 606
600 return res; 607 return res;
601} 608}
diff --git a/arch/mips/bcm47xx/prom.c b/arch/mips/bcm47xx/prom.c
index 079e33d52783..fb284c3b2cff 100644
--- a/arch/mips/bcm47xx/prom.c
+++ b/arch/mips/bcm47xx/prom.c
@@ -100,7 +100,7 @@ static __init void prom_init_console(void)
100 100
101static __init void prom_init_cmdline(void) 101static __init void prom_init_cmdline(void)
102{ 102{
103 char buf[CL_SIZE]; 103 static char buf[CL_SIZE] __initdata;
104 104
105 /* Get the kernel command line from CFE */ 105 /* Get the kernel command line from CFE */
106 if (cfe_getenv("LINUX_CMDLINE", buf, CL_SIZE) >= 0) { 106 if (cfe_getenv("LINUX_CMDLINE", buf, CL_SIZE) >= 0) {
diff --git a/arch/mips/bcm63xx/Makefile b/arch/mips/bcm63xx/Makefile
index c146d1ededed..00064b660809 100644
--- a/arch/mips/bcm63xx/Makefile
+++ b/arch/mips/bcm63xx/Makefile
@@ -1,5 +1,5 @@
1obj-y += clk.o cpu.o cs.o gpio.o irq.o prom.o setup.o timer.o \ 1obj-y += clk.o cpu.o cs.o gpio.o irq.o prom.o setup.o timer.o \
2 dev-dsp.o dev-enet.o dev-pcmcia.o dev-uart.o 2 dev-dsp.o dev-enet.o dev-pcmcia.o dev-uart.o dev-wdt.o
3obj-$(CONFIG_EARLY_PRINTK) += early_printk.o 3obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
4 4
5obj-y += boards/ 5obj-y += boards/
diff --git a/arch/mips/bcm63xx/boards/board_bcm963xx.c b/arch/mips/bcm63xx/boards/board_bcm963xx.c
index 78e155d21be6..05a35cf5963d 100644
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -24,7 +24,6 @@
24#include <bcm63xx_dev_enet.h> 24#include <bcm63xx_dev_enet.h>
25#include <bcm63xx_dev_dsp.h> 25#include <bcm63xx_dev_dsp.h>
26#include <bcm63xx_dev_pcmcia.h> 26#include <bcm63xx_dev_pcmcia.h>
27#include <bcm63xx_dev_uart.h>
28#include <board_bcm963xx.h> 27#include <board_bcm963xx.h>
29 28
30#define PFX "board_bcm963xx: " 29#define PFX "board_bcm963xx: "
@@ -794,8 +793,6 @@ int __init board_register_devices(void)
794{ 793{
795 u32 val; 794 u32 val;
796 795
797 bcm63xx_uart_register();
798
799 if (board.has_pccard) 796 if (board.has_pccard)
800 bcm63xx_pcmcia_register(); 797 bcm63xx_pcmcia_register();
801 798
diff --git a/arch/mips/bcm63xx/cpu.c b/arch/mips/bcm63xx/cpu.c
index 6dc43f0483e8..70378bb5e3f9 100644
--- a/arch/mips/bcm63xx/cpu.c
+++ b/arch/mips/bcm63xx/cpu.c
@@ -10,6 +10,7 @@
10#include <linux/kernel.h> 10#include <linux/kernel.h>
11#include <linux/module.h> 11#include <linux/module.h>
12#include <linux/cpu.h> 12#include <linux/cpu.h>
13#include <asm/cpu-info.h>
13#include <bcm63xx_cpu.h> 14#include <bcm63xx_cpu.h>
14#include <bcm63xx_regs.h> 15#include <bcm63xx_regs.h>
15#include <bcm63xx_io.h> 16#include <bcm63xx_io.h>
@@ -284,6 +285,7 @@ void __init bcm63xx_cpu_init(void)
284{ 285{
285 unsigned int tmp, expected_cpu_id; 286 unsigned int tmp, expected_cpu_id;
286 struct cpuinfo_mips *c = &current_cpu_data; 287 struct cpuinfo_mips *c = &current_cpu_data;
288 unsigned int cpu = smp_processor_id();
287 289
288 /* soc registers location depends on cpu type */ 290 /* soc registers location depends on cpu type */
289 expected_cpu_id = 0; 291 expected_cpu_id = 0;
@@ -293,6 +295,7 @@ void __init bcm63xx_cpu_init(void)
293 * BCM6338 as the same PrId as BCM3302 see arch/mips/kernel/cpu-probe.c 295 * BCM6338 as the same PrId as BCM3302 see arch/mips/kernel/cpu-probe.c
294 */ 296 */
295 case CPU_BCM3302: 297 case CPU_BCM3302:
298 __cpu_name[cpu] = "Broadcom BCM6338";
296 expected_cpu_id = BCM6338_CPU_ID; 299 expected_cpu_id = BCM6338_CPU_ID;
297 bcm63xx_regs_base = bcm96338_regs_base; 300 bcm63xx_regs_base = bcm96338_regs_base;
298 bcm63xx_irqs = bcm96338_irqs; 301 bcm63xx_irqs = bcm96338_irqs;
diff --git a/arch/mips/bcm63xx/dev-uart.c b/arch/mips/bcm63xx/dev-uart.c
index 5f3d89c4a988..b0519461ad9b 100644
--- a/arch/mips/bcm63xx/dev-uart.c
+++ b/arch/mips/bcm63xx/dev-uart.c
@@ -10,7 +10,6 @@
10#include <linux/kernel.h> 10#include <linux/kernel.h>
11#include <linux/platform_device.h> 11#include <linux/platform_device.h>
12#include <bcm63xx_cpu.h> 12#include <bcm63xx_cpu.h>
13#include <bcm63xx_dev_uart.h>
14 13
15static struct resource uart_resources[] = { 14static struct resource uart_resources[] = {
16 { 15 {
@@ -39,3 +38,4 @@ int __init bcm63xx_uart_register(void)
39 uart_resources[1].start = bcm63xx_get_irq_number(IRQ_UART0); 38 uart_resources[1].start = bcm63xx_get_irq_number(IRQ_UART0);
40 return platform_device_register(&bcm63xx_uart_device); 39 return platform_device_register(&bcm63xx_uart_device);
41} 40}
41arch_initcall(bcm63xx_uart_register);
diff --git a/arch/mips/bcm63xx/dev-wdt.c b/arch/mips/bcm63xx/dev-wdt.c
new file mode 100644
index 000000000000..3e6c716a4c11
--- /dev/null
+++ b/arch/mips/bcm63xx/dev-wdt.c
@@ -0,0 +1,37 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 2008 Florian Fainelli <florian@openwrt.org>
7 */
8
9#include <linux/init.h>
10#include <linux/kernel.h>
11#include <linux/platform_device.h>
12#include <bcm63xx_cpu.h>
13
14static struct resource wdt_resources[] = {
15 {
16 .start = -1, /* filled at runtime */
17 .end = -1, /* filled at runtime */
18 .flags = IORESOURCE_MEM,
19 },
20};
21
22static struct platform_device bcm63xx_wdt_device = {
23 .name = "bcm63xx-wdt",
24 .id = 0,
25 .num_resources = ARRAY_SIZE(wdt_resources),
26 .resource = wdt_resources,
27};
28
29int __init bcm63xx_wdt_register(void)
30{
31 wdt_resources[0].start = bcm63xx_regset_address(RSET_WDT);
32 wdt_resources[0].end = wdt_resources[0].start;
33 wdt_resources[0].end += RSET_WDT_SIZE - 1;
34
35 return platform_device_register(&bcm63xx_wdt_device);
36}
37arch_initcall(bcm63xx_wdt_register);
diff --git a/arch/mips/bcm63xx/setup.c b/arch/mips/bcm63xx/setup.c
index b18a0ca926fa..d0056598fbfc 100644
--- a/arch/mips/bcm63xx/setup.c
+++ b/arch/mips/bcm63xx/setup.c
@@ -75,7 +75,9 @@ void bcm63xx_machine_reboot(void)
75 bcm6348_a1_reboot(); 75 bcm6348_a1_reboot();
76 76
77 printk(KERN_INFO "triggering watchdog soft-reset...\n"); 77 printk(KERN_INFO "triggering watchdog soft-reset...\n");
78 bcm_perf_writel(SYS_PLL_SOFT_RESET, PERF_SYS_PLL_CTL_REG); 78 reg = bcm_perf_readl(PERF_SYS_PLL_CTL_REG);
79 reg |= SYS_PLL_SOFT_RESET;
80 bcm_perf_writel(reg, PERF_SYS_PLL_CTL_REG);
79 while (1) 81 while (1)
80 ; 82 ;
81} 83}
diff --git a/arch/mips/cavium-octeon/octeon-irq.c b/arch/mips/cavium-octeon/octeon-irq.c
index 384f1842bfb1..6f2acf09328d 100644
--- a/arch/mips/cavium-octeon/octeon-irq.c
+++ b/arch/mips/cavium-octeon/octeon-irq.c
@@ -17,6 +17,15 @@ DEFINE_RWLOCK(octeon_irq_ciu0_rwlock);
17DEFINE_RWLOCK(octeon_irq_ciu1_rwlock); 17DEFINE_RWLOCK(octeon_irq_ciu1_rwlock);
18DEFINE_SPINLOCK(octeon_irq_msi_lock); 18DEFINE_SPINLOCK(octeon_irq_msi_lock);
19 19
20static int octeon_coreid_for_cpu(int cpu)
21{
22#ifdef CONFIG_SMP
23 return cpu_logical_map(cpu);
24#else
25 return cvmx_get_core_num();
26#endif
27}
28
20static void octeon_irq_core_ack(unsigned int irq) 29static void octeon_irq_core_ack(unsigned int irq)
21{ 30{
22 unsigned int bit = irq - OCTEON_IRQ_SW0; 31 unsigned int bit = irq - OCTEON_IRQ_SW0;
@@ -152,11 +161,10 @@ static void octeon_irq_ciu0_disable(unsigned int irq)
152 int bit = irq - OCTEON_IRQ_WORKQ0; /* Bit 0-63 of EN0 */ 161 int bit = irq - OCTEON_IRQ_WORKQ0; /* Bit 0-63 of EN0 */
153 unsigned long flags; 162 unsigned long flags;
154 uint64_t en0; 163 uint64_t en0;
155#ifdef CONFIG_SMP
156 int cpu; 164 int cpu;
157 write_lock_irqsave(&octeon_irq_ciu0_rwlock, flags); 165 write_lock_irqsave(&octeon_irq_ciu0_rwlock, flags);
158 for_each_online_cpu(cpu) { 166 for_each_online_cpu(cpu) {
159 int coreid = cpu_logical_map(cpu); 167 int coreid = octeon_coreid_for_cpu(cpu);
160 en0 = cvmx_read_csr(CVMX_CIU_INTX_EN0(coreid * 2)); 168 en0 = cvmx_read_csr(CVMX_CIU_INTX_EN0(coreid * 2));
161 en0 &= ~(1ull << bit); 169 en0 &= ~(1ull << bit);
162 cvmx_write_csr(CVMX_CIU_INTX_EN0(coreid * 2), en0); 170 cvmx_write_csr(CVMX_CIU_INTX_EN0(coreid * 2), en0);
@@ -167,26 +175,57 @@ static void octeon_irq_ciu0_disable(unsigned int irq)
167 */ 175 */
168 cvmx_read_csr(CVMX_CIU_INTX_EN0(cvmx_get_core_num() * 2)); 176 cvmx_read_csr(CVMX_CIU_INTX_EN0(cvmx_get_core_num() * 2));
169 write_unlock_irqrestore(&octeon_irq_ciu0_rwlock, flags); 177 write_unlock_irqrestore(&octeon_irq_ciu0_rwlock, flags);
170#else 178}
171 int coreid = cvmx_get_core_num(); 179
172 local_irq_save(flags); 180/*
173 en0 = cvmx_read_csr(CVMX_CIU_INTX_EN0(coreid * 2)); 181 * Enable the irq on the current core for chips that have the EN*_W1{S,C}
174 en0 &= ~(1ull << bit); 182 * registers.
175 cvmx_write_csr(CVMX_CIU_INTX_EN0(coreid * 2), en0); 183 */
176 cvmx_read_csr(CVMX_CIU_INTX_EN0(coreid * 2)); 184static void octeon_irq_ciu0_enable_v2(unsigned int irq)
177 local_irq_restore(flags); 185{
178#endif 186 int index = cvmx_get_core_num() * 2;
187 u64 mask = 1ull << (irq - OCTEON_IRQ_WORKQ0);
188
189 cvmx_write_csr(CVMX_CIU_INTX_EN0_W1S(index), mask);
190}
191
192/*
193 * Disable the irq on the current core for chips that have the EN*_W1{S,C}
194 * registers.
195 */
196static void octeon_irq_ciu0_disable_v2(unsigned int irq)
197{
198 int index = cvmx_get_core_num() * 2;
199 u64 mask = 1ull << (irq - OCTEON_IRQ_WORKQ0);
200
201 cvmx_write_csr(CVMX_CIU_INTX_EN0_W1C(index), mask);
202}
203
204/*
205 * Disable the irq on the all cores for chips that have the EN*_W1{S,C}
206 * registers.
207 */
208static void octeon_irq_ciu0_disable_all_v2(unsigned int irq)
209{
210 u64 mask = 1ull << (irq - OCTEON_IRQ_WORKQ0);
211 int index;
212 int cpu;
213 for_each_online_cpu(cpu) {
214 index = octeon_coreid_for_cpu(cpu) * 2;
215 cvmx_write_csr(CVMX_CIU_INTX_EN0_W1C(index), mask);
216 }
179} 217}
180 218
181#ifdef CONFIG_SMP 219#ifdef CONFIG_SMP
182static int octeon_irq_ciu0_set_affinity(unsigned int irq, const struct cpumask *dest) 220static int octeon_irq_ciu0_set_affinity(unsigned int irq, const struct cpumask *dest)
183{ 221{
184 int cpu; 222 int cpu;
223 unsigned long flags;
185 int bit = irq - OCTEON_IRQ_WORKQ0; /* Bit 0-63 of EN0 */ 224 int bit = irq - OCTEON_IRQ_WORKQ0; /* Bit 0-63 of EN0 */
186 225
187 write_lock(&octeon_irq_ciu0_rwlock); 226 write_lock_irqsave(&octeon_irq_ciu0_rwlock, flags);
188 for_each_online_cpu(cpu) { 227 for_each_online_cpu(cpu) {
189 int coreid = cpu_logical_map(cpu); 228 int coreid = octeon_coreid_for_cpu(cpu);
190 uint64_t en0 = 229 uint64_t en0 =
191 cvmx_read_csr(CVMX_CIU_INTX_EN0(coreid * 2)); 230 cvmx_read_csr(CVMX_CIU_INTX_EN0(coreid * 2));
192 if (cpumask_test_cpu(cpu, dest)) 231 if (cpumask_test_cpu(cpu, dest))
@@ -200,11 +239,45 @@ static int octeon_irq_ciu0_set_affinity(unsigned int irq, const struct cpumask *
200 * of them are done. 239 * of them are done.
201 */ 240 */
202 cvmx_read_csr(CVMX_CIU_INTX_EN0(cvmx_get_core_num() * 2)); 241 cvmx_read_csr(CVMX_CIU_INTX_EN0(cvmx_get_core_num() * 2));
203 write_unlock(&octeon_irq_ciu0_rwlock); 242 write_unlock_irqrestore(&octeon_irq_ciu0_rwlock, flags);
204 243
205 return 0; 244 return 0;
206} 245}
246
247/*
248 * Set affinity for the irq for chips that have the EN*_W1{S,C}
249 * registers.
250 */
251static int octeon_irq_ciu0_set_affinity_v2(unsigned int irq,
252 const struct cpumask *dest)
253{
254 int cpu;
255 int index;
256 u64 mask = 1ull << (irq - OCTEON_IRQ_WORKQ0);
257 for_each_online_cpu(cpu) {
258 index = octeon_coreid_for_cpu(cpu) * 2;
259 if (cpumask_test_cpu(cpu, dest))
260 cvmx_write_csr(CVMX_CIU_INTX_EN0_W1S(index), mask);
261 else
262 cvmx_write_csr(CVMX_CIU_INTX_EN0_W1C(index), mask);
263 }
264 return 0;
265}
266#endif
267
268/*
269 * Newer octeon chips have support for lockless CIU operation.
270 */
271static struct irq_chip octeon_irq_chip_ciu0_v2 = {
272 .name = "CIU0",
273 .enable = octeon_irq_ciu0_enable_v2,
274 .disable = octeon_irq_ciu0_disable_all_v2,
275 .ack = octeon_irq_ciu0_disable_v2,
276 .eoi = octeon_irq_ciu0_enable_v2,
277#ifdef CONFIG_SMP
278 .set_affinity = octeon_irq_ciu0_set_affinity_v2,
207#endif 279#endif
280};
208 281
209static struct irq_chip octeon_irq_chip_ciu0 = { 282static struct irq_chip octeon_irq_chip_ciu0 = {
210 .name = "CIU0", 283 .name = "CIU0",
@@ -269,11 +342,10 @@ static void octeon_irq_ciu1_disable(unsigned int irq)
269 int bit = irq - OCTEON_IRQ_WDOG0; /* Bit 0-63 of EN1 */ 342 int bit = irq - OCTEON_IRQ_WDOG0; /* Bit 0-63 of EN1 */
270 unsigned long flags; 343 unsigned long flags;
271 uint64_t en1; 344 uint64_t en1;
272#ifdef CONFIG_SMP
273 int cpu; 345 int cpu;
274 write_lock_irqsave(&octeon_irq_ciu1_rwlock, flags); 346 write_lock_irqsave(&octeon_irq_ciu1_rwlock, flags);
275 for_each_online_cpu(cpu) { 347 for_each_online_cpu(cpu) {
276 int coreid = cpu_logical_map(cpu); 348 int coreid = octeon_coreid_for_cpu(cpu);
277 en1 = cvmx_read_csr(CVMX_CIU_INTX_EN1(coreid * 2 + 1)); 349 en1 = cvmx_read_csr(CVMX_CIU_INTX_EN1(coreid * 2 + 1));
278 en1 &= ~(1ull << bit); 350 en1 &= ~(1ull << bit);
279 cvmx_write_csr(CVMX_CIU_INTX_EN1(coreid * 2 + 1), en1); 351 cvmx_write_csr(CVMX_CIU_INTX_EN1(coreid * 2 + 1), en1);
@@ -284,26 +356,58 @@ static void octeon_irq_ciu1_disable(unsigned int irq)
284 */ 356 */
285 cvmx_read_csr(CVMX_CIU_INTX_EN1(cvmx_get_core_num() * 2 + 1)); 357 cvmx_read_csr(CVMX_CIU_INTX_EN1(cvmx_get_core_num() * 2 + 1));
286 write_unlock_irqrestore(&octeon_irq_ciu1_rwlock, flags); 358 write_unlock_irqrestore(&octeon_irq_ciu1_rwlock, flags);
287#else 359}
288 int coreid = cvmx_get_core_num(); 360
289 local_irq_save(flags); 361/*
290 en1 = cvmx_read_csr(CVMX_CIU_INTX_EN1(coreid * 2 + 1)); 362 * Enable the irq on the current core for chips that have the EN*_W1{S,C}
291 en1 &= ~(1ull << bit); 363 * registers.
292 cvmx_write_csr(CVMX_CIU_INTX_EN1(coreid * 2 + 1), en1); 364 */
293 cvmx_read_csr(CVMX_CIU_INTX_EN1(coreid * 2 + 1)); 365static void octeon_irq_ciu1_enable_v2(unsigned int irq)
294 local_irq_restore(flags); 366{
295#endif 367 int index = cvmx_get_core_num() * 2 + 1;
368 u64 mask = 1ull << (irq - OCTEON_IRQ_WDOG0);
369
370 cvmx_write_csr(CVMX_CIU_INTX_EN1_W1S(index), mask);
371}
372
373/*
374 * Disable the irq on the current core for chips that have the EN*_W1{S,C}
375 * registers.
376 */
377static void octeon_irq_ciu1_disable_v2(unsigned int irq)
378{
379 int index = cvmx_get_core_num() * 2 + 1;
380 u64 mask = 1ull << (irq - OCTEON_IRQ_WDOG0);
381
382 cvmx_write_csr(CVMX_CIU_INTX_EN1_W1C(index), mask);
383}
384
385/*
386 * Disable the irq on the all cores for chips that have the EN*_W1{S,C}
387 * registers.
388 */
389static void octeon_irq_ciu1_disable_all_v2(unsigned int irq)
390{
391 u64 mask = 1ull << (irq - OCTEON_IRQ_WDOG0);
392 int index;
393 int cpu;
394 for_each_online_cpu(cpu) {
395 index = octeon_coreid_for_cpu(cpu) * 2 + 1;
396 cvmx_write_csr(CVMX_CIU_INTX_EN1_W1C(index), mask);
397 }
296} 398}
297 399
298#ifdef CONFIG_SMP 400#ifdef CONFIG_SMP
299static int octeon_irq_ciu1_set_affinity(unsigned int irq, const struct cpumask *dest) 401static int octeon_irq_ciu1_set_affinity(unsigned int irq,
402 const struct cpumask *dest)
300{ 403{
301 int cpu; 404 int cpu;
405 unsigned long flags;
302 int bit = irq - OCTEON_IRQ_WDOG0; /* Bit 0-63 of EN1 */ 406 int bit = irq - OCTEON_IRQ_WDOG0; /* Bit 0-63 of EN1 */
303 407
304 write_lock(&octeon_irq_ciu1_rwlock); 408 write_lock_irqsave(&octeon_irq_ciu1_rwlock, flags);
305 for_each_online_cpu(cpu) { 409 for_each_online_cpu(cpu) {
306 int coreid = cpu_logical_map(cpu); 410 int coreid = octeon_coreid_for_cpu(cpu);
307 uint64_t en1 = 411 uint64_t en1 =
308 cvmx_read_csr(CVMX_CIU_INTX_EN1 412 cvmx_read_csr(CVMX_CIU_INTX_EN1
309 (coreid * 2 + 1)); 413 (coreid * 2 + 1));
@@ -318,12 +422,46 @@ static int octeon_irq_ciu1_set_affinity(unsigned int irq, const struct cpumask *
318 * of them are done. 422 * of them are done.
319 */ 423 */
320 cvmx_read_csr(CVMX_CIU_INTX_EN1(cvmx_get_core_num() * 2 + 1)); 424 cvmx_read_csr(CVMX_CIU_INTX_EN1(cvmx_get_core_num() * 2 + 1));
321 write_unlock(&octeon_irq_ciu1_rwlock); 425 write_unlock_irqrestore(&octeon_irq_ciu1_rwlock, flags);
426
427 return 0;
428}
322 429
430/*
431 * Set affinity for the irq for chips that have the EN*_W1{S,C}
432 * registers.
433 */
434static int octeon_irq_ciu1_set_affinity_v2(unsigned int irq,
435 const struct cpumask *dest)
436{
437 int cpu;
438 int index;
439 u64 mask = 1ull << (irq - OCTEON_IRQ_WDOG0);
440 for_each_online_cpu(cpu) {
441 index = octeon_coreid_for_cpu(cpu) * 2 + 1;
442 if (cpumask_test_cpu(cpu, dest))
443 cvmx_write_csr(CVMX_CIU_INTX_EN1_W1S(index), mask);
444 else
445 cvmx_write_csr(CVMX_CIU_INTX_EN1_W1C(index), mask);
446 }
323 return 0; 447 return 0;
324} 448}
325#endif 449#endif
326 450
451/*
452 * Newer octeon chips have support for lockless CIU operation.
453 */
454static struct irq_chip octeon_irq_chip_ciu1_v2 = {
455 .name = "CIU0",
456 .enable = octeon_irq_ciu1_enable_v2,
457 .disable = octeon_irq_ciu1_disable_all_v2,
458 .ack = octeon_irq_ciu1_disable_v2,
459 .eoi = octeon_irq_ciu1_enable_v2,
460#ifdef CONFIG_SMP
461 .set_affinity = octeon_irq_ciu1_set_affinity_v2,
462#endif
463};
464
327static struct irq_chip octeon_irq_chip_ciu1 = { 465static struct irq_chip octeon_irq_chip_ciu1 = {
328 .name = "CIU1", 466 .name = "CIU1",
329 .enable = octeon_irq_ciu1_enable, 467 .enable = octeon_irq_ciu1_enable,
@@ -420,6 +558,8 @@ static struct irq_chip octeon_irq_chip_msi = {
420void __init arch_init_irq(void) 558void __init arch_init_irq(void)
421{ 559{
422 int irq; 560 int irq;
561 struct irq_chip *chip0;
562 struct irq_chip *chip1;
423 563
424#ifdef CONFIG_SMP 564#ifdef CONFIG_SMP
425 /* Set the default affinity to the boot cpu. */ 565 /* Set the default affinity to the boot cpu. */
@@ -430,6 +570,16 @@ void __init arch_init_irq(void)
430 if (NR_IRQS < OCTEON_IRQ_LAST) 570 if (NR_IRQS < OCTEON_IRQ_LAST)
431 pr_err("octeon_irq_init: NR_IRQS is set too low\n"); 571 pr_err("octeon_irq_init: NR_IRQS is set too low\n");
432 572
573 if (OCTEON_IS_MODEL(OCTEON_CN58XX_PASS2_X) ||
574 OCTEON_IS_MODEL(OCTEON_CN56XX_PASS2_X) ||
575 OCTEON_IS_MODEL(OCTEON_CN52XX_PASS2_X)) {
576 chip0 = &octeon_irq_chip_ciu0_v2;
577 chip1 = &octeon_irq_chip_ciu1_v2;
578 } else {
579 chip0 = &octeon_irq_chip_ciu0;
580 chip1 = &octeon_irq_chip_ciu1;
581 }
582
433 /* 0 - 15 reserved for i8259 master and slave controller. */ 583 /* 0 - 15 reserved for i8259 master and slave controller. */
434 584
435 /* 17 - 23 Mips internal */ 585 /* 17 - 23 Mips internal */
@@ -440,14 +590,12 @@ void __init arch_init_irq(void)
440 590
441 /* 24 - 87 CIU_INT_SUM0 */ 591 /* 24 - 87 CIU_INT_SUM0 */
442 for (irq = OCTEON_IRQ_WORKQ0; irq <= OCTEON_IRQ_BOOTDMA; irq++) { 592 for (irq = OCTEON_IRQ_WORKQ0; irq <= OCTEON_IRQ_BOOTDMA; irq++) {
443 set_irq_chip_and_handler(irq, &octeon_irq_chip_ciu0, 593 set_irq_chip_and_handler(irq, chip0, handle_percpu_irq);
444 handle_percpu_irq);
445 } 594 }
446 595
447 /* 88 - 151 CIU_INT_SUM1 */ 596 /* 88 - 151 CIU_INT_SUM1 */
448 for (irq = OCTEON_IRQ_WDOG0; irq <= OCTEON_IRQ_RESERVED151; irq++) { 597 for (irq = OCTEON_IRQ_WDOG0; irq <= OCTEON_IRQ_RESERVED151; irq++) {
449 set_irq_chip_and_handler(irq, &octeon_irq_chip_ciu1, 598 set_irq_chip_and_handler(irq, chip1, handle_percpu_irq);
450 handle_percpu_irq);
451 } 599 }
452 600
453#ifdef CONFIG_PCI_MSI 601#ifdef CONFIG_PCI_MSI
@@ -505,14 +653,10 @@ asmlinkage void plat_irq_dispatch(void)
505#ifdef CONFIG_HOTPLUG_CPU 653#ifdef CONFIG_HOTPLUG_CPU
506static int is_irq_enabled_on_cpu(unsigned int irq, unsigned int cpu) 654static int is_irq_enabled_on_cpu(unsigned int irq, unsigned int cpu)
507{ 655{
508 unsigned int isset; 656 unsigned int isset;
509#ifdef CONFIG_SMP 657 int coreid = octeon_coreid_for_cpu(cpu);
510 int coreid = cpu_logical_map(cpu);
511#else
512 int coreid = cvmx_get_core_num();
513#endif
514 int bit = (irq < OCTEON_IRQ_WDOG0) ? 658 int bit = (irq < OCTEON_IRQ_WDOG0) ?
515 irq - OCTEON_IRQ_WORKQ0 : irq - OCTEON_IRQ_WDOG0; 659 irq - OCTEON_IRQ_WORKQ0 : irq - OCTEON_IRQ_WDOG0;
516 if (irq < 64) { 660 if (irq < 64) {
517 isset = (cvmx_read_csr(CVMX_CIU_INTX_EN0(coreid * 2)) & 661 isset = (cvmx_read_csr(CVMX_CIU_INTX_EN0(coreid * 2)) &
518 (1ull << bit)) >> bit; 662 (1ull << bit)) >> bit;
diff --git a/arch/mips/cavium-octeon/smp.c b/arch/mips/cavium-octeon/smp.c
index 32d51a31dc48..c198efdf583e 100644
--- a/arch/mips/cavium-octeon/smp.c
+++ b/arch/mips/cavium-octeon/smp.c
@@ -65,11 +65,12 @@ void octeon_send_ipi_single(int cpu, unsigned int action)
65 cvmx_write_csr(CVMX_CIU_MBOX_SETX(coreid), action); 65 cvmx_write_csr(CVMX_CIU_MBOX_SETX(coreid), action);
66} 66}
67 67
68static inline void octeon_send_ipi_mask(cpumask_t mask, unsigned int action) 68static inline void octeon_send_ipi_mask(const struct cpumask *mask,
69 unsigned int action)
69{ 70{
70 unsigned int i; 71 unsigned int i;
71 72
72 for_each_cpu_mask(i, mask) 73 for_each_cpu_mask(i, *mask)
73 octeon_send_ipi_single(i, action); 74 octeon_send_ipi_single(i, action);
74} 75}
75 76
diff --git a/arch/mips/configs/rbtx49xx_defconfig b/arch/mips/configs/rbtx49xx_defconfig
index c69813b8488c..6c6a19aebe1f 100644
--- a/arch/mips/configs/rbtx49xx_defconfig
+++ b/arch/mips/configs/rbtx49xx_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.29-rc7 3# Linux kernel version: 2.6.32-rc6
4# Wed Mar 4 23:08:06 2009 4# Sun Nov 8 22:59:47 2009
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -9,16 +9,18 @@ CONFIG_MIPS=y
9# Machine selection 9# Machine selection
10# 10#
11# CONFIG_MACH_ALCHEMY is not set 11# CONFIG_MACH_ALCHEMY is not set
12# CONFIG_AR7 is not set
12# CONFIG_BASLER_EXCITE is not set 13# CONFIG_BASLER_EXCITE is not set
13# CONFIG_BCM47XX is not set 14# CONFIG_BCM47XX is not set
15# CONFIG_BCM63XX is not set
14# CONFIG_MIPS_COBALT is not set 16# CONFIG_MIPS_COBALT is not set
15# CONFIG_MACH_DECSTATION is not set 17# CONFIG_MACH_DECSTATION is not set
16# CONFIG_MACH_JAZZ is not set 18# CONFIG_MACH_JAZZ is not set
17# CONFIG_LASAT is not set 19# CONFIG_LASAT is not set
18# CONFIG_LEMOTE_FULONG is not set 20# CONFIG_MACH_LOONGSON is not set
19# CONFIG_MIPS_MALTA is not set 21# CONFIG_MIPS_MALTA is not set
20# CONFIG_MIPS_SIM is not set 22# CONFIG_MIPS_SIM is not set
21# CONFIG_MACH_EMMA is not set 23# CONFIG_NEC_MARKEINS is not set
22# CONFIG_MACH_VR41XX is not set 24# CONFIG_MACH_VR41XX is not set
23# CONFIG_NXP_STB220 is not set 25# CONFIG_NXP_STB220 is not set
24# CONFIG_NXP_STB225 is not set 26# CONFIG_NXP_STB225 is not set
@@ -45,6 +47,7 @@ CONFIG_MACH_TX49XX=y
45# CONFIG_WR_PPMC is not set 47# CONFIG_WR_PPMC is not set
46# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set 48# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set
47# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set 49# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set
50# CONFIG_ALCHEMY_GPIO_INDIRECT is not set
48CONFIG_MACH_TXX9=y 51CONFIG_MACH_TXX9=y
49CONFIG_TOSHIBA_RBTX4927=y 52CONFIG_TOSHIBA_RBTX4927=y
50CONFIG_TOSHIBA_RBTX4938=y 53CONFIG_TOSHIBA_RBTX4938=y
@@ -86,7 +89,6 @@ CONFIG_DMA_NONCOHERENT=y
86CONFIG_DMA_NEED_PCI_MAP_STATE=y 89CONFIG_DMA_NEED_PCI_MAP_STATE=y
87CONFIG_EARLY_PRINTK=y 90CONFIG_EARLY_PRINTK=y
88CONFIG_SYS_HAS_EARLY_PRINTK=y 91CONFIG_SYS_HAS_EARLY_PRINTK=y
89# CONFIG_HOTPLUG_CPU is not set
90# CONFIG_NO_IOPORT is not set 92# CONFIG_NO_IOPORT is not set
91CONFIG_GENERIC_GPIO=y 93CONFIG_GENERIC_GPIO=y
92CONFIG_CPU_BIG_ENDIAN=y 94CONFIG_CPU_BIG_ENDIAN=y
@@ -101,7 +103,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
101# 103#
102# CPU selection 104# CPU selection
103# 105#
104# CONFIG_CPU_LOONGSON2 is not set 106# CONFIG_CPU_LOONGSON2E is not set
105# CONFIG_CPU_MIPS32_R1 is not set 107# CONFIG_CPU_MIPS32_R1 is not set
106# CONFIG_CPU_MIPS32_R2 is not set 108# CONFIG_CPU_MIPS32_R2 is not set
107# CONFIG_CPU_MIPS64_R1 is not set 109# CONFIG_CPU_MIPS64_R1 is not set
@@ -137,6 +139,7 @@ CONFIG_32BIT=y
137CONFIG_PAGE_SIZE_4KB=y 139CONFIG_PAGE_SIZE_4KB=y
138# CONFIG_PAGE_SIZE_8KB is not set 140# CONFIG_PAGE_SIZE_8KB is not set
139# CONFIG_PAGE_SIZE_16KB is not set 141# CONFIG_PAGE_SIZE_16KB is not set
142# CONFIG_PAGE_SIZE_32KB is not set
140# CONFIG_PAGE_SIZE_64KB is not set 143# CONFIG_PAGE_SIZE_64KB is not set
141CONFIG_CPU_HAS_PREFETCH=y 144CONFIG_CPU_HAS_PREFETCH=y
142CONFIG_MIPS_MT_DISABLED=y 145CONFIG_MIPS_MT_DISABLED=y
@@ -154,7 +157,10 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
154# CONFIG_PHYS_ADDR_T_64BIT is not set 157# CONFIG_PHYS_ADDR_T_64BIT is not set
155CONFIG_ZONE_DMA_FLAG=0 158CONFIG_ZONE_DMA_FLAG=0
156CONFIG_VIRT_TO_BUS=y 159CONFIG_VIRT_TO_BUS=y
157CONFIG_UNEVICTABLE_LRU=y 160CONFIG_HAVE_MLOCK=y
161CONFIG_HAVE_MLOCKED_PAGE_BIT=y
162# CONFIG_KSM is not set
163CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
158CONFIG_TICK_ONESHOT=y 164CONFIG_TICK_ONESHOT=y
159CONFIG_NO_HZ=y 165CONFIG_NO_HZ=y
160CONFIG_HIGH_RES_TIMERS=y 166CONFIG_HIGH_RES_TIMERS=y
@@ -175,6 +181,7 @@ CONFIG_PREEMPT_NONE=y
175CONFIG_LOCKDEP_SUPPORT=y 181CONFIG_LOCKDEP_SUPPORT=y
176CONFIG_STACKTRACE_SUPPORT=y 182CONFIG_STACKTRACE_SUPPORT=y
177CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 183CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
184CONFIG_CONSTRUCTORS=y
178 185
179# 186#
180# General setup 187# General setup
@@ -194,11 +201,12 @@ CONFIG_SYSVIPC_SYSCTL=y
194# 201#
195# RCU Subsystem 202# RCU Subsystem
196# 203#
197CONFIG_CLASSIC_RCU=y 204CONFIG_TREE_RCU=y
198# CONFIG_TREE_RCU is not set 205# CONFIG_TREE_PREEMPT_RCU is not set
199# CONFIG_PREEMPT_RCU is not set 206# CONFIG_RCU_TRACE is not set
207CONFIG_RCU_FANOUT=32
208# CONFIG_RCU_FANOUT_EXACT is not set
200# CONFIG_TREE_RCU_TRACE is not set 209# CONFIG_TREE_RCU_TRACE is not set
201# CONFIG_PREEMPT_RCU_TRACE is not set
202CONFIG_IKCONFIG=y 210CONFIG_IKCONFIG=y
203CONFIG_IKCONFIG_PROC=y 211CONFIG_IKCONFIG_PROC=y
204CONFIG_LOG_BUF_SHIFT=14 212CONFIG_LOG_BUF_SHIFT=14
@@ -209,8 +217,12 @@ CONFIG_SYSFS_DEPRECATED_V2=y
209# CONFIG_NAMESPACES is not set 217# CONFIG_NAMESPACES is not set
210CONFIG_BLK_DEV_INITRD=y 218CONFIG_BLK_DEV_INITRD=y
211CONFIG_INITRAMFS_SOURCE="" 219CONFIG_INITRAMFS_SOURCE=""
220CONFIG_RD_GZIP=y
221# CONFIG_RD_BZIP2 is not set
222# CONFIG_RD_LZMA is not set
212CONFIG_CC_OPTIMIZE_FOR_SIZE=y 223CONFIG_CC_OPTIMIZE_FOR_SIZE=y
213CONFIG_SYSCTL=y 224CONFIG_SYSCTL=y
225CONFIG_ANON_INODES=y
214CONFIG_EMBEDDED=y 226CONFIG_EMBEDDED=y
215CONFIG_SYSCTL_SYSCALL=y 227CONFIG_SYSCTL_SYSCALL=y
216CONFIG_KALLSYMS=y 228CONFIG_KALLSYMS=y
@@ -220,25 +232,35 @@ CONFIG_PRINTK=y
220CONFIG_BUG=y 232CONFIG_BUG=y
221CONFIG_ELF_CORE=y 233CONFIG_ELF_CORE=y
222# CONFIG_PCSPKR_PLATFORM is not set 234# CONFIG_PCSPKR_PLATFORM is not set
223CONFIG_COMPAT_BRK=y
224CONFIG_BASE_FULL=y 235CONFIG_BASE_FULL=y
225# CONFIG_FUTEX is not set 236CONFIG_FUTEX=y
226CONFIG_ANON_INODES=y
227# CONFIG_EPOLL is not set 237# CONFIG_EPOLL is not set
228CONFIG_SIGNALFD=y 238CONFIG_SIGNALFD=y
229CONFIG_TIMERFD=y 239CONFIG_TIMERFD=y
230CONFIG_EVENTFD=y 240CONFIG_EVENTFD=y
231CONFIG_SHMEM=y 241CONFIG_SHMEM=y
232CONFIG_AIO=y 242CONFIG_AIO=y
243
244#
245# Kernel Performance Events And Counters
246#
233CONFIG_VM_EVENT_COUNTERS=y 247CONFIG_VM_EVENT_COUNTERS=y
234CONFIG_PCI_QUIRKS=y 248CONFIG_PCI_QUIRKS=y
249CONFIG_COMPAT_BRK=y
235CONFIG_SLAB=y 250CONFIG_SLAB=y
236# CONFIG_SLUB is not set 251# CONFIG_SLUB is not set
237# CONFIG_SLOB is not set 252# CONFIG_SLOB is not set
238# CONFIG_PROFILING is not set 253# CONFIG_PROFILING is not set
239CONFIG_HAVE_OPROFILE=y 254CONFIG_HAVE_OPROFILE=y
240# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 255
256#
257# GCOV-based kernel profiling
258#
259# CONFIG_GCOV_KERNEL is not set
260# CONFIG_SLOW_WORK is not set
261CONFIG_HAVE_GENERIC_DMA_COHERENT=y
241CONFIG_SLABINFO=y 262CONFIG_SLABINFO=y
263CONFIG_RT_MUTEXES=y
242CONFIG_BASE_SMALL=0 264CONFIG_BASE_SMALL=0
243CONFIG_MODULES=y 265CONFIG_MODULES=y
244# CONFIG_MODULE_FORCE_LOAD is not set 266# CONFIG_MODULE_FORCE_LOAD is not set
@@ -246,8 +268,8 @@ CONFIG_MODULE_UNLOAD=y
246# CONFIG_MODVERSIONS is not set 268# CONFIG_MODVERSIONS is not set
247# CONFIG_MODULE_SRCVERSION_ALL is not set 269# CONFIG_MODULE_SRCVERSION_ALL is not set
248CONFIG_BLOCK=y 270CONFIG_BLOCK=y
249# CONFIG_LBD is not set 271# CONFIG_LBDAF is not set
250# CONFIG_BLK_DEV_IO_TRACE is not set 272# CONFIG_BLK_DEV_BSG is not set
251# CONFIG_BLK_DEV_INTEGRITY is not set 273# CONFIG_BLK_DEV_INTEGRITY is not set
252 274
253# 275#
@@ -274,6 +296,7 @@ CONFIG_PCI_DOMAINS=y
274# CONFIG_ARCH_SUPPORTS_MSI is not set 296# CONFIG_ARCH_SUPPORTS_MSI is not set
275# CONFIG_PCI_LEGACY is not set 297# CONFIG_PCI_LEGACY is not set
276# CONFIG_PCI_STUB is not set 298# CONFIG_PCI_STUB is not set
299# CONFIG_PCI_IOV is not set
277CONFIG_MMU=y 300CONFIG_MMU=y
278 301
279# 302#
@@ -288,6 +311,7 @@ CONFIG_TRAD_SIGNALS=y
288# 311#
289# Power management options 312# Power management options
290# 313#
314CONFIG_ARCH_HIBERNATION_POSSIBLE=y
291CONFIG_ARCH_SUSPEND_POSSIBLE=y 315CONFIG_ARCH_SUSPEND_POSSIBLE=y
292# CONFIG_PM is not set 316# CONFIG_PM is not set
293CONFIG_NET=y 317CONFIG_NET=y
@@ -295,7 +319,6 @@ CONFIG_NET=y
295# 319#
296# Networking options 320# Networking options
297# 321#
298CONFIG_COMPAT_NET_DEV_OPS=y
299CONFIG_PACKET=y 322CONFIG_PACKET=y
300# CONFIG_PACKET_MMAP is not set 323# CONFIG_PACKET_MMAP is not set
301CONFIG_UNIX=y 324CONFIG_UNIX=y
@@ -311,6 +334,7 @@ CONFIG_IP_PNP=y
311# CONFIG_NET_IPIP is not set 334# CONFIG_NET_IPIP is not set
312# CONFIG_NET_IPGRE is not set 335# CONFIG_NET_IPGRE is not set
313# CONFIG_IP_MROUTE is not set 336# CONFIG_IP_MROUTE is not set
337# CONFIG_ARPD is not set
314# CONFIG_SYN_COOKIES is not set 338# CONFIG_SYN_COOKIES is not set
315# CONFIG_INET_AH is not set 339# CONFIG_INET_AH is not set
316# CONFIG_INET_ESP is not set 340# CONFIG_INET_ESP is not set
@@ -336,6 +360,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
336# CONFIG_LLC2 is not set 360# CONFIG_LLC2 is not set
337# CONFIG_IPX is not set 361# CONFIG_IPX is not set
338# CONFIG_ATALK is not set 362# CONFIG_ATALK is not set
363# CONFIG_PHONET is not set
339# CONFIG_NET_SCHED is not set 364# CONFIG_NET_SCHED is not set
340# CONFIG_DCB is not set 365# CONFIG_DCB is not set
341 366
@@ -347,7 +372,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
347# CONFIG_CAN is not set 372# CONFIG_CAN is not set
348# CONFIG_IRDA is not set 373# CONFIG_IRDA is not set
349# CONFIG_BT is not set 374# CONFIG_BT is not set
350# CONFIG_PHONET is not set
351# CONFIG_WIRELESS is not set 375# CONFIG_WIRELESS is not set
352# CONFIG_WIMAX is not set 376# CONFIG_WIMAX is not set
353# CONFIG_RFKILL is not set 377# CONFIG_RFKILL is not set
@@ -365,9 +389,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
365# CONFIG_CONNECTOR is not set 389# CONFIG_CONNECTOR is not set
366CONFIG_MTD=y 390CONFIG_MTD=y
367# CONFIG_MTD_DEBUG is not set 391# CONFIG_MTD_DEBUG is not set
392# CONFIG_MTD_TESTS is not set
368# CONFIG_MTD_CONCAT is not set 393# CONFIG_MTD_CONCAT is not set
369CONFIG_MTD_PARTITIONS=y 394CONFIG_MTD_PARTITIONS=y
370# CONFIG_MTD_TESTS is not set
371# CONFIG_MTD_REDBOOT_PARTS is not set 395# CONFIG_MTD_REDBOOT_PARTS is not set
372CONFIG_MTD_CMDLINE_PARTS=y 396CONFIG_MTD_CMDLINE_PARTS=y
373# CONFIG_MTD_AR7_PARTS is not set 397# CONFIG_MTD_AR7_PARTS is not set
@@ -376,9 +400,9 @@ CONFIG_MTD_CMDLINE_PARTS=y
376# User Modules And Translation Layers 400# User Modules And Translation Layers
377# 401#
378CONFIG_MTD_CHAR=y 402CONFIG_MTD_CHAR=y
379# CONFIG_MTD_BLKDEVS is not set 403CONFIG_MTD_BLKDEVS=m
380# CONFIG_MTD_BLOCK is not set 404CONFIG_MTD_BLOCK=m
381# CONFIG_MTD_BLOCK_RO is not set 405CONFIG_MTD_BLOCK_RO=m
382# CONFIG_FTL is not set 406# CONFIG_FTL is not set
383# CONFIG_NFTL is not set 407# CONFIG_NFTL is not set
384# CONFIG_INFTL is not set 408# CONFIG_INFTL is not set
@@ -414,16 +438,20 @@ CONFIG_MTD_CFI_UTIL=y
414# 438#
415# Mapping drivers for chip access 439# Mapping drivers for chip access
416# 440#
417# CONFIG_MTD_COMPLEX_MAPPINGS is not set 441CONFIG_MTD_COMPLEX_MAPPINGS=y
418CONFIG_MTD_PHYSMAP=y 442CONFIG_MTD_PHYSMAP=y
419# CONFIG_MTD_PHYSMAP_COMPAT is not set 443# CONFIG_MTD_PHYSMAP_COMPAT is not set
444# CONFIG_MTD_PCI is not set
445# CONFIG_MTD_GPIO_ADDR is not set
420# CONFIG_MTD_INTEL_VR_NOR is not set 446# CONFIG_MTD_INTEL_VR_NOR is not set
447CONFIG_MTD_RBTX4939=y
421# CONFIG_MTD_PLATRAM is not set 448# CONFIG_MTD_PLATRAM is not set
422 449
423# 450#
424# Self-contained MTD device drivers 451# Self-contained MTD device drivers
425# 452#
426# CONFIG_MTD_PMC551 is not set 453# CONFIG_MTD_PMC551 is not set
454# CONFIG_MTD_SST25L is not set
427# CONFIG_MTD_SLRAM is not set 455# CONFIG_MTD_SLRAM is not set
428# CONFIG_MTD_PHRAM is not set 456# CONFIG_MTD_PHRAM is not set
429# CONFIG_MTD_MTDRAM is not set 457# CONFIG_MTD_MTDRAM is not set
@@ -435,7 +463,15 @@ CONFIG_MTD_PHYSMAP=y
435# CONFIG_MTD_DOC2000 is not set 463# CONFIG_MTD_DOC2000 is not set
436# CONFIG_MTD_DOC2001 is not set 464# CONFIG_MTD_DOC2001 is not set
437# CONFIG_MTD_DOC2001PLUS is not set 465# CONFIG_MTD_DOC2001PLUS is not set
438# CONFIG_MTD_NAND is not set 466CONFIG_MTD_NAND=m
467# CONFIG_MTD_NAND_VERIFY_WRITE is not set
468# CONFIG_MTD_NAND_ECC_SMC is not set
469# CONFIG_MTD_NAND_MUSEUM_IDS is not set
470CONFIG_MTD_NAND_IDS=m
471# CONFIG_MTD_NAND_CAFE is not set
472# CONFIG_MTD_NAND_NANDSIM is not set
473# CONFIG_MTD_NAND_PLATFORM is not set
474CONFIG_MTD_NAND_TXX9NDFMC=m
439# CONFIG_MTD_ONENAND is not set 475# CONFIG_MTD_ONENAND is not set
440 476
441# 477#
@@ -471,6 +507,7 @@ CONFIG_IDE=y
471# 507#
472# Please see Documentation/ide/ide.txt for help/info on IDE drives 508# Please see Documentation/ide/ide.txt for help/info on IDE drives
473# 509#
510CONFIG_IDE_XFER_MODE=y
474CONFIG_IDE_TIMINGS=y 511CONFIG_IDE_TIMINGS=y
475# CONFIG_BLK_DEV_IDE_SATA is not set 512# CONFIG_BLK_DEV_IDE_SATA is not set
476CONFIG_IDE_GD=y 513CONFIG_IDE_GD=y
@@ -534,8 +571,13 @@ CONFIG_BLK_DEV_IDEDMA=y
534# 571#
535 572
536# 573#
537# A new alternative FireWire stack is available with EXPERIMENTAL=y 574# You can enable one or both FireWire driver stacks.
538# 575#
576
577#
578# See the help texts for more information.
579#
580# CONFIG_FIREWIRE is not set
539# CONFIG_IEEE1394 is not set 581# CONFIG_IEEE1394 is not set
540# CONFIG_I2O is not set 582# CONFIG_I2O is not set
541CONFIG_NETDEVICES=y 583CONFIG_NETDEVICES=y
@@ -574,6 +616,8 @@ CONFIG_MII=y
574# CONFIG_NET_VENDOR_3COM is not set 616# CONFIG_NET_VENDOR_3COM is not set
575CONFIG_SMC91X=y 617CONFIG_SMC91X=y
576# CONFIG_DM9000 is not set 618# CONFIG_DM9000 is not set
619# CONFIG_ETHOC is not set
620# CONFIG_DNET is not set
577# CONFIG_NET_TULIP is not set 621# CONFIG_NET_TULIP is not set
578# CONFIG_HP100 is not set 622# CONFIG_HP100 is not set
579CONFIG_NE2000=y 623CONFIG_NE2000=y
@@ -602,18 +646,15 @@ CONFIG_TC35815=y
602# CONFIG_SMSC9420 is not set 646# CONFIG_SMSC9420 is not set
603# CONFIG_SUNDANCE is not set 647# CONFIG_SUNDANCE is not set
604# CONFIG_TLAN is not set 648# CONFIG_TLAN is not set
649# CONFIG_KS8842 is not set
650# CONFIG_KS8851 is not set
651# CONFIG_KS8851_MLL is not set
605# CONFIG_VIA_RHINE is not set 652# CONFIG_VIA_RHINE is not set
606# CONFIG_ATL2 is not set 653# CONFIG_ATL2 is not set
607# CONFIG_NETDEV_1000 is not set 654# CONFIG_NETDEV_1000 is not set
608# CONFIG_NETDEV_10000 is not set 655# CONFIG_NETDEV_10000 is not set
609# CONFIG_TR is not set 656# CONFIG_TR is not set
610 657# CONFIG_WLAN is not set
611#
612# Wireless LAN
613#
614# CONFIG_WLAN_PRE80211 is not set
615# CONFIG_WLAN_80211 is not set
616# CONFIG_IWLWIFI_LEDS is not set
617 658
618# 659#
619# Enable WiMAX (Networking options) to see the WiMAX drivers 660# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -653,6 +694,7 @@ CONFIG_DEVKMEM=y
653# 694#
654# Non-8250 serial port support 695# Non-8250 serial port support
655# 696#
697# CONFIG_SERIAL_MAX3100 is not set
656CONFIG_SERIAL_CORE=y 698CONFIG_SERIAL_CORE=y
657CONFIG_SERIAL_CORE_CONSOLE=y 699CONFIG_SERIAL_CORE_CONSOLE=y
658CONFIG_SERIAL_TXX9=y 700CONFIG_SERIAL_TXX9=y
@@ -666,7 +708,9 @@ CONFIG_UNIX98_PTYS=y
666CONFIG_LEGACY_PTYS=y 708CONFIG_LEGACY_PTYS=y
667CONFIG_LEGACY_PTY_COUNT=256 709CONFIG_LEGACY_PTY_COUNT=256
668# CONFIG_IPMI_HANDLER is not set 710# CONFIG_IPMI_HANDLER is not set
669# CONFIG_HW_RANDOM is not set 711CONFIG_HW_RANDOM=m
712# CONFIG_HW_RANDOM_TIMERIOMEM is not set
713CONFIG_HW_RANDOM_TX4939=m
670# CONFIG_R3964 is not set 714# CONFIG_R3964 is not set
671# CONFIG_APPLICOM is not set 715# CONFIG_APPLICOM is not set
672# CONFIG_RAW_DRIVER is not set 716# CONFIG_RAW_DRIVER is not set
@@ -686,6 +730,10 @@ CONFIG_SPI_TXX9=y
686# SPI Protocol Masters 730# SPI Protocol Masters
687# 731#
688# CONFIG_SPI_TLE62X0 is not set 732# CONFIG_SPI_TLE62X0 is not set
733
734#
735# PPS support
736#
689CONFIG_ARCH_REQUIRE_GPIOLIB=y 737CONFIG_ARCH_REQUIRE_GPIOLIB=y
690CONFIG_GPIOLIB=y 738CONFIG_GPIOLIB=y
691 739
@@ -701,17 +749,22 @@ CONFIG_GPIOLIB=y
701# PCI GPIO expanders: 749# PCI GPIO expanders:
702# 750#
703# CONFIG_GPIO_BT8XX is not set 751# CONFIG_GPIO_BT8XX is not set
752# CONFIG_GPIO_LANGWELL is not set
704 753
705# 754#
706# SPI GPIO expanders: 755# SPI GPIO expanders:
707# 756#
708# CONFIG_GPIO_MAX7301 is not set 757# CONFIG_GPIO_MAX7301 is not set
709# CONFIG_GPIO_MCP23S08 is not set 758# CONFIG_GPIO_MCP23S08 is not set
759# CONFIG_GPIO_MC33880 is not set
760
761#
762# AC97 GPIO expanders:
763#
710# CONFIG_W1 is not set 764# CONFIG_W1 is not set
711# CONFIG_POWER_SUPPLY is not set 765# CONFIG_POWER_SUPPLY is not set
712# CONFIG_HWMON is not set 766# CONFIG_HWMON is not set
713# CONFIG_THERMAL is not set 767# CONFIG_THERMAL is not set
714# CONFIG_THERMAL_HWMON is not set
715CONFIG_WATCHDOG=y 768CONFIG_WATCHDOG=y
716# CONFIG_WATCHDOG_NOWAYOUT is not set 769# CONFIG_WATCHDOG_NOWAYOUT is not set
717 770
@@ -740,28 +793,17 @@ CONFIG_SSB_POSSIBLE=y
740# CONFIG_MFD_CORE is not set 793# CONFIG_MFD_CORE is not set
741# CONFIG_MFD_SM501 is not set 794# CONFIG_MFD_SM501 is not set
742# CONFIG_HTC_PASIC3 is not set 795# CONFIG_HTC_PASIC3 is not set
796# CONFIG_UCB1400_CORE is not set
743# CONFIG_MFD_TMIO is not set 797# CONFIG_MFD_TMIO is not set
798# CONFIG_MFD_MC13783 is not set
799# CONFIG_EZX_PCAP is not set
744# CONFIG_REGULATOR is not set 800# CONFIG_REGULATOR is not set
745 801# CONFIG_MEDIA_SUPPORT is not set
746#
747# Multimedia devices
748#
749
750#
751# Multimedia core support
752#
753# CONFIG_VIDEO_DEV is not set
754# CONFIG_DVB_CORE is not set
755# CONFIG_VIDEO_MEDIA is not set
756
757#
758# Multimedia drivers
759#
760# CONFIG_DAB is not set
761 802
762# 803#
763# Graphics support 804# Graphics support
764# 805#
806# CONFIG_VGA_ARB is not set
765# CONFIG_DRM is not set 807# CONFIG_DRM is not set
766# CONFIG_VGASTATE is not set 808# CONFIG_VGASTATE is not set
767# CONFIG_VIDEO_OUTPUT_CONTROL is not set 809# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -772,7 +814,42 @@ CONFIG_SSB_POSSIBLE=y
772# Display device support 814# Display device support
773# 815#
774# CONFIG_DISPLAY_SUPPORT is not set 816# CONFIG_DISPLAY_SUPPORT is not set
775# CONFIG_SOUND is not set 817CONFIG_SOUND=m
818# CONFIG_SOUND_OSS_CORE is not set
819CONFIG_SND=m
820CONFIG_SND_TIMER=m
821CONFIG_SND_PCM=m
822# CONFIG_SND_SEQUENCER is not set
823# CONFIG_SND_MIXER_OSS is not set
824# CONFIG_SND_PCM_OSS is not set
825# CONFIG_SND_HRTIMER is not set
826# CONFIG_SND_DYNAMIC_MINORS is not set
827# CONFIG_SND_SUPPORT_OLD_API is not set
828# CONFIG_SND_VERBOSE_PROCFS is not set
829# CONFIG_SND_VERBOSE_PRINTK is not set
830# CONFIG_SND_DEBUG is not set
831CONFIG_SND_VMASTER=y
832# CONFIG_SND_RAWMIDI_SEQ is not set
833# CONFIG_SND_OPL3_LIB_SEQ is not set
834# CONFIG_SND_OPL4_LIB_SEQ is not set
835# CONFIG_SND_SBAWE_SEQ is not set
836# CONFIG_SND_EMU10K1_SEQ is not set
837CONFIG_SND_AC97_CODEC=m
838# CONFIG_SND_DRIVERS is not set
839# CONFIG_SND_PCI is not set
840# CONFIG_SND_SPI is not set
841# CONFIG_SND_MIPS is not set
842CONFIG_SND_SOC=m
843CONFIG_SND_SOC_AC97_BUS=y
844CONFIG_SND_SOC_TXX9ACLC=m
845CONFIG_HAS_TXX9_ACLC=y
846CONFIG_SND_SOC_TXX9ACLC_AC97=m
847CONFIG_SND_SOC_TXX9ACLC_GENERIC=m
848CONFIG_SND_SOC_I2C_AND_SPI=m
849# CONFIG_SND_SOC_ALL_CODECS is not set
850CONFIG_SND_SOC_AC97_CODEC=m
851# CONFIG_SOUND_PRIME is not set
852CONFIG_AC97_BUS=m
776# CONFIG_USB_SUPPORT is not set 853# CONFIG_USB_SUPPORT is not set
777# CONFIG_MMC is not set 854# CONFIG_MMC is not set
778# CONFIG_MEMSTICK is not set 855# CONFIG_MEMSTICK is not set
@@ -783,6 +860,8 @@ CONFIG_LEDS_CLASS=y
783# LED drivers 860# LED drivers
784# 861#
785CONFIG_LEDS_GPIO=y 862CONFIG_LEDS_GPIO=y
863CONFIG_LEDS_GPIO_PLATFORM=y
864# CONFIG_LEDS_DAC124S085 is not set
786 865
787# 866#
788# LED Triggers 867# LED Triggers
@@ -792,7 +871,12 @@ CONFIG_LEDS_TRIGGERS=y
792CONFIG_LEDS_TRIGGER_IDE_DISK=y 871CONFIG_LEDS_TRIGGER_IDE_DISK=y
793CONFIG_LEDS_TRIGGER_HEARTBEAT=y 872CONFIG_LEDS_TRIGGER_HEARTBEAT=y
794# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set 873# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
874# CONFIG_LEDS_TRIGGER_GPIO is not set
795# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set 875# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
876
877#
878# iptables trigger is under Netfilter config (LED target)
879#
796# CONFIG_ACCESSIBILITY is not set 880# CONFIG_ACCESSIBILITY is not set
797# CONFIG_INFINIBAND is not set 881# CONFIG_INFINIBAND is not set
798CONFIG_RTC_LIB=y 882CONFIG_RTC_LIB=y
@@ -820,6 +904,7 @@ CONFIG_RTC_INTF_DEV_UIE_EMUL=y
820# CONFIG_RTC_DRV_R9701 is not set 904# CONFIG_RTC_DRV_R9701 is not set
821CONFIG_RTC_DRV_RS5C348=y 905CONFIG_RTC_DRV_RS5C348=y
822# CONFIG_RTC_DRV_DS3234 is not set 906# CONFIG_RTC_DRV_DS3234 is not set
907# CONFIG_RTC_DRV_PCF2123 is not set
823 908
824# 909#
825# Platform RTC drivers 910# Platform RTC drivers
@@ -840,8 +925,26 @@ CONFIG_RTC_DRV_DS1742=y
840# on-CPU RTC drivers 925# on-CPU RTC drivers
841# 926#
842CONFIG_RTC_DRV_TX4939=y 927CONFIG_RTC_DRV_TX4939=y
843# CONFIG_DMADEVICES is not set 928CONFIG_DMADEVICES=y
929
930#
931# DMA Devices
932#
933CONFIG_TXX9_DMAC=m
934CONFIG_DMA_ENGINE=y
935
936#
937# DMA Clients
938#
939# CONFIG_NET_DMA is not set
940# CONFIG_ASYNC_TX_DMA is not set
941# CONFIG_DMATEST is not set
942# CONFIG_AUXDISPLAY is not set
844# CONFIG_UIO is not set 943# CONFIG_UIO is not set
944
945#
946# TI VLYNQ
947#
845# CONFIG_STAGING is not set 948# CONFIG_STAGING is not set
846 949
847# 950#
@@ -853,9 +956,10 @@ CONFIG_RTC_DRV_TX4939=y
853# CONFIG_REISERFS_FS is not set 956# CONFIG_REISERFS_FS is not set
854# CONFIG_JFS_FS is not set 957# CONFIG_JFS_FS is not set
855CONFIG_FS_POSIX_ACL=y 958CONFIG_FS_POSIX_ACL=y
856CONFIG_FILE_LOCKING=y
857# CONFIG_XFS_FS is not set 959# CONFIG_XFS_FS is not set
858# CONFIG_OCFS2_FS is not set 960# CONFIG_OCFS2_FS is not set
961CONFIG_FILE_LOCKING=y
962CONFIG_FSNOTIFY=y
859# CONFIG_DNOTIFY is not set 963# CONFIG_DNOTIFY is not set
860CONFIG_INOTIFY=y 964CONFIG_INOTIFY=y
861CONFIG_INOTIFY_USER=y 965CONFIG_INOTIFY_USER=y
@@ -866,6 +970,10 @@ CONFIG_INOTIFY_USER=y
866CONFIG_GENERIC_ACL=y 970CONFIG_GENERIC_ACL=y
867 971
868# 972#
973# Caches
974#
975
976#
869# CD-ROM/DVD Filesystems 977# CD-ROM/DVD Filesystems
870# 978#
871# CONFIG_ISO9660_FS is not set 979# CONFIG_ISO9660_FS is not set
@@ -890,7 +998,27 @@ CONFIG_TMPFS=y
890CONFIG_TMPFS_POSIX_ACL=y 998CONFIG_TMPFS_POSIX_ACL=y
891# CONFIG_HUGETLB_PAGE is not set 999# CONFIG_HUGETLB_PAGE is not set
892# CONFIG_CONFIGFS_FS is not set 1000# CONFIG_CONFIGFS_FS is not set
893# CONFIG_MISC_FILESYSTEMS is not set 1001CONFIG_MISC_FILESYSTEMS=y
1002# CONFIG_HFSPLUS_FS is not set
1003CONFIG_JFFS2_FS=m
1004CONFIG_JFFS2_FS_DEBUG=0
1005CONFIG_JFFS2_FS_WRITEBUFFER=y
1006# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
1007# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
1008CONFIG_JFFS2_ZLIB=y
1009# CONFIG_JFFS2_LZO is not set
1010CONFIG_JFFS2_RTIME=y
1011# CONFIG_JFFS2_RUBIN is not set
1012# CONFIG_CRAMFS is not set
1013# CONFIG_SQUASHFS is not set
1014# CONFIG_VXFS_FS is not set
1015# CONFIG_MINIX_FS is not set
1016# CONFIG_OMFS_FS is not set
1017# CONFIG_HPFS_FS is not set
1018# CONFIG_QNX4FS_FS is not set
1019# CONFIG_ROMFS_FS is not set
1020# CONFIG_SYSV_FS is not set
1021# CONFIG_UFS_FS is not set
894CONFIG_NETWORK_FILESYSTEMS=y 1022CONFIG_NETWORK_FILESYSTEMS=y
895CONFIG_NFS_FS=y 1023CONFIG_NFS_FS=y
896CONFIG_NFS_V3=y 1024CONFIG_NFS_V3=y
@@ -922,6 +1050,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
922CONFIG_ENABLE_MUST_CHECK=y 1050CONFIG_ENABLE_MUST_CHECK=y
923CONFIG_FRAME_WARN=1024 1051CONFIG_FRAME_WARN=1024
924# CONFIG_MAGIC_SYSRQ is not set 1052# CONFIG_MAGIC_SYSRQ is not set
1053CONFIG_STRIP_ASM_SYMS=y
925# CONFIG_UNUSED_SYMBOLS is not set 1054# CONFIG_UNUSED_SYMBOLS is not set
926CONFIG_DEBUG_FS=y 1055CONFIG_DEBUG_FS=y
927# CONFIG_HEADERS_CHECK is not set 1056# CONFIG_HEADERS_CHECK is not set
@@ -929,11 +1058,9 @@ CONFIG_DEBUG_FS=y
929# CONFIG_DEBUG_MEMORY_INIT is not set 1058# CONFIG_DEBUG_MEMORY_INIT is not set
930# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1059# CONFIG_RCU_CPU_STALL_DETECTOR is not set
931CONFIG_SYSCTL_SYSCALL_CHECK=y 1060CONFIG_SYSCTL_SYSCALL_CHECK=y
932 1061CONFIG_TRACING_SUPPORT=y
933# 1062# CONFIG_FTRACE is not set
934# Tracers 1063# CONFIG_DYNAMIC_DEBUG is not set
935#
936# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
937# CONFIG_SAMPLES is not set 1064# CONFIG_SAMPLES is not set
938CONFIG_HAVE_ARCH_KGDB=y 1065CONFIG_HAVE_ARCH_KGDB=y
939CONFIG_CMDLINE="" 1066CONFIG_CMDLINE=""
@@ -946,6 +1073,7 @@ CONFIG_CMDLINE=""
946# CONFIG_SECURITYFS is not set 1073# CONFIG_SECURITYFS is not set
947# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1074# CONFIG_SECURITY_FILE_CAPABILITIES is not set
948# CONFIG_CRYPTO is not set 1075# CONFIG_CRYPTO is not set
1076# CONFIG_BINARY_PRINTF is not set
949 1077
950# 1078#
951# Library routines 1079# Library routines
@@ -959,6 +1087,10 @@ CONFIG_GENERIC_FIND_LAST_BIT=y
959CONFIG_CRC32=y 1087CONFIG_CRC32=y
960# CONFIG_CRC7 is not set 1088# CONFIG_CRC7 is not set
961# CONFIG_LIBCRC32C is not set 1089# CONFIG_LIBCRC32C is not set
1090CONFIG_ZLIB_INFLATE=y
1091CONFIG_ZLIB_DEFLATE=m
1092CONFIG_DECOMPRESS_GZIP=y
962CONFIG_HAS_IOMEM=y 1093CONFIG_HAS_IOMEM=y
963CONFIG_HAS_IOPORT=y 1094CONFIG_HAS_IOPORT=y
964CONFIG_HAS_DMA=y 1095CONFIG_HAS_DMA=y
1096CONFIG_NLATTR=y
diff --git a/arch/mips/include/asm/dma-mapping.h b/arch/mips/include/asm/dma-mapping.h
index d16afddb09a9..664ba53dc32a 100644
--- a/arch/mips/include/asm/dma-mapping.h
+++ b/arch/mips/include/asm/dma-mapping.h
@@ -3,6 +3,7 @@
3 3
4#include <asm/scatterlist.h> 4#include <asm/scatterlist.h>
5#include <asm/cache.h> 5#include <asm/cache.h>
6#include <asm-generic/dma-coherent.h>
6 7
7void *dma_alloc_noncoherent(struct device *dev, size_t size, 8void *dma_alloc_noncoherent(struct device *dev, size_t size,
8 dma_addr_t *dma_handle, gfp_t flag); 9 dma_addr_t *dma_handle, gfp_t flag);
@@ -73,14 +74,4 @@ extern int dma_is_consistent(struct device *dev, dma_addr_t dma_addr);
73extern void dma_cache_sync(struct device *dev, void *vaddr, size_t size, 74extern void dma_cache_sync(struct device *dev, void *vaddr, size_t size,
74 enum dma_data_direction direction); 75 enum dma_data_direction direction);
75 76
76#if 0
77#define ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY
78
79extern int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
80 dma_addr_t device_addr, size_t size, int flags);
81extern void dma_release_declared_memory(struct device *dev);
82extern void * dma_mark_declared_memory_occupied(struct device *dev,
83 dma_addr_t device_addr, size_t size);
84#endif
85
86#endif /* _ASM_DMA_MAPPING_H */ 77#endif /* _ASM_DMA_MAPPING_H */
diff --git a/arch/mips/include/asm/fixmap.h b/arch/mips/include/asm/fixmap.h
index efeddc8db8b1..0b89b83e2055 100644
--- a/arch/mips/include/asm/fixmap.h
+++ b/arch/mips/include/asm/fixmap.h
@@ -48,9 +48,9 @@ enum fixed_addresses {
48#define FIX_N_COLOURS 8 48#define FIX_N_COLOURS 8
49 FIX_CMAP_BEGIN, 49 FIX_CMAP_BEGIN,
50#ifdef CONFIG_MIPS_MT_SMTC 50#ifdef CONFIG_MIPS_MT_SMTC
51 FIX_CMAP_END = FIX_CMAP_BEGIN + (FIX_N_COLOURS * NR_CPUS), 51 FIX_CMAP_END = FIX_CMAP_BEGIN + (FIX_N_COLOURS * NR_CPUS * 2),
52#else 52#else
53 FIX_CMAP_END = FIX_CMAP_BEGIN + FIX_N_COLOURS, 53 FIX_CMAP_END = FIX_CMAP_BEGIN + (FIX_N_COLOURS * 2),
54#endif 54#endif
55#ifdef CONFIG_HIGHMEM 55#ifdef CONFIG_HIGHMEM
56 /* reserved pte's for temporary kernel mappings */ 56 /* reserved pte's for temporary kernel mappings */
diff --git a/arch/mips/include/asm/gcmpregs.h b/arch/mips/include/asm/gcmpregs.h
index 36fd969d64d6..c0cf76a2ca89 100644
--- a/arch/mips/include/asm/gcmpregs.h
+++ b/arch/mips/include/asm/gcmpregs.h
@@ -19,15 +19,20 @@
19#define GCMP_GDB_OFS 0x8000 /* Global Debug Block */ 19#define GCMP_GDB_OFS 0x8000 /* Global Debug Block */
20 20
21/* Offsets to individual GCMP registers from GCMP base */ 21/* Offsets to individual GCMP registers from GCMP base */
22#define GCMPOFS(block, tag, reg) (GCMP_##block##_OFS + GCMP_##tag##_##reg##_OFS) 22#define GCMPOFS(block, tag, reg) \
23 (GCMP_##block##_OFS + GCMP_##tag##_##reg##_OFS)
24#define GCMPOFSn(block, tag, reg, n) \
25 (GCMP_##block##_OFS + GCMP_##tag##_##reg##_OFS(n))
23 26
24#define GCMPGCBOFS(reg) GCMPOFS(GCB, GCB, reg) 27#define GCMPGCBOFS(reg) GCMPOFS(GCB, GCB, reg)
28#define GCMPGCBOFSn(reg, n) GCMPOFSn(GCB, GCB, reg, n)
25#define GCMPCLCBOFS(reg) GCMPOFS(CLCB, CCB, reg) 29#define GCMPCLCBOFS(reg) GCMPOFS(CLCB, CCB, reg)
26#define GCMPCOCBOFS(reg) GCMPOFS(COCB, CCB, reg) 30#define GCMPCOCBOFS(reg) GCMPOFS(COCB, CCB, reg)
27#define GCMPGDBOFS(reg) GCMPOFS(GDB, GDB, reg) 31#define GCMPGDBOFS(reg) GCMPOFS(GDB, GDB, reg)
28 32
29/* GCMP register access */ 33/* GCMP register access */
30#define GCMPGCB(reg) REGP(_gcmp_base, GCMPGCBOFS(reg)) 34#define GCMPGCB(reg) REGP(_gcmp_base, GCMPGCBOFS(reg))
35#define GCMPGCBn(reg, n) REGP(_gcmp_base, GCMPGCBOFSn(reg, n))
31#define GCMPCLCB(reg) REGP(_gcmp_base, GCMPCLCBOFS(reg)) 36#define GCMPCLCB(reg) REGP(_gcmp_base, GCMPCLCBOFS(reg))
32#define GCMPCOCB(reg) REGP(_gcmp_base, GCMPCOCBOFS(reg)) 37#define GCMPCOCB(reg) REGP(_gcmp_base, GCMPCOCBOFS(reg))
33#define GCMPGDB(reg) REGP(_gcmp_base, GCMPGDBOFS(reg)) 38#define GCMPGDB(reg) REGP(_gcmp_base, GCMPGDBOFS(reg))
@@ -49,10 +54,10 @@
49#define GCMP_GCB_GCMPB_GCMPBASE_MSK GCMPGCBMSK(GCMPB_GCMPBASE, 17) 54#define GCMP_GCB_GCMPB_GCMPBASE_MSK GCMPGCBMSK(GCMPB_GCMPBASE, 17)
50#define GCMP_GCB_GCMPB_CMDEFTGT_SHF 0 55#define GCMP_GCB_GCMPB_CMDEFTGT_SHF 0
51#define GCMP_GCB_GCMPB_CMDEFTGT_MSK GCMPGCBMSK(GCMPB_CMDEFTGT, 2) 56#define GCMP_GCB_GCMPB_CMDEFTGT_MSK GCMPGCBMSK(GCMPB_CMDEFTGT, 2)
52#define GCMP_GCB_GCMPB_CMDEFTGT_MEM 0 57#define GCMP_GCB_GCMPB_CMDEFTGT_DISABLED 0
53#define GCMP_GCB_GCMPB_CMDEFTGT_MEM1 1 58#define GCMP_GCB_GCMPB_CMDEFTGT_MEM 1
54#define GCMP_GCB_GCMPB_CMDEFTGT_IOCU1 2 59#define GCMP_GCB_GCMPB_CMDEFTGT_IOCU1 2
55#define GCMP_GCB_GCMPB_CMDEFTGT_IOCU2 3 60#define GCMP_GCB_GCMPB_CMDEFTGT_IOCU2 3
56#define GCMP_GCB_CCMC_OFS 0x0010 /* Global CM Control */ 61#define GCMP_GCB_CCMC_OFS 0x0010 /* Global CM Control */
57#define GCMP_GCB_GCSRAP_OFS 0x0020 /* Global CSR Access Privilege */ 62#define GCMP_GCB_GCSRAP_OFS 0x0020 /* Global CSR Access Privilege */
58#define GCMP_GCB_GCSRAP_CMACCESS_SHF 0 63#define GCMP_GCB_GCSRAP_CMACCESS_SHF 0
@@ -115,5 +120,6 @@
115#define GCMP_CCB_DBGGROUP_OFS 0x0100 /* DebugBreak Group */ 120#define GCMP_CCB_DBGGROUP_OFS 0x0100 /* DebugBreak Group */
116 121
117extern int __init gcmp_probe(unsigned long, unsigned long); 122extern int __init gcmp_probe(unsigned long, unsigned long);
118 123extern int __init gcmp_niocu(void);
124extern void __init gcmp_setregion(int, unsigned long, unsigned long, int);
119#endif /* _ASM_GCMPREGS_H */ 125#endif /* _ASM_GCMPREGS_H */
diff --git a/arch/mips/include/asm/gic.h b/arch/mips/include/asm/gic.h
index a8f57341f123..9b9436a4d816 100644
--- a/arch/mips/include/asm/gic.h
+++ b/arch/mips/include/asm/gic.h
@@ -12,7 +12,6 @@
12#define _ASM_GICREGS_H 12#define _ASM_GICREGS_H
13 13
14#undef GICISBYTELITTLEENDIAN 14#undef GICISBYTELITTLEENDIAN
15#define GICISWORDLITTLEENDIAN
16 15
17/* Constants */ 16/* Constants */
18#define GIC_POL_POS 1 17#define GIC_POL_POS 1
@@ -20,11 +19,7 @@
20#define GIC_TRIG_EDGE 1 19#define GIC_TRIG_EDGE 1
21#define GIC_TRIG_LEVEL 0 20#define GIC_TRIG_LEVEL 0
22 21
23#ifdef CONFIG_SMP
24#define GIC_NUM_INTRS (24 + NR_CPUS * 2) 22#define GIC_NUM_INTRS (24 + NR_CPUS * 2)
25#else
26#define GIC_NUM_INTRS 32
27#endif
28 23
29#define MSK(n) ((1 << (n)) - 1) 24#define MSK(n) ((1 << (n)) - 1)
30#define REG32(addr) (*(volatile unsigned int *) (addr)) 25#define REG32(addr) (*(volatile unsigned int *) (addr))
@@ -70,13 +65,13 @@
70#define USM_VISIBLE_SECTION_SIZE 0x10000 65#define USM_VISIBLE_SECTION_SIZE 0x10000
71 66
72/* Register Map for Shared Section */ 67/* Register Map for Shared Section */
73#if defined(CONFIG_CPU_LITTLE_ENDIAN) || defined(GICISWORDLITTLEENDIAN)
74 68
75#define GIC_SH_CONFIG_OFS 0x0000 69#define GIC_SH_CONFIG_OFS 0x0000
76 70
77/* Shared Global Counter */ 71/* Shared Global Counter */
78#define GIC_SH_COUNTER_31_00_OFS 0x0010 72#define GIC_SH_COUNTER_31_00_OFS 0x0010
79#define GIC_SH_COUNTER_63_32_OFS 0x0014 73#define GIC_SH_COUNTER_63_32_OFS 0x0014
74#define GIC_SH_REVISIONID_OFS 0x0020
80 75
81/* Interrupt Polarity */ 76/* Interrupt Polarity */
82#define GIC_SH_POL_31_0_OFS 0x0100 77#define GIC_SH_POL_31_0_OFS 0x0100
@@ -164,24 +159,31 @@
164 (GIC_SH_INTR_MAP_TO_VPE_BASE_OFS + (32 * (intr)) + (((vpe) / 32) * 4)) 159 (GIC_SH_INTR_MAP_TO_VPE_BASE_OFS + (32 * (intr)) + (((vpe) / 32) * 4))
165#define GIC_SH_MAP_TO_VPE_REG_BIT(vpe) (1 << ((vpe) % 32)) 160#define GIC_SH_MAP_TO_VPE_REG_BIT(vpe) (1 << ((vpe) % 32))
166 161
162/* Convert an interrupt number to a byte offset/bit for multi-word registers */
163#define GIC_INTR_OFS(intr) (((intr) / 32)*4)
164#define GIC_INTR_BIT(intr) ((intr) % 32)
165
167/* Polarity : Reset Value is always 0 */ 166/* Polarity : Reset Value is always 0 */
168#define GIC_SH_SET_POLARITY_OFS 0x0100 167#define GIC_SH_SET_POLARITY_OFS 0x0100
169#define GIC_SET_POLARITY(intr, pol) \ 168#define GIC_SET_POLARITY(intr, pol) \
170 GICBIS(GIC_REG_ADDR(SHARED, GIC_SH_SET_POLARITY_OFS + (((intr) / 32) * 4)), (pol) << ((intr) % 32)) 169 GICBIS(GIC_REG_ADDR(SHARED, GIC_SH_SET_POLARITY_OFS + \
170 GIC_INTR_OFS(intr)), (pol) << GIC_INTR_BIT(intr))
171 171
172/* Triggering : Reset Value is always 0 */ 172/* Triggering : Reset Value is always 0 */
173#define GIC_SH_SET_TRIGGER_OFS 0x0180 173#define GIC_SH_SET_TRIGGER_OFS 0x0180
174#define GIC_SET_TRIGGER(intr, trig) \ 174#define GIC_SET_TRIGGER(intr, trig) \
175 GICBIS(GIC_REG_ADDR(SHARED, GIC_SH_SET_TRIGGER_OFS + (((intr) / 32) * 4)), (trig) << ((intr) % 32)) 175 GICBIS(GIC_REG_ADDR(SHARED, GIC_SH_SET_TRIGGER_OFS + \
176 GIC_INTR_OFS(intr)), (trig) << GIC_INTR_BIT(intr))
176 177
177/* Mask manipulation */ 178/* Mask manipulation */
178#define GIC_SH_SMASK_OFS 0x0380 179#define GIC_SH_SMASK_OFS 0x0380
179#define GIC_SET_INTR_MASK(intr, val) \ 180#define GIC_SET_INTR_MASK(intr) \
180 GICWRITE(GIC_REG_ADDR(SHARED, GIC_SH_SMASK_OFS + (((intr) / 32) * 4)), ((val) << ((intr) % 32))) 181 GICWRITE(GIC_REG_ADDR(SHARED, GIC_SH_SMASK_OFS + \
181 182 GIC_INTR_OFS(intr)), 1 << GIC_INTR_BIT(intr))
182#define GIC_SH_RMASK_OFS 0x0300 183#define GIC_SH_RMASK_OFS 0x0300
183#define GIC_CLR_INTR_MASK(intr, val) \ 184#define GIC_CLR_INTR_MASK(intr) \
184 GICWRITE(GIC_REG_ADDR(SHARED, GIC_SH_RMASK_OFS + (((intr) / 32) * 4)), ((val) << ((intr) % 32))) 185 GICWRITE(GIC_REG_ADDR(SHARED, GIC_SH_RMASK_OFS + \
186 GIC_INTR_OFS(intr)), 1 << GIC_INTR_BIT(intr))
185 187
186/* Register Map for Local Section */ 188/* Register Map for Local Section */
187#define GIC_VPE_CTL_OFS 0x0000 189#define GIC_VPE_CTL_OFS 0x0000
@@ -219,161 +221,6 @@
219#define GIC_UMV_SH_COUNTER_31_00_OFS 0x0000 221#define GIC_UMV_SH_COUNTER_31_00_OFS 0x0000
220#define GIC_UMV_SH_COUNTER_63_32_OFS 0x0004 222#define GIC_UMV_SH_COUNTER_63_32_OFS 0x0004
221 223
222#else /* CONFIG_CPU_BIG_ENDIAN */
223
224#define GIC_SH_CONFIG_OFS 0x0000
225
226/* Shared Global Counter */
227#define GIC_SH_COUNTER_31_00_OFS 0x0014
228#define GIC_SH_COUNTER_63_32_OFS 0x0010
229
230/* Interrupt Polarity */
231#define GIC_SH_POL_31_0_OFS 0x0104
232#define GIC_SH_POL_63_32_OFS 0x0100
233#define GIC_SH_POL_95_64_OFS 0x010c
234#define GIC_SH_POL_127_96_OFS 0x0108
235#define GIC_SH_POL_159_128_OFS 0x0114
236#define GIC_SH_POL_191_160_OFS 0x0110
237#define GIC_SH_POL_223_192_OFS 0x011c
238#define GIC_SH_POL_255_224_OFS 0x0118
239
240/* Edge/Level Triggering */
241#define GIC_SH_TRIG_31_0_OFS 0x0184
242#define GIC_SH_TRIG_63_32_OFS 0x0180
243#define GIC_SH_TRIG_95_64_OFS 0x018c
244#define GIC_SH_TRIG_127_96_OFS 0x0188
245#define GIC_SH_TRIG_159_128_OFS 0x0194
246#define GIC_SH_TRIG_191_160_OFS 0x0190
247#define GIC_SH_TRIG_223_192_OFS 0x019c
248#define GIC_SH_TRIG_255_224_OFS 0x0198
249
250/* Dual Edge Triggering */
251#define GIC_SH_DUAL_31_0_OFS 0x0204
252#define GIC_SH_DUAL_63_32_OFS 0x0200
253#define GIC_SH_DUAL_95_64_OFS 0x020c
254#define GIC_SH_DUAL_127_96_OFS 0x0208
255#define GIC_SH_DUAL_159_128_OFS 0x0214
256#define GIC_SH_DUAL_191_160_OFS 0x0210
257#define GIC_SH_DUAL_223_192_OFS 0x021c
258#define GIC_SH_DUAL_255_224_OFS 0x0218
259
260/* Set/Clear corresponding bit in Edge Detect Register */
261#define GIC_SH_WEDGE_OFS 0x0280
262
263/* Reset Mask - Disables Interrupt */
264#define GIC_SH_RMASK_31_0_OFS 0x0304
265#define GIC_SH_RMASK_63_32_OFS 0x0300
266#define GIC_SH_RMASK_95_64_OFS 0x030c
267#define GIC_SH_RMASK_127_96_OFS 0x0308
268#define GIC_SH_RMASK_159_128_OFS 0x0314
269#define GIC_SH_RMASK_191_160_OFS 0x0310
270#define GIC_SH_RMASK_223_192_OFS 0x031c
271#define GIC_SH_RMASK_255_224_OFS 0x0318
272
273/* Set Mask (WO) - Enables Interrupt */
274#define GIC_SH_SMASK_31_0_OFS 0x0384
275#define GIC_SH_SMASK_63_32_OFS 0x0380
276#define GIC_SH_SMASK_95_64_OFS 0x038c
277#define GIC_SH_SMASK_127_96_OFS 0x0388
278#define GIC_SH_SMASK_159_128_OFS 0x0394
279#define GIC_SH_SMASK_191_160_OFS 0x0390
280#define GIC_SH_SMASK_223_192_OFS 0x039c
281#define GIC_SH_SMASK_255_224_OFS 0x0398
282
283/* Global Interrupt Mask Register (RO) - Bit Set == Interrupt enabled */
284#define GIC_SH_MASK_31_0_OFS 0x0404
285#define GIC_SH_MASK_63_32_OFS 0x0400
286#define GIC_SH_MASK_95_64_OFS 0x040c
287#define GIC_SH_MASK_127_96_OFS 0x0408
288#define GIC_SH_MASK_159_128_OFS 0x0414
289#define GIC_SH_MASK_191_160_OFS 0x0410
290#define GIC_SH_MASK_223_192_OFS 0x041c
291#define GIC_SH_MASK_255_224_OFS 0x0418
292
293/* Pending Global Interrupts (RO) */
294#define GIC_SH_PEND_31_0_OFS 0x0484
295#define GIC_SH_PEND_63_32_OFS 0x0480
296#define GIC_SH_PEND_95_64_OFS 0x048c
297#define GIC_SH_PEND_127_96_OFS 0x0488
298#define GIC_SH_PEND_159_128_OFS 0x0494
299#define GIC_SH_PEND_191_160_OFS 0x0490
300#define GIC_SH_PEND_223_192_OFS 0x049c
301#define GIC_SH_PEND_255_224_OFS 0x0498
302
303#define GIC_SH_INTR_MAP_TO_PIN_BASE_OFS 0x0500
304
305/* Maps Interrupt X to a Pin */
306#define GIC_SH_MAP_TO_PIN(intr) \
307 (GIC_SH_INTR_MAP_TO_PIN_BASE_OFS + (4 * intr))
308
309#define GIC_SH_INTR_MAP_TO_VPE_BASE_OFS 0x2004
310
311/*
312 * Maps Interrupt X to a VPE. This is more complex than the LE case, as
313 * odd and even registers need to be transposed. It does work - trust me!
314 */
315#define GIC_SH_MAP_TO_VPE_REG_OFF(intr, vpe) \
316 (GIC_SH_INTR_MAP_TO_VPE_BASE_OFS + (32 * (intr)) + \
317 (((((vpe) / 32) ^ 1) - 1) * 4))
318#define GIC_SH_MAP_TO_VPE_REG_BIT(vpe) (1 << ((vpe) % 32))
319
320/* Polarity */
321#define GIC_SH_SET_POLARITY_OFS 0x0100
322#define GIC_SET_POLARITY(intr, pol) \
323 GICBIS(GIC_REG_ADDR(SHARED, GIC_SH_SET_POLARITY_OFS + 4 + (((((intr) / 32) ^ 1) - 1) * 4)), (pol) << ((intr) % 32))
324
325/* Triggering */
326#define GIC_SH_SET_TRIGGER_OFS 0x0180
327#define GIC_SET_TRIGGER(intr, trig) \
328 GICBIS(GIC_REG_ADDR(SHARED, GIC_SH_SET_TRIGGER_OFS + 4 + (((((intr) / 32) ^ 1) - 1) * 4)), (trig) << ((intr) % 32))
329
330/* Mask manipulation */
331#define GIC_SH_SMASK_OFS 0x0380
332#define GIC_SET_INTR_MASK(intr, val) \
333 GICWRITE(GIC_REG_ADDR(SHARED, GIC_SH_SMASK_OFS + 4 + (((((intr) / 32) ^ 1) - 1) * 4)), ((val) << ((intr) % 32)))
334
335#define GIC_SH_RMASK_OFS 0x0300
336#define GIC_CLR_INTR_MASK(intr, val) \
337 GICWRITE(GIC_REG_ADDR(SHARED, GIC_SH_RMASK_OFS + 4 + (((((intr) / 32) ^ 1) - 1) * 4)), ((val) << ((intr) % 32)))
338
339/* Register Map for Local Section */
340#define GIC_VPE_CTL_OFS 0x0000
341#define GIC_VPE_PEND_OFS 0x0004
342#define GIC_VPE_MASK_OFS 0x0008
343#define GIC_VPE_RMASK_OFS 0x000c
344#define GIC_VPE_SMASK_OFS 0x0010
345#define GIC_VPE_WD_MAP_OFS 0x0040
346#define GIC_VPE_COMPARE_MAP_OFS 0x0044
347#define GIC_VPE_TIMER_MAP_OFS 0x0048
348#define GIC_VPE_PERFCTR_MAP_OFS 0x0050
349#define GIC_VPE_SWINT0_MAP_OFS 0x0054
350#define GIC_VPE_SWINT1_MAP_OFS 0x0058
351#define GIC_VPE_OTHER_ADDR_OFS 0x0080
352#define GIC_VPE_WD_CONFIG0_OFS 0x0090
353#define GIC_VPE_WD_COUNT0_OFS 0x0094
354#define GIC_VPE_WD_INITIAL0_OFS 0x0098
355#define GIC_VPE_COMPARE_LO_OFS 0x00a4
356#define GIC_VPE_COMPARE_HI_OFS 0x00a0
357
358#define GIC_VPE_EIC_SHADOW_SET_BASE 0x0100
359#define GIC_VPE_EIC_SS(intr) \
360 (GIC_EIC_SHADOW_SET_BASE + (4 * intr))
361
362#define GIC_VPE_EIC_VEC_BASE 0x0800
363#define GIC_VPE_EIC_VEC(intr) \
364 (GIC_VPE_EIC_VEC_BASE + (4 * intr))
365
366#define GIC_VPE_TENABLE_NMI_OFS 0x1000
367#define GIC_VPE_TENABLE_YQ_OFS 0x1004
368#define GIC_VPE_TENABLE_INT_31_0_OFS 0x1080
369#define GIC_VPE_TENABLE_INT_63_32_OFS 0x1084
370
371/* User Mode Visible Section Register Map */
372#define GIC_UMV_SH_COUNTER_31_00_OFS 0x0004
373#define GIC_UMV_SH_COUNTER_63_32_OFS 0x0000
374
375#endif /* !LE */
376
377/* Masks */ 224/* Masks */
378#define GIC_SH_CONFIG_COUNTSTOP_SHF 28 225#define GIC_SH_CONFIG_COUNTSTOP_SHF 28
379#define GIC_SH_CONFIG_COUNTSTOP_MSK (MSK(1) << GIC_SH_CONFIG_COUNTSTOP_SHF) 226#define GIC_SH_CONFIG_COUNTSTOP_MSK (MSK(1) << GIC_SH_CONFIG_COUNTSTOP_SHF)
@@ -473,12 +320,13 @@ struct gic_intrmask_regs {
473 * in building ipi_map. 320 * in building ipi_map.
474 */ 321 */
475struct gic_intr_map { 322struct gic_intr_map {
476 unsigned int intrnum; /* Ext Intr Num */
477 unsigned int cpunum; /* Directed to this CPU */ 323 unsigned int cpunum; /* Directed to this CPU */
478 unsigned int pin; /* Directed to this Pin */ 324 unsigned int pin; /* Directed to this Pin */
479 unsigned int polarity; /* Polarity : +/- */ 325 unsigned int polarity; /* Polarity : +/- */
480 unsigned int trigtype; /* Trigger : Edge/Levl */ 326 unsigned int trigtype; /* Trigger : Edge/Levl */
481 unsigned int ipiflag; /* Is used for IPI ? */ 327 unsigned int flags; /* Misc flags */
328#define GIC_FLAG_IPI 0x01
329#define GIC_FLAG_TRANSPARENT 0x02
482}; 330};
483 331
484extern void gic_init(unsigned long gic_base_addr, 332extern void gic_init(unsigned long gic_base_addr,
diff --git a/arch/mips/include/asm/mach-ar7/ar7.h b/arch/mips/include/asm/mach-ar7/ar7.h
index de71694614de..21cbbc706448 100644
--- a/arch/mips/include/asm/mach-ar7/ar7.h
+++ b/arch/mips/include/asm/mach-ar7/ar7.h
@@ -78,6 +78,9 @@
78#define AR7_REF_CLOCK 25000000 78#define AR7_REF_CLOCK 25000000
79#define AR7_XTAL_CLOCK 24000000 79#define AR7_XTAL_CLOCK 24000000
80 80
81/* DCL */
82#define AR7_WDT_HW_ENA 0x10
83
81struct plat_cpmac_data { 84struct plat_cpmac_data {
82 int reset_bit; 85 int reset_bit;
83 int power_bit; 86 int power_bit;
diff --git a/arch/mips/include/asm/mach-au1x00/gpio-au1000.h b/arch/mips/include/asm/mach-au1x00/gpio-au1000.h
index feea00148b5d..91595fa89034 100644
--- a/arch/mips/include/asm/mach-au1x00/gpio-au1000.h
+++ b/arch/mips/include/asm/mach-au1x00/gpio-au1000.h
@@ -104,6 +104,8 @@ static inline int au1100_gpio2_to_irq(int gpio)
104 104
105 if ((gpio >= 8) && (gpio <= 15)) 105 if ((gpio >= 8) && (gpio <= 15))
106 return MAKE_IRQ(0, 29); /* shared GPIO208_215 */ 106 return MAKE_IRQ(0, 29); /* shared GPIO208_215 */
107
108 return -ENXIO;
107} 109}
108 110
109#ifdef CONFIG_SOC_AU1100 111#ifdef CONFIG_SOC_AU1100
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h
deleted file mode 100644
index bf348f573bbc..000000000000
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h
+++ /dev/null
@@ -1,6 +0,0 @@
1#ifndef BCM63XX_DEV_UART_H_
2#define BCM63XX_DEV_UART_H_
3
4int bcm63xx_uart_register(void);
5
6#endif /* BCM63XX_DEV_UART_H_ */
diff --git a/arch/mips/include/asm/mach-ip27/topology.h b/arch/mips/include/asm/mach-ip27/topology.h
index f6837422fe65..09a59bcc1b07 100644
--- a/arch/mips/include/asm/mach-ip27/topology.h
+++ b/arch/mips/include/asm/mach-ip27/topology.h
@@ -44,8 +44,8 @@ extern unsigned char __node_distances[MAX_COMPACT_NODES][MAX_COMPACT_NODES];
44 .busy_factor = 32, \ 44 .busy_factor = 32, \
45 .imbalance_pct = 125, \ 45 .imbalance_pct = 125, \
46 .cache_nice_tries = 1, \ 46 .cache_nice_tries = 1, \
47 .flags = SD_LOAD_BALANCE \ 47 .flags = SD_LOAD_BALANCE | \
48 | SD_BALANCE_EXEC \ 48 SD_BALANCE_EXEC, \
49 .last_balance = jiffies, \ 49 .last_balance = jiffies, \
50 .balance_interval = 1, \ 50 .balance_interval = 1, \
51 .nr_balance_failed = 0, \ 51 .nr_balance_failed = 0, \
diff --git a/arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h b/arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h
index ce5b6e270e3f..9947e57c91de 100644
--- a/arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h
+++ b/arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h
@@ -29,7 +29,7 @@
29#define cpu_has_cache_cdex_p 0 29#define cpu_has_cache_cdex_p 0
30#define cpu_has_cache_cdex_s 0 30#define cpu_has_cache_cdex_s 0
31#define cpu_has_counter 1 31#define cpu_has_counter 1
32#define cpu_has_dc_aliases 1 32#define cpu_has_dc_aliases (PAGE_SIZE < 0x4000)
33#define cpu_has_divec 0 33#define cpu_has_divec 0
34#define cpu_has_dsp 0 34#define cpu_has_dsp 0
35#define cpu_has_ejtag 0 35#define cpu_has_ejtag 0
@@ -54,6 +54,5 @@
54#define cpu_has_vce 0 54#define cpu_has_vce 0
55#define cpu_has_vtag_icache 0 55#define cpu_has_vtag_icache 0
56#define cpu_has_watch 1 56#define cpu_has_watch 1
57#define cpu_icache_snoops_remote_store 1
58 57
59#endif /* __ASM_MACH_LOONGSON_CPU_FEATURE_OVERRIDES_H */ 58#endif /* __ASM_MACH_LOONGSON_CPU_FEATURE_OVERRIDES_H */
diff --git a/arch/mips/include/asm/mman.h b/arch/mips/include/asm/mman.h
index a2250f390a29..c892bfb3e2c1 100644
--- a/arch/mips/include/asm/mman.h
+++ b/arch/mips/include/asm/mman.h
@@ -75,6 +75,7 @@
75 75
76#define MADV_MERGEABLE 12 /* KSM may merge identical pages */ 76#define MADV_MERGEABLE 12 /* KSM may merge identical pages */
77#define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages */ 77#define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages */
78#define MADV_HWPOISON 100 /* poison a page for testing */
78 79
79/* compatibility flags */ 80/* compatibility flags */
80#define MAP_FILE 0 81#define MAP_FILE 0
diff --git a/arch/mips/include/asm/mmu_context.h b/arch/mips/include/asm/mmu_context.h
index d9743536a621..6083db586500 100644
--- a/arch/mips/include/asm/mmu_context.h
+++ b/arch/mips/include/asm/mmu_context.h
@@ -16,6 +16,7 @@
16#include <linux/smp.h> 16#include <linux/smp.h>
17#include <linux/slab.h> 17#include <linux/slab.h>
18#include <asm/cacheflush.h> 18#include <asm/cacheflush.h>
19#include <asm/hazards.h>
19#include <asm/tlbflush.h> 20#include <asm/tlbflush.h>
20#ifdef CONFIG_MIPS_MT_SMTC 21#ifdef CONFIG_MIPS_MT_SMTC
21#include <asm/mipsmtregs.h> 22#include <asm/mipsmtregs.h>
@@ -36,11 +37,13 @@ extern unsigned long pgd_current[];
36#ifdef CONFIG_32BIT 37#ifdef CONFIG_32BIT
37#define TLBMISS_HANDLER_SETUP() \ 38#define TLBMISS_HANDLER_SETUP() \
38 write_c0_context((unsigned long) smp_processor_id() << 25); \ 39 write_c0_context((unsigned long) smp_processor_id() << 25); \
40 back_to_back_c0_hazard(); \
39 TLBMISS_HANDLER_SETUP_PGD(swapper_pg_dir) 41 TLBMISS_HANDLER_SETUP_PGD(swapper_pg_dir)
40#endif 42#endif
41#ifdef CONFIG_64BIT 43#ifdef CONFIG_64BIT
42#define TLBMISS_HANDLER_SETUP() \ 44#define TLBMISS_HANDLER_SETUP() \
43 write_c0_context((unsigned long) smp_processor_id() << 26); \ 45 write_c0_context((unsigned long) smp_processor_id() << 26); \
46 back_to_back_c0_hazard(); \
44 TLBMISS_HANDLER_SETUP_PGD(swapper_pg_dir) 47 TLBMISS_HANDLER_SETUP_PGD(swapper_pg_dir)
45#endif 48#endif
46 49
@@ -165,12 +168,12 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
165 * having ASID_MASK smaller than the hardware maximum, 168 * having ASID_MASK smaller than the hardware maximum,
166 * make sure no "soft" bits become "hard"... 169 * make sure no "soft" bits become "hard"...
167 */ 170 */
168 write_c0_entryhi((read_c0_entryhi() & ~HW_ASID_MASK) 171 write_c0_entryhi((read_c0_entryhi() & ~HW_ASID_MASK) |
169 | (cpu_context(cpu, next) & ASID_MASK)); 172 cpu_asid(cpu, next));
170 ehb(); /* Make sure it propagates to TCStatus */ 173 ehb(); /* Make sure it propagates to TCStatus */
171 evpe(mtflags); 174 evpe(mtflags);
172#else 175#else
173 write_c0_entryhi(cpu_context(cpu, next)); 176 write_c0_entryhi(cpu_asid(cpu, next));
174#endif /* CONFIG_MIPS_MT_SMTC */ 177#endif /* CONFIG_MIPS_MT_SMTC */
175 TLBMISS_HANDLER_SETUP_PGD(next->pgd); 178 TLBMISS_HANDLER_SETUP_PGD(next->pgd);
176 179
@@ -226,11 +229,11 @@ activate_mm(struct mm_struct *prev, struct mm_struct *next)
226 } 229 }
227 /* See comments for similar code above */ 230 /* See comments for similar code above */
228 write_c0_entryhi((read_c0_entryhi() & ~HW_ASID_MASK) | 231 write_c0_entryhi((read_c0_entryhi() & ~HW_ASID_MASK) |
229 (cpu_context(cpu, next) & ASID_MASK)); 232 cpu_asid(cpu, next));
230 ehb(); /* Make sure it propagates to TCStatus */ 233 ehb(); /* Make sure it propagates to TCStatus */
231 evpe(mtflags); 234 evpe(mtflags);
232#else 235#else
233 write_c0_entryhi(cpu_context(cpu, next)); 236 write_c0_entryhi(cpu_asid(cpu, next));
234#endif /* CONFIG_MIPS_MT_SMTC */ 237#endif /* CONFIG_MIPS_MT_SMTC */
235 TLBMISS_HANDLER_SETUP_PGD(next->pgd); 238 TLBMISS_HANDLER_SETUP_PGD(next->pgd);
236 239
diff --git a/arch/mips/include/asm/setup.h b/arch/mips/include/asm/setup.h
index e600cedda976..50511aac04e9 100644
--- a/arch/mips/include/asm/setup.h
+++ b/arch/mips/include/asm/setup.h
@@ -1,7 +1,7 @@
1#ifndef _MIPS_SETUP_H 1#ifndef _MIPS_SETUP_H
2#define _MIPS_SETUP_H 2#define _MIPS_SETUP_H
3 3
4#define COMMAND_LINE_SIZE 256 4#define COMMAND_LINE_SIZE 4096
5 5
6#ifdef __KERNEL__ 6#ifdef __KERNEL__
7extern void setup_early_printk(void); 7extern void setup_early_printk(void);
diff --git a/arch/mips/include/asm/smtc_ipi.h b/arch/mips/include/asm/smtc_ipi.h
index 8ce517574340..15278dbd7e79 100644
--- a/arch/mips/include/asm/smtc_ipi.h
+++ b/arch/mips/include/asm/smtc_ipi.h
@@ -45,6 +45,7 @@ struct smtc_ipi_q {
45 spinlock_t lock; 45 spinlock_t lock;
46 struct smtc_ipi *tail; 46 struct smtc_ipi *tail;
47 int depth; 47 int depth;
48 int resched_flag; /* reschedule already queued */
48}; 49};
49 50
50static inline void smtc_ipi_nq(struct smtc_ipi_q *q, struct smtc_ipi *p) 51static inline void smtc_ipi_nq(struct smtc_ipi_q *q, struct smtc_ipi *p)
diff --git a/arch/mips/include/asm/spram.h b/arch/mips/include/asm/spram.h
new file mode 100644
index 000000000000..0b89006e4907
--- /dev/null
+++ b/arch/mips/include/asm/spram.h
@@ -0,0 +1,10 @@
1#ifndef _MIPS_SPRAM_H
2#define _MIPS_SPRAM_H
3
4#ifdef CONFIG_CPU_MIPSR2
5extern __init void spram_config(void);
6#else
7static inline void spram_config(void) { };
8#endif /* CONFIG_CPU_MIPSR2 */
9
10#endif /* _MIPS_SPRAM_H */
diff --git a/arch/mips/include/asm/system.h b/arch/mips/include/asm/system.h
index fcf5f98d90cc..83b5509e09e8 100644
--- a/arch/mips/include/asm/system.h
+++ b/arch/mips/include/asm/system.h
@@ -12,6 +12,7 @@
12#ifndef _ASM_SYSTEM_H 12#ifndef _ASM_SYSTEM_H
13#define _ASM_SYSTEM_H 13#define _ASM_SYSTEM_H
14 14
15#include <linux/kernel.h>
15#include <linux/types.h> 16#include <linux/types.h>
16#include <linux/irqflags.h> 17#include <linux/irqflags.h>
17 18
@@ -193,10 +194,6 @@ extern __u64 __xchg_u64_unsupported_on_32bit_kernels(volatile __u64 * m, __u64 v
193#define __xchg_u64 __xchg_u64_unsupported_on_32bit_kernels 194#define __xchg_u64 __xchg_u64_unsupported_on_32bit_kernels
194#endif 195#endif
195 196
196/* This function doesn't exist, so you'll get a linker error
197 if something tries to do an invalid xchg(). */
198extern void __xchg_called_with_bad_pointer(void);
199
200static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) 197static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size)
201{ 198{
202 switch (size) { 199 switch (size) {
@@ -205,11 +202,17 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz
205 case 8: 202 case 8:
206 return __xchg_u64(ptr, x); 203 return __xchg_u64(ptr, x);
207 } 204 }
208 __xchg_called_with_bad_pointer(); 205
209 return x; 206 return x;
210} 207}
211 208
212#define xchg(ptr, x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))) 209#define xchg(ptr, x) \
210({ \
211 BUILD_BUG_ON(sizeof(*(ptr)) & ~0xc); \
212 \
213 ((__typeof__(*(ptr))) \
214 __xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))); \
215})
213 216
214extern void set_handler(unsigned long offset, void *addr, unsigned long len); 217extern void set_handler(unsigned long offset, void *addr, unsigned long len);
215extern void set_uncached_handler(unsigned long offset, void *addr, unsigned long len); 218extern void set_uncached_handler(unsigned long offset, void *addr, unsigned long len);
diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h
index 01cc1630b66c..845da2107ed1 100644
--- a/arch/mips/include/asm/thread_info.h
+++ b/arch/mips/include/asm/thread_info.h
@@ -86,14 +86,7 @@ register struct thread_info *__current_thread_info __asm__("$28");
86#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR 86#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR
87 87
88#ifdef CONFIG_DEBUG_STACK_USAGE 88#ifdef CONFIG_DEBUG_STACK_USAGE
89#define alloc_thread_info(tsk) \ 89#define alloc_thread_info(tsk) kzalloc(THREAD_SIZE, GFP_KERNEL)
90({ \
91 struct thread_info *ret; \
92 \
93 ret = kzalloc(THREAD_SIZE, GFP_KERNEL); \
94 \
95 ret; \
96})
97#else 90#else
98#define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, GFP_KERNEL) 91#define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, GFP_KERNEL)
99#endif 92#endif
diff --git a/arch/mips/jazz/irq.c b/arch/mips/jazz/irq.c
index 7fd170d007e7..7bd32d04c2cc 100644
--- a/arch/mips/jazz/irq.c
+++ b/arch/mips/jazz/irq.c
@@ -134,7 +134,7 @@ static irqreturn_t r4030_timer_interrupt(int irq, void *dev_id)
134 134
135static struct irqaction r4030_timer_irqaction = { 135static struct irqaction r4030_timer_irqaction = {
136 .handler = r4030_timer_interrupt, 136 .handler = r4030_timer_interrupt,
137 .flags = IRQF_DISABLED, 137 .flags = IRQF_DISABLED | IRQF_TIMER,
138 .name = "R4030 timer", 138 .name = "R4030 timer",
139}; 139};
140 140
diff --git a/arch/mips/kernel/cevt-bcm1480.c b/arch/mips/kernel/cevt-bcm1480.c
index e02f79b1eb51..bfea327c636c 100644
--- a/arch/mips/kernel/cevt-bcm1480.c
+++ b/arch/mips/kernel/cevt-bcm1480.c
@@ -144,7 +144,7 @@ void __cpuinit sb1480_clockevent_init(void)
144 bcm1480_unmask_irq(cpu, irq); 144 bcm1480_unmask_irq(cpu, irq);
145 145
146 action->handler = sibyte_counter_handler; 146 action->handler = sibyte_counter_handler;
147 action->flags = IRQF_DISABLED | IRQF_PERCPU; 147 action->flags = IRQF_DISABLED | IRQF_PERCPU | IRQF_TIMER;
148 action->name = name; 148 action->name = name;
149 action->dev_id = cd; 149 action->dev_id = cd;
150 150
diff --git a/arch/mips/kernel/cevt-ds1287.c b/arch/mips/kernel/cevt-ds1287.c
index 6996da4d74a2..00a4da277cbb 100644
--- a/arch/mips/kernel/cevt-ds1287.c
+++ b/arch/mips/kernel/cevt-ds1287.c
@@ -107,7 +107,7 @@ static irqreturn_t ds1287_interrupt(int irq, void *dev_id)
107 107
108static struct irqaction ds1287_irqaction = { 108static struct irqaction ds1287_irqaction = {
109 .handler = ds1287_interrupt, 109 .handler = ds1287_interrupt,
110 .flags = IRQF_DISABLED | IRQF_PERCPU, 110 .flags = IRQF_DISABLED | IRQF_PERCPU | IRQF_TIMER,
111 .name = "ds1287", 111 .name = "ds1287",
112}; 112};
113 113
diff --git a/arch/mips/kernel/cevt-gt641xx.c b/arch/mips/kernel/cevt-gt641xx.c
index 92351e00ae0e..f5d265eb6eae 100644
--- a/arch/mips/kernel/cevt-gt641xx.c
+++ b/arch/mips/kernel/cevt-gt641xx.c
@@ -113,7 +113,7 @@ static irqreturn_t gt641xx_timer0_interrupt(int irq, void *dev_id)
113 113
114static struct irqaction gt641xx_timer0_irqaction = { 114static struct irqaction gt641xx_timer0_irqaction = {
115 .handler = gt641xx_timer0_interrupt, 115 .handler = gt641xx_timer0_interrupt,
116 .flags = IRQF_DISABLED | IRQF_PERCPU, 116 .flags = IRQF_DISABLED | IRQF_PERCPU | IRQF_TIMER,
117 .name = "gt641xx_timer0", 117 .name = "gt641xx_timer0",
118}; 118};
119 119
diff --git a/arch/mips/kernel/cevt-r4k.c b/arch/mips/kernel/cevt-r4k.c
index 2652362ce047..b469ad05d520 100644
--- a/arch/mips/kernel/cevt-r4k.c
+++ b/arch/mips/kernel/cevt-r4k.c
@@ -83,7 +83,7 @@ out:
83 83
84struct irqaction c0_compare_irqaction = { 84struct irqaction c0_compare_irqaction = {
85 .handler = c0_compare_interrupt, 85 .handler = c0_compare_interrupt,
86 .flags = IRQF_DISABLED | IRQF_PERCPU, 86 .flags = IRQF_DISABLED | IRQF_PERCPU | IRQF_TIMER,
87 .name = "timer", 87 .name = "timer",
88}; 88};
89 89
diff --git a/arch/mips/kernel/cevt-sb1250.c b/arch/mips/kernel/cevt-sb1250.c
index ac5903d1b20e..da78eeaea6e8 100644
--- a/arch/mips/kernel/cevt-sb1250.c
+++ b/arch/mips/kernel/cevt-sb1250.c
@@ -143,7 +143,7 @@ void __cpuinit sb1250_clockevent_init(void)
143 sb1250_unmask_irq(cpu, irq); 143 sb1250_unmask_irq(cpu, irq);
144 144
145 action->handler = sibyte_counter_handler; 145 action->handler = sibyte_counter_handler;
146 action->flags = IRQF_DISABLED | IRQF_PERCPU; 146 action->flags = IRQF_DISABLED | IRQF_PERCPU | IRQF_TIMER;
147 action->name = name; 147 action->name = name;
148 action->dev_id = cd; 148 action->dev_id = cd;
149 149
diff --git a/arch/mips/kernel/cevt-smtc.c b/arch/mips/kernel/cevt-smtc.c
index 98bd7de75778..b102e4f1630e 100644
--- a/arch/mips/kernel/cevt-smtc.c
+++ b/arch/mips/kernel/cevt-smtc.c
@@ -173,11 +173,12 @@ void smtc_distribute_timer(int vpe)
173 unsigned int mtflags; 173 unsigned int mtflags;
174 int cpu; 174 int cpu;
175 struct clock_event_device *cd; 175 struct clock_event_device *cd;
176 unsigned long nextstamp = 0L; 176 unsigned long nextstamp;
177 unsigned long reference; 177 unsigned long reference;
178 178
179 179
180repeat: 180repeat:
181 nextstamp = 0L;
181 for_each_online_cpu(cpu) { 182 for_each_online_cpu(cpu) {
182 /* 183 /*
183 * Find virtual CPUs within the current VPE who have 184 * Find virtual CPUs within the current VPE who have
diff --git a/arch/mips/kernel/cevt-txx9.c b/arch/mips/kernel/cevt-txx9.c
index 0037f21baf0d..218ee6bda935 100644
--- a/arch/mips/kernel/cevt-txx9.c
+++ b/arch/mips/kernel/cevt-txx9.c
@@ -146,7 +146,7 @@ static irqreturn_t txx9tmr_interrupt(int irq, void *dev_id)
146 146
147static struct irqaction txx9tmr_irq = { 147static struct irqaction txx9tmr_irq = {
148 .handler = txx9tmr_interrupt, 148 .handler = txx9tmr_interrupt,
149 .flags = IRQF_DISABLED | IRQF_PERCPU, 149 .flags = IRQF_DISABLED | IRQF_PERCPU | IRQF_TIMER,
150 .name = "txx9tmr", 150 .name = "txx9tmr",
151 .dev_id = &txx9_clock_event_device, 151 .dev_id = &txx9_clock_event_device,
152}; 152};
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index f709657e4dcd..7a51866068a4 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -23,7 +23,7 @@
23#include <asm/mipsregs.h> 23#include <asm/mipsregs.h>
24#include <asm/system.h> 24#include <asm/system.h>
25#include <asm/watch.h> 25#include <asm/watch.h>
26 26#include <asm/spram.h>
27/* 27/*
28 * Not all of the MIPS CPUs have the "wait" instruction available. Moreover, 28 * Not all of the MIPS CPUs have the "wait" instruction available. Moreover,
29 * the implementation of the "wait" feature differs between CPU families. This 29 * the implementation of the "wait" feature differs between CPU families. This
@@ -711,12 +711,6 @@ static void __cpuinit decode_configs(struct cpuinfo_mips *c)
711 mips_probe_watch_registers(c); 711 mips_probe_watch_registers(c);
712} 712}
713 713
714#ifdef CONFIG_CPU_MIPSR2
715extern void spram_config(void);
716#else
717static inline void spram_config(void) {}
718#endif
719
720static inline void cpu_probe_mips(struct cpuinfo_mips *c, unsigned int cpu) 714static inline void cpu_probe_mips(struct cpuinfo_mips *c, unsigned int cpu)
721{ 715{
722 decode_configs(c); 716 decode_configs(c);
diff --git a/arch/mips/kernel/head.S b/arch/mips/kernel/head.S
index 531ce7b16124..ea695d9605e9 100644
--- a/arch/mips/kernel/head.S
+++ b/arch/mips/kernel/head.S
@@ -191,6 +191,7 @@ NESTED(kernel_entry, 16, sp) # kernel entry point
191 /* Set the SP after an empty pt_regs. */ 191 /* Set the SP after an empty pt_regs. */
192 PTR_LI sp, _THREAD_SIZE - 32 - PT_SIZE 192 PTR_LI sp, _THREAD_SIZE - 32 - PT_SIZE
193 PTR_ADDU sp, $28 193 PTR_ADDU sp, $28
194 back_to_back_c0_hazard
194 set_saved_sp sp, t0, t1 195 set_saved_sp sp, t0, t1
195 PTR_SUBU sp, 4 * SZREG # init stack pointer 196 PTR_SUBU sp, 4 * SZREG # init stack pointer
196 197
diff --git a/arch/mips/kernel/i8253.c b/arch/mips/kernel/i8253.c
index f7d8d5d0ddbf..ed5c441615e4 100644
--- a/arch/mips/kernel/i8253.c
+++ b/arch/mips/kernel/i8253.c
@@ -98,7 +98,7 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id)
98 98
99static struct irqaction irq0 = { 99static struct irqaction irq0 = {
100 .handler = timer_interrupt, 100 .handler = timer_interrupt,
101 .flags = IRQF_DISABLED | IRQF_NOBALANCING, 101 .flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_TIMER,
102 .name = "timer" 102 .name = "timer"
103}; 103};
104 104
diff --git a/arch/mips/kernel/irq-gic.c b/arch/mips/kernel/irq-gic.c
index d2072cd38592..b181f2f0ea8e 100644
--- a/arch/mips/kernel/irq-gic.c
+++ b/arch/mips/kernel/irq-gic.c
@@ -14,38 +14,23 @@
14 14
15 15
16static unsigned long _gic_base; 16static unsigned long _gic_base;
17static unsigned int _irqbase, _mapsize, numvpes, numintrs; 17static unsigned int _irqbase;
18static struct gic_intr_map *_intrmap; 18static unsigned int gic_irq_flags[GIC_NUM_INTRS];
19#define GIC_IRQ_FLAG_EDGE 0x0001
19 20
20static struct gic_pcpu_mask pcpu_masks[NR_CPUS]; 21struct gic_pcpu_mask pcpu_masks[NR_CPUS];
21static struct gic_pending_regs pending_regs[NR_CPUS]; 22static struct gic_pending_regs pending_regs[NR_CPUS];
22static struct gic_intrmask_regs intrmask_regs[NR_CPUS]; 23static struct gic_intrmask_regs intrmask_regs[NR_CPUS];
23 24
24#define gic_wedgeb2bok 0 /*
25 * Can GIC handle b2b writes to wedge register?
26 */
27#if gic_wedgeb2bok == 0
28static DEFINE_SPINLOCK(gic_wedgeb2b_lock);
29#endif
30
31void gic_send_ipi(unsigned int intr) 25void gic_send_ipi(unsigned int intr)
32{ 26{
33#if gic_wedgeb2bok == 0
34 unsigned long flags;
35#endif
36 pr_debug("CPU%d: %s status %08x\n", smp_processor_id(), __func__, 27 pr_debug("CPU%d: %s status %08x\n", smp_processor_id(), __func__,
37 read_c0_status()); 28 read_c0_status());
38 if (!gic_wedgeb2bok)
39 spin_lock_irqsave(&gic_wedgeb2b_lock, flags);
40 GICWRITE(GIC_REG(SHARED, GIC_SH_WEDGE), 0x80000000 | intr); 29 GICWRITE(GIC_REG(SHARED, GIC_SH_WEDGE), 0x80000000 | intr);
41 if (!gic_wedgeb2bok) {
42 (void) GIC_REG(SHARED, GIC_SH_CONFIG);
43 spin_unlock_irqrestore(&gic_wedgeb2b_lock, flags);
44 }
45} 30}
46 31
47/* This is Malta specific and needs to be exported */ 32/* This is Malta specific and needs to be exported */
48static void vpe_local_setup(unsigned int numvpes) 33static void __init vpe_local_setup(unsigned int numvpes)
49{ 34{
50 int i; 35 int i;
51 unsigned long timer_interrupt = 5, perf_interrupt = 5; 36 unsigned long timer_interrupt = 5, perf_interrupt = 5;
@@ -105,44 +90,34 @@ unsigned int gic_get_int(void)
105 90
106static unsigned int gic_irq_startup(unsigned int irq) 91static unsigned int gic_irq_startup(unsigned int irq)
107{ 92{
108 pr_debug("CPU%d: %s: irq%d\n", smp_processor_id(), __func__, irq);
109 irq -= _irqbase; 93 irq -= _irqbase;
110 GIC_SET_INTR_MASK(irq, 1); 94 pr_debug("CPU%d: %s: irq%d\n", smp_processor_id(), __func__, irq);
95 GIC_SET_INTR_MASK(irq);
111 return 0; 96 return 0;
112} 97}
113 98
114static void gic_irq_ack(unsigned int irq) 99static void gic_irq_ack(unsigned int irq)
115{ 100{
116#if gic_wedgeb2bok == 0
117 unsigned long flags;
118#endif
119 pr_debug("CPU%d: %s: irq%d\n", smp_processor_id(), __func__, irq);
120 irq -= _irqbase; 101 irq -= _irqbase;
121 GIC_CLR_INTR_MASK(irq, 1); 102 pr_debug("CPU%d: %s: irq%d\n", smp_processor_id(), __func__, irq);
103 GIC_CLR_INTR_MASK(irq);
122 104
123 if (_intrmap[irq].trigtype == GIC_TRIG_EDGE) { 105 if (gic_irq_flags[irq] & GIC_IRQ_FLAG_EDGE)
124 if (!gic_wedgeb2bok)
125 spin_lock_irqsave(&gic_wedgeb2b_lock, flags);
126 GICWRITE(GIC_REG(SHARED, GIC_SH_WEDGE), irq); 106 GICWRITE(GIC_REG(SHARED, GIC_SH_WEDGE), irq);
127 if (!gic_wedgeb2bok) {
128 (void) GIC_REG(SHARED, GIC_SH_CONFIG);
129 spin_unlock_irqrestore(&gic_wedgeb2b_lock, flags);
130 }
131 }
132} 107}
133 108
134static void gic_mask_irq(unsigned int irq) 109static void gic_mask_irq(unsigned int irq)
135{ 110{
136 pr_debug("CPU%d: %s: irq%d\n", smp_processor_id(), __func__, irq);
137 irq -= _irqbase; 111 irq -= _irqbase;
138 GIC_CLR_INTR_MASK(irq, 1); 112 pr_debug("CPU%d: %s: irq%d\n", smp_processor_id(), __func__, irq);
113 GIC_CLR_INTR_MASK(irq);
139} 114}
140 115
141static void gic_unmask_irq(unsigned int irq) 116static void gic_unmask_irq(unsigned int irq)
142{ 117{
143 pr_debug("CPU%d: %s: irq%d\n", smp_processor_id(), __func__, irq);
144 irq -= _irqbase; 118 irq -= _irqbase;
145 GIC_SET_INTR_MASK(irq, 1); 119 pr_debug("CPU%d: %s: irq%d\n", smp_processor_id(), __func__, irq);
120 GIC_SET_INTR_MASK(irq);
146} 121}
147 122
148#ifdef CONFIG_SMP 123#ifdef CONFIG_SMP
@@ -155,9 +130,8 @@ static int gic_set_affinity(unsigned int irq, const struct cpumask *cpumask)
155 unsigned long flags; 130 unsigned long flags;
156 int i; 131 int i;
157 132
158 pr_debug(KERN_DEBUG "%s called\n", __func__);
159 irq -= _irqbase; 133 irq -= _irqbase;
160 134 pr_debug(KERN_DEBUG "%s(%d) called\n", __func__, irq);
161 cpumask_and(&tmp, cpumask, cpu_online_mask); 135 cpumask_and(&tmp, cpumask, cpu_online_mask);
162 if (cpus_empty(tmp)) 136 if (cpus_empty(tmp))
163 return -1; 137 return -1;
@@ -168,13 +142,6 @@ static int gic_set_affinity(unsigned int irq, const struct cpumask *cpumask)
168 /* Re-route this IRQ */ 142 /* Re-route this IRQ */
169 GIC_SH_MAP_TO_VPE_SMASK(irq, first_cpu(tmp)); 143 GIC_SH_MAP_TO_VPE_SMASK(irq, first_cpu(tmp));
170 144
171 /*
172 * FIXME: assumption that _intrmap is ordered and has no holes
173 */
174
175 /* Update the intr_map */
176 _intrmap[irq].cpunum = first_cpu(tmp);
177
178 /* Update the pcpu_masks */ 145 /* Update the pcpu_masks */
179 for (i = 0; i < NR_CPUS; i++) 146 for (i = 0; i < NR_CPUS; i++)
180 clear_bit(irq, pcpu_masks[i].pcpu_mask); 147 clear_bit(irq, pcpu_masks[i].pcpu_mask);
@@ -201,8 +168,9 @@ static struct irq_chip gic_irq_controller = {
201#endif 168#endif
202}; 169};
203 170
204static void __init setup_intr(unsigned int intr, unsigned int cpu, 171static void __init gic_setup_intr(unsigned int intr, unsigned int cpu,
205 unsigned int pin, unsigned int polarity, unsigned int trigtype) 172 unsigned int pin, unsigned int polarity, unsigned int trigtype,
173 unsigned int flags)
206{ 174{
207 /* Setup Intr to Pin mapping */ 175 /* Setup Intr to Pin mapping */
208 if (pin & GIC_MAP_TO_NMI_MSK) { 176 if (pin & GIC_MAP_TO_NMI_MSK) {
@@ -227,38 +195,43 @@ static void __init setup_intr(unsigned int intr, unsigned int cpu,
227 GIC_SET_TRIGGER(intr, trigtype); 195 GIC_SET_TRIGGER(intr, trigtype);
228 196
229 /* Init Intr Masks */ 197 /* Init Intr Masks */
230 GIC_SET_INTR_MASK(intr, 0); 198 GIC_CLR_INTR_MASK(intr);
199 /* Initialise per-cpu Interrupt software masks */
200 if (flags & GIC_FLAG_IPI)
201 set_bit(intr, pcpu_masks[cpu].pcpu_mask);
202 if (flags & GIC_FLAG_TRANSPARENT)
203 GIC_SET_INTR_MASK(intr);
204 if (trigtype == GIC_TRIG_EDGE)
205 gic_irq_flags[intr] |= GIC_IRQ_FLAG_EDGE;
231} 206}
232 207
233static void __init gic_basic_init(void) 208static void __init gic_basic_init(int numintrs, int numvpes,
209 struct gic_intr_map *intrmap, int mapsize)
234{ 210{
235 unsigned int i, cpu; 211 unsigned int i, cpu;
236 212
237 /* Setup defaults */ 213 /* Setup defaults */
238 for (i = 0; i < GIC_NUM_INTRS; i++) { 214 for (i = 0; i < numintrs; i++) {
239 GIC_SET_POLARITY(i, GIC_POL_POS); 215 GIC_SET_POLARITY(i, GIC_POL_POS);
240 GIC_SET_TRIGGER(i, GIC_TRIG_LEVEL); 216 GIC_SET_TRIGGER(i, GIC_TRIG_LEVEL);
241 GIC_SET_INTR_MASK(i, 0); 217 GIC_CLR_INTR_MASK(i);
218 if (i < GIC_NUM_INTRS)
219 gic_irq_flags[i] = 0;
242 } 220 }
243 221
244 /* Setup specifics */ 222 /* Setup specifics */
245 for (i = 0; i < _mapsize; i++) { 223 for (i = 0; i < mapsize; i++) {
246 cpu = _intrmap[i].cpunum; 224 cpu = intrmap[i].cpunum;
247 if (cpu == X) 225 if (cpu == X)
248 continue; 226 continue;
249 227 if (cpu == 0 && i != 0 && intrmap[i].flags == 0)
250 if (cpu == 0 && i != 0 && _intrmap[i].intrnum == 0 &&
251 _intrmap[i].ipiflag == 0)
252 continue; 228 continue;
253 229 gic_setup_intr(i,
254 setup_intr(_intrmap[i].intrnum, 230 intrmap[i].cpunum,
255 _intrmap[i].cpunum, 231 intrmap[i].pin,
256 _intrmap[i].pin, 232 intrmap[i].polarity,
257 _intrmap[i].polarity, 233 intrmap[i].trigtype,
258 _intrmap[i].trigtype); 234 intrmap[i].flags);
259 /* Initialise per-cpu Interrupt software masks */
260 if (_intrmap[i].ipiflag)
261 set_bit(_intrmap[i].intrnum, pcpu_masks[cpu].pcpu_mask);
262 } 235 }
263 236
264 vpe_local_setup(numvpes); 237 vpe_local_setup(numvpes);
@@ -273,12 +246,11 @@ void __init gic_init(unsigned long gic_base_addr,
273 unsigned int irqbase) 246 unsigned int irqbase)
274{ 247{
275 unsigned int gicconfig; 248 unsigned int gicconfig;
249 int numvpes, numintrs;
276 250
277 _gic_base = (unsigned long) ioremap_nocache(gic_base_addr, 251 _gic_base = (unsigned long) ioremap_nocache(gic_base_addr,
278 gic_addrspace_size); 252 gic_addrspace_size);
279 _irqbase = irqbase; 253 _irqbase = irqbase;
280 _intrmap = intr_map;
281 _mapsize = intr_map_size;
282 254
283 GICREAD(GIC_REG(SHARED, GIC_SH_CONFIG), gicconfig); 255 GICREAD(GIC_REG(SHARED, GIC_SH_CONFIG), gicconfig);
284 numintrs = (gicconfig & GIC_SH_CONFIG_NUMINTRS_MSK) >> 256 numintrs = (gicconfig & GIC_SH_CONFIG_NUMINTRS_MSK) >>
@@ -290,5 +262,5 @@ void __init gic_init(unsigned long gic_base_addr,
290 262
291 pr_debug("%s called\n", __func__); 263 pr_debug("%s called\n", __func__);
292 264
293 gic_basic_init(); 265 gic_basic_init(numintrs, numvpes, intr_map, intr_map_size);
294} 266}
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
index 6242bc68add7..b77fefaff9da 100644
--- a/arch/mips/kernel/linux32.c
+++ b/arch/mips/kernel/linux32.c
@@ -428,3 +428,9 @@ _sys32_clone(nabi_no_regargs struct pt_regs regs)
428 return do_fork(clone_flags, newsp, &regs, 0, 428 return do_fork(clone_flags, newsp, &regs, 0,
429 parent_tidptr, child_tidptr); 429 parent_tidptr, child_tidptr);
430} 430}
431
432asmlinkage long sys32_lookup_dcookie(u32 a0, u32 a1, char __user *buf,
433 size_t len)
434{
435 return sys_lookup_dcookie(merge_64(a0, a1), buf, len);
436}
diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S
index 9bbf9775e0bd..14dde4ca932e 100644
--- a/arch/mips/kernel/scall64-o32.S
+++ b/arch/mips/kernel/scall64-o32.S
@@ -450,7 +450,7 @@ sys_call_table:
450 PTR sys_io_submit 450 PTR sys_io_submit
451 PTR sys_io_cancel /* 4245 */ 451 PTR sys_io_cancel /* 4245 */
452 PTR sys_exit_group 452 PTR sys_exit_group
453 PTR sys_lookup_dcookie 453 PTR sys32_lookup_dcookie
454 PTR sys_epoll_create 454 PTR sys_epoll_create
455 PTR sys_epoll_ctl 455 PTR sys_epoll_ctl
456 PTR sys_epoll_wait /* 4250 */ 456 PTR sys_epoll_wait /* 4250 */
@@ -505,7 +505,7 @@ sys_call_table:
505 PTR sys_fchmodat 505 PTR sys_fchmodat
506 PTR sys_faccessat /* 4300 */ 506 PTR sys_faccessat /* 4300 */
507 PTR compat_sys_pselect6 507 PTR compat_sys_pselect6
508 PTR sys_ppoll 508 PTR compat_sys_ppoll
509 PTR sys_unshare 509 PTR sys_unshare
510 PTR sys_splice 510 PTR sys_splice
511 PTR sys32_sync_file_range /* 4305 */ 511 PTR sys32_sync_file_range /* 4305 */
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c
index 4d181df44a40..24630fd8ef60 100644
--- a/arch/mips/kernel/smtc.c
+++ b/arch/mips/kernel/smtc.c
@@ -75,7 +75,6 @@ unsigned long irq_hwmask[NR_IRQS];
75 75
76asiduse smtc_live_asid[MAX_SMTC_TLBS][MAX_SMTC_ASIDS]; 76asiduse smtc_live_asid[MAX_SMTC_TLBS][MAX_SMTC_ASIDS];
77 77
78
79/* 78/*
80 * Number of InterProcessor Interrupt (IPI) message buffers to allocate 79 * Number of InterProcessor Interrupt (IPI) message buffers to allocate
81 */ 80 */
@@ -388,6 +387,7 @@ void smtc_prepare_cpus(int cpus)
388 IPIQ[i].head = IPIQ[i].tail = NULL; 387 IPIQ[i].head = IPIQ[i].tail = NULL;
389 spin_lock_init(&IPIQ[i].lock); 388 spin_lock_init(&IPIQ[i].lock);
390 IPIQ[i].depth = 0; 389 IPIQ[i].depth = 0;
390 IPIQ[i].resched_flag = 0; /* No reschedules queued initially */
391 } 391 }
392 392
393 /* cpu_data index starts at zero */ 393 /* cpu_data index starts at zero */
@@ -741,11 +741,24 @@ void smtc_forward_irq(unsigned int irq)
741static void smtc_ipi_qdump(void) 741static void smtc_ipi_qdump(void)
742{ 742{
743 int i; 743 int i;
744 struct smtc_ipi *temp;
744 745
745 for (i = 0; i < NR_CPUS ;i++) { 746 for (i = 0; i < NR_CPUS ;i++) {
746 printk("IPIQ[%d]: head = 0x%x, tail = 0x%x, depth = %d\n", 747 pr_info("IPIQ[%d]: head = 0x%x, tail = 0x%x, depth = %d\n",
747 i, (unsigned)IPIQ[i].head, (unsigned)IPIQ[i].tail, 748 i, (unsigned)IPIQ[i].head, (unsigned)IPIQ[i].tail,
748 IPIQ[i].depth); 749 IPIQ[i].depth);
750 temp = IPIQ[i].head;
751
752 while (temp != IPIQ[i].tail) {
753 pr_debug("%d %d %d: ", temp->type, temp->dest,
754 (int)temp->arg);
755#ifdef SMTC_IPI_DEBUG
756 pr_debug("%u %lu\n", temp->sender, temp->stamp);
757#else
758 pr_debug("\n");
759#endif
760 temp = temp->flink;
761 }
749 } 762 }
750} 763}
751 764
@@ -784,11 +797,16 @@ void smtc_send_ipi(int cpu, int type, unsigned int action)
784 int mtflags; 797 int mtflags;
785 unsigned long tcrestart; 798 unsigned long tcrestart;
786 extern void r4k_wait_irqoff(void), __pastwait(void); 799 extern void r4k_wait_irqoff(void), __pastwait(void);
800 int set_resched_flag = (type == LINUX_SMP_IPI &&
801 action == SMP_RESCHEDULE_YOURSELF);
787 802
788 if (cpu == smp_processor_id()) { 803 if (cpu == smp_processor_id()) {
789 printk("Cannot Send IPI to self!\n"); 804 printk("Cannot Send IPI to self!\n");
790 return; 805 return;
791 } 806 }
807 if (set_resched_flag && IPIQ[cpu].resched_flag != 0)
808 return; /* There is a reschedule queued already */
809
792 /* Set up a descriptor, to be delivered either promptly or queued */ 810 /* Set up a descriptor, to be delivered either promptly or queued */
793 pipi = smtc_ipi_dq(&freeIPIq); 811 pipi = smtc_ipi_dq(&freeIPIq);
794 if (pipi == NULL) { 812 if (pipi == NULL) {
@@ -801,6 +819,7 @@ void smtc_send_ipi(int cpu, int type, unsigned int action)
801 pipi->dest = cpu; 819 pipi->dest = cpu;
802 if (cpu_data[cpu].vpe_id != cpu_data[smp_processor_id()].vpe_id) { 820 if (cpu_data[cpu].vpe_id != cpu_data[smp_processor_id()].vpe_id) {
803 /* If not on same VPE, enqueue and send cross-VPE interrupt */ 821 /* If not on same VPE, enqueue and send cross-VPE interrupt */
822 IPIQ[cpu].resched_flag |= set_resched_flag;
804 smtc_ipi_nq(&IPIQ[cpu], pipi); 823 smtc_ipi_nq(&IPIQ[cpu], pipi);
805 LOCK_CORE_PRA(); 824 LOCK_CORE_PRA();
806 settc(cpu_data[cpu].tc_id); 825 settc(cpu_data[cpu].tc_id);
@@ -847,6 +866,7 @@ void smtc_send_ipi(int cpu, int type, unsigned int action)
847 */ 866 */
848 write_tc_c0_tchalt(0); 867 write_tc_c0_tchalt(0);
849 UNLOCK_CORE_PRA(); 868 UNLOCK_CORE_PRA();
869 IPIQ[cpu].resched_flag |= set_resched_flag;
850 smtc_ipi_nq(&IPIQ[cpu], pipi); 870 smtc_ipi_nq(&IPIQ[cpu], pipi);
851 } else { 871 } else {
852postdirect: 872postdirect:
@@ -996,12 +1016,15 @@ void deferred_smtc_ipi(void)
996 * already enabled. 1016 * already enabled.
997 */ 1017 */
998 local_irq_save(flags); 1018 local_irq_save(flags);
999
1000 spin_lock(&q->lock); 1019 spin_lock(&q->lock);
1001 pipi = __smtc_ipi_dq(q); 1020 pipi = __smtc_ipi_dq(q);
1002 spin_unlock(&q->lock); 1021 spin_unlock(&q->lock);
1003 if (pipi != NULL) 1022 if (pipi != NULL) {
1023 if (pipi->type == LINUX_SMP_IPI &&
1024 (int)pipi->arg == SMP_RESCHEDULE_YOURSELF)
1025 IPIQ[cpu].resched_flag = 0;
1004 ipi_decode(pipi); 1026 ipi_decode(pipi);
1027 }
1005 /* 1028 /*
1006 * The use of the __raw_local restore isn't 1029 * The use of the __raw_local restore isn't
1007 * as obviously necessary here as in smtc_ipi_replay(), 1030 * as obviously necessary here as in smtc_ipi_replay(),
@@ -1082,6 +1105,9 @@ static irqreturn_t ipi_interrupt(int irq, void *dev_idm)
1082 * with interrupts off 1105 * with interrupts off
1083 */ 1106 */
1084 local_irq_save(flags); 1107 local_irq_save(flags);
1108 if (pipi->type == LINUX_SMP_IPI &&
1109 (int)pipi->arg == SMP_RESCHEDULE_YOURSELF)
1110 IPIQ[cpu].resched_flag = 0;
1085 ipi_decode(pipi); 1111 ipi_decode(pipi);
1086 local_irq_restore(flags); 1112 local_irq_restore(flags);
1087 } 1113 }
diff --git a/arch/mips/kernel/spram.c b/arch/mips/kernel/spram.c
index 6ddb507a87ef..1821d12a6410 100644
--- a/arch/mips/kernel/spram.c
+++ b/arch/mips/kernel/spram.c
@@ -13,7 +13,6 @@
13#include <linux/ptrace.h> 13#include <linux/ptrace.h>
14#include <linux/stddef.h> 14#include <linux/stddef.h>
15 15
16#include <asm/cpu.h>
17#include <asm/fpu.h> 16#include <asm/fpu.h>
18#include <asm/mipsregs.h> 17#include <asm/mipsregs.h>
19#include <asm/system.h> 18#include <asm/system.h>
@@ -198,8 +197,7 @@ static __cpuinit void probe_spram(char *type,
198 offset += 2 * SPRAM_TAG_STRIDE; 197 offset += 2 * SPRAM_TAG_STRIDE;
199 } 198 }
200} 199}
201 200void __cpuinit spram_config(void)
202__cpuinit void spram_config(void)
203{ 201{
204 struct cpuinfo_mips *c = &current_cpu_data; 202 struct cpuinfo_mips *c = &current_cpu_data;
205 unsigned int config0; 203 unsigned int config0;
@@ -208,6 +206,7 @@ __cpuinit void spram_config(void)
208 case CPU_24K: 206 case CPU_24K:
209 case CPU_34K: 207 case CPU_34K:
210 case CPU_74K: 208 case CPU_74K:
209 case CPU_1004K:
211 config0 = read_c0_config(); 210 config0 = read_c0_config();
212 /* FIXME: addresses are Malta specific */ 211 /* FIXME: addresses are Malta specific */
213 if (config0 & (1<<24)) { 212 if (config0 & (1<<24)) {
diff --git a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c
index 3fe1fcfa2e73..fe0d79805603 100644
--- a/arch/mips/kernel/syscall.c
+++ b/arch/mips/kernel/syscall.c
@@ -306,6 +306,7 @@ static inline int mips_atomic_set(struct pt_regs *regs,
306 306
307 if (cpu_has_llsc && R10000_LLSC_WAR) { 307 if (cpu_has_llsc && R10000_LLSC_WAR) {
308 __asm__ __volatile__ ( 308 __asm__ __volatile__ (
309 " .set mips3 \n"
309 " li %[err], 0 \n" 310 " li %[err], 0 \n"
310 "1: ll %[old], (%[addr]) \n" 311 "1: ll %[old], (%[addr]) \n"
311 " move %[tmp], %[new] \n" 312 " move %[tmp], %[new] \n"
@@ -320,6 +321,7 @@ static inline int mips_atomic_set(struct pt_regs *regs,
320 " "STR(PTR)" 1b, 4b \n" 321 " "STR(PTR)" 1b, 4b \n"
321 " "STR(PTR)" 2b, 4b \n" 322 " "STR(PTR)" 2b, 4b \n"
322 " .previous \n" 323 " .previous \n"
324 " .set mips0 \n"
323 : [old] "=&r" (old), 325 : [old] "=&r" (old),
324 [err] "=&r" (err), 326 [err] "=&r" (err),
325 [tmp] "=&r" (tmp) 327 [tmp] "=&r" (tmp)
@@ -329,6 +331,7 @@ static inline int mips_atomic_set(struct pt_regs *regs,
329 : "memory"); 331 : "memory");
330 } else if (cpu_has_llsc) { 332 } else if (cpu_has_llsc) {
331 __asm__ __volatile__ ( 333 __asm__ __volatile__ (
334 " .set mips3 \n"
332 " li %[err], 0 \n" 335 " li %[err], 0 \n"
333 "1: ll %[old], (%[addr]) \n" 336 "1: ll %[old], (%[addr]) \n"
334 " move %[tmp], %[new] \n" 337 " move %[tmp], %[new] \n"
@@ -347,6 +350,7 @@ static inline int mips_atomic_set(struct pt_regs *regs,
347 " "STR(PTR)" 1b, 5b \n" 350 " "STR(PTR)" 1b, 5b \n"
348 " "STR(PTR)" 2b, 5b \n" 351 " "STR(PTR)" 2b, 5b \n"
349 " .previous \n" 352 " .previous \n"
353 " .set mips0 \n"
350 : [old] "=&r" (old), 354 : [old] "=&r" (old),
351 [err] "=&r" (err), 355 [err] "=&r" (err),
352 [tmp] "=&r" (tmp) 356 [tmp] "=&r" (tmp)
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c
index 03092ab2a296..60477529362e 100644
--- a/arch/mips/kernel/vpe.c
+++ b/arch/mips/kernel/vpe.c
@@ -1116,8 +1116,6 @@ static int vpe_open(struct inode *inode, struct file *filp)
1116 v->shared_ptr = NULL; 1116 v->shared_ptr = NULL;
1117 v->__start = 0; 1117 v->__start = 0;
1118 1118
1119 unlock_kernel();
1120
1121 return 0; 1119 return 0;
1122} 1120}
1123 1121
diff --git a/arch/mips/loongson/common/irq.c b/arch/mips/loongson/common/irq.c
index f368c735cbd3..b32b4a3e5137 100644
--- a/arch/mips/loongson/common/irq.c
+++ b/arch/mips/loongson/common/irq.c
@@ -55,7 +55,6 @@ void __init arch_init_irq(void)
55 * int-handler is not on bootstrap 55 * int-handler is not on bootstrap
56 */ 56 */
57 clear_c0_status(ST0_IM | ST0_BEV); 57 clear_c0_status(ST0_IM | ST0_BEV);
58 local_irq_disable();
59 58
60 /* setting irq trigger mode */ 59 /* setting irq trigger mode */
61 set_irq_trigger_mode(); 60 set_irq_trigger_mode();
diff --git a/arch/mips/math-emu/cp1emu.c b/arch/mips/math-emu/cp1emu.c
index 890f77927d62..454b53924490 100644
--- a/arch/mips/math-emu/cp1emu.c
+++ b/arch/mips/math-emu/cp1emu.c
@@ -163,33 +163,34 @@ static int isBranchInstr(mips_instruction * i)
163 163
164/* 164/*
165 * In the Linux kernel, we support selection of FPR format on the 165 * In the Linux kernel, we support selection of FPR format on the
166 * basis of the Status.FR bit. This does imply that, if a full 32 166 * basis of the Status.FR bit. If an FPU is not present, the FR bit
167 * FPRs are desired, there needs to be a flip-flop that can be written 167 * is hardwired to zero, which would imply a 32-bit FPU even for
168 * to one at that bit position. In any case, O32 MIPS ABI uses 168 * 64-bit CPUs. For 64-bit kernels with no FPU we use TIF_32BIT_REGS
169 * only the even FPRs (Status.FR = 0). 169 * as a proxy for the FR bit so that a 64-bit FPU is emulated. In any
170 * case, for a 32-bit kernel which uses the O32 MIPS ABI, only the
171 * even FPRs are used (Status.FR = 0).
170 */ 172 */
171 173static inline int cop1_64bit(struct pt_regs *xcp)
172#define CP0_STATUS_FR_SUPPORT 174{
173 175 if (cpu_has_fpu)
174#ifdef CP0_STATUS_FR_SUPPORT 176 return xcp->cp0_status & ST0_FR;
175#define FR_BIT ST0_FR 177#ifdef CONFIG_64BIT
178 return !test_thread_flag(TIF_32BIT_REGS);
176#else 179#else
177#define FR_BIT 0 180 return 0;
178#endif 181#endif
182}
183
184#define SIFROMREG(si, x) ((si) = cop1_64bit(xcp) || !(x & 1) ? \
185 (int)ctx->fpr[x] : (int)(ctx->fpr[x & ~1] >> 32))
179 186
180#define SIFROMREG(si, x) ((si) = \ 187#define SITOREG(si, x) (ctx->fpr[x & ~(cop1_64bit(xcp) == 0)] = \
181 (xcp->cp0_status & FR_BIT) || !(x & 1) ? \ 188 cop1_64bit(xcp) || !(x & 1) ? \
182 (int)ctx->fpr[x] : \
183 (int)(ctx->fpr[x & ~1] >> 32 ))
184#define SITOREG(si, x) (ctx->fpr[x & ~((xcp->cp0_status & FR_BIT) == 0)] = \
185 (xcp->cp0_status & FR_BIT) || !(x & 1) ? \
186 ctx->fpr[x & ~1] >> 32 << 32 | (u32)(si) : \ 189 ctx->fpr[x & ~1] >> 32 << 32 | (u32)(si) : \
187 ctx->fpr[x & ~1] << 32 >> 32 | (u64)(si) << 32) 190 ctx->fpr[x & ~1] << 32 >> 32 | (u64)(si) << 32)
188 191
189#define DIFROMREG(di, x) ((di) = \ 192#define DIFROMREG(di, x) ((di) = ctx->fpr[x & ~(cop1_64bit(xcp) == 0)])
190 ctx->fpr[x & ~((xcp->cp0_status & FR_BIT) == 0)]) 193#define DITOREG(di, x) (ctx->fpr[x & ~(cop1_64bit(xcp) == 0)] = (di))
191#define DITOREG(di, x) (ctx->fpr[x & ~((xcp->cp0_status & FR_BIT) == 0)] \
192 = (di))
193 194
194#define SPFROMREG(sp, x) SIFROMREG((sp).bits, x) 195#define SPFROMREG(sp, x) SIFROMREG((sp).bits, x)
195#define SPTOREG(sp, x) SITOREG((sp).bits, x) 196#define SPTOREG(sp, x) SITOREG((sp).bits, x)
diff --git a/arch/mips/math-emu/dp_simple.c b/arch/mips/math-emu/dp_simple.c
index 1c555e6c6a9f..d9ae1dbabda7 100644
--- a/arch/mips/math-emu/dp_simple.c
+++ b/arch/mips/math-emu/dp_simple.c
@@ -62,8 +62,6 @@ ieee754dp ieee754dp_neg(ieee754dp x)
62 return ieee754dp_nanxcpt(y, "neg"); 62 return ieee754dp_nanxcpt(y, "neg");
63 } 63 }
64 64
65 if (ieee754dp_isnan(x)) /* but not infinity */
66 return ieee754dp_nanxcpt(x, "neg", x);
67 return x; 65 return x;
68} 66}
69 67
@@ -76,15 +74,12 @@ ieee754dp ieee754dp_abs(ieee754dp x)
76 CLEARCX; 74 CLEARCX;
77 FLUSHXDP; 75 FLUSHXDP;
78 76
77 /* Clear sign ALWAYS, irrespective of NaN */
78 DPSIGN(x) = 0;
79
79 if (xc == IEEE754_CLASS_SNAN) { 80 if (xc == IEEE754_CLASS_SNAN) {
80 SETCX(IEEE754_INVALID_OPERATION); 81 return ieee754dp_nanxcpt(ieee754dp_indef(), "abs");
81 return ieee754dp_nanxcpt(ieee754dp_indef(), "neg");
82 } 82 }
83 83
84 if (ieee754dp_isnan(x)) /* but not infinity */
85 return ieee754dp_nanxcpt(x, "abs", x);
86
87 /* quick fix up */
88 DPSIGN(x) = 0;
89 return x; 84 return x;
90} 85}
diff --git a/arch/mips/math-emu/sp_simple.c b/arch/mips/math-emu/sp_simple.c
index 770f0f4677cd..3175477d36f6 100644
--- a/arch/mips/math-emu/sp_simple.c
+++ b/arch/mips/math-emu/sp_simple.c
@@ -62,8 +62,6 @@ ieee754sp ieee754sp_neg(ieee754sp x)
62 return ieee754sp_nanxcpt(y, "neg"); 62 return ieee754sp_nanxcpt(y, "neg");
63 } 63 }
64 64
65 if (ieee754sp_isnan(x)) /* but not infinity */
66 return ieee754sp_nanxcpt(x, "neg", x);
67 return x; 65 return x;
68} 66}
69 67
@@ -76,15 +74,12 @@ ieee754sp ieee754sp_abs(ieee754sp x)
76 CLEARCX; 74 CLEARCX;
77 FLUSHXSP; 75 FLUSHXSP;
78 76
77 /* Clear sign ALWAYS, irrespective of NaN */
78 SPSIGN(x) = 0;
79
79 if (xc == IEEE754_CLASS_SNAN) { 80 if (xc == IEEE754_CLASS_SNAN) {
80 SETCX(IEEE754_INVALID_OPERATION);
81 return ieee754sp_nanxcpt(ieee754sp_indef(), "abs"); 81 return ieee754sp_nanxcpt(ieee754sp_indef(), "abs");
82 } 82 }
83 83
84 if (ieee754sp_isnan(x)) /* but not infinity */
85 return ieee754sp_nanxcpt(x, "abs", x);
86
87 /* quick fix up */
88 SPSIGN(x) = 0;
89 return x; 84 return x;
90} 85}
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c
index 7e48e76148aa..9367e33fbd18 100644
--- a/arch/mips/mm/dma-default.c
+++ b/arch/mips/mm/dma-default.c
@@ -90,6 +90,9 @@ void *dma_alloc_coherent(struct device *dev, size_t size,
90{ 90{
91 void *ret; 91 void *ret;
92 92
93 if (dma_alloc_from_coherent(dev, size, dma_handle, &ret))
94 return ret;
95
93 gfp = massage_gfp_flags(dev, gfp); 96 gfp = massage_gfp_flags(dev, gfp);
94 97
95 ret = (void *) __get_free_pages(gfp, get_order(size)); 98 ret = (void *) __get_free_pages(gfp, get_order(size));
@@ -122,6 +125,10 @@ void dma_free_coherent(struct device *dev, size_t size, void *vaddr,
122 dma_addr_t dma_handle) 125 dma_addr_t dma_handle)
123{ 126{
124 unsigned long addr = (unsigned long) vaddr; 127 unsigned long addr = (unsigned long) vaddr;
128 int order = get_order(size);
129
130 if (dma_release_from_coherent(dev, order, vaddr))
131 return;
125 132
126 plat_unmap_dma_mem(dev, dma_handle, size, DMA_BIDIRECTIONAL); 133 plat_unmap_dma_mem(dev, dma_handle, size, DMA_BIDIRECTIONAL);
127 134
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c
index 15aa1902a788..8d1f4f363049 100644
--- a/arch/mips/mm/init.c
+++ b/arch/mips/mm/init.c
@@ -27,6 +27,7 @@
27#include <linux/swap.h> 27#include <linux/swap.h>
28#include <linux/proc_fs.h> 28#include <linux/proc_fs.h>
29#include <linux/pfn.h> 29#include <linux/pfn.h>
30#include <linux/hardirq.h>
30 31
31#include <asm/asm-offsets.h> 32#include <asm/asm-offsets.h>
32#include <asm/bootinfo.h> 33#include <asm/bootinfo.h>
@@ -132,7 +133,10 @@ void *kmap_coherent(struct page *page, unsigned long addr)
132 inc_preempt_count(); 133 inc_preempt_count();
133 idx = (addr >> PAGE_SHIFT) & (FIX_N_COLOURS - 1); 134 idx = (addr >> PAGE_SHIFT) & (FIX_N_COLOURS - 1);
134#ifdef CONFIG_MIPS_MT_SMTC 135#ifdef CONFIG_MIPS_MT_SMTC
135 idx += FIX_N_COLOURS * smp_processor_id(); 136 idx += FIX_N_COLOURS * smp_processor_id() +
137 (in_interrupt() ? (FIX_N_COLOURS * NR_CPUS) : 0);
138#else
139 idx += in_interrupt() ? FIX_N_COLOURS : 0;
136#endif 140#endif
137 vaddr = __fix_to_virt(FIX_CMAP_END - idx); 141 vaddr = __fix_to_virt(FIX_CMAP_END - idx);
138 pte = mk_pte(page, PAGE_KERNEL); 142 pte = mk_pte(page, PAGE_KERNEL);
diff --git a/arch/mips/mti-malta/malta-amon.c b/arch/mips/mti-malta/malta-amon.c
index df9e526312a2..469d9b0cee6d 100644
--- a/arch/mips/mti-malta/malta-amon.c
+++ b/arch/mips/mti-malta/malta-amon.c
@@ -70,11 +70,12 @@ void amon_cpu_start(int cpu,
70 launch->sp = sp; 70 launch->sp = sp;
71 launch->a0 = a0; 71 launch->a0 = a0;
72 72
73 /* Make sure target sees parameters before the go bit */ 73 smp_wmb(); /* Target must see parameters before go */
74 smp_mb();
75
76 launch->flags |= LAUNCH_FGO; 74 launch->flags |= LAUNCH_FGO;
75 smp_wmb(); /* Target must see go before we poll */
76
77 while ((launch->flags & LAUNCH_FGONE) == 0) 77 while ((launch->flags & LAUNCH_FGONE) == 0)
78 ; 78 ;
79 smp_rmb(); /* Target will be updating flags soon */
79 pr_debug("launch: cpu%d gone!\n", cpu); 80 pr_debug("launch: cpu%d gone!\n", cpu);
80} 81}
diff --git a/arch/mips/mti-malta/malta-int.c b/arch/mips/mti-malta/malta-int.c
index 3e0a9b35ba5c..4c3fca18a171 100644
--- a/arch/mips/mti-malta/malta-int.c
+++ b/arch/mips/mti-malta/malta-int.c
@@ -87,7 +87,7 @@ static inline int mips_pcibios_iack(void)
87 dummy = BONITO_PCIMAP_CFG; 87 dummy = BONITO_PCIMAP_CFG;
88 iob(); /* sync */ 88 iob(); /* sync */
89 89
90 irq = readl((u32 *)_pcictrl_bonito_pcicfg); 90 irq = __raw_readl((u32 *)_pcictrl_bonito_pcicfg);
91 iob(); /* sync */ 91 iob(); /* sync */
92 irq &= 0xff; 92 irq &= 0xff;
93 BONITO_PCIMAP_CFG = 0; 93 BONITO_PCIMAP_CFG = 0;
@@ -379,38 +379,43 @@ static msc_irqmap_t __initdata msc_eicirqmap[] = {
379 379
380static int __initdata msc_nr_eicirqs = ARRAY_SIZE(msc_eicirqmap); 380static int __initdata msc_nr_eicirqs = ARRAY_SIZE(msc_eicirqmap);
381 381
382#if defined(CONFIG_MIPS_MT_SMP)
383/* 382/*
384 * This GIC specific tabular array defines the association between External 383 * This GIC specific tabular array defines the association between External
385 * Interrupts and CPUs/Core Interrupts. The nature of the External 384 * Interrupts and CPUs/Core Interrupts. The nature of the External
386 * Interrupts is also defined here - polarity/trigger. 385 * Interrupts is also defined here - polarity/trigger.
387 */ 386 */
387
388#define GIC_CPU_NMI GIC_MAP_TO_NMI_MSK
388static struct gic_intr_map gic_intr_map[GIC_NUM_INTRS] = { 389static struct gic_intr_map gic_intr_map[GIC_NUM_INTRS] = {
389 { GIC_EXT_INTR(0), X, X, X, X, 0 }, 390 { X, X, X, X, 0 },
390 { GIC_EXT_INTR(1), X, X, X, X, 0 }, 391 { X, X, X, X, 0 },
391 { GIC_EXT_INTR(2), X, X, X, X, 0 }, 392 { X, X, X, X, 0 },
392 { GIC_EXT_INTR(3), 0, GIC_CPU_INT0, GIC_POL_POS, GIC_TRIG_LEVEL, 0 }, 393 { 0, GIC_CPU_INT0, GIC_POL_POS, GIC_TRIG_LEVEL, GIC_FLAG_TRANSPARENT },
393 { GIC_EXT_INTR(4), 0, GIC_CPU_INT1, GIC_POL_POS, GIC_TRIG_LEVEL, 0 }, 394 { 0, GIC_CPU_INT1, GIC_POL_POS, GIC_TRIG_LEVEL, GIC_FLAG_TRANSPARENT },
394 { GIC_EXT_INTR(5), 0, GIC_CPU_INT2, GIC_POL_POS, GIC_TRIG_LEVEL, 0 }, 395 { 0, GIC_CPU_INT2, GIC_POL_POS, GIC_TRIG_LEVEL, GIC_FLAG_TRANSPARENT },
395 { GIC_EXT_INTR(6), 0, GIC_CPU_INT3, GIC_POL_POS, GIC_TRIG_LEVEL, 0 }, 396 { 0, GIC_CPU_INT3, GIC_POL_POS, GIC_TRIG_LEVEL, GIC_FLAG_TRANSPARENT },
396 { GIC_EXT_INTR(7), 0, GIC_CPU_INT4, GIC_POL_POS, GIC_TRIG_LEVEL, 0 }, 397 { 0, GIC_CPU_INT4, GIC_POL_POS, GIC_TRIG_LEVEL, GIC_FLAG_TRANSPARENT },
397 { GIC_EXT_INTR(8), 0, GIC_CPU_INT3, GIC_POL_POS, GIC_TRIG_LEVEL, 0 }, 398 { 0, GIC_CPU_INT3, GIC_POL_POS, GIC_TRIG_LEVEL, GIC_FLAG_TRANSPARENT },
398 { GIC_EXT_INTR(9), 0, GIC_CPU_INT3, GIC_POL_POS, GIC_TRIG_LEVEL, 0 }, 399 { 0, GIC_CPU_INT3, GIC_POL_POS, GIC_TRIG_LEVEL, GIC_FLAG_TRANSPARENT },
399 { GIC_EXT_INTR(10), X, X, X, X, 0 }, 400 { X, X, X, X, 0 },
400 { GIC_EXT_INTR(11), X, X, X, X, 0 }, 401 { X, X, X, X, 0 },
401 { GIC_EXT_INTR(12), 0, GIC_CPU_INT3, GIC_POL_POS, GIC_TRIG_LEVEL, 0 }, 402 { 0, GIC_CPU_INT3, GIC_POL_POS, GIC_TRIG_LEVEL, GIC_FLAG_TRANSPARENT },
402 { GIC_EXT_INTR(13), 0, GIC_MAP_TO_NMI_MSK, GIC_POL_POS, GIC_TRIG_LEVEL, 0 }, 403 { 0, GIC_CPU_NMI, GIC_POL_POS, GIC_TRIG_LEVEL, GIC_FLAG_TRANSPARENT },
403 { GIC_EXT_INTR(14), 0, GIC_MAP_TO_NMI_MSK, GIC_POL_POS, GIC_TRIG_LEVEL, 0 }, 404 { 0, GIC_CPU_NMI, GIC_POL_POS, GIC_TRIG_LEVEL, GIC_FLAG_TRANSPARENT },
404 { GIC_EXT_INTR(15), X, X, X, X, 0 }, 405 { X, X, X, X, 0 },
405/* This is the end of the general interrupts now we do IPI ones */ 406 /* The remainder of this table is initialised by fill_ipi_map */
406}; 407};
407#endif
408 408
409/* 409/*
410 * GCMP needs to be detected before any SMP initialisation 410 * GCMP needs to be detected before any SMP initialisation
411 */ 411 */
412int __init gcmp_probe(unsigned long addr, unsigned long size) 412int __init gcmp_probe(unsigned long addr, unsigned long size)
413{ 413{
414 if (mips_revision_sconid != MIPS_REVISION_SCON_ROCIT) {
415 gcmp_present = 0;
416 return gcmp_present;
417 }
418
414 if (gcmp_present >= 0) 419 if (gcmp_present >= 0)
415 return gcmp_present; 420 return gcmp_present;
416 421
@@ -419,20 +424,35 @@ int __init gcmp_probe(unsigned long addr, unsigned long size)
419 gcmp_present = (GCMPGCB(GCMPB) & GCMP_GCB_GCMPB_GCMPBASE_MSK) == GCMP_BASE_ADDR; 424 gcmp_present = (GCMPGCB(GCMPB) & GCMP_GCB_GCMPB_GCMPBASE_MSK) == GCMP_BASE_ADDR;
420 425
421 if (gcmp_present) 426 if (gcmp_present)
422 printk(KERN_DEBUG "GCMP present\n"); 427 pr_debug("GCMP present\n");
423 return gcmp_present; 428 return gcmp_present;
424} 429}
425 430
431/* Return the number of IOCU's present */
432int __init gcmp_niocu(void)
433{
434 return gcmp_present ?
435 (GCMPGCB(GC) & GCMP_GCB_GC_NUMIOCU_MSK) >> GCMP_GCB_GC_NUMIOCU_SHF :
436 0;
437}
438
439/* Set GCMP region attributes */
440void __init gcmp_setregion(int region, unsigned long base,
441 unsigned long mask, int type)
442{
443 GCMPGCBn(CMxBASE, region) = base;
444 GCMPGCBn(CMxMASK, region) = mask | type;
445}
446
426#if defined(CONFIG_MIPS_MT_SMP) 447#if defined(CONFIG_MIPS_MT_SMP)
427static void __init fill_ipi_map1(int baseintr, int cpu, int cpupin) 448static void __init fill_ipi_map1(int baseintr, int cpu, int cpupin)
428{ 449{
429 int intr = baseintr + cpu; 450 int intr = baseintr + cpu;
430 gic_intr_map[intr].intrnum = GIC_EXT_INTR(intr);
431 gic_intr_map[intr].cpunum = cpu; 451 gic_intr_map[intr].cpunum = cpu;
432 gic_intr_map[intr].pin = cpupin; 452 gic_intr_map[intr].pin = cpupin;
433 gic_intr_map[intr].polarity = GIC_POL_POS; 453 gic_intr_map[intr].polarity = GIC_POL_POS;
434 gic_intr_map[intr].trigtype = GIC_TRIG_EDGE; 454 gic_intr_map[intr].trigtype = GIC_TRIG_EDGE;
435 gic_intr_map[intr].ipiflag = 1; 455 gic_intr_map[intr].flags = GIC_FLAG_IPI;
436 ipi_map[cpu] |= (1 << (cpupin + 2)); 456 ipi_map[cpu] |= (1 << (cpupin + 2));
437} 457}
438 458
@@ -447,6 +467,12 @@ static void __init fill_ipi_map(void)
447} 467}
448#endif 468#endif
449 469
470void __init arch_init_ipiirq(int irq, struct irqaction *action)
471{
472 setup_irq(irq, action);
473 set_irq_handler(irq, handle_percpu_irq);
474}
475
450void __init arch_init_irq(void) 476void __init arch_init_irq(void)
451{ 477{
452 init_i8259_irqs(); 478 init_i8259_irqs();
@@ -458,12 +484,17 @@ void __init arch_init_irq(void)
458 GCMPGCB(GICBA) = GIC_BASE_ADDR | GCMP_GCB_GICBA_EN_MSK; 484 GCMPGCB(GICBA) = GIC_BASE_ADDR | GCMP_GCB_GICBA_EN_MSK;
459 gic_present = 1; 485 gic_present = 1;
460 } else { 486 } else {
461 _msc01_biu_base = (unsigned long) ioremap_nocache(MSC01_BIU_REG_BASE, MSC01_BIU_ADDRSPACE_SZ); 487 if (mips_revision_sconid == MIPS_REVISION_SCON_ROCIT) {
462 gic_present = (REG(_msc01_biu_base, MSC01_SC_CFG) & 488 _msc01_biu_base = (unsigned long)
463 MSC01_SC_CFG_GICPRES_MSK) >> MSC01_SC_CFG_GICPRES_SHF; 489 ioremap_nocache(MSC01_BIU_REG_BASE,
490 MSC01_BIU_ADDRSPACE_SZ);
491 gic_present = (REG(_msc01_biu_base, MSC01_SC_CFG) &
492 MSC01_SC_CFG_GICPRES_MSK) >>
493 MSC01_SC_CFG_GICPRES_SHF;
494 }
464 } 495 }
465 if (gic_present) 496 if (gic_present)
466 printk(KERN_DEBUG "GIC present\n"); 497 pr_debug("GIC present\n");
467 498
468 switch (mips_revision_sconid) { 499 switch (mips_revision_sconid) {
469 case MIPS_REVISION_SCON_SOCIT: 500 case MIPS_REVISION_SCON_SOCIT:
@@ -526,16 +557,16 @@ void __init arch_init_irq(void)
526 &corehi_irqaction); 557 &corehi_irqaction);
527 } 558 }
528 559
529#if defined(CONFIG_MIPS_MT_SMP)
530 if (gic_present) { 560 if (gic_present) {
531 /* FIXME */ 561 /* FIXME */
532 int i; 562 int i;
533 563#if defined(CONFIG_MIPS_MT_SMP)
534 gic_call_int_base = GIC_NUM_INTRS - NR_CPUS; 564 gic_call_int_base = GIC_NUM_INTRS - NR_CPUS;
535 gic_resched_int_base = gic_call_int_base - NR_CPUS; 565 gic_resched_int_base = gic_call_int_base - NR_CPUS;
536
537 fill_ipi_map(); 566 fill_ipi_map();
538 gic_init(GIC_BASE_ADDR, GIC_ADDRSPACE_SZ, gic_intr_map, ARRAY_SIZE(gic_intr_map), MIPS_GIC_IRQ_BASE); 567#endif
568 gic_init(GIC_BASE_ADDR, GIC_ADDRSPACE_SZ, gic_intr_map,
569 ARRAY_SIZE(gic_intr_map), MIPS_GIC_IRQ_BASE);
539 if (!gcmp_present) { 570 if (!gcmp_present) {
540 /* Enable the GIC */ 571 /* Enable the GIC */
541 i = REG(_msc01_biu_base, MSC01_SC_CFG); 572 i = REG(_msc01_biu_base, MSC01_SC_CFG);
@@ -543,7 +574,7 @@ void __init arch_init_irq(void)
543 (i | (0x1 << MSC01_SC_CFG_GICENA_SHF)); 574 (i | (0x1 << MSC01_SC_CFG_GICENA_SHF));
544 pr_debug("GIC Enabled\n"); 575 pr_debug("GIC Enabled\n");
545 } 576 }
546 577#if defined(CONFIG_MIPS_MT_SMP)
547 /* set up ipi interrupts */ 578 /* set up ipi interrupts */
548 if (cpu_has_vint) { 579 if (cpu_has_vint) {
549 set_vi_handler(MIPSCPU_INT_IPI0, malta_ipi_irqdispatch); 580 set_vi_handler(MIPSCPU_INT_IPI0, malta_ipi_irqdispatch);
@@ -556,16 +587,14 @@ void __init arch_init_irq(void)
556 write_c0_status(0x1100dc00); 587 write_c0_status(0x1100dc00);
557 printk("CPU%d: status register frc %08x\n", smp_processor_id(), read_c0_status()); 588 printk("CPU%d: status register frc %08x\n", smp_processor_id(), read_c0_status());
558 for (i = 0; i < NR_CPUS; i++) { 589 for (i = 0; i < NR_CPUS; i++) {
559 setup_irq(MIPS_GIC_IRQ_BASE + 590 arch_init_ipiirq(MIPS_GIC_IRQ_BASE +
560 GIC_RESCHED_INT(i), &irq_resched); 591 GIC_RESCHED_INT(i), &irq_resched);
561 setup_irq(MIPS_GIC_IRQ_BASE + 592 arch_init_ipiirq(MIPS_GIC_IRQ_BASE +
562 GIC_CALL_INT(i), &irq_call); 593 GIC_CALL_INT(i), &irq_call);
563 set_irq_handler(MIPS_GIC_IRQ_BASE +
564 GIC_RESCHED_INT(i), handle_percpu_irq);
565 set_irq_handler(MIPS_GIC_IRQ_BASE +
566 GIC_CALL_INT(i), handle_percpu_irq);
567 } 594 }
595#endif
568 } else { 596 } else {
597#if defined(CONFIG_MIPS_MT_SMP)
569 /* set up ipi interrupts */ 598 /* set up ipi interrupts */
570 if (cpu_has_veic) { 599 if (cpu_has_veic) {
571 set_vi_handler (MSC01E_INT_SW0, ipi_resched_dispatch); 600 set_vi_handler (MSC01E_INT_SW0, ipi_resched_dispatch);
@@ -580,14 +609,10 @@ void __init arch_init_irq(void)
580 cpu_ipi_resched_irq = MIPS_CPU_IRQ_BASE + MIPS_CPU_IPI_RESCHED_IRQ; 609 cpu_ipi_resched_irq = MIPS_CPU_IRQ_BASE + MIPS_CPU_IPI_RESCHED_IRQ;
581 cpu_ipi_call_irq = MIPS_CPU_IRQ_BASE + MIPS_CPU_IPI_CALL_IRQ; 610 cpu_ipi_call_irq = MIPS_CPU_IRQ_BASE + MIPS_CPU_IPI_CALL_IRQ;
582 } 611 }
583 612 arch_init_ipiirq(cpu_ipi_resched_irq, &irq_resched);
584 setup_irq(cpu_ipi_resched_irq, &irq_resched); 613 arch_init_ipiirq(cpu_ipi_call_irq, &irq_call);
585 setup_irq(cpu_ipi_call_irq, &irq_call);
586
587 set_irq_handler(cpu_ipi_resched_irq, handle_percpu_irq);
588 set_irq_handler(cpu_ipi_call_irq, handle_percpu_irq);
589 }
590#endif 614#endif
615 }
591} 616}
592 617
593void malta_be_init(void) 618void malta_be_init(void)
diff --git a/arch/mips/mti-malta/malta-memory.c b/arch/mips/mti-malta/malta-memory.c
index 61888ff72c87..9035c64bc5ed 100644
--- a/arch/mips/mti-malta/malta-memory.c
+++ b/arch/mips/mti-malta/malta-memory.c
@@ -54,7 +54,8 @@ static struct prom_pmemblock * __init prom_getmdesc(void)
54{ 54{
55 char *memsize_str; 55 char *memsize_str;
56 unsigned int memsize; 56 unsigned int memsize;
57 char cmdline[CL_SIZE], *ptr; 57 char *ptr;
58 static char cmdline[CL_SIZE] __initdata;
58 59
59 /* otherwise look in the environment */ 60 /* otherwise look in the environment */
60 memsize_str = prom_getenv("memsize"); 61 memsize_str = prom_getenv("memsize");
diff --git a/arch/mips/mti-malta/malta-pci.c b/arch/mips/mti-malta/malta-pci.c
index b9743190609a..2fbfa1a8c3a9 100644
--- a/arch/mips/mti-malta/malta-pci.c
+++ b/arch/mips/mti-malta/malta-pci.c
@@ -27,7 +27,7 @@
27#include <linux/init.h> 27#include <linux/init.h>
28 28
29#include <asm/gt64120.h> 29#include <asm/gt64120.h>
30 30#include <asm/gcmpregs.h>
31#include <asm/mips-boards/generic.h> 31#include <asm/mips-boards/generic.h>
32#include <asm/mips-boards/bonito64.h> 32#include <asm/mips-boards/bonito64.h>
33#include <asm/mips-boards/msc01_pci.h> 33#include <asm/mips-boards/msc01_pci.h>
@@ -201,7 +201,11 @@ void __init mips_pcibios_init(void)
201 msc_mem_resource.start = start & mask; 201 msc_mem_resource.start = start & mask;
202 msc_mem_resource.end = (start & mask) | ~mask; 202 msc_mem_resource.end = (start & mask) | ~mask;
203 msc_controller.mem_offset = (start & mask) - (map & mask); 203 msc_controller.mem_offset = (start & mask) - (map & mask);
204 204#ifdef CONFIG_MIPS_CMP
205 if (gcmp_niocu())
206 gcmp_setregion(0, start, mask,
207 GCMP_GCB_GCMPB_CMDEFTGT_IOCU1);
208#endif
205 MSC_READ(MSC01_PCI_SC2PIOBASL, start); 209 MSC_READ(MSC01_PCI_SC2PIOBASL, start);
206 MSC_READ(MSC01_PCI_SC2PIOMSKL, mask); 210 MSC_READ(MSC01_PCI_SC2PIOMSKL, mask);
207 MSC_READ(MSC01_PCI_SC2PIOMAPL, map); 211 MSC_READ(MSC01_PCI_SC2PIOMAPL, map);
@@ -209,7 +213,11 @@ void __init mips_pcibios_init(void)
209 msc_io_resource.end = (map & mask) | ~mask; 213 msc_io_resource.end = (map & mask) | ~mask;
210 msc_controller.io_offset = 0; 214 msc_controller.io_offset = 0;
211 ioport_resource.end = ~mask; 215 ioport_resource.end = ~mask;
212 216#ifdef CONFIG_MIPS_CMP
217 if (gcmp_niocu())
218 gcmp_setregion(1, start, mask,
219 GCMP_GCB_GCMPB_CMDEFTGT_IOCU1);
220#endif
213 /* If ranges overlap I/O takes precedence. */ 221 /* If ranges overlap I/O takes precedence. */
214 start = start & mask; 222 start = start & mask;
215 end = start | ~mask; 223 end = start | ~mask;
@@ -241,3 +249,16 @@ void __init mips_pcibios_init(void)
241 249
242 register_pci_controller(controller); 250 register_pci_controller(controller);
243} 251}
252
253/* Enable PCI 2.1 compatibility in PIIX4 */
254static void __init quirk_dlcsetup(struct pci_dev *dev)
255{
256 u8 odlc, ndlc;
257 (void) pci_read_config_byte(dev, 0x82, &odlc);
258 /* Enable passive releases and delayed transaction */
259 ndlc = odlc | 7;
260 (void) pci_write_config_byte(dev, 0x82, ndlc);
261}
262
263DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_0,
264 quirk_dlcsetup);
diff --git a/arch/mips/nxp/pnx8550/common/int.c b/arch/mips/nxp/pnx8550/common/int.c
index f080f114a1bf..7aca7d5375e5 100644
--- a/arch/mips/nxp/pnx8550/common/int.c
+++ b/arch/mips/nxp/pnx8550/common/int.c
@@ -172,7 +172,7 @@ static struct irqaction gic_action = {
172 172
173static struct irqaction timer_action = { 173static struct irqaction timer_action = {
174 .handler = no_action, 174 .handler = no_action,
175 .flags = IRQF_DISABLED, 175 .flags = IRQF_DISABLED | IRQF_TIMER,
176 .name = "Timer", 176 .name = "Timer",
177}; 177};
178 178
diff --git a/arch/mips/nxp/pnx8550/common/time.c b/arch/mips/nxp/pnx8550/common/time.c
index 18b192784877..8836c6203df0 100644
--- a/arch/mips/nxp/pnx8550/common/time.c
+++ b/arch/mips/nxp/pnx8550/common/time.c
@@ -59,7 +59,7 @@ static irqreturn_t pnx8xxx_timer_interrupt(int irq, void *dev_id)
59 59
60static struct irqaction pnx8xxx_timer_irq = { 60static struct irqaction pnx8xxx_timer_irq = {
61 .handler = pnx8xxx_timer_interrupt, 61 .handler = pnx8xxx_timer_interrupt,
62 .flags = IRQF_DISABLED | IRQF_PERCPU, 62 .flags = IRQF_DISABLED | IRQF_PERCPU | IRQF_TIMER,
63 .name = "pnx8xxx_timer", 63 .name = "pnx8xxx_timer",
64}; 64};
65 65
@@ -72,7 +72,7 @@ static irqreturn_t monotonic_interrupt(int irq, void *dev_id)
72 72
73static struct irqaction monotonic_irqaction = { 73static struct irqaction monotonic_irqaction = {
74 .handler = monotonic_interrupt, 74 .handler = monotonic_interrupt,
75 .flags = IRQF_DISABLED, 75 .flags = IRQF_DISABLED | IRQF_TIMER,
76 .name = "Monotonic timer", 76 .name = "Monotonic timer",
77}; 77};
78 78
diff --git a/arch/mips/oprofile/op_model_loongson2.c b/arch/mips/oprofile/op_model_loongson2.c
index deed1d5d4982..575cd1473475 100644
--- a/arch/mips/oprofile/op_model_loongson2.c
+++ b/arch/mips/oprofile/op_model_loongson2.c
@@ -22,7 +22,7 @@
22 * otherwise, the oprofile tool will not recognize this and complain about 22 * otherwise, the oprofile tool will not recognize this and complain about
23 * "cpu_type 'unset' is not valid". 23 * "cpu_type 'unset' is not valid".
24 */ 24 */
25#define LOONGSON2_CPU_TYPE "mips/godson2" 25#define LOONGSON2_CPU_TYPE "mips/loongson2"
26 26
27#define LOONGSON2_COUNTER1_EVENT(event) ((event & 0x0f) << 5) 27#define LOONGSON2_COUNTER1_EVENT(event) ((event & 0x0f) << 5)
28#define LOONGSON2_COUNTER2_EVENT(event) ((event & 0x0f) << 9) 28#define LOONGSON2_COUNTER2_EVENT(event) ((event & 0x0f) << 9)
diff --git a/arch/mips/rb532/devices.c b/arch/mips/rb532/devices.c
index 9f40e1ff9b4f..041fc1afc3f4 100644
--- a/arch/mips/rb532/devices.c
+++ b/arch/mips/rb532/devices.c
@@ -110,7 +110,6 @@ static struct korina_device korina_dev0_data = {
110static struct platform_device korina_dev0 = { 110static struct platform_device korina_dev0 = {
111 .id = -1, 111 .id = -1,
112 .name = "korina", 112 .name = "korina",
113 .dev.driver_data = &korina_dev0_data,
114 .resource = korina_dev0_res, 113 .resource = korina_dev0_res,
115 .num_resources = ARRAY_SIZE(korina_dev0_res), 114 .num_resources = ARRAY_SIZE(korina_dev0_res),
116}; 115};
@@ -332,6 +331,8 @@ static int __init plat_setup_devices(void)
332 /* set the uart clock to the current cpu frequency */ 331 /* set the uart clock to the current cpu frequency */
333 rb532_uart_res[0].uartclk = idt_cpu_freq; 332 rb532_uart_res[0].uartclk = idt_cpu_freq;
334 333
334 dev_set_drvdata(&korina_dev0.dev, &korina_dev0_data);
335
335 return platform_add_devices(rb532_devs, ARRAY_SIZE(rb532_devs)); 336 return platform_add_devices(rb532_devs, ARRAY_SIZE(rb532_devs));
336} 337}
337 338
diff --git a/arch/mips/rb532/prom.c b/arch/mips/rb532/prom.c
index 46ca24dbcc2d..ad5bd1097974 100644
--- a/arch/mips/rb532/prom.c
+++ b/arch/mips/rb532/prom.c
@@ -69,7 +69,7 @@ static inline unsigned long tag2ul(char *arg, const char *tag)
69 69
70void __init prom_setup_cmdline(void) 70void __init prom_setup_cmdline(void)
71{ 71{
72 char cmd_line[CL_SIZE]; 72 static char cmd_line[CL_SIZE] __initdata;
73 char *cp, *board; 73 char *cp, *board;
74 int prom_argc; 74 int prom_argc;
75 char **prom_argv, **prom_envp; 75 char **prom_argv, **prom_envp;
diff --git a/arch/mips/sgi-ip27/ip27-timer.c b/arch/mips/sgi-ip27/ip27-timer.c
index 6d0e59ffba2e..d6802d6d1f82 100644
--- a/arch/mips/sgi-ip27/ip27-timer.c
+++ b/arch/mips/sgi-ip27/ip27-timer.c
@@ -105,7 +105,7 @@ static irqreturn_t hub_rt_counter_handler(int irq, void *dev_id)
105 105
106struct irqaction hub_rt_irqaction = { 106struct irqaction hub_rt_irqaction = {
107 .handler = hub_rt_counter_handler, 107 .handler = hub_rt_counter_handler,
108 .flags = IRQF_DISABLED | IRQF_PERCPU, 108 .flags = IRQF_DISABLED | IRQF_PERCPU | IRQF_TIMER,
109 .name = "hub-rt", 109 .name = "hub-rt",
110}; 110};
111 111
diff --git a/arch/mips/sni/time.c b/arch/mips/sni/time.c
index 62df6a598e0a..f3b60e671207 100644
--- a/arch/mips/sni/time.c
+++ b/arch/mips/sni/time.c
@@ -67,7 +67,7 @@ static irqreturn_t a20r_interrupt(int irq, void *dev_id)
67 67
68static struct irqaction a20r_irqaction = { 68static struct irqaction a20r_irqaction = {
69 .handler = a20r_interrupt, 69 .handler = a20r_interrupt,
70 .flags = IRQF_DISABLED | IRQF_PERCPU, 70 .flags = IRQF_DISABLED | IRQF_PERCPU | IRQF_TIMER,
71 .name = "a20r-timer", 71 .name = "a20r-timer",
72}; 72};
73 73
diff --git a/arch/mips/txx9/generic/setup.c b/arch/mips/txx9/generic/setup.c
index c860810722c0..d66802edebb2 100644
--- a/arch/mips/txx9/generic/setup.c
+++ b/arch/mips/txx9/generic/setup.c
@@ -85,7 +85,7 @@ int txx9_ccfg_toeon __initdata = 1;
85struct clk *clk_get(struct device *dev, const char *id) 85struct clk *clk_get(struct device *dev, const char *id)
86{ 86{
87 if (!strcmp(id, "spi-baseclk")) 87 if (!strcmp(id, "spi-baseclk"))
88 return (struct clk *)((unsigned long)txx9_gbus_clock / 2 / 4); 88 return (struct clk *)((unsigned long)txx9_gbus_clock / 2 / 2);
89 if (!strcmp(id, "imbus_clk")) 89 if (!strcmp(id, "imbus_clk"))
90 return (struct clk *)((unsigned long)txx9_gbus_clock / 2); 90 return (struct clk *)((unsigned long)txx9_gbus_clock / 2);
91 return ERR_PTR(-ENOENT); 91 return ERR_PTR(-ENOENT);
@@ -160,7 +160,7 @@ static void __init prom_init_cmdline(void)
160 int argc; 160 int argc;
161 int *argv32; 161 int *argv32;
162 int i; /* Always ignore the "-c" at argv[0] */ 162 int i; /* Always ignore the "-c" at argv[0] */
163 char builtin[CL_SIZE]; 163 static char builtin[CL_SIZE] __initdata;
164 164
165 if (fw_arg0 >= CKSEG0 || fw_arg1 < CKSEG0) { 165 if (fw_arg0 >= CKSEG0 || fw_arg1 < CKSEG0) {
166 /* 166 /*
@@ -315,7 +315,7 @@ static inline void txx9_cache_fixup(void)
315 315
316static void __init preprocess_cmdline(void) 316static void __init preprocess_cmdline(void)
317{ 317{
318 char cmdline[CL_SIZE]; 318 static char cmdline[CL_SIZE] __initdata;
319 char *s; 319 char *s;
320 320
321 strcpy(cmdline, arcs_cmdline); 321 strcpy(cmdline, arcs_cmdline);
@@ -817,7 +817,8 @@ void __init txx9_iocled_init(unsigned long baseaddr,
817out_pdev: 817out_pdev:
818 platform_device_put(pdev); 818 platform_device_put(pdev);
819out_gpio: 819out_gpio:
820 gpio_remove(&iocled->chip); 820 if (gpiochip_remove(&iocled->chip))
821 return;
821out_unmap: 822out_unmap:
822 iounmap(iocled->mmioaddr); 823 iounmap(iocled->mmioaddr);
823out_free: 824out_free:
diff --git a/arch/parisc/include/asm/fcntl.h b/arch/parisc/include/asm/fcntl.h
index 5f39d5597ced..1e1c824764ee 100644
--- a/arch/parisc/include/asm/fcntl.h
+++ b/arch/parisc/include/asm/fcntl.h
@@ -28,8 +28,6 @@
28#define F_SETOWN 12 /* for sockets. */ 28#define F_SETOWN 12 /* for sockets. */
29#define F_SETSIG 13 /* for sockets. */ 29#define F_SETSIG 13 /* for sockets. */
30#define F_GETSIG 14 /* for sockets. */ 30#define F_GETSIG 14 /* for sockets. */
31#define F_GETOWN_EX 15
32#define F_SETOWN_EX 16
33 31
34/* for posix fcntl() and lockf() */ 32/* for posix fcntl() and lockf() */
35#define F_RDLCK 01 33#define F_RDLCK 01
diff --git a/arch/parisc/kernel/unwind.c b/arch/parisc/kernel/unwind.c
index 69dad5a850a8..a36799e85693 100644
--- a/arch/parisc/kernel/unwind.c
+++ b/arch/parisc/kernel/unwind.c
@@ -28,7 +28,7 @@
28#define dbg(x...) 28#define dbg(x...)
29#endif 29#endif
30 30
31#define KERNEL_START (KERNEL_BINARY_TEXT_START - 0x1000) 31#define KERNEL_START (KERNEL_BINARY_TEXT_START)
32 32
33extern struct unwind_table_entry __start___unwind[]; 33extern struct unwind_table_entry __start___unwind[];
34extern struct unwind_table_entry __stop___unwind[]; 34extern struct unwind_table_entry __stop___unwind[];
diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S
index fda4baa059b5..9dab4a4e09f7 100644
--- a/arch/parisc/kernel/vmlinux.lds.S
+++ b/arch/parisc/kernel/vmlinux.lds.S
@@ -78,9 +78,6 @@ SECTIONS
78 */ 78 */
79 . = ALIGN(PAGE_SIZE); 79 . = ALIGN(PAGE_SIZE);
80 data_start = .; 80 data_start = .;
81 EXCEPTION_TABLE(16)
82
83 NOTES
84 81
85 /* unwind info */ 82 /* unwind info */
86 .PARISC.unwind : { 83 .PARISC.unwind : {
@@ -89,6 +86,9 @@ SECTIONS
89 __stop___unwind = .; 86 __stop___unwind = .;
90 } 87 }
91 88
89 EXCEPTION_TABLE(16)
90 NOTES
91
92 /* Data */ 92 /* Data */
93 RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE) 93 RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
94 94
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 10a0a5488a44..2ba14e77296c 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -414,6 +414,10 @@ config ARCH_SPARSEMEM_DEFAULT
414config ARCH_POPULATES_NODE_MAP 414config ARCH_POPULATES_NODE_MAP
415 def_bool y 415 def_bool y
416 416
417config SYS_SUPPORTS_HUGETLBFS
418 def_bool y
419 depends on PPC_BOOK3S_64
420
417source "mm/Kconfig" 421source "mm/Kconfig"
418 422
419config ARCH_MEMORY_PROBE 423config ARCH_MEMORY_PROBE
diff --git a/arch/powerpc/boot/addRamDisk.c b/arch/powerpc/boot/addRamDisk.c
index c02a99952be7..893f446cbd22 100644
--- a/arch/powerpc/boot/addRamDisk.c
+++ b/arch/powerpc/boot/addRamDisk.c
@@ -58,7 +58,7 @@ static int check_elf64(void *p, int size, struct addr_range *r)
58 58
59 return 64; 59 return 64;
60} 60}
61void get4k(FILE *file, char *buf ) 61static void get4k(FILE *file, char *buf )
62{ 62{
63 unsigned j; 63 unsigned j;
64 unsigned num = fread(buf, 1, 4096, file); 64 unsigned num = fread(buf, 1, 4096, file);
@@ -66,12 +66,12 @@ void get4k(FILE *file, char *buf )
66 buf[j] = 0; 66 buf[j] = 0;
67} 67}
68 68
69void put4k(FILE *file, char *buf ) 69static void put4k(FILE *file, char *buf )
70{ 70{
71 fwrite(buf, 1, 4096, file); 71 fwrite(buf, 1, 4096, file);
72} 72}
73 73
74void death(const char *msg, FILE *fdesc, const char *fname) 74static void death(const char *msg, FILE *fdesc, const char *fname)
75{ 75{
76 fprintf(stderr, msg); 76 fprintf(stderr, msg);
77 fclose(fdesc); 77 fclose(fdesc);
diff --git a/arch/powerpc/boot/dts/cm5200.dts b/arch/powerpc/boot/dts/cm5200.dts
index cee8080aa245..dd3860846f15 100644
--- a/arch/powerpc/boot/dts/cm5200.dts
+++ b/arch/powerpc/boot/dts/cm5200.dts
@@ -210,7 +210,6 @@
210 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c"; 210 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
211 reg = <0x3d40 0x40>; 211 reg = <0x3d40 0x40>;
212 interrupts = <2 16 0>; 212 interrupts = <2 16 0>;
213 fsl5200-clocking;
214 }; 213 };
215 214
216 sram@8000 { 215 sram@8000 {
diff --git a/arch/powerpc/boot/dts/digsy_mtc.dts b/arch/powerpc/boot/dts/digsy_mtc.dts
index 4c36186ef946..8e9be6bfe23e 100644
--- a/arch/powerpc/boot/dts/digsy_mtc.dts
+++ b/arch/powerpc/boot/dts/digsy_mtc.dts
@@ -199,7 +199,6 @@
199 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c"; 199 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
200 reg = <0x3d00 0x40>; 200 reg = <0x3d00 0x40>;
201 interrupts = <2 15 0>; 201 interrupts = <2 15 0>;
202 fsl5200-clocking;
203 202
204 rtc@50 { 203 rtc@50 {
205 compatible = "at,24c08"; 204 compatible = "at,24c08";
diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts
index de30b3f9eb26..82ff2b13bc37 100644
--- a/arch/powerpc/boot/dts/lite5200.dts
+++ b/arch/powerpc/boot/dts/lite5200.dts
@@ -247,7 +247,6 @@
247 compatible = "fsl,mpc5200-i2c","fsl-i2c"; 247 compatible = "fsl,mpc5200-i2c","fsl-i2c";
248 reg = <0x3d00 0x40>; 248 reg = <0x3d00 0x40>;
249 interrupts = <2 15 0>; 249 interrupts = <2 15 0>;
250 fsl5200-clocking;
251 }; 250 };
252 251
253 i2c@3d40 { 252 i2c@3d40 {
@@ -256,7 +255,6 @@
256 compatible = "fsl,mpc5200-i2c","fsl-i2c"; 255 compatible = "fsl,mpc5200-i2c","fsl-i2c";
257 reg = <0x3d40 0x40>; 256 reg = <0x3d40 0x40>;
258 interrupts = <2 16 0>; 257 interrupts = <2 16 0>;
259 fsl5200-clocking;
260 }; 258 };
261 sram@8000 { 259 sram@8000 {
262 compatible = "fsl,mpc5200-sram"; 260 compatible = "fsl,mpc5200-sram";
diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts
index d13cb11ce623..e45a63be3a86 100644
--- a/arch/powerpc/boot/dts/lite5200b.dts
+++ b/arch/powerpc/boot/dts/lite5200b.dts
@@ -251,7 +251,6 @@
251 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c"; 251 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
252 reg = <0x3d00 0x40>; 252 reg = <0x3d00 0x40>;
253 interrupts = <2 15 0>; 253 interrupts = <2 15 0>;
254 fsl5200-clocking;
255 }; 254 };
256 255
257 i2c@3d40 { 256 i2c@3d40 {
@@ -260,7 +259,6 @@
260 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c"; 259 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
261 reg = <0x3d40 0x40>; 260 reg = <0x3d40 0x40>;
262 interrupts = <2 16 0>; 261 interrupts = <2 16 0>;
263 fsl5200-clocking;
264 }; 262 };
265 263
266 sram@8000 { 264 sram@8000 {
diff --git a/arch/powerpc/boot/dts/media5200.dts b/arch/powerpc/boot/dts/media5200.dts
index e297d8b41875..0c3902bc5b6a 100644
--- a/arch/powerpc/boot/dts/media5200.dts
+++ b/arch/powerpc/boot/dts/media5200.dts
@@ -223,7 +223,6 @@
223 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c"; 223 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
224 reg = <0x3d00 0x40>; 224 reg = <0x3d00 0x40>;
225 interrupts = <2 15 0>; 225 interrupts = <2 15 0>;
226 fsl5200-clocking;
227 }; 226 };
228 227
229 i2c@3d40 { 228 i2c@3d40 {
@@ -232,7 +231,6 @@
232 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c"; 231 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
233 reg = <0x3d40 0x40>; 232 reg = <0x3d40 0x40>;
234 interrupts = <2 16 0>; 233 interrupts = <2 16 0>;
235 fsl5200-clocking;
236 }; 234 };
237 235
238 sram@8000 { 236 sram@8000 {
diff --git a/arch/powerpc/boot/dts/motionpro.dts b/arch/powerpc/boot/dts/motionpro.dts
index 7be8ca038676..6ca4fc144a33 100644
--- a/arch/powerpc/boot/dts/motionpro.dts
+++ b/arch/powerpc/boot/dts/motionpro.dts
@@ -222,7 +222,6 @@
222 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c"; 222 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
223 reg = <0x3d40 0x40>; 223 reg = <0x3d40 0x40>;
224 interrupts = <2 16 0>; 224 interrupts = <2 16 0>;
225 fsl5200-clocking;
226 225
227 rtc@68 { 226 rtc@68 {
228 compatible = "dallas,ds1339"; 227 compatible = "dallas,ds1339";
diff --git a/arch/powerpc/boot/dts/mpc5121ads.dts b/arch/powerpc/boot/dts/mpc5121ads.dts
index c2b8dbfab79e..c353dac33416 100644
--- a/arch/powerpc/boot/dts/mpc5121ads.dts
+++ b/arch/powerpc/boot/dts/mpc5121ads.dts
@@ -209,7 +209,6 @@
209 reg = <0x1700 0x20>; 209 reg = <0x1700 0x20>;
210 interrupts = <9 0x8>; 210 interrupts = <9 0x8>;
211 interrupt-parent = < &ipic >; 211 interrupt-parent = < &ipic >;
212 fsl5200-clocking;
213 }; 212 };
214 213
215 i2c@1720 { 214 i2c@1720 {
@@ -220,7 +219,6 @@
220 reg = <0x1720 0x20>; 219 reg = <0x1720 0x20>;
221 interrupts = <10 0x8>; 220 interrupts = <10 0x8>;
222 interrupt-parent = < &ipic >; 221 interrupt-parent = < &ipic >;
223 fsl5200-clocking;
224 }; 222 };
225 223
226 i2c@1740 { 224 i2c@1740 {
@@ -231,7 +229,6 @@
231 reg = <0x1740 0x20>; 229 reg = <0x1740 0x20>;
232 interrupts = <11 0x8>; 230 interrupts = <11 0x8>;
233 interrupt-parent = < &ipic >; 231 interrupt-parent = < &ipic >;
234 fsl5200-clocking;
235 }; 232 };
236 233
237 i2ccontrol@1760 { 234 i2ccontrol@1760 {
diff --git a/arch/powerpc/boot/dts/mpc8377_wlan.dts b/arch/powerpc/boot/dts/mpc8377_wlan.dts
index 9a603695723b..9ea783056969 100644
--- a/arch/powerpc/boot/dts/mpc8377_wlan.dts
+++ b/arch/powerpc/boot/dts/mpc8377_wlan.dts
@@ -67,7 +67,7 @@
67 device-width = <1>; 67 device-width = <1>;
68 68
69 partition@0 { 69 partition@0 {
70 reg = <0 0x8000>; 70 reg = <0 0x80000>;
71 label = "u-boot"; 71 label = "u-boot";
72 read-only; 72 read-only;
73 }; 73 };
diff --git a/arch/powerpc/boot/dts/mpc8569mds.dts b/arch/powerpc/boot/dts/mpc8569mds.dts
index 06332d61830a..1e3ec8f059bf 100644
--- a/arch/powerpc/boot/dts/mpc8569mds.dts
+++ b/arch/powerpc/boot/dts/mpc8569mds.dts
@@ -487,8 +487,8 @@
487 &qe_pio_f 5 0 /* USBTN */ 487 &qe_pio_f 5 0 /* USBTN */
488 &qe_pio_f 6 0 /* USBRP */ 488 &qe_pio_f 6 0 /* USBRP */
489 &qe_pio_f 8 0 /* USBRN */ 489 &qe_pio_f 8 0 /* USBRN */
490 &bcsr17 6 0 /* SPEED */ 490 &bcsr17 1 0 /* SPEED */
491 &bcsr17 5 1>; /* POWER */ 491 &bcsr17 2 0>; /* POWER */
492 }; 492 };
493 493
494 enet0: ucc@2000 { 494 enet0: ucc@2000 {
diff --git a/arch/powerpc/boot/dts/mucmc52.dts b/arch/powerpc/boot/dts/mucmc52.dts
new file mode 100644
index 000000000000..b72a7581d798
--- /dev/null
+++ b/arch/powerpc/boot/dts/mucmc52.dts
@@ -0,0 +1,332 @@
1/*
2 * Manroland mucmc52 board Device Tree Source
3 *
4 * Copyright (C) 2009 DENX Software Engineering GmbH
5 * Heiko Schocher <hs@denx.de>
6 * Copyright 2006-2007 Secret Lab Technologies Ltd.
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the
10 * Free Software Foundation; either version 2 of the License, or (at your
11 * option) any later version.
12 */
13
14/dts-v1/;
15
16/ {
17 model = "manroland,mucmc52";
18 compatible = "manroland,mucmc52";
19 #address-cells = <1>;
20 #size-cells = <1>;
21 interrupt-parent = <&mpc5200_pic>;
22
23 cpus {
24 #address-cells = <1>;
25 #size-cells = <0>;
26
27 PowerPC,5200@0 {
28 device_type = "cpu";
29 reg = <0>;
30 d-cache-line-size = <32>;
31 i-cache-line-size = <32>;
32 d-cache-size = <0x4000>; // L1, 16K
33 i-cache-size = <0x4000>; // L1, 16K
34 timebase-frequency = <0>; // from bootloader
35 bus-frequency = <0>; // from bootloader
36 clock-frequency = <0>; // from bootloader
37 };
38 };
39
40 memory {
41 device_type = "memory";
42 reg = <0x00000000 0x04000000>; // 64MB
43 };
44
45 soc5200@f0000000 {
46 #address-cells = <1>;
47 #size-cells = <1>;
48 compatible = "fsl,mpc5200b-immr";
49 ranges = <0 0xf0000000 0x0000c000>;
50 reg = <0xf0000000 0x00000100>;
51 bus-frequency = <0>; // from bootloader
52 system-frequency = <0>; // from bootloader
53
54 cdm@200 {
55 compatible = "fsl,mpc5200b-cdm","fsl,mpc5200-cdm";
56 reg = <0x200 0x38>;
57 };
58
59 mpc5200_pic: interrupt-controller@500 {
60 // 5200 interrupts are encoded into two levels;
61 interrupt-controller;
62 #interrupt-cells = <3>;
63 compatible = "fsl,mpc5200b-pic","fsl,mpc5200-pic";
64 reg = <0x500 0x80>;
65 };
66
67 gpt0: timer@600 { // GPT 0 in GPIO mode
68 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
69 reg = <0x600 0x10>;
70 interrupts = <1 9 0>;
71 gpio-controller;
72 #gpio-cells = <2>;
73 };
74
75 gpt1: timer@610 { // General Purpose Timer in GPIO mode
76 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
77 reg = <0x610 0x10>;
78 interrupts = <1 10 0>;
79 gpio-controller;
80 #gpio-cells = <2>;
81 };
82
83 gpt2: timer@620 { // General Purpose Timer in GPIO mode
84 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
85 reg = <0x620 0x10>;
86 interrupts = <1 11 0>;
87 gpio-controller;
88 #gpio-cells = <2>;
89 };
90
91 gpt3: timer@630 { // General Purpose Timer in GPIO mode
92 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
93 reg = <0x630 0x10>;
94 interrupts = <1 12 0>;
95 gpio-controller;
96 #gpio-cells = <2>;
97 };
98
99 gpio_simple: gpio@b00 {
100 compatible = "fsl,mpc5200b-gpio","fsl,mpc5200-gpio";
101 reg = <0xb00 0x40>;
102 interrupts = <1 7 0>;
103 gpio-controller;
104 #gpio-cells = <2>;
105 };
106
107 gpio_wkup: gpio@c00 {
108 compatible = "fsl,mpc5200b-gpio-wkup","fsl,mpc5200-gpio-wkup";
109 reg = <0xc00 0x40>;
110 interrupts = <1 8 0 0 3 0>;
111 gpio-controller;
112 #gpio-cells = <2>;
113 };
114
115 dma-controller@1200 {
116 compatible = "fsl,mpc5200b-bestcomm","fsl,mpc5200-bestcomm";
117 reg = <0x1200 0x80>;
118 interrupts = <3 0 0 3 1 0 3 2 0 3 3 0
119 3 4 0 3 5 0 3 6 0 3 7 0
120 3 8 0 3 9 0 3 10 0 3 11 0
121 3 12 0 3 13 0 3 14 0 3 15 0>;
122 };
123
124 xlb@1f00 {
125 compatible = "fsl,mpc5200b-xlb","fsl,mpc5200-xlb";
126 reg = <0x1f00 0x100>;
127 };
128
129 serial@2000 { /* PSC1 in UART mode */
130 compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
131 reg = <0x2000 0x100>;
132 interrupts = <2 1 0>;
133 };
134
135 serial@2200 { /* PSC2 in UART mode */
136 compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
137 reg = <0x2200 0x100>;
138 interrupts = <2 2 0>;
139 };
140
141 serial@2c00 { /* PSC6 in UART mode */
142 compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
143 reg = <0x2c00 0x100>;
144 interrupts = <2 4 0>;
145 };
146
147 ethernet@3000 {
148 compatible = "fsl,mpc5200b-fec","fsl,mpc5200-fec";
149 reg = <0x3000 0x400>;
150 local-mac-address = [ 00 00 00 00 00 00 ];
151 interrupts = <2 5 0>;
152 phy-handle = <&phy0>;
153 };
154
155 mdio@3000 {
156 #address-cells = <1>;
157 #size-cells = <0>;
158 compatible = "fsl,mpc5200b-mdio","fsl,mpc5200-mdio";
159 reg = <0x3000 0x400>; // fec range, since we need to setup fec interrupts
160 interrupts = <2 5 0>; // these are for "mii command finished", not link changes & co.
161
162 phy0: ethernet-phy@0 {
163 compatible = "intel,lxt971";
164 reg = <0>;
165 };
166 };
167
168 ata@3a00 {
169 compatible = "fsl,mpc5200b-ata","fsl,mpc5200-ata";
170 reg = <0x3a00 0x100>;
171 interrupts = <2 7 0>;
172 };
173
174 i2c@3d40 {
175 #address-cells = <1>;
176 #size-cells = <0>;
177 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
178 reg = <0x3d40 0x40>;
179 interrupts = <2 16 0>;
180 hwmon@2c {
181 compatible = "ad,adm9240";
182 reg = <0x2c>;
183 };
184 rtc@51 {
185 compatible = "nxp,pcf8563";
186 reg = <0x51>;
187 };
188 };
189
190 sram@8000 {
191 compatible = "fsl,mpc5200b-sram","fsl,mpc5200-sram";
192 reg = <0x8000 0x4000>;
193 };
194 };
195
196 pci@f0000d00 {
197 #interrupt-cells = <1>;
198 #size-cells = <2>;
199 #address-cells = <3>;
200 device_type = "pci";
201 compatible = "fsl,mpc5200b-pci","fsl,mpc5200-pci";
202 reg = <0xf0000d00 0x100>;
203 interrupt-map-mask = <0xf800 0 0 7>;
204 interrupt-map = <
205 /* IDSEL 0x10 */
206 0x8000 0 0 1 &mpc5200_pic 0 3 3
207 0x8000 0 0 2 &mpc5200_pic 0 3 3
208 0x8000 0 0 3 &mpc5200_pic 0 2 3
209 0x8000 0 0 4 &mpc5200_pic 0 1 3
210 >;
211 clock-frequency = <0>; // From boot loader
212 interrupts = <2 8 0 2 9 0 2 10 0>;
213 bus-range = <0 0>;
214 ranges = <0x42000000 0 0x60000000 0x60000000 0 0x10000000
215 0x02000000 0 0x90000000 0x90000000 0 0x10000000
216 0x01000000 0 0x00000000 0xa0000000 0 0x01000000>;
217 };
218
219 localbus {
220 compatible = "fsl,mpc5200b-lpb","fsl,mpc5200-lpb","simple-bus";
221
222 #address-cells = <2>;
223 #size-cells = <1>;
224
225 ranges = <0 0 0xff800000 0x00800000
226 1 0 0x80000000 0x00800000
227 3 0 0x80000000 0x00800000>;
228
229 flash@0,0 {
230 compatible = "cfi-flash";
231 reg = <0 0 0x00800000>;
232 bank-width = <4>;
233 device-width = <2>;
234 #size-cells = <1>;
235 #address-cells = <1>;
236 partition@0 {
237 label = "DTS";
238 reg = <0x0 0x00100000>;
239 };
240 partition@100000 {
241 label = "Kernel";
242 reg = <0x100000 0x00200000>;
243 };
244 partition@300000 {
245 label = "RootFS";
246 reg = <0x00300000 0x00200000>;
247 };
248 partition@500000 {
249 label = "user";
250 reg = <0x00500000 0x00200000>;
251 };
252 partition@700000 {
253 label = "U-Boot";
254 reg = <0x00700000 0x00040000>;
255 };
256 partition@740000 {
257 label = "Env";
258 reg = <0x00740000 0x00020000>;
259 };
260 partition@760000 {
261 label = "red. Env";
262 reg = <0x00760000 0x00020000>;
263 };
264 partition@780000 {
265 label = "reserve";
266 reg = <0x00780000 0x00080000>;
267 };
268 };
269
270 simple100: gpio-controller-100@3,600100 {
271 compatible = "manroland,mucmc52-aux-gpio";
272 reg = <3 0x00600100 0x1>;
273 gpio-controller;
274 #gpio-cells = <2>;
275 };
276 simple104: gpio-controller-104@3,600104 {
277 compatible = "manroland,mucmc52-aux-gpio";
278 reg = <3 0x00600104 0x1>;
279 gpio-controller;
280 #gpio-cells = <2>;
281 };
282 simple200: gpio-controller-200@3,600200 {
283 compatible = "manroland,mucmc52-aux-gpio";
284 reg = <3 0x00600200 0x1>;
285 gpio-controller;
286 #gpio-cells = <2>;
287 };
288 simple201: gpio-controller-201@3,600201 {
289 compatible = "manroland,mucmc52-aux-gpio";
290 reg = <3 0x00600201 0x1>;
291 gpio-controller;
292 #gpio-cells = <2>;
293 };
294 simple202: gpio-controller-202@3,600202 {
295 compatible = "manroland,mucmc52-aux-gpio";
296 reg = <3 0x00600202 0x1>;
297 gpio-controller;
298 #gpio-cells = <2>;
299 };
300 simple203: gpio-controller-203@3,600203 {
301 compatible = "manroland,mucmc52-aux-gpio";
302 reg = <3 0x00600203 0x1>;
303 gpio-controller;
304 #gpio-cells = <2>;
305 };
306 simple204: gpio-controller-204@3,600204 {
307 compatible = "manroland,mucmc52-aux-gpio";
308 reg = <3 0x00600204 0x1>;
309 gpio-controller;
310 #gpio-cells = <2>;
311 };
312 simple206: gpio-controller-206@3,600206 {
313 compatible = "manroland,mucmc52-aux-gpio";
314 reg = <3 0x00600206 0x1>;
315 gpio-controller;
316 #gpio-cells = <2>;
317 };
318 simple207: gpio-controller-207@3,600207 {
319 compatible = "manroland,mucmc52-aux-gpio";
320 reg = <3 0x00600207 0x1>;
321 gpio-controller;
322 #gpio-cells = <2>;
323 };
324 simple20f: gpio-controller-20f@3,60020f {
325 compatible = "manroland,mucmc52-aux-gpio";
326 reg = <3 0x0060020f 0x1>;
327 gpio-controller;
328 #gpio-cells = <2>;
329 };
330
331 };
332};
diff --git a/arch/powerpc/boot/dts/pcm030.dts b/arch/powerpc/boot/dts/pcm030.dts
index 30bfdc04c6df..8a4ec30b21ae 100644
--- a/arch/powerpc/boot/dts/pcm030.dts
+++ b/arch/powerpc/boot/dts/pcm030.dts
@@ -244,7 +244,6 @@
244 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c"; 244 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
245 reg = <0x3d00 0x40>; 245 reg = <0x3d00 0x40>;
246 interrupts = <2 15 0>; 246 interrupts = <2 15 0>;
247 fsl5200-clocking;
248 }; 247 };
249 248
250 i2c@3d40 { 249 i2c@3d40 {
@@ -253,7 +252,6 @@
253 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c"; 252 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
254 reg = <0x3d40 0x40>; 253 reg = <0x3d40 0x40>;
255 interrupts = <2 16 0>; 254 interrupts = <2 16 0>;
256 fsl5200-clocking;
257 rtc@51 { 255 rtc@51 {
258 compatible = "nxp,pcf8563"; 256 compatible = "nxp,pcf8563";
259 reg = <0x51>; 257 reg = <0x51>;
diff --git a/arch/powerpc/boot/dts/pcm032.dts b/arch/powerpc/boot/dts/pcm032.dts
index 030042678392..85d857a5d46e 100644
--- a/arch/powerpc/boot/dts/pcm032.dts
+++ b/arch/powerpc/boot/dts/pcm032.dts
@@ -244,7 +244,6 @@
244 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c"; 244 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
245 reg = <0x3d00 0x40>; 245 reg = <0x3d00 0x40>;
246 interrupts = <2 15 0>; 246 interrupts = <2 15 0>;
247 fsl5200-clocking;
248 }; 247 };
249 248
250 i2c@3d40 { 249 i2c@3d40 {
@@ -253,7 +252,6 @@
253 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c"; 252 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
254 reg = <0x3d40 0x40>; 253 reg = <0x3d40 0x40>;
255 interrupts = <2 16 0>; 254 interrupts = <2 16 0>;
256 fsl5200-clocking;
257 rtc@51 { 255 rtc@51 {
258 compatible = "nxp,pcf8563"; 256 compatible = "nxp,pcf8563";
259 reg = <0x51>; 257 reg = <0x51>;
diff --git a/arch/powerpc/boot/dts/sbc8548.dts b/arch/powerpc/boot/dts/sbc8548.dts
index 9eefe00ed253..94a332251710 100644
--- a/arch/powerpc/boot/dts/sbc8548.dts
+++ b/arch/powerpc/boot/dts/sbc8548.dts
@@ -26,8 +26,7 @@
26 serial0 = &serial0; 26 serial0 = &serial0;
27 serial1 = &serial1; 27 serial1 = &serial1;
28 pci0 = &pci0; 28 pci0 = &pci0;
29 /* pci1 doesn't have a corresponding physical connector */ 29 pci1 = &pci1;
30 pci2 = &pci2;
31 }; 30 };
32 31
33 cpus { 32 cpus {
@@ -381,7 +380,7 @@
381 bus-range = <0 0>; 380 bus-range = <0 0>;
382 ranges = <0x02000000 0x0 0x80000000 0x80000000 0x0 0x10000000 381 ranges = <0x02000000 0x0 0x80000000 0x80000000 0x0 0x10000000
383 0x01000000 0x0 0x00000000 0xe2000000 0x0 0x00800000>; 382 0x01000000 0x0 0x00000000 0xe2000000 0x0 0x00800000>;
384 clock-frequency = <66666666>; 383 clock-frequency = <66000000>;
385 #interrupt-cells = <1>; 384 #interrupt-cells = <1>;
386 #size-cells = <2>; 385 #size-cells = <2>;
387 #address-cells = <3>; 386 #address-cells = <3>;
@@ -390,7 +389,7 @@
390 device_type = "pci"; 389 device_type = "pci";
391 }; 390 };
392 391
393 pci2: pcie@e000a000 { 392 pci1: pcie@e000a000 {
394 interrupt-map-mask = <0xf800 0x0 0x0 0x7>; 393 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
395 interrupt-map = < 394 interrupt-map = <
396 395
@@ -403,9 +402,9 @@
403 interrupt-parent = <&mpic>; 402 interrupt-parent = <&mpic>;
404 interrupts = <0x1a 0x2>; 403 interrupts = <0x1a 0x2>;
405 bus-range = <0x0 0xff>; 404 bus-range = <0x0 0xff>;
406 ranges = <0x02000000 0x0 0xa0000000 0xa0000000 0x0 0x20000000 405 ranges = <0x02000000 0x0 0xa0000000 0xa0000000 0x0 0x10000000
407 0x01000000 0x0 0x00000000 0xe3000000 0x0 0x08000000>; 406 0x01000000 0x0 0x00000000 0xe2800000 0x0 0x08000000>;
408 clock-frequency = <33333333>; 407 clock-frequency = <33000000>;
409 #interrupt-cells = <1>; 408 #interrupt-cells = <1>;
410 #size-cells = <2>; 409 #size-cells = <2>;
411 #address-cells = <3>; 410 #address-cells = <3>;
@@ -419,11 +418,11 @@
419 device_type = "pci"; 418 device_type = "pci";
420 ranges = <0x02000000 0x0 0xa0000000 419 ranges = <0x02000000 0x0 0xa0000000
421 0x02000000 0x0 0xa0000000 420 0x02000000 0x0 0xa0000000
422 0x0 0x20000000 421 0x0 0x10000000
423 422
424 0x01000000 0x0 0x00000000 423 0x01000000 0x0 0x00000000
425 0x01000000 0x0 0x00000000 424 0x01000000 0x0 0x00000000
426 0x0 0x08000000>; 425 0x0 0x00800000>;
427 }; 426 };
428 }; 427 };
429}; 428};
diff --git a/arch/powerpc/boot/dts/tqm5200.dts b/arch/powerpc/boot/dts/tqm5200.dts
index c9590b58b7b0..1db07f6cf133 100644
--- a/arch/powerpc/boot/dts/tqm5200.dts
+++ b/arch/powerpc/boot/dts/tqm5200.dts
@@ -160,7 +160,6 @@
160 compatible = "fsl,mpc5200-i2c","fsl-i2c"; 160 compatible = "fsl,mpc5200-i2c","fsl-i2c";
161 reg = <0x3d40 0x40>; 161 reg = <0x3d40 0x40>;
162 interrupts = <2 16 0>; 162 interrupts = <2 16 0>;
163 fsl5200-clocking;
164 163
165 rtc@68 { 164 rtc@68 {
166 compatible = "dallas,ds1307"; 165 compatible = "dallas,ds1307";
diff --git a/arch/powerpc/boot/dts/uc101.dts b/arch/powerpc/boot/dts/uc101.dts
new file mode 100644
index 000000000000..019264c62904
--- /dev/null
+++ b/arch/powerpc/boot/dts/uc101.dts
@@ -0,0 +1,284 @@
1/*
2 * Manroland uc101 board Device Tree Source
3 *
4 * Copyright (C) 2009 DENX Software Engineering GmbH
5 * Heiko Schocher <hs@denx.de>
6 * Copyright 2006-2007 Secret Lab Technologies Ltd.
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the
10 * Free Software Foundation; either version 2 of the License, or (at your
11 * option) any later version.
12 */
13
14/dts-v1/;
15
16/ {
17 model = "manroland,uc101";
18 compatible = "manroland,uc101";
19 #address-cells = <1>;
20 #size-cells = <1>;
21 interrupt-parent = <&mpc5200_pic>;
22
23 cpus {
24 #address-cells = <1>;
25 #size-cells = <0>;
26
27 PowerPC,5200@0 {
28 device_type = "cpu";
29 reg = <0>;
30 d-cache-line-size = <32>;
31 i-cache-line-size = <32>;
32 d-cache-size = <0x4000>; // L1, 16K
33 i-cache-size = <0x4000>; // L1, 16K
34 timebase-frequency = <0>; // from bootloader
35 bus-frequency = <0>; // from bootloader
36 clock-frequency = <0>; // from bootloader
37 };
38 };
39
40 memory {
41 device_type = "memory";
42 reg = <0x00000000 0x04000000>; // 64MB
43 };
44
45 soc5200@f0000000 {
46 #address-cells = <1>;
47 #size-cells = <1>;
48 compatible = "fsl,mpc5200b-immr";
49 ranges = <0 0xf0000000 0x0000c000>;
50 reg = <0xf0000000 0x00000100>;
51 bus-frequency = <0>; // from bootloader
52 system-frequency = <0>; // from bootloader
53
54 cdm@200 {
55 compatible = "fsl,mpc5200b-cdm","fsl,mpc5200-cdm";
56 reg = <0x200 0x38>;
57 };
58
59 mpc5200_pic: interrupt-controller@500 {
60 // 5200 interrupts are encoded into two levels;
61 interrupt-controller;
62 #interrupt-cells = <3>;
63 compatible = "fsl,mpc5200b-pic","fsl,mpc5200-pic";
64 reg = <0x500 0x80>;
65 };
66
67 gpt0: timer@600 { // General Purpose Timer in GPIO mode
68 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
69 reg = <0x600 0x10>;
70 interrupts = <1 9 0>;
71 gpio-controller;
72 #gpio-cells = <2>;
73 };
74
75 gpt1: timer@610 { // General Purpose Timer in GPIO mode
76 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
77 reg = <0x610 0x10>;
78 interrupts = <1 10 0>;
79 gpio-controller;
80 #gpio-cells = <2>;
81 };
82
83 gpt2: timer@620 { // General Purpose Timer in GPIO mode
84 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
85 reg = <0x620 0x10>;
86 interrupts = <1 11 0>;
87 gpio-controller;
88 #gpio-cells = <2>;
89 };
90
91 gpt3: timer@630 { // General Purpose Timer in GPIO mode
92 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
93 reg = <0x630 0x10>;
94 interrupts = <1 12 0>;
95 gpio-controller;
96 #gpio-cells = <2>;
97 };
98
99 gpt4: timer@640 { // General Purpose Timer in GPIO mode
100 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
101 reg = <0x640 0x10>;
102 interrupts = <1 13 0>;
103 gpio-controller;
104 #gpio-cells = <2>;
105 };
106
107 gpt5: timer@650 { // General Purpose Timer in GPIO mode
108 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
109 reg = <0x650 0x10>;
110 interrupts = <1 14 0>;
111 gpio-controller;
112 #gpio-cells = <2>;
113 };
114
115 gpt6: timer@660 { // General Purpose Timer in GPIO mode
116 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
117 reg = <0x660 0x10>;
118 interrupts = <1 15 0>;
119 gpio-controller;
120 #gpio-cells = <2>;
121 };
122
123 gpt7: timer@670 { // General Purpose Timer in GPIO mode
124 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
125 reg = <0x670 0x10>;
126 interrupts = <1 16 0>;
127 gpio-controller;
128 #gpio-cells = <2>;
129 };
130
131 gpio_simple: gpio@b00 {
132 compatible = "fsl,mpc5200b-gpio","fsl,mpc5200-gpio";
133 reg = <0xb00 0x40>;
134 interrupts = <1 7 0>;
135 gpio-controller;
136 #gpio-cells = <2>;
137 };
138
139 gpio_wkup: gpio@c00 {
140 compatible = "fsl,mpc5200b-gpio-wkup","fsl,mpc5200-gpio-wkup";
141 reg = <0xc00 0x40>;
142 interrupts = <1 8 0 0 3 0>;
143 gpio-controller;
144 #gpio-cells = <2>;
145 };
146
147 dma-controller@1200 {
148 compatible = "fsl,mpc5200b-bestcomm","fsl,mpc5200-bestcomm";
149 reg = <0x1200 0x80>;
150 interrupts = <3 0 0 3 1 0 3 2 0 3 3 0
151 3 4 0 3 5 0 3 6 0 3 7 0
152 3 8 0 3 9 0 3 10 0 3 11 0
153 3 12 0 3 13 0 3 14 0 3 15 0>;
154 };
155
156 xlb@1f00 {
157 compatible = "fsl,mpc5200b-xlb","fsl,mpc5200-xlb";
158 reg = <0x1f00 0x100>;
159 };
160
161 serial@2000 { /* PSC1 in UART mode */
162 compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
163 reg = <0x2000 0x100>;
164 interrupts = <2 1 0>;
165 };
166
167 serial@2200 { /* PSC2 in UART mode */
168 compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
169 reg = <0x2200 0x100>;
170 interrupts = <2 2 0>;
171 };
172
173 serial@2c00 { /* PSC6 in UART mode */
174 compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
175 reg = <0x2c00 0x100>;
176 interrupts = <2 4 0>;
177 };
178
179 ethernet@3000 {
180 compatible = "fsl,mpc5200b-fec","fsl,mpc5200-fec";
181 reg = <0x3000 0x400>;
182 local-mac-address = [ 00 00 00 00 00 00 ];
183 interrupts = <2 5 0>;
184 phy-handle = <&phy0>;
185 };
186
187 mdio@3000 {
188 #address-cells = <1>;
189 #size-cells = <0>;
190 compatible = "fsl,mpc5200b-mdio","fsl,mpc5200-mdio";
191 reg = <0x3000 0x400>; // fec range, since we need to setup fec interrupts
192 interrupts = <2 5 0>; // these are for "mii command finished", not link changes & co.
193
194 phy0: ethernet-phy@0 {
195 compatible = "intel,lxt971";
196 reg = <0>;
197 };
198 };
199
200 ata@3a00 {
201 compatible = "fsl,mpc5200b-ata","fsl,mpc5200-ata";
202 reg = <0x3a00 0x100>;
203 interrupts = <2 7 0>;
204 };
205
206 i2c@3d40 {
207 #address-cells = <1>;
208 #size-cells = <0>;
209 compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
210 reg = <0x3d40 0x40>;
211 interrupts = <2 16 0>;
212 fsl,preserve-clocking;
213 clock-frequency = <400000>;
214
215 hwmon@2c {
216 compatible = "ad,adm9240";
217 reg = <0x2c>;
218 };
219 rtc@51 {
220 compatible = "nxp,pcf8563";
221 reg = <0x51>;
222 };
223 };
224
225 sram@8000 {
226 compatible = "fsl,mpc5200b-sram","fsl,mpc5200-sram";
227 reg = <0x8000 0x4000>;
228 };
229 };
230
231 localbus {
232 compatible = "fsl,mpc5200b-lpb","fsl,mpc5200-lpb","simple-bus";
233
234 #address-cells = <2>;
235 #size-cells = <1>;
236
237 ranges = <0 0 0xff800000 0x00800000
238 1 0 0x80000000 0x00800000
239 3 0 0x80000000 0x00800000>;
240
241 flash@0,0 {
242 compatible = "cfi-flash";
243 reg = <0 0 0x00800000>;
244 bank-width = <2>;
245 device-width = <2>;
246 #size-cells = <1>;
247 #address-cells = <1>;
248
249 partition@0 {
250 label = "DTS";
251 reg = <0x0 0x00100000>;
252 };
253 partition@100000 {
254 label = "Kernel";
255 reg = <0x100000 0x00200000>;
256 };
257 partition@300000 {
258 label = "RootFS";
259 reg = <0x00300000 0x00200000>;
260 };
261 partition@500000 {
262 label = "user";
263 reg = <0x00500000 0x00200000>;
264 };
265 partition@700000 {
266 label = "U-Boot";
267 reg = <0x00700000 0x00040000>;
268 };
269 partition@740000 {
270 label = "Env";
271 reg = <0x00740000 0x00010000>;
272 };
273 partition@750000 {
274 label = "red. Env";
275 reg = <0x00750000 0x00010000>;
276 };
277 partition@760000 {
278 label = "reserve";
279 reg = <0x00760000 0x000a0000>;
280 };
281 };
282
283 };
284};
diff --git a/arch/powerpc/configs/52xx/cm5200_defconfig b/arch/powerpc/configs/52xx/cm5200_defconfig
index 3838b77b8116..0396ce7bffc6 100644
--- a/arch/powerpc/configs/52xx/cm5200_defconfig
+++ b/arch/powerpc/configs/52xx/cm5200_defconfig
@@ -1,25 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.30-rc2 3# Linux kernel version: 2.6.32-rc4
4# Sat Apr 18 00:47:44 2009 4# Thu Oct 15 10:33:22 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
8# 8#
9# Processor support 9# Processor support
10# 10#
11CONFIG_6xx=y 11CONFIG_PPC_BOOK3S_32=y
12# CONFIG_PPC_85xx is not set 12# CONFIG_PPC_85xx is not set
13# CONFIG_PPC_8xx is not set 13# CONFIG_PPC_8xx is not set
14# CONFIG_40x is not set 14# CONFIG_40x is not set
15# CONFIG_44x is not set 15# CONFIG_44x is not set
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_PPC_BOOK3S=y 17CONFIG_PPC_BOOK3S=y
18CONFIG_6xx=y
18CONFIG_PPC_FPU=y 19CONFIG_PPC_FPU=y
19# CONFIG_ALTIVEC is not set 20# CONFIG_ALTIVEC is not set
20CONFIG_PPC_STD_MMU=y 21CONFIG_PPC_STD_MMU=y
21CONFIG_PPC_STD_MMU_32=y 22CONFIG_PPC_STD_MMU_32=y
22# CONFIG_PPC_MM_SLICES is not set 23# CONFIG_PPC_MM_SLICES is not set
24CONFIG_PPC_HAVE_PMU_SUPPORT=y
23# CONFIG_SMP is not set 25# CONFIG_SMP is not set
24CONFIG_PPC32=y 26CONFIG_PPC32=y
25CONFIG_WORD_SIZE=32 27CONFIG_WORD_SIZE=32
@@ -30,15 +32,17 @@ CONFIG_GENERIC_TIME=y
30CONFIG_GENERIC_TIME_VSYSCALL=y 32CONFIG_GENERIC_TIME_VSYSCALL=y
31CONFIG_GENERIC_CLOCKEVENTS=y 33CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
34CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y 39CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_HAVE_LATENCYTOP_SUPPORT=y 40CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y
37CONFIG_LOCKDEP_SUPPORT=y 42CONFIG_LOCKDEP_SUPPORT=y
38CONFIG_RWSEM_XCHGADD_ALGORITHM=y 43CONFIG_RWSEM_XCHGADD_ALGORITHM=y
39CONFIG_ARCH_HAS_ILOG2_U32=y 44CONFIG_ARCH_HAS_ILOG2_U32=y
40CONFIG_GENERIC_HWEIGHT=y 45CONFIG_GENERIC_HWEIGHT=y
41CONFIG_GENERIC_CALIBRATE_DELAY=y
42CONFIG_GENERIC_FIND_NEXT_BIT=y 46CONFIG_GENERIC_FIND_NEXT_BIT=y
43# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 47# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
44CONFIG_PPC=y 48CONFIG_PPC=y
@@ -52,11 +56,13 @@ CONFIG_OF=y
52# CONFIG_GENERIC_TBSYNC is not set 56# CONFIG_GENERIC_TBSYNC is not set
53CONFIG_AUDIT_ARCH=y 57CONFIG_AUDIT_ARCH=y
54CONFIG_GENERIC_BUG=y 58CONFIG_GENERIC_BUG=y
59CONFIG_DTC=y
55CONFIG_DEFAULT_UIMAGE=y 60CONFIG_DEFAULT_UIMAGE=y
56# CONFIG_PPC_DCR_NATIVE is not set 61# CONFIG_PPC_DCR_NATIVE is not set
57# CONFIG_PPC_DCR_MMIO is not set 62# CONFIG_PPC_DCR_MMIO is not set
58CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 63CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
59CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 64CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
65CONFIG_CONSTRUCTORS=y
60 66
61# 67#
62# General setup 68# General setup
@@ -77,11 +83,12 @@ CONFIG_SYSVIPC_SYSCTL=y
77# 83#
78# RCU Subsystem 84# RCU Subsystem
79# 85#
80CONFIG_CLASSIC_RCU=y 86CONFIG_TREE_RCU=y
81# CONFIG_TREE_RCU is not set 87# CONFIG_TREE_PREEMPT_RCU is not set
82# CONFIG_PREEMPT_RCU is not set 88# CONFIG_RCU_TRACE is not set
89CONFIG_RCU_FANOUT=32
90# CONFIG_RCU_FANOUT_EXACT is not set
83# CONFIG_TREE_RCU_TRACE is not set 91# CONFIG_TREE_RCU_TRACE is not set
84# CONFIG_PREEMPT_RCU_TRACE is not set
85# CONFIG_IKCONFIG is not set 92# CONFIG_IKCONFIG is not set
86CONFIG_LOG_BUF_SHIFT=14 93CONFIG_LOG_BUF_SHIFT=14
87CONFIG_GROUP_SCHED=y 94CONFIG_GROUP_SCHED=y
@@ -105,7 +112,6 @@ CONFIG_ANON_INODES=y
105CONFIG_EMBEDDED=y 112CONFIG_EMBEDDED=y
106# CONFIG_SYSCTL_SYSCALL is not set 113# CONFIG_SYSCTL_SYSCALL is not set
107# CONFIG_KALLSYMS is not set 114# CONFIG_KALLSYMS is not set
108# CONFIG_STRIP_ASM_SYMS is not set
109CONFIG_HOTPLUG=y 115CONFIG_HOTPLUG=y
110CONFIG_PRINTK=y 116CONFIG_PRINTK=y
111CONFIG_BUG=y 117CONFIG_BUG=y
@@ -118,6 +124,13 @@ CONFIG_TIMERFD=y
118CONFIG_EVENTFD=y 124CONFIG_EVENTFD=y
119CONFIG_SHMEM=y 125CONFIG_SHMEM=y
120CONFIG_AIO=y 126CONFIG_AIO=y
127CONFIG_HAVE_PERF_EVENTS=y
128
129#
130# Kernel Performance Events And Counters
131#
132# CONFIG_PERF_EVENTS is not set
133# CONFIG_PERF_COUNTERS is not set
121CONFIG_VM_EVENT_COUNTERS=y 134CONFIG_VM_EVENT_COUNTERS=y
122CONFIG_SLUB_DEBUG=y 135CONFIG_SLUB_DEBUG=y
123CONFIG_COMPAT_BRK=y 136CONFIG_COMPAT_BRK=y
@@ -125,14 +138,19 @@ CONFIG_COMPAT_BRK=y
125CONFIG_SLUB=y 138CONFIG_SLUB=y
126# CONFIG_SLOB is not set 139# CONFIG_SLOB is not set
127# CONFIG_PROFILING is not set 140# CONFIG_PROFILING is not set
128# CONFIG_MARKERS is not set
129CONFIG_HAVE_OPROFILE=y 141CONFIG_HAVE_OPROFILE=y
130CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 142CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
131CONFIG_HAVE_IOREMAP_PROT=y 143CONFIG_HAVE_IOREMAP_PROT=y
132CONFIG_HAVE_KPROBES=y 144CONFIG_HAVE_KPROBES=y
133CONFIG_HAVE_KRETPROBES=y 145CONFIG_HAVE_KRETPROBES=y
134CONFIG_HAVE_ARCH_TRACEHOOK=y 146CONFIG_HAVE_ARCH_TRACEHOOK=y
147CONFIG_HAVE_DMA_ATTRS=y
135CONFIG_HAVE_CLK=y 148CONFIG_HAVE_CLK=y
149CONFIG_HAVE_DMA_API_DEBUG=y
150
151#
152# GCOV-based kernel profiling
153#
136# CONFIG_SLOW_WORK is not set 154# CONFIG_SLOW_WORK is not set
137# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 155# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
138CONFIG_SLABINFO=y 156CONFIG_SLABINFO=y
@@ -140,7 +158,7 @@ CONFIG_RT_MUTEXES=y
140CONFIG_BASE_SMALL=0 158CONFIG_BASE_SMALL=0
141# CONFIG_MODULES is not set 159# CONFIG_MODULES is not set
142CONFIG_BLOCK=y 160CONFIG_BLOCK=y
143# CONFIG_LBD is not set 161CONFIG_LBDAF=y
144# CONFIG_BLK_DEV_BSG is not set 162# CONFIG_BLK_DEV_BSG is not set
145# CONFIG_BLK_DEV_INTEGRITY is not set 163# CONFIG_BLK_DEV_INTEGRITY is not set
146 164
@@ -219,11 +237,13 @@ CONFIG_BINFMT_ELF=y
219# CONFIG_HAVE_AOUT is not set 237# CONFIG_HAVE_AOUT is not set
220# CONFIG_BINFMT_MISC is not set 238# CONFIG_BINFMT_MISC is not set
221# CONFIG_IOMMU_HELPER is not set 239# CONFIG_IOMMU_HELPER is not set
240# CONFIG_SWIOTLB is not set
222CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 241CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
223CONFIG_ARCH_HAS_WALK_MEMORY=y 242CONFIG_ARCH_HAS_WALK_MEMORY=y
224CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 243CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
225# CONFIG_KEXEC is not set 244# CONFIG_KEXEC is not set
226# CONFIG_CRASH_DUMP is not set 245# CONFIG_CRASH_DUMP is not set
246CONFIG_MAX_ACTIVE_REGIONS=32
227CONFIG_ARCH_FLATMEM_ENABLE=y 247CONFIG_ARCH_FLATMEM_ENABLE=y
228CONFIG_ARCH_POPULATES_NODE_MAP=y 248CONFIG_ARCH_POPULATES_NODE_MAP=y
229CONFIG_SELECT_MEMORY_MODEL=y 249CONFIG_SELECT_MEMORY_MODEL=y
@@ -239,9 +259,10 @@ CONFIG_MIGRATION=y
239CONFIG_ZONE_DMA_FLAG=1 259CONFIG_ZONE_DMA_FLAG=1
240CONFIG_BOUNCE=y 260CONFIG_BOUNCE=y
241CONFIG_VIRT_TO_BUS=y 261CONFIG_VIRT_TO_BUS=y
242CONFIG_UNEVICTABLE_LRU=y
243CONFIG_HAVE_MLOCK=y 262CONFIG_HAVE_MLOCK=y
244CONFIG_HAVE_MLOCKED_PAGE_BIT=y 263CONFIG_HAVE_MLOCKED_PAGE_BIT=y
264# CONFIG_KSM is not set
265CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
245CONFIG_PPC_4K_PAGES=y 266CONFIG_PPC_4K_PAGES=y
246# CONFIG_PPC_16K_PAGES is not set 267# CONFIG_PPC_16K_PAGES is not set
247# CONFIG_PPC_64K_PAGES is not set 268# CONFIG_PPC_64K_PAGES is not set
@@ -252,6 +273,7 @@ CONFIG_PROC_DEVICETREE=y
252CONFIG_EXTRA_TARGETS="" 273CONFIG_EXTRA_TARGETS=""
253CONFIG_PM=y 274CONFIG_PM=y
254# CONFIG_PM_DEBUG is not set 275# CONFIG_PM_DEBUG is not set
276# CONFIG_PM_RUNTIME is not set
255CONFIG_SECCOMP=y 277CONFIG_SECCOMP=y
256CONFIG_ISA_DMA_API=y 278CONFIG_ISA_DMA_API=y
257 279
@@ -328,6 +350,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
328# CONFIG_NETFILTER is not set 350# CONFIG_NETFILTER is not set
329# CONFIG_IP_DCCP is not set 351# CONFIG_IP_DCCP is not set
330# CONFIG_IP_SCTP is not set 352# CONFIG_IP_SCTP is not set
353# CONFIG_RDS is not set
331# CONFIG_TIPC is not set 354# CONFIG_TIPC is not set
332# CONFIG_ATM is not set 355# CONFIG_ATM is not set
333# CONFIG_BRIDGE is not set 356# CONFIG_BRIDGE is not set
@@ -342,6 +365,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
342# CONFIG_ECONET is not set 365# CONFIG_ECONET is not set
343# CONFIG_WAN_ROUTER is not set 366# CONFIG_WAN_ROUTER is not set
344# CONFIG_PHONET is not set 367# CONFIG_PHONET is not set
368# CONFIG_IEEE802154 is not set
345# CONFIG_NET_SCHED is not set 369# CONFIG_NET_SCHED is not set
346# CONFIG_DCB is not set 370# CONFIG_DCB is not set
347 371
@@ -367,6 +391,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
367# Generic Driver Options 391# Generic Driver Options
368# 392#
369CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 393CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
394# CONFIG_DEVTMPFS is not set
370CONFIG_STANDALONE=y 395CONFIG_STANDALONE=y
371CONFIG_PREVENT_FIRMWARE_BUILD=y 396CONFIG_PREVENT_FIRMWARE_BUILD=y
372# CONFIG_FW_LOADER is not set 397# CONFIG_FW_LOADER is not set
@@ -457,6 +482,7 @@ CONFIG_MTD_PHYSMAP_OF=y
457# CONFIG_MTD_UBI is not set 482# CONFIG_MTD_UBI is not set
458CONFIG_OF_DEVICE=y 483CONFIG_OF_DEVICE=y
459CONFIG_OF_I2C=y 484CONFIG_OF_I2C=y
485CONFIG_OF_MDIO=y
460# CONFIG_PARPORT is not set 486# CONFIG_PARPORT is not set
461CONFIG_BLK_DEV=y 487CONFIG_BLK_DEV=y
462# CONFIG_BLK_DEV_FD is not set 488# CONFIG_BLK_DEV_FD is not set
@@ -495,10 +521,6 @@ CONFIG_BLK_DEV_SD=y
495# CONFIG_BLK_DEV_SR is not set 521# CONFIG_BLK_DEV_SR is not set
496CONFIG_CHR_DEV_SG=y 522CONFIG_CHR_DEV_SG=y
497# CONFIG_CHR_DEV_SCH is not set 523# CONFIG_CHR_DEV_SCH is not set
498
499#
500# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
501#
502# CONFIG_SCSI_MULTI_LUN is not set 524# CONFIG_SCSI_MULTI_LUN is not set
503# CONFIG_SCSI_CONSTANTS is not set 525# CONFIG_SCSI_CONSTANTS is not set
504# CONFIG_SCSI_LOGGING is not set 526# CONFIG_SCSI_LOGGING is not set
@@ -519,7 +541,6 @@ CONFIG_CHR_DEV_SG=y
519# CONFIG_MD is not set 541# CONFIG_MD is not set
520# CONFIG_MACINTOSH_DRIVERS is not set 542# CONFIG_MACINTOSH_DRIVERS is not set
521CONFIG_NETDEVICES=y 543CONFIG_NETDEVICES=y
522CONFIG_COMPAT_NET_DEV_OPS=y
523# CONFIG_DUMMY is not set 544# CONFIG_DUMMY is not set
524# CONFIG_BONDING is not set 545# CONFIG_BONDING is not set
525# CONFIG_MACVLAN is not set 546# CONFIG_MACVLAN is not set
@@ -558,14 +579,14 @@ CONFIG_NET_ETHERNET=y
558# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 579# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
559# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 580# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
560# CONFIG_B44 is not set 581# CONFIG_B44 is not set
582# CONFIG_KS8842 is not set
583# CONFIG_KS8851_MLL is not set
561CONFIG_FEC_MPC52xx=y 584CONFIG_FEC_MPC52xx=y
562CONFIG_FEC_MPC52xx_MDIO=y 585CONFIG_FEC_MPC52xx_MDIO=y
586# CONFIG_XILINX_EMACLITE is not set
563# CONFIG_NETDEV_1000 is not set 587# CONFIG_NETDEV_1000 is not set
564# CONFIG_NETDEV_10000 is not set 588# CONFIG_NETDEV_10000 is not set
565 589CONFIG_WLAN=y
566#
567# Wireless LAN
568#
569# CONFIG_WLAN_PRE80211 is not set 590# CONFIG_WLAN_PRE80211 is not set
570# CONFIG_WLAN_80211 is not set 591# CONFIG_WLAN_80211 is not set
571 592
@@ -636,6 +657,7 @@ CONFIG_LEGACY_PTY_COUNT=256
636# CONFIG_TCG_TPM is not set 657# CONFIG_TCG_TPM is not set
637CONFIG_I2C=y 658CONFIG_I2C=y
638CONFIG_I2C_BOARDINFO=y 659CONFIG_I2C_BOARDINFO=y
660CONFIG_I2C_COMPAT=y
639CONFIG_I2C_CHARDEV=y 661CONFIG_I2C_CHARDEV=y
640CONFIG_I2C_HELPER_AUTO=y 662CONFIG_I2C_HELPER_AUTO=y
641 663
@@ -646,6 +668,7 @@ CONFIG_I2C_HELPER_AUTO=y
646# 668#
647# I2C system bus drivers (mostly embedded / system-on-chip) 669# I2C system bus drivers (mostly embedded / system-on-chip)
648# 670#
671# CONFIG_I2C_DESIGNWARE is not set
649CONFIG_I2C_MPC=y 672CONFIG_I2C_MPC=y
650# CONFIG_I2C_OCORES is not set 673# CONFIG_I2C_OCORES is not set
651# CONFIG_I2C_SIMTEC is not set 674# CONFIG_I2C_SIMTEC is not set
@@ -666,23 +689,23 @@ CONFIG_I2C_MPC=y
666# Miscellaneous I2C Chip support 689# Miscellaneous I2C Chip support
667# 690#
668# CONFIG_DS1682 is not set 691# CONFIG_DS1682 is not set
669# CONFIG_SENSORS_PCF8574 is not set
670# CONFIG_PCF8575 is not set
671# CONFIG_SENSORS_PCA9539 is not set
672# CONFIG_SENSORS_MAX6875 is not set
673# CONFIG_SENSORS_TSL2550 is not set 692# CONFIG_SENSORS_TSL2550 is not set
674# CONFIG_I2C_DEBUG_CORE is not set 693# CONFIG_I2C_DEBUG_CORE is not set
675# CONFIG_I2C_DEBUG_ALGO is not set 694# CONFIG_I2C_DEBUG_ALGO is not set
676# CONFIG_I2C_DEBUG_BUS is not set 695# CONFIG_I2C_DEBUG_BUS is not set
677# CONFIG_I2C_DEBUG_CHIP is not set 696# CONFIG_I2C_DEBUG_CHIP is not set
678# CONFIG_SPI is not set 697# CONFIG_SPI is not set
698
699#
700# PPS support
701#
702# CONFIG_PPS is not set
679CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 703CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
680# CONFIG_GPIOLIB is not set 704# CONFIG_GPIOLIB is not set
681# CONFIG_W1 is not set 705# CONFIG_W1 is not set
682# CONFIG_POWER_SUPPLY is not set 706# CONFIG_POWER_SUPPLY is not set
683# CONFIG_HWMON is not set 707# CONFIG_HWMON is not set
684# CONFIG_THERMAL is not set 708# CONFIG_THERMAL is not set
685# CONFIG_THERMAL_HWMON is not set
686CONFIG_WATCHDOG=y 709CONFIG_WATCHDOG=y
687# CONFIG_WATCHDOG_NOWAYOUT is not set 710# CONFIG_WATCHDOG_NOWAYOUT is not set
688 711
@@ -713,25 +736,12 @@ CONFIG_SSB_POSSIBLE=y
713# CONFIG_MFD_TMIO is not set 736# CONFIG_MFD_TMIO is not set
714# CONFIG_PMIC_DA903X is not set 737# CONFIG_PMIC_DA903X is not set
715# CONFIG_MFD_WM8400 is not set 738# CONFIG_MFD_WM8400 is not set
739# CONFIG_MFD_WM831X is not set
716# CONFIG_MFD_WM8350_I2C is not set 740# CONFIG_MFD_WM8350_I2C is not set
717# CONFIG_MFD_PCF50633 is not set 741# CONFIG_MFD_PCF50633 is not set
742# CONFIG_AB3100_CORE is not set
718# CONFIG_REGULATOR is not set 743# CONFIG_REGULATOR is not set
719 744# CONFIG_MEDIA_SUPPORT is not set
720#
721# Multimedia devices
722#
723
724#
725# Multimedia core support
726#
727# CONFIG_VIDEO_DEV is not set
728# CONFIG_DVB_CORE is not set
729# CONFIG_VIDEO_MEDIA is not set
730
731#
732# Multimedia drivers
733#
734# CONFIG_DAB is not set
735 745
736# 746#
737# Graphics support 747# Graphics support
@@ -775,11 +785,12 @@ CONFIG_USB_DEVICEFS=y
775# CONFIG_USB_OXU210HP_HCD is not set 785# CONFIG_USB_OXU210HP_HCD is not set
776# CONFIG_USB_ISP116X_HCD is not set 786# CONFIG_USB_ISP116X_HCD is not set
777# CONFIG_USB_ISP1760_HCD is not set 787# CONFIG_USB_ISP1760_HCD is not set
788# CONFIG_USB_ISP1362_HCD is not set
778CONFIG_USB_OHCI_HCD=y 789CONFIG_USB_OHCI_HCD=y
779CONFIG_USB_OHCI_HCD_PPC_SOC=y 790CONFIG_USB_OHCI_HCD_PPC_SOC=y
780CONFIG_USB_OHCI_HCD_PPC_OF=y
781CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 791CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
782# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 792# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
793CONFIG_USB_OHCI_HCD_PPC_OF=y
783CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y 794CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
784CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y 795CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
785# CONFIG_USB_OHCI_LITTLE_ENDIAN is not set 796# CONFIG_USB_OHCI_LITTLE_ENDIAN is not set
@@ -866,6 +877,10 @@ CONFIG_USB_STORAGE=y
866# CONFIG_DMADEVICES is not set 877# CONFIG_DMADEVICES is not set
867# CONFIG_AUXDISPLAY is not set 878# CONFIG_AUXDISPLAY is not set
868# CONFIG_UIO is not set 879# CONFIG_UIO is not set
880
881#
882# TI VLYNQ
883#
869# CONFIG_STAGING is not set 884# CONFIG_STAGING is not set
870 885
871# 886#
@@ -885,10 +900,13 @@ CONFIG_FS_MBCACHE=y
885# CONFIG_REISERFS_FS is not set 900# CONFIG_REISERFS_FS is not set
886# CONFIG_JFS_FS is not set 901# CONFIG_JFS_FS is not set
887# CONFIG_FS_POSIX_ACL is not set 902# CONFIG_FS_POSIX_ACL is not set
888CONFIG_FILE_LOCKING=y
889# CONFIG_XFS_FS is not set 903# CONFIG_XFS_FS is not set
904# CONFIG_GFS2_FS is not set
890# CONFIG_OCFS2_FS is not set 905# CONFIG_OCFS2_FS is not set
891# CONFIG_BTRFS_FS is not set 906# CONFIG_BTRFS_FS is not set
907# CONFIG_NILFS2_FS is not set
908CONFIG_FILE_LOCKING=y
909CONFIG_FSNOTIFY=y
892CONFIG_DNOTIFY=y 910CONFIG_DNOTIFY=y
893CONFIG_INOTIFY=y 911CONFIG_INOTIFY=y
894CONFIG_INOTIFY_USER=y 912CONFIG_INOTIFY_USER=y
@@ -959,12 +977,12 @@ CONFIG_CRAMFS=y
959# CONFIG_ROMFS_FS is not set 977# CONFIG_ROMFS_FS is not set
960# CONFIG_SYSV_FS is not set 978# CONFIG_SYSV_FS is not set
961# CONFIG_UFS_FS is not set 979# CONFIG_UFS_FS is not set
962# CONFIG_NILFS2_FS is not set
963CONFIG_NETWORK_FILESYSTEMS=y 980CONFIG_NETWORK_FILESYSTEMS=y
964CONFIG_NFS_FS=y 981CONFIG_NFS_FS=y
965CONFIG_NFS_V3=y 982CONFIG_NFS_V3=y
966# CONFIG_NFS_V3_ACL is not set 983# CONFIG_NFS_V3_ACL is not set
967CONFIG_NFS_V4=y 984CONFIG_NFS_V4=y
985# CONFIG_NFS_V4_1 is not set
968CONFIG_ROOT_NFS=y 986CONFIG_ROOT_NFS=y
969# CONFIG_NFSD is not set 987# CONFIG_NFSD is not set
970CONFIG_LOCKD=y 988CONFIG_LOCKD=y
@@ -1064,6 +1082,7 @@ CONFIG_HAS_IOPORT=y
1064CONFIG_HAS_DMA=y 1082CONFIG_HAS_DMA=y
1065CONFIG_HAVE_LMB=y 1083CONFIG_HAVE_LMB=y
1066CONFIG_NLATTR=y 1084CONFIG_NLATTR=y
1085CONFIG_GENERIC_ATOMIC64=y
1067 1086
1068# 1087#
1069# Kernel hacking 1088# Kernel hacking
@@ -1073,6 +1092,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1073CONFIG_ENABLE_MUST_CHECK=y 1092CONFIG_ENABLE_MUST_CHECK=y
1074CONFIG_FRAME_WARN=1024 1093CONFIG_FRAME_WARN=1024
1075# CONFIG_MAGIC_SYSRQ is not set 1094# CONFIG_MAGIC_SYSRQ is not set
1095# CONFIG_STRIP_ASM_SYMS is not set
1076# CONFIG_UNUSED_SYMBOLS is not set 1096# CONFIG_UNUSED_SYMBOLS is not set
1077# CONFIG_DEBUG_FS is not set 1097# CONFIG_DEBUG_FS is not set
1078# CONFIG_HEADERS_CHECK is not set 1098# CONFIG_HEADERS_CHECK is not set
@@ -1090,10 +1110,14 @@ CONFIG_SCHED_DEBUG=y
1090# CONFIG_DEBUG_OBJECTS is not set 1110# CONFIG_DEBUG_OBJECTS is not set
1091# CONFIG_SLUB_DEBUG_ON is not set 1111# CONFIG_SLUB_DEBUG_ON is not set
1092# CONFIG_SLUB_STATS is not set 1112# CONFIG_SLUB_STATS is not set
1113# CONFIG_DEBUG_KMEMLEAK is not set
1093# CONFIG_DEBUG_RT_MUTEXES is not set 1114# CONFIG_DEBUG_RT_MUTEXES is not set
1094# CONFIG_RT_MUTEX_TESTER is not set 1115# CONFIG_RT_MUTEX_TESTER is not set
1095# CONFIG_DEBUG_SPINLOCK is not set 1116# CONFIG_DEBUG_SPINLOCK is not set
1096# CONFIG_DEBUG_MUTEXES is not set 1117# CONFIG_DEBUG_MUTEXES is not set
1118# CONFIG_DEBUG_LOCK_ALLOC is not set
1119# CONFIG_PROVE_LOCKING is not set
1120# CONFIG_LOCK_STAT is not set
1097# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1121# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1098# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1122# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1099# CONFIG_DEBUG_KOBJECT is not set 1123# CONFIG_DEBUG_KOBJECT is not set
@@ -1105,11 +1129,12 @@ CONFIG_SCHED_DEBUG=y
1105# CONFIG_DEBUG_LIST is not set 1129# CONFIG_DEBUG_LIST is not set
1106# CONFIG_DEBUG_SG is not set 1130# CONFIG_DEBUG_SG is not set
1107# CONFIG_DEBUG_NOTIFIERS is not set 1131# CONFIG_DEBUG_NOTIFIERS is not set
1108# CONFIG_BOOT_PRINTK_DELAY is not set 1132# CONFIG_DEBUG_CREDENTIALS is not set
1109# CONFIG_RCU_TORTURE_TEST is not set 1133# CONFIG_RCU_TORTURE_TEST is not set
1110# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1134# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1111# CONFIG_BACKTRACE_SELF_TEST is not set 1135# CONFIG_BACKTRACE_SELF_TEST is not set
1112# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1136# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1137# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1113# CONFIG_FAULT_INJECTION is not set 1138# CONFIG_FAULT_INJECTION is not set
1114# CONFIG_LATENCYTOP is not set 1139# CONFIG_LATENCYTOP is not set
1115# CONFIG_DEBUG_PAGEALLOC is not set 1140# CONFIG_DEBUG_PAGEALLOC is not set
@@ -1118,23 +1143,25 @@ CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1118CONFIG_HAVE_DYNAMIC_FTRACE=y 1143CONFIG_HAVE_DYNAMIC_FTRACE=y
1119CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1144CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1120CONFIG_TRACING_SUPPORT=y 1145CONFIG_TRACING_SUPPORT=y
1121 1146CONFIG_FTRACE=y
1122#
1123# Tracers
1124#
1125# CONFIG_FUNCTION_TRACER is not set 1147# CONFIG_FUNCTION_TRACER is not set
1148# CONFIG_IRQSOFF_TRACER is not set
1126# CONFIG_SCHED_TRACER is not set 1149# CONFIG_SCHED_TRACER is not set
1127# CONFIG_CONTEXT_SWITCH_TRACER is not set 1150# CONFIG_ENABLE_DEFAULT_TRACERS is not set
1128# CONFIG_EVENT_TRACER is not set
1129# CONFIG_BOOT_TRACER is not set 1151# CONFIG_BOOT_TRACER is not set
1130# CONFIG_TRACE_BRANCH_PROFILING is not set 1152CONFIG_BRANCH_PROFILE_NONE=y
1153# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1154# CONFIG_PROFILE_ALL_BRANCHES is not set
1131# CONFIG_STACK_TRACER is not set 1155# CONFIG_STACK_TRACER is not set
1132# CONFIG_KMEMTRACE is not set 1156# CONFIG_KMEMTRACE is not set
1133# CONFIG_WORKQUEUE_TRACER is not set 1157# CONFIG_WORKQUEUE_TRACER is not set
1134# CONFIG_BLK_DEV_IO_TRACE is not set 1158# CONFIG_BLK_DEV_IO_TRACE is not set
1159# CONFIG_DMA_API_DEBUG is not set
1135# CONFIG_SAMPLES is not set 1160# CONFIG_SAMPLES is not set
1136CONFIG_HAVE_ARCH_KGDB=y 1161CONFIG_HAVE_ARCH_KGDB=y
1137# CONFIG_KGDB is not set 1162# CONFIG_KGDB is not set
1163# CONFIG_PPC_DISABLE_WERROR is not set
1164CONFIG_PPC_WERROR=y
1138CONFIG_PRINT_STACK_DEPTH=64 1165CONFIG_PRINT_STACK_DEPTH=64
1139# CONFIG_DEBUG_STACKOVERFLOW is not set 1166# CONFIG_DEBUG_STACKOVERFLOW is not set
1140# CONFIG_DEBUG_STACK_USAGE is not set 1167# CONFIG_DEBUG_STACK_USAGE is not set
@@ -1159,7 +1186,6 @@ CONFIG_CRYPTO=y
1159# 1186#
1160# Crypto core or helper 1187# Crypto core or helper
1161# 1188#
1162# CONFIG_CRYPTO_FIPS is not set
1163CONFIG_CRYPTO_ALGAPI=y 1189CONFIG_CRYPTO_ALGAPI=y
1164CONFIG_CRYPTO_ALGAPI2=y 1190CONFIG_CRYPTO_ALGAPI2=y
1165CONFIG_CRYPTO_AEAD2=y 1191CONFIG_CRYPTO_AEAD2=y
@@ -1200,11 +1226,13 @@ CONFIG_CRYPTO_PCBC=y
1200# 1226#
1201# CONFIG_CRYPTO_HMAC is not set 1227# CONFIG_CRYPTO_HMAC is not set
1202# CONFIG_CRYPTO_XCBC is not set 1228# CONFIG_CRYPTO_XCBC is not set
1229# CONFIG_CRYPTO_VMAC is not set
1203 1230
1204# 1231#
1205# Digest 1232# Digest
1206# 1233#
1207# CONFIG_CRYPTO_CRC32C is not set 1234# CONFIG_CRYPTO_CRC32C is not set
1235# CONFIG_CRYPTO_GHASH is not set
1208# CONFIG_CRYPTO_MD4 is not set 1236# CONFIG_CRYPTO_MD4 is not set
1209CONFIG_CRYPTO_MD5=y 1237CONFIG_CRYPTO_MD5=y
1210# CONFIG_CRYPTO_MICHAEL_MIC is not set 1238# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/52xx/lite5200b_defconfig b/arch/powerpc/configs/52xx/lite5200b_defconfig
index 29b0f34488f5..f5c07fd72239 100644
--- a/arch/powerpc/configs/52xx/lite5200b_defconfig
+++ b/arch/powerpc/configs/52xx/lite5200b_defconfig
@@ -1,25 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.30-rc2 3# Linux kernel version: 2.6.32-rc4
4# Sat Apr 18 00:48:04 2009 4# Thu Oct 15 10:33:24 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
8# 8#
9# Processor support 9# Processor support
10# 10#
11CONFIG_6xx=y 11CONFIG_PPC_BOOK3S_32=y
12# CONFIG_PPC_85xx is not set 12# CONFIG_PPC_85xx is not set
13# CONFIG_PPC_8xx is not set 13# CONFIG_PPC_8xx is not set
14# CONFIG_40x is not set 14# CONFIG_40x is not set
15# CONFIG_44x is not set 15# CONFIG_44x is not set
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_PPC_BOOK3S=y 17CONFIG_PPC_BOOK3S=y
18CONFIG_6xx=y
18CONFIG_PPC_FPU=y 19CONFIG_PPC_FPU=y
19# CONFIG_ALTIVEC is not set 20# CONFIG_ALTIVEC is not set
20CONFIG_PPC_STD_MMU=y 21CONFIG_PPC_STD_MMU=y
21CONFIG_PPC_STD_MMU_32=y 22CONFIG_PPC_STD_MMU_32=y
22# CONFIG_PPC_MM_SLICES is not set 23# CONFIG_PPC_MM_SLICES is not set
24CONFIG_PPC_HAVE_PMU_SUPPORT=y
23# CONFIG_SMP is not set 25# CONFIG_SMP is not set
24CONFIG_PPC32=y 26CONFIG_PPC32=y
25CONFIG_WORD_SIZE=32 27CONFIG_WORD_SIZE=32
@@ -30,15 +32,17 @@ CONFIG_GENERIC_TIME=y
30CONFIG_GENERIC_TIME_VSYSCALL=y 32CONFIG_GENERIC_TIME_VSYSCALL=y
31CONFIG_GENERIC_CLOCKEVENTS=y 33CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
34CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y 39CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_HAVE_LATENCYTOP_SUPPORT=y 40CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y
37CONFIG_LOCKDEP_SUPPORT=y 42CONFIG_LOCKDEP_SUPPORT=y
38CONFIG_RWSEM_XCHGADD_ALGORITHM=y 43CONFIG_RWSEM_XCHGADD_ALGORITHM=y
39CONFIG_ARCH_HAS_ILOG2_U32=y 44CONFIG_ARCH_HAS_ILOG2_U32=y
40CONFIG_GENERIC_HWEIGHT=y 45CONFIG_GENERIC_HWEIGHT=y
41CONFIG_GENERIC_CALIBRATE_DELAY=y
42CONFIG_GENERIC_FIND_NEXT_BIT=y 46CONFIG_GENERIC_FIND_NEXT_BIT=y
43# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 47# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
44CONFIG_PPC=y 48CONFIG_PPC=y
@@ -52,12 +56,14 @@ CONFIG_OF=y
52# CONFIG_GENERIC_TBSYNC is not set 56# CONFIG_GENERIC_TBSYNC is not set
53CONFIG_AUDIT_ARCH=y 57CONFIG_AUDIT_ARCH=y
54CONFIG_GENERIC_BUG=y 58CONFIG_GENERIC_BUG=y
59CONFIG_DTC=y
55CONFIG_DEFAULT_UIMAGE=y 60CONFIG_DEFAULT_UIMAGE=y
56CONFIG_ARCH_SUSPEND_POSSIBLE=y 61CONFIG_ARCH_SUSPEND_POSSIBLE=y
57# CONFIG_PPC_DCR_NATIVE is not set 62# CONFIG_PPC_DCR_NATIVE is not set
58# CONFIG_PPC_DCR_MMIO is not set 63# CONFIG_PPC_DCR_MMIO is not set
59CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 64CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
60CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 65CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
66CONFIG_CONSTRUCTORS=y
61 67
62# 68#
63# General setup 69# General setup
@@ -78,11 +84,12 @@ CONFIG_SYSVIPC_SYSCTL=y
78# 84#
79# RCU Subsystem 85# RCU Subsystem
80# 86#
81CONFIG_CLASSIC_RCU=y 87CONFIG_TREE_RCU=y
82# CONFIG_TREE_RCU is not set 88# CONFIG_TREE_PREEMPT_RCU is not set
83# CONFIG_PREEMPT_RCU is not set 89# CONFIG_RCU_TRACE is not set
90CONFIG_RCU_FANOUT=32
91# CONFIG_RCU_FANOUT_EXACT is not set
84# CONFIG_TREE_RCU_TRACE is not set 92# CONFIG_TREE_RCU_TRACE is not set
85# CONFIG_PREEMPT_RCU_TRACE is not set
86# CONFIG_IKCONFIG is not set 93# CONFIG_IKCONFIG is not set
87CONFIG_LOG_BUF_SHIFT=14 94CONFIG_LOG_BUF_SHIFT=14
88CONFIG_GROUP_SCHED=y 95CONFIG_GROUP_SCHED=y
@@ -106,7 +113,6 @@ CONFIG_ANON_INODES=y
106CONFIG_EMBEDDED=y 113CONFIG_EMBEDDED=y
107# CONFIG_SYSCTL_SYSCALL is not set 114# CONFIG_SYSCTL_SYSCALL is not set
108# CONFIG_KALLSYMS is not set 115# CONFIG_KALLSYMS is not set
109# CONFIG_STRIP_ASM_SYMS is not set
110CONFIG_HOTPLUG=y 116CONFIG_HOTPLUG=y
111CONFIG_PRINTK=y 117CONFIG_PRINTK=y
112CONFIG_BUG=y 118CONFIG_BUG=y
@@ -119,6 +125,13 @@ CONFIG_TIMERFD=y
119CONFIG_EVENTFD=y 125CONFIG_EVENTFD=y
120CONFIG_SHMEM=y 126CONFIG_SHMEM=y
121CONFIG_AIO=y 127CONFIG_AIO=y
128CONFIG_HAVE_PERF_EVENTS=y
129
130#
131# Kernel Performance Events And Counters
132#
133# CONFIG_PERF_EVENTS is not set
134# CONFIG_PERF_COUNTERS is not set
122CONFIG_VM_EVENT_COUNTERS=y 135CONFIG_VM_EVENT_COUNTERS=y
123CONFIG_PCI_QUIRKS=y 136CONFIG_PCI_QUIRKS=y
124CONFIG_SLUB_DEBUG=y 137CONFIG_SLUB_DEBUG=y
@@ -127,14 +140,19 @@ CONFIG_COMPAT_BRK=y
127CONFIG_SLUB=y 140CONFIG_SLUB=y
128# CONFIG_SLOB is not set 141# CONFIG_SLOB is not set
129# CONFIG_PROFILING is not set 142# CONFIG_PROFILING is not set
130# CONFIG_MARKERS is not set
131CONFIG_HAVE_OPROFILE=y 143CONFIG_HAVE_OPROFILE=y
132CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
133CONFIG_HAVE_IOREMAP_PROT=y 145CONFIG_HAVE_IOREMAP_PROT=y
134CONFIG_HAVE_KPROBES=y 146CONFIG_HAVE_KPROBES=y
135CONFIG_HAVE_KRETPROBES=y 147CONFIG_HAVE_KRETPROBES=y
136CONFIG_HAVE_ARCH_TRACEHOOK=y 148CONFIG_HAVE_ARCH_TRACEHOOK=y
149CONFIG_HAVE_DMA_ATTRS=y
137CONFIG_HAVE_CLK=y 150CONFIG_HAVE_CLK=y
151CONFIG_HAVE_DMA_API_DEBUG=y
152
153#
154# GCOV-based kernel profiling
155#
138# CONFIG_SLOW_WORK is not set 156# CONFIG_SLOW_WORK is not set
139# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 157# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
140CONFIG_SLABINFO=y 158CONFIG_SLABINFO=y
@@ -147,7 +165,7 @@ CONFIG_MODULE_UNLOAD=y
147# CONFIG_MODVERSIONS is not set 165# CONFIG_MODVERSIONS is not set
148# CONFIG_MODULE_SRCVERSION_ALL is not set 166# CONFIG_MODULE_SRCVERSION_ALL is not set
149CONFIG_BLOCK=y 167CONFIG_BLOCK=y
150# CONFIG_LBD is not set 168CONFIG_LBDAF=y
151# CONFIG_BLK_DEV_BSG is not set 169# CONFIG_BLK_DEV_BSG is not set
152# CONFIG_BLK_DEV_INTEGRITY is not set 170# CONFIG_BLK_DEV_INTEGRITY is not set
153 171
@@ -228,11 +246,13 @@ CONFIG_BINFMT_ELF=y
228# CONFIG_HAVE_AOUT is not set 246# CONFIG_HAVE_AOUT is not set
229# CONFIG_BINFMT_MISC is not set 247# CONFIG_BINFMT_MISC is not set
230# CONFIG_IOMMU_HELPER is not set 248# CONFIG_IOMMU_HELPER is not set
249# CONFIG_SWIOTLB is not set
231CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 250CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
232CONFIG_ARCH_HAS_WALK_MEMORY=y 251CONFIG_ARCH_HAS_WALK_MEMORY=y
233CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 252CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
234# CONFIG_KEXEC is not set 253# CONFIG_KEXEC is not set
235# CONFIG_CRASH_DUMP is not set 254# CONFIG_CRASH_DUMP is not set
255CONFIG_MAX_ACTIVE_REGIONS=32
236CONFIG_ARCH_FLATMEM_ENABLE=y 256CONFIG_ARCH_FLATMEM_ENABLE=y
237CONFIG_ARCH_POPULATES_NODE_MAP=y 257CONFIG_ARCH_POPULATES_NODE_MAP=y
238CONFIG_SELECT_MEMORY_MODEL=y 258CONFIG_SELECT_MEMORY_MODEL=y
@@ -248,9 +268,10 @@ CONFIG_MIGRATION=y
248CONFIG_ZONE_DMA_FLAG=1 268CONFIG_ZONE_DMA_FLAG=1
249CONFIG_BOUNCE=y 269CONFIG_BOUNCE=y
250CONFIG_VIRT_TO_BUS=y 270CONFIG_VIRT_TO_BUS=y
251CONFIG_UNEVICTABLE_LRU=y
252CONFIG_HAVE_MLOCK=y 271CONFIG_HAVE_MLOCK=y
253CONFIG_HAVE_MLOCKED_PAGE_BIT=y 272CONFIG_HAVE_MLOCKED_PAGE_BIT=y
273# CONFIG_KSM is not set
274CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
254CONFIG_PPC_4K_PAGES=y 275CONFIG_PPC_4K_PAGES=y
255# CONFIG_PPC_16K_PAGES is not set 276# CONFIG_PPC_16K_PAGES is not set
256# CONFIG_PPC_64K_PAGES is not set 277# CONFIG_PPC_64K_PAGES is not set
@@ -264,6 +285,7 @@ CONFIG_PM=y
264CONFIG_PM_SLEEP=y 285CONFIG_PM_SLEEP=y
265CONFIG_SUSPEND=y 286CONFIG_SUSPEND=y
266CONFIG_SUSPEND_FREEZER=y 287CONFIG_SUSPEND_FREEZER=y
288# CONFIG_PM_RUNTIME is not set
267CONFIG_SECCOMP=y 289CONFIG_SECCOMP=y
268CONFIG_ISA_DMA_API=y 290CONFIG_ISA_DMA_API=y
269 291
@@ -348,6 +370,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
348# CONFIG_NETFILTER is not set 370# CONFIG_NETFILTER is not set
349# CONFIG_IP_DCCP is not set 371# CONFIG_IP_DCCP is not set
350# CONFIG_IP_SCTP is not set 372# CONFIG_IP_SCTP is not set
373# CONFIG_RDS is not set
351# CONFIG_TIPC is not set 374# CONFIG_TIPC is not set
352# CONFIG_ATM is not set 375# CONFIG_ATM is not set
353# CONFIG_BRIDGE is not set 376# CONFIG_BRIDGE is not set
@@ -362,6 +385,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
362# CONFIG_ECONET is not set 385# CONFIG_ECONET is not set
363# CONFIG_WAN_ROUTER is not set 386# CONFIG_WAN_ROUTER is not set
364# CONFIG_PHONET is not set 387# CONFIG_PHONET is not set
388# CONFIG_IEEE802154 is not set
365# CONFIG_NET_SCHED is not set 389# CONFIG_NET_SCHED is not set
366# CONFIG_DCB is not set 390# CONFIG_DCB is not set
367 391
@@ -387,6 +411,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
387# Generic Driver Options 411# Generic Driver Options
388# 412#
389CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 413CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
414# CONFIG_DEVTMPFS is not set
390CONFIG_STANDALONE=y 415CONFIG_STANDALONE=y
391CONFIG_PREVENT_FIRMWARE_BUILD=y 416CONFIG_PREVENT_FIRMWARE_BUILD=y
392# CONFIG_FW_LOADER is not set 417# CONFIG_FW_LOADER is not set
@@ -397,6 +422,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
397# CONFIG_MTD is not set 422# CONFIG_MTD is not set
398CONFIG_OF_DEVICE=y 423CONFIG_OF_DEVICE=y
399CONFIG_OF_I2C=y 424CONFIG_OF_I2C=y
425CONFIG_OF_MDIO=y
400# CONFIG_PARPORT is not set 426# CONFIG_PARPORT is not set
401CONFIG_BLK_DEV=y 427CONFIG_BLK_DEV=y
402# CONFIG_BLK_DEV_FD is not set 428# CONFIG_BLK_DEV_FD is not set
@@ -431,7 +457,9 @@ CONFIG_MISC_DEVICES=y
431# 457#
432# CONFIG_EEPROM_AT24 is not set 458# CONFIG_EEPROM_AT24 is not set
433# CONFIG_EEPROM_LEGACY is not set 459# CONFIG_EEPROM_LEGACY is not set
460# CONFIG_EEPROM_MAX6875 is not set
434# CONFIG_EEPROM_93CX6 is not set 461# CONFIG_EEPROM_93CX6 is not set
462# CONFIG_CB710_CORE is not set
435CONFIG_HAVE_IDE=y 463CONFIG_HAVE_IDE=y
436# CONFIG_IDE is not set 464# CONFIG_IDE is not set
437 465
@@ -454,10 +482,6 @@ CONFIG_BLK_DEV_SD=y
454# CONFIG_BLK_DEV_SR is not set 482# CONFIG_BLK_DEV_SR is not set
455# CONFIG_CHR_DEV_SG is not set 483# CONFIG_CHR_DEV_SG is not set
456# CONFIG_CHR_DEV_SCH is not set 484# CONFIG_CHR_DEV_SCH is not set
457
458#
459# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
460#
461# CONFIG_SCSI_MULTI_LUN is not set 485# CONFIG_SCSI_MULTI_LUN is not set
462# CONFIG_SCSI_CONSTANTS is not set 486# CONFIG_SCSI_CONSTANTS is not set
463# CONFIG_SCSI_LOGGING is not set 487# CONFIG_SCSI_LOGGING is not set
@@ -475,6 +499,8 @@ CONFIG_SCSI_WAIT_SCAN=m
475CONFIG_SCSI_LOWLEVEL=y 499CONFIG_SCSI_LOWLEVEL=y
476# CONFIG_ISCSI_TCP is not set 500# CONFIG_ISCSI_TCP is not set
477# CONFIG_SCSI_CXGB3_ISCSI is not set 501# CONFIG_SCSI_CXGB3_ISCSI is not set
502# CONFIG_SCSI_BNX2_ISCSI is not set
503# CONFIG_BE2ISCSI is not set
478# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 504# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
479# CONFIG_SCSI_3W_9XXX is not set 505# CONFIG_SCSI_3W_9XXX is not set
480# CONFIG_SCSI_ACARD is not set 506# CONFIG_SCSI_ACARD is not set
@@ -483,6 +509,7 @@ CONFIG_SCSI_LOWLEVEL=y
483# CONFIG_SCSI_AIC7XXX_OLD is not set 509# CONFIG_SCSI_AIC7XXX_OLD is not set
484# CONFIG_SCSI_AIC79XX is not set 510# CONFIG_SCSI_AIC79XX is not set
485# CONFIG_SCSI_AIC94XX is not set 511# CONFIG_SCSI_AIC94XX is not set
512# CONFIG_SCSI_MVSAS is not set
486# CONFIG_SCSI_DPT_I2O is not set 513# CONFIG_SCSI_DPT_I2O is not set
487# CONFIG_SCSI_ADVANSYS is not set 514# CONFIG_SCSI_ADVANSYS is not set
488# CONFIG_SCSI_ARCMSR is not set 515# CONFIG_SCSI_ARCMSR is not set
@@ -502,7 +529,6 @@ CONFIG_SCSI_LOWLEVEL=y
502# CONFIG_SCSI_IPS is not set 529# CONFIG_SCSI_IPS is not set
503# CONFIG_SCSI_INITIO is not set 530# CONFIG_SCSI_INITIO is not set
504# CONFIG_SCSI_INIA100 is not set 531# CONFIG_SCSI_INIA100 is not set
505# CONFIG_SCSI_MVSAS is not set
506# CONFIG_SCSI_STEX is not set 532# CONFIG_SCSI_STEX is not set
507# CONFIG_SCSI_SYM53C8XX_2 is not set 533# CONFIG_SCSI_SYM53C8XX_2 is not set
508# CONFIG_SCSI_IPR is not set 534# CONFIG_SCSI_IPR is not set
@@ -514,11 +540,14 @@ CONFIG_SCSI_LOWLEVEL=y
514# CONFIG_SCSI_DC390T is not set 540# CONFIG_SCSI_DC390T is not set
515# CONFIG_SCSI_NSP32 is not set 541# CONFIG_SCSI_NSP32 is not set
516# CONFIG_SCSI_DEBUG is not set 542# CONFIG_SCSI_DEBUG is not set
543# CONFIG_SCSI_PMCRAID is not set
517# CONFIG_SCSI_SRP is not set 544# CONFIG_SCSI_SRP is not set
545# CONFIG_SCSI_BFA_FC is not set
518# CONFIG_SCSI_DH is not set 546# CONFIG_SCSI_DH is not set
519# CONFIG_SCSI_OSD_INITIATOR is not set 547# CONFIG_SCSI_OSD_INITIATOR is not set
520CONFIG_ATA=y 548CONFIG_ATA=y
521# CONFIG_ATA_NONSTANDARD is not set 549# CONFIG_ATA_NONSTANDARD is not set
550CONFIG_ATA_VERBOSE_ERROR=y
522CONFIG_SATA_PMP=y 551CONFIG_SATA_PMP=y
523# CONFIG_SATA_AHCI is not set 552# CONFIG_SATA_AHCI is not set
524# CONFIG_SATA_SIL24 is not set 553# CONFIG_SATA_SIL24 is not set
@@ -540,6 +569,7 @@ CONFIG_ATA_SFF=y
540# CONFIG_PATA_ALI is not set 569# CONFIG_PATA_ALI is not set
541# CONFIG_PATA_AMD is not set 570# CONFIG_PATA_AMD is not set
542# CONFIG_PATA_ARTOP is not set 571# CONFIG_PATA_ARTOP is not set
572# CONFIG_PATA_ATP867X is not set
543# CONFIG_PATA_ATIIXP is not set 573# CONFIG_PATA_ATIIXP is not set
544# CONFIG_PATA_CMD640_PCI is not set 574# CONFIG_PATA_CMD640_PCI is not set
545# CONFIG_PATA_CMD64X is not set 575# CONFIG_PATA_CMD64X is not set
@@ -568,6 +598,7 @@ CONFIG_PATA_MPC52xx=y
568# CONFIG_PATA_OPTIDMA is not set 598# CONFIG_PATA_OPTIDMA is not set
569# CONFIG_PATA_PDC_OLD is not set 599# CONFIG_PATA_PDC_OLD is not set
570# CONFIG_PATA_RADISYS is not set 600# CONFIG_PATA_RADISYS is not set
601# CONFIG_PATA_RDC is not set
571# CONFIG_PATA_RZ1000 is not set 602# CONFIG_PATA_RZ1000 is not set
572# CONFIG_PATA_SC1200 is not set 603# CONFIG_PATA_SC1200 is not set
573# CONFIG_PATA_SERVERWORKS is not set 604# CONFIG_PATA_SERVERWORKS is not set
@@ -586,14 +617,17 @@ CONFIG_PATA_MPC52xx=y
586# 617#
587 618
588# 619#
589# Enable only one of the two stacks, unless you know what you are doing 620# You can enable one or both FireWire driver stacks.
621#
622
623#
624# See the help texts for more information.
590# 625#
591# CONFIG_FIREWIRE is not set 626# CONFIG_FIREWIRE is not set
592# CONFIG_IEEE1394 is not set 627# CONFIG_IEEE1394 is not set
593# CONFIG_I2O is not set 628# CONFIG_I2O is not set
594# CONFIG_MACINTOSH_DRIVERS is not set 629# CONFIG_MACINTOSH_DRIVERS is not set
595CONFIG_NETDEVICES=y 630CONFIG_NETDEVICES=y
596CONFIG_COMPAT_NET_DEV_OPS=y
597# CONFIG_DUMMY is not set 631# CONFIG_DUMMY is not set
598# CONFIG_BONDING is not set 632# CONFIG_BONDING is not set
599# CONFIG_MACVLAN is not set 633# CONFIG_MACVLAN is not set
@@ -640,9 +674,12 @@ CONFIG_NET_ETHERNET=y
640# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 674# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
641# CONFIG_NET_PCI is not set 675# CONFIG_NET_PCI is not set
642# CONFIG_B44 is not set 676# CONFIG_B44 is not set
677# CONFIG_KS8842 is not set
678# CONFIG_KS8851_MLL is not set
643CONFIG_FEC_MPC52xx=y 679CONFIG_FEC_MPC52xx=y
644CONFIG_FEC_MPC52xx_MDIO=y 680CONFIG_FEC_MPC52xx_MDIO=y
645# CONFIG_ATL2 is not set 681# CONFIG_ATL2 is not set
682# CONFIG_XILINX_EMACLITE is not set
646CONFIG_NETDEV_1000=y 683CONFIG_NETDEV_1000=y
647# CONFIG_ACENIC is not set 684# CONFIG_ACENIC is not set
648# CONFIG_DL2K is not set 685# CONFIG_DL2K is not set
@@ -661,6 +698,8 @@ CONFIG_NETDEV_1000=y
661# CONFIG_VIA_VELOCITY is not set 698# CONFIG_VIA_VELOCITY is not set
662# CONFIG_TIGON3 is not set 699# CONFIG_TIGON3 is not set
663# CONFIG_BNX2 is not set 700# CONFIG_BNX2 is not set
701# CONFIG_CNIC is not set
702# CONFIG_MV643XX_ETH is not set
664# CONFIG_QLA3XXX is not set 703# CONFIG_QLA3XXX is not set
665# CONFIG_ATL1 is not set 704# CONFIG_ATL1 is not set
666# CONFIG_ATL1E is not set 705# CONFIG_ATL1E is not set
@@ -686,10 +725,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
686# CONFIG_SFC is not set 725# CONFIG_SFC is not set
687# CONFIG_BE2NET is not set 726# CONFIG_BE2NET is not set
688# CONFIG_TR is not set 727# CONFIG_TR is not set
689 728CONFIG_WLAN=y
690#
691# Wireless LAN
692#
693# CONFIG_WLAN_PRE80211 is not set 729# CONFIG_WLAN_PRE80211 is not set
694# CONFIG_WLAN_80211 is not set 730# CONFIG_WLAN_80211 is not set
695 731
@@ -759,6 +795,7 @@ CONFIG_GEN_RTC=y
759CONFIG_DEVPORT=y 795CONFIG_DEVPORT=y
760CONFIG_I2C=y 796CONFIG_I2C=y
761CONFIG_I2C_BOARDINFO=y 797CONFIG_I2C_BOARDINFO=y
798CONFIG_I2C_COMPAT=y
762CONFIG_I2C_CHARDEV=y 799CONFIG_I2C_CHARDEV=y
763CONFIG_I2C_HELPER_AUTO=y 800CONFIG_I2C_HELPER_AUTO=y
764 801
@@ -787,6 +824,7 @@ CONFIG_I2C_HELPER_AUTO=y
787# 824#
788# I2C system bus drivers (mostly embedded / system-on-chip) 825# I2C system bus drivers (mostly embedded / system-on-chip)
789# 826#
827# CONFIG_I2C_DESIGNWARE is not set
790CONFIG_I2C_MPC=y 828CONFIG_I2C_MPC=y
791# CONFIG_I2C_OCORES is not set 829# CONFIG_I2C_OCORES is not set
792# CONFIG_I2C_SIMTEC is not set 830# CONFIG_I2C_SIMTEC is not set
@@ -812,23 +850,23 @@ CONFIG_I2C_MPC=y
812# Miscellaneous I2C Chip support 850# Miscellaneous I2C Chip support
813# 851#
814# CONFIG_DS1682 is not set 852# CONFIG_DS1682 is not set
815# CONFIG_SENSORS_PCF8574 is not set
816# CONFIG_PCF8575 is not set
817# CONFIG_SENSORS_PCA9539 is not set
818# CONFIG_SENSORS_MAX6875 is not set
819# CONFIG_SENSORS_TSL2550 is not set 853# CONFIG_SENSORS_TSL2550 is not set
820# CONFIG_I2C_DEBUG_CORE is not set 854# CONFIG_I2C_DEBUG_CORE is not set
821# CONFIG_I2C_DEBUG_ALGO is not set 855# CONFIG_I2C_DEBUG_ALGO is not set
822# CONFIG_I2C_DEBUG_BUS is not set 856# CONFIG_I2C_DEBUG_BUS is not set
823# CONFIG_I2C_DEBUG_CHIP is not set 857# CONFIG_I2C_DEBUG_CHIP is not set
824# CONFIG_SPI is not set 858# CONFIG_SPI is not set
859
860#
861# PPS support
862#
863# CONFIG_PPS is not set
825CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 864CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
826# CONFIG_GPIOLIB is not set 865# CONFIG_GPIOLIB is not set
827# CONFIG_W1 is not set 866# CONFIG_W1 is not set
828# CONFIG_POWER_SUPPLY is not set 867# CONFIG_POWER_SUPPLY is not set
829# CONFIG_HWMON is not set 868# CONFIG_HWMON is not set
830# CONFIG_THERMAL is not set 869# CONFIG_THERMAL is not set
831# CONFIG_THERMAL_HWMON is not set
832# CONFIG_WATCHDOG is not set 870# CONFIG_WATCHDOG is not set
833CONFIG_SSB_POSSIBLE=y 871CONFIG_SSB_POSSIBLE=y
834 872
@@ -847,30 +885,18 @@ CONFIG_SSB_POSSIBLE=y
847# CONFIG_MFD_TMIO is not set 885# CONFIG_MFD_TMIO is not set
848# CONFIG_PMIC_DA903X is not set 886# CONFIG_PMIC_DA903X is not set
849# CONFIG_MFD_WM8400 is not set 887# CONFIG_MFD_WM8400 is not set
888# CONFIG_MFD_WM831X is not set
850# CONFIG_MFD_WM8350_I2C is not set 889# CONFIG_MFD_WM8350_I2C is not set
851# CONFIG_MFD_PCF50633 is not set 890# CONFIG_MFD_PCF50633 is not set
891# CONFIG_AB3100_CORE is not set
852# CONFIG_REGULATOR is not set 892# CONFIG_REGULATOR is not set
853 893# CONFIG_MEDIA_SUPPORT is not set
854#
855# Multimedia devices
856#
857
858#
859# Multimedia core support
860#
861# CONFIG_VIDEO_DEV is not set
862# CONFIG_DVB_CORE is not set
863# CONFIG_VIDEO_MEDIA is not set
864
865#
866# Multimedia drivers
867#
868# CONFIG_DAB is not set
869 894
870# 895#
871# Graphics support 896# Graphics support
872# 897#
873# CONFIG_AGP is not set 898# CONFIG_AGP is not set
899CONFIG_VGA_ARB=y
874# CONFIG_DRM is not set 900# CONFIG_DRM is not set
875# CONFIG_VGASTATE is not set 901# CONFIG_VGASTATE is not set
876CONFIG_VIDEO_OUTPUT_CONTROL=m 902CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -913,6 +939,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
913# CONFIG_DMADEVICES is not set 939# CONFIG_DMADEVICES is not set
914# CONFIG_AUXDISPLAY is not set 940# CONFIG_AUXDISPLAY is not set
915# CONFIG_UIO is not set 941# CONFIG_UIO is not set
942
943#
944# TI VLYNQ
945#
916# CONFIG_STAGING is not set 946# CONFIG_STAGING is not set
917 947
918# 948#
@@ -932,10 +962,13 @@ CONFIG_FS_MBCACHE=y
932# CONFIG_REISERFS_FS is not set 962# CONFIG_REISERFS_FS is not set
933# CONFIG_JFS_FS is not set 963# CONFIG_JFS_FS is not set
934# CONFIG_FS_POSIX_ACL is not set 964# CONFIG_FS_POSIX_ACL is not set
935CONFIG_FILE_LOCKING=y
936# CONFIG_XFS_FS is not set 965# CONFIG_XFS_FS is not set
966# CONFIG_GFS2_FS is not set
937# CONFIG_OCFS2_FS is not set 967# CONFIG_OCFS2_FS is not set
938# CONFIG_BTRFS_FS is not set 968# CONFIG_BTRFS_FS is not set
969# CONFIG_NILFS2_FS is not set
970CONFIG_FILE_LOCKING=y
971CONFIG_FSNOTIFY=y
939CONFIG_DNOTIFY=y 972CONFIG_DNOTIFY=y
940CONFIG_INOTIFY=y 973CONFIG_INOTIFY=y
941CONFIG_INOTIFY_USER=y 974CONFIG_INOTIFY_USER=y
@@ -992,12 +1025,12 @@ CONFIG_MISC_FILESYSTEMS=y
992# CONFIG_ROMFS_FS is not set 1025# CONFIG_ROMFS_FS is not set
993# CONFIG_SYSV_FS is not set 1026# CONFIG_SYSV_FS is not set
994# CONFIG_UFS_FS is not set 1027# CONFIG_UFS_FS is not set
995# CONFIG_NILFS2_FS is not set
996CONFIG_NETWORK_FILESYSTEMS=y 1028CONFIG_NETWORK_FILESYSTEMS=y
997CONFIG_NFS_FS=y 1029CONFIG_NFS_FS=y
998CONFIG_NFS_V3=y 1030CONFIG_NFS_V3=y
999# CONFIG_NFS_V3_ACL is not set 1031# CONFIG_NFS_V3_ACL is not set
1000CONFIG_NFS_V4=y 1032CONFIG_NFS_V4=y
1033# CONFIG_NFS_V4_1 is not set
1001CONFIG_ROOT_NFS=y 1034CONFIG_ROOT_NFS=y
1002# CONFIG_NFSD is not set 1035# CONFIG_NFSD is not set
1003CONFIG_LOCKD=y 1036CONFIG_LOCKD=y
@@ -1041,6 +1074,7 @@ CONFIG_HAS_IOPORT=y
1041CONFIG_HAS_DMA=y 1074CONFIG_HAS_DMA=y
1042CONFIG_HAVE_LMB=y 1075CONFIG_HAVE_LMB=y
1043CONFIG_NLATTR=y 1076CONFIG_NLATTR=y
1077CONFIG_GENERIC_ATOMIC64=y
1044 1078
1045# 1079#
1046# Kernel hacking 1080# Kernel hacking
@@ -1050,6 +1084,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1050CONFIG_ENABLE_MUST_CHECK=y 1084CONFIG_ENABLE_MUST_CHECK=y
1051CONFIG_FRAME_WARN=1024 1085CONFIG_FRAME_WARN=1024
1052# CONFIG_MAGIC_SYSRQ is not set 1086# CONFIG_MAGIC_SYSRQ is not set
1087# CONFIG_STRIP_ASM_SYMS is not set
1053# CONFIG_UNUSED_SYMBOLS is not set 1088# CONFIG_UNUSED_SYMBOLS is not set
1054# CONFIG_DEBUG_FS is not set 1089# CONFIG_DEBUG_FS is not set
1055# CONFIG_HEADERS_CHECK is not set 1090# CONFIG_HEADERS_CHECK is not set
@@ -1067,10 +1102,14 @@ CONFIG_SCHED_DEBUG=y
1067# CONFIG_DEBUG_OBJECTS is not set 1102# CONFIG_DEBUG_OBJECTS is not set
1068# CONFIG_SLUB_DEBUG_ON is not set 1103# CONFIG_SLUB_DEBUG_ON is not set
1069# CONFIG_SLUB_STATS is not set 1104# CONFIG_SLUB_STATS is not set
1105# CONFIG_DEBUG_KMEMLEAK is not set
1070# CONFIG_DEBUG_RT_MUTEXES is not set 1106# CONFIG_DEBUG_RT_MUTEXES is not set
1071# CONFIG_RT_MUTEX_TESTER is not set 1107# CONFIG_RT_MUTEX_TESTER is not set
1072# CONFIG_DEBUG_SPINLOCK is not set 1108# CONFIG_DEBUG_SPINLOCK is not set
1073# CONFIG_DEBUG_MUTEXES is not set 1109# CONFIG_DEBUG_MUTEXES is not set
1110# CONFIG_DEBUG_LOCK_ALLOC is not set
1111# CONFIG_PROVE_LOCKING is not set
1112# CONFIG_LOCK_STAT is not set
1074# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1113# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1075# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1114# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1076# CONFIG_DEBUG_KOBJECT is not set 1115# CONFIG_DEBUG_KOBJECT is not set
@@ -1082,11 +1121,12 @@ CONFIG_DEBUG_INFO=y
1082# CONFIG_DEBUG_LIST is not set 1121# CONFIG_DEBUG_LIST is not set
1083# CONFIG_DEBUG_SG is not set 1122# CONFIG_DEBUG_SG is not set
1084# CONFIG_DEBUG_NOTIFIERS is not set 1123# CONFIG_DEBUG_NOTIFIERS is not set
1085# CONFIG_BOOT_PRINTK_DELAY is not set 1124# CONFIG_DEBUG_CREDENTIALS is not set
1086# CONFIG_RCU_TORTURE_TEST is not set 1125# CONFIG_RCU_TORTURE_TEST is not set
1087# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1126# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1088# CONFIG_BACKTRACE_SELF_TEST is not set 1127# CONFIG_BACKTRACE_SELF_TEST is not set
1089# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1128# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1129# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1090# CONFIG_FAULT_INJECTION is not set 1130# CONFIG_FAULT_INJECTION is not set
1091# CONFIG_LATENCYTOP is not set 1131# CONFIG_LATENCYTOP is not set
1092# CONFIG_DEBUG_PAGEALLOC is not set 1132# CONFIG_DEBUG_PAGEALLOC is not set
@@ -1095,23 +1135,25 @@ CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1095CONFIG_HAVE_DYNAMIC_FTRACE=y 1135CONFIG_HAVE_DYNAMIC_FTRACE=y
1096CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1136CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1097CONFIG_TRACING_SUPPORT=y 1137CONFIG_TRACING_SUPPORT=y
1098 1138CONFIG_FTRACE=y
1099#
1100# Tracers
1101#
1102# CONFIG_FUNCTION_TRACER is not set 1139# CONFIG_FUNCTION_TRACER is not set
1140# CONFIG_IRQSOFF_TRACER is not set
1103# CONFIG_SCHED_TRACER is not set 1141# CONFIG_SCHED_TRACER is not set
1104# CONFIG_CONTEXT_SWITCH_TRACER is not set 1142# CONFIG_ENABLE_DEFAULT_TRACERS is not set
1105# CONFIG_EVENT_TRACER is not set
1106# CONFIG_BOOT_TRACER is not set 1143# CONFIG_BOOT_TRACER is not set
1107# CONFIG_TRACE_BRANCH_PROFILING is not set 1144CONFIG_BRANCH_PROFILE_NONE=y
1145# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1146# CONFIG_PROFILE_ALL_BRANCHES is not set
1108# CONFIG_STACK_TRACER is not set 1147# CONFIG_STACK_TRACER is not set
1109# CONFIG_KMEMTRACE is not set 1148# CONFIG_KMEMTRACE is not set
1110# CONFIG_WORKQUEUE_TRACER is not set 1149# CONFIG_WORKQUEUE_TRACER is not set
1111# CONFIG_BLK_DEV_IO_TRACE is not set 1150# CONFIG_BLK_DEV_IO_TRACE is not set
1151# CONFIG_DMA_API_DEBUG is not set
1112# CONFIG_SAMPLES is not set 1152# CONFIG_SAMPLES is not set
1113CONFIG_HAVE_ARCH_KGDB=y 1153CONFIG_HAVE_ARCH_KGDB=y
1114# CONFIG_KGDB is not set 1154# CONFIG_KGDB is not set
1155# CONFIG_PPC_DISABLE_WERROR is not set
1156CONFIG_PPC_WERROR=y
1115CONFIG_PRINT_STACK_DEPTH=64 1157CONFIG_PRINT_STACK_DEPTH=64
1116# CONFIG_DEBUG_STACKOVERFLOW is not set 1158# CONFIG_DEBUG_STACKOVERFLOW is not set
1117# CONFIG_DEBUG_STACK_USAGE is not set 1159# CONFIG_DEBUG_STACK_USAGE is not set
@@ -1136,7 +1178,6 @@ CONFIG_CRYPTO=y
1136# 1178#
1137# Crypto core or helper 1179# Crypto core or helper
1138# 1180#
1139# CONFIG_CRYPTO_FIPS is not set
1140CONFIG_CRYPTO_ALGAPI=y 1181CONFIG_CRYPTO_ALGAPI=y
1141CONFIG_CRYPTO_ALGAPI2=y 1182CONFIG_CRYPTO_ALGAPI2=y
1142CONFIG_CRYPTO_AEAD2=y 1183CONFIG_CRYPTO_AEAD2=y
@@ -1178,11 +1219,13 @@ CONFIG_CRYPTO_CBC=y
1178# 1219#
1179# CONFIG_CRYPTO_HMAC is not set 1220# CONFIG_CRYPTO_HMAC is not set
1180# CONFIG_CRYPTO_XCBC is not set 1221# CONFIG_CRYPTO_XCBC is not set
1222# CONFIG_CRYPTO_VMAC is not set
1181 1223
1182# 1224#
1183# Digest 1225# Digest
1184# 1226#
1185# CONFIG_CRYPTO_CRC32C is not set 1227# CONFIG_CRYPTO_CRC32C is not set
1228# CONFIG_CRYPTO_GHASH is not set
1186# CONFIG_CRYPTO_MD4 is not set 1229# CONFIG_CRYPTO_MD4 is not set
1187CONFIG_CRYPTO_MD5=y 1230CONFIG_CRYPTO_MD5=y
1188# CONFIG_CRYPTO_MICHAEL_MIC is not set 1231# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/52xx/motionpro_defconfig b/arch/powerpc/configs/52xx/motionpro_defconfig
index 07b6b266ea95..4f77a1bdc8f9 100644
--- a/arch/powerpc/configs/52xx/motionpro_defconfig
+++ b/arch/powerpc/configs/52xx/motionpro_defconfig
@@ -1,25 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.30-rc2 3# Linux kernel version: 2.6.32-rc4
4# Sat Apr 18 00:48:22 2009 4# Thu Oct 15 10:33:22 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
8# 8#
9# Processor support 9# Processor support
10# 10#
11CONFIG_6xx=y 11CONFIG_PPC_BOOK3S_32=y
12# CONFIG_PPC_85xx is not set 12# CONFIG_PPC_85xx is not set
13# CONFIG_PPC_8xx is not set 13# CONFIG_PPC_8xx is not set
14# CONFIG_40x is not set 14# CONFIG_40x is not set
15# CONFIG_44x is not set 15# CONFIG_44x is not set
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_PPC_BOOK3S=y 17CONFIG_PPC_BOOK3S=y
18CONFIG_6xx=y
18CONFIG_PPC_FPU=y 19CONFIG_PPC_FPU=y
19# CONFIG_ALTIVEC is not set 20# CONFIG_ALTIVEC is not set
20CONFIG_PPC_STD_MMU=y 21CONFIG_PPC_STD_MMU=y
21CONFIG_PPC_STD_MMU_32=y 22CONFIG_PPC_STD_MMU_32=y
22# CONFIG_PPC_MM_SLICES is not set 23# CONFIG_PPC_MM_SLICES is not set
24CONFIG_PPC_HAVE_PMU_SUPPORT=y
23# CONFIG_SMP is not set 25# CONFIG_SMP is not set
24CONFIG_PPC32=y 26CONFIG_PPC32=y
25CONFIG_WORD_SIZE=32 27CONFIG_WORD_SIZE=32
@@ -30,15 +32,17 @@ CONFIG_GENERIC_TIME=y
30CONFIG_GENERIC_TIME_VSYSCALL=y 32CONFIG_GENERIC_TIME_VSYSCALL=y
31CONFIG_GENERIC_CLOCKEVENTS=y 33CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
34CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y 39CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_HAVE_LATENCYTOP_SUPPORT=y 40CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y
37CONFIG_LOCKDEP_SUPPORT=y 42CONFIG_LOCKDEP_SUPPORT=y
38CONFIG_RWSEM_XCHGADD_ALGORITHM=y 43CONFIG_RWSEM_XCHGADD_ALGORITHM=y
39CONFIG_ARCH_HAS_ILOG2_U32=y 44CONFIG_ARCH_HAS_ILOG2_U32=y
40CONFIG_GENERIC_HWEIGHT=y 45CONFIG_GENERIC_HWEIGHT=y
41CONFIG_GENERIC_CALIBRATE_DELAY=y
42CONFIG_GENERIC_FIND_NEXT_BIT=y 46CONFIG_GENERIC_FIND_NEXT_BIT=y
43# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 47# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
44CONFIG_PPC=y 48CONFIG_PPC=y
@@ -52,11 +56,13 @@ CONFIG_OF=y
52# CONFIG_GENERIC_TBSYNC is not set 56# CONFIG_GENERIC_TBSYNC is not set
53CONFIG_AUDIT_ARCH=y 57CONFIG_AUDIT_ARCH=y
54CONFIG_GENERIC_BUG=y 58CONFIG_GENERIC_BUG=y
59CONFIG_DTC=y
55CONFIG_DEFAULT_UIMAGE=y 60CONFIG_DEFAULT_UIMAGE=y
56# CONFIG_PPC_DCR_NATIVE is not set 61# CONFIG_PPC_DCR_NATIVE is not set
57# CONFIG_PPC_DCR_MMIO is not set 62# CONFIG_PPC_DCR_MMIO is not set
58CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 63CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
59CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 64CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
65CONFIG_CONSTRUCTORS=y
60 66
61# 67#
62# General setup 68# General setup
@@ -77,11 +83,12 @@ CONFIG_SYSVIPC_SYSCTL=y
77# 83#
78# RCU Subsystem 84# RCU Subsystem
79# 85#
80CONFIG_CLASSIC_RCU=y 86CONFIG_TREE_RCU=y
81# CONFIG_TREE_RCU is not set 87# CONFIG_TREE_PREEMPT_RCU is not set
82# CONFIG_PREEMPT_RCU is not set 88# CONFIG_RCU_TRACE is not set
89CONFIG_RCU_FANOUT=32
90# CONFIG_RCU_FANOUT_EXACT is not set
83# CONFIG_TREE_RCU_TRACE is not set 91# CONFIG_TREE_RCU_TRACE is not set
84# CONFIG_PREEMPT_RCU_TRACE is not set
85# CONFIG_IKCONFIG is not set 92# CONFIG_IKCONFIG is not set
86CONFIG_LOG_BUF_SHIFT=14 93CONFIG_LOG_BUF_SHIFT=14
87CONFIG_GROUP_SCHED=y 94CONFIG_GROUP_SCHED=y
@@ -105,7 +112,6 @@ CONFIG_ANON_INODES=y
105CONFIG_EMBEDDED=y 112CONFIG_EMBEDDED=y
106# CONFIG_SYSCTL_SYSCALL is not set 113# CONFIG_SYSCTL_SYSCALL is not set
107# CONFIG_KALLSYMS is not set 114# CONFIG_KALLSYMS is not set
108# CONFIG_STRIP_ASM_SYMS is not set
109CONFIG_HOTPLUG=y 115CONFIG_HOTPLUG=y
110CONFIG_PRINTK=y 116CONFIG_PRINTK=y
111CONFIG_BUG=y 117CONFIG_BUG=y
@@ -118,6 +124,13 @@ CONFIG_TIMERFD=y
118CONFIG_EVENTFD=y 124CONFIG_EVENTFD=y
119CONFIG_SHMEM=y 125CONFIG_SHMEM=y
120CONFIG_AIO=y 126CONFIG_AIO=y
127CONFIG_HAVE_PERF_EVENTS=y
128
129#
130# Kernel Performance Events And Counters
131#
132# CONFIG_PERF_EVENTS is not set
133# CONFIG_PERF_COUNTERS is not set
121CONFIG_VM_EVENT_COUNTERS=y 134CONFIG_VM_EVENT_COUNTERS=y
122CONFIG_SLUB_DEBUG=y 135CONFIG_SLUB_DEBUG=y
123CONFIG_COMPAT_BRK=y 136CONFIG_COMPAT_BRK=y
@@ -125,14 +138,19 @@ CONFIG_COMPAT_BRK=y
125CONFIG_SLUB=y 138CONFIG_SLUB=y
126# CONFIG_SLOB is not set 139# CONFIG_SLOB is not set
127# CONFIG_PROFILING is not set 140# CONFIG_PROFILING is not set
128# CONFIG_MARKERS is not set
129CONFIG_HAVE_OPROFILE=y 141CONFIG_HAVE_OPROFILE=y
130CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 142CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
131CONFIG_HAVE_IOREMAP_PROT=y 143CONFIG_HAVE_IOREMAP_PROT=y
132CONFIG_HAVE_KPROBES=y 144CONFIG_HAVE_KPROBES=y
133CONFIG_HAVE_KRETPROBES=y 145CONFIG_HAVE_KRETPROBES=y
134CONFIG_HAVE_ARCH_TRACEHOOK=y 146CONFIG_HAVE_ARCH_TRACEHOOK=y
147CONFIG_HAVE_DMA_ATTRS=y
135CONFIG_HAVE_CLK=y 148CONFIG_HAVE_CLK=y
149CONFIG_HAVE_DMA_API_DEBUG=y
150
151#
152# GCOV-based kernel profiling
153#
136# CONFIG_SLOW_WORK is not set 154# CONFIG_SLOW_WORK is not set
137# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 155# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
138CONFIG_SLABINFO=y 156CONFIG_SLABINFO=y
@@ -140,7 +158,7 @@ CONFIG_RT_MUTEXES=y
140CONFIG_BASE_SMALL=0 158CONFIG_BASE_SMALL=0
141# CONFIG_MODULES is not set 159# CONFIG_MODULES is not set
142CONFIG_BLOCK=y 160CONFIG_BLOCK=y
143# CONFIG_LBD is not set 161CONFIG_LBDAF=y
144# CONFIG_BLK_DEV_BSG is not set 162# CONFIG_BLK_DEV_BSG is not set
145# CONFIG_BLK_DEV_INTEGRITY is not set 163# CONFIG_BLK_DEV_INTEGRITY is not set
146 164
@@ -220,11 +238,13 @@ CONFIG_BINFMT_ELF=y
220# CONFIG_HAVE_AOUT is not set 238# CONFIG_HAVE_AOUT is not set
221# CONFIG_BINFMT_MISC is not set 239# CONFIG_BINFMT_MISC is not set
222# CONFIG_IOMMU_HELPER is not set 240# CONFIG_IOMMU_HELPER is not set
241# CONFIG_SWIOTLB is not set
223CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 242CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
224CONFIG_ARCH_HAS_WALK_MEMORY=y 243CONFIG_ARCH_HAS_WALK_MEMORY=y
225CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 244CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
226# CONFIG_KEXEC is not set 245# CONFIG_KEXEC is not set
227# CONFIG_CRASH_DUMP is not set 246# CONFIG_CRASH_DUMP is not set
247CONFIG_MAX_ACTIVE_REGIONS=32
228CONFIG_ARCH_FLATMEM_ENABLE=y 248CONFIG_ARCH_FLATMEM_ENABLE=y
229CONFIG_ARCH_POPULATES_NODE_MAP=y 249CONFIG_ARCH_POPULATES_NODE_MAP=y
230CONFIG_SELECT_MEMORY_MODEL=y 250CONFIG_SELECT_MEMORY_MODEL=y
@@ -240,9 +260,10 @@ CONFIG_MIGRATION=y
240CONFIG_ZONE_DMA_FLAG=1 260CONFIG_ZONE_DMA_FLAG=1
241CONFIG_BOUNCE=y 261CONFIG_BOUNCE=y
242CONFIG_VIRT_TO_BUS=y 262CONFIG_VIRT_TO_BUS=y
243CONFIG_UNEVICTABLE_LRU=y
244CONFIG_HAVE_MLOCK=y 263CONFIG_HAVE_MLOCK=y
245CONFIG_HAVE_MLOCKED_PAGE_BIT=y 264CONFIG_HAVE_MLOCKED_PAGE_BIT=y
265# CONFIG_KSM is not set
266CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
246CONFIG_PPC_4K_PAGES=y 267CONFIG_PPC_4K_PAGES=y
247# CONFIG_PPC_16K_PAGES is not set 268# CONFIG_PPC_16K_PAGES is not set
248# CONFIG_PPC_64K_PAGES is not set 269# CONFIG_PPC_64K_PAGES is not set
@@ -253,6 +274,7 @@ CONFIG_PROC_DEVICETREE=y
253CONFIG_EXTRA_TARGETS="" 274CONFIG_EXTRA_TARGETS=""
254CONFIG_PM=y 275CONFIG_PM=y
255# CONFIG_PM_DEBUG is not set 276# CONFIG_PM_DEBUG is not set
277# CONFIG_PM_RUNTIME is not set
256CONFIG_SECCOMP=y 278CONFIG_SECCOMP=y
257CONFIG_ISA_DMA_API=y 279CONFIG_ISA_DMA_API=y
258 280
@@ -329,6 +351,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
329# CONFIG_NETFILTER is not set 351# CONFIG_NETFILTER is not set
330# CONFIG_IP_DCCP is not set 352# CONFIG_IP_DCCP is not set
331# CONFIG_IP_SCTP is not set 353# CONFIG_IP_SCTP is not set
354# CONFIG_RDS is not set
332# CONFIG_TIPC is not set 355# CONFIG_TIPC is not set
333# CONFIG_ATM is not set 356# CONFIG_ATM is not set
334# CONFIG_BRIDGE is not set 357# CONFIG_BRIDGE is not set
@@ -343,6 +366,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
343# CONFIG_ECONET is not set 366# CONFIG_ECONET is not set
344# CONFIG_WAN_ROUTER is not set 367# CONFIG_WAN_ROUTER is not set
345# CONFIG_PHONET is not set 368# CONFIG_PHONET is not set
369# CONFIG_IEEE802154 is not set
346# CONFIG_NET_SCHED is not set 370# CONFIG_NET_SCHED is not set
347# CONFIG_DCB is not set 371# CONFIG_DCB is not set
348 372
@@ -368,6 +392,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
368# Generic Driver Options 392# Generic Driver Options
369# 393#
370CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 394CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
395# CONFIG_DEVTMPFS is not set
371CONFIG_STANDALONE=y 396CONFIG_STANDALONE=y
372CONFIG_PREVENT_FIRMWARE_BUILD=y 397CONFIG_PREVENT_FIRMWARE_BUILD=y
373# CONFIG_FW_LOADER is not set 398# CONFIG_FW_LOADER is not set
@@ -458,6 +483,7 @@ CONFIG_MTD_ROM=y
458# CONFIG_MTD_UBI is not set 483# CONFIG_MTD_UBI is not set
459CONFIG_OF_DEVICE=y 484CONFIG_OF_DEVICE=y
460CONFIG_OF_I2C=y 485CONFIG_OF_I2C=y
486CONFIG_OF_MDIO=y
461# CONFIG_PARPORT is not set 487# CONFIG_PARPORT is not set
462CONFIG_BLK_DEV=y 488CONFIG_BLK_DEV=y
463# CONFIG_BLK_DEV_FD is not set 489# CONFIG_BLK_DEV_FD is not set
@@ -483,6 +509,7 @@ CONFIG_MISC_DEVICES=y
483# 509#
484# CONFIG_EEPROM_AT24 is not set 510# CONFIG_EEPROM_AT24 is not set
485CONFIG_EEPROM_LEGACY=y 511CONFIG_EEPROM_LEGACY=y
512# CONFIG_EEPROM_MAX6875 is not set
486# CONFIG_EEPROM_93CX6 is not set 513# CONFIG_EEPROM_93CX6 is not set
487CONFIG_HAVE_IDE=y 514CONFIG_HAVE_IDE=y
488# CONFIG_IDE is not set 515# CONFIG_IDE is not set
@@ -506,10 +533,6 @@ CONFIG_BLK_DEV_SD=y
506# CONFIG_BLK_DEV_SR is not set 533# CONFIG_BLK_DEV_SR is not set
507CONFIG_CHR_DEV_SG=y 534CONFIG_CHR_DEV_SG=y
508# CONFIG_CHR_DEV_SCH is not set 535# CONFIG_CHR_DEV_SCH is not set
509
510#
511# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
512#
513# CONFIG_SCSI_MULTI_LUN is not set 536# CONFIG_SCSI_MULTI_LUN is not set
514# CONFIG_SCSI_CONSTANTS is not set 537# CONFIG_SCSI_CONSTANTS is not set
515# CONFIG_SCSI_LOGGING is not set 538# CONFIG_SCSI_LOGGING is not set
@@ -532,6 +555,7 @@ CONFIG_SCSI_LOWLEVEL=y
532# CONFIG_SCSI_OSD_INITIATOR is not set 555# CONFIG_SCSI_OSD_INITIATOR is not set
533CONFIG_ATA=y 556CONFIG_ATA=y
534# CONFIG_ATA_NONSTANDARD is not set 557# CONFIG_ATA_NONSTANDARD is not set
558CONFIG_ATA_VERBOSE_ERROR=y
535CONFIG_SATA_PMP=y 559CONFIG_SATA_PMP=y
536CONFIG_ATA_SFF=y 560CONFIG_ATA_SFF=y
537# CONFIG_SATA_MV is not set 561# CONFIG_SATA_MV is not set
@@ -540,7 +564,6 @@ CONFIG_PATA_MPC52xx=y
540# CONFIG_MD is not set 564# CONFIG_MD is not set
541# CONFIG_MACINTOSH_DRIVERS is not set 565# CONFIG_MACINTOSH_DRIVERS is not set
542CONFIG_NETDEVICES=y 566CONFIG_NETDEVICES=y
543CONFIG_COMPAT_NET_DEV_OPS=y
544# CONFIG_DUMMY is not set 567# CONFIG_DUMMY is not set
545# CONFIG_BONDING is not set 568# CONFIG_BONDING is not set
546# CONFIG_MACVLAN is not set 569# CONFIG_MACVLAN is not set
@@ -579,14 +602,14 @@ CONFIG_MII=y
579# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 602# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
580# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 603# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
581# CONFIG_B44 is not set 604# CONFIG_B44 is not set
605# CONFIG_KS8842 is not set
606# CONFIG_KS8851_MLL is not set
582CONFIG_FEC_MPC52xx=y 607CONFIG_FEC_MPC52xx=y
583CONFIG_FEC_MPC52xx_MDIO=y 608CONFIG_FEC_MPC52xx_MDIO=y
609# CONFIG_XILINX_EMACLITE is not set
584# CONFIG_NETDEV_1000 is not set 610# CONFIG_NETDEV_1000 is not set
585# CONFIG_NETDEV_10000 is not set 611# CONFIG_NETDEV_10000 is not set
586 612CONFIG_WLAN=y
587#
588# Wireless LAN
589#
590# CONFIG_WLAN_PRE80211 is not set 613# CONFIG_WLAN_PRE80211 is not set
591# CONFIG_WLAN_80211 is not set 614# CONFIG_WLAN_80211 is not set
592 615
@@ -647,6 +670,7 @@ CONFIG_LEGACY_PTY_COUNT=256
647# CONFIG_TCG_TPM is not set 670# CONFIG_TCG_TPM is not set
648CONFIG_I2C=y 671CONFIG_I2C=y
649CONFIG_I2C_BOARDINFO=y 672CONFIG_I2C_BOARDINFO=y
673CONFIG_I2C_COMPAT=y
650CONFIG_I2C_CHARDEV=y 674CONFIG_I2C_CHARDEV=y
651CONFIG_I2C_HELPER_AUTO=y 675CONFIG_I2C_HELPER_AUTO=y
652 676
@@ -657,6 +681,7 @@ CONFIG_I2C_HELPER_AUTO=y
657# 681#
658# I2C system bus drivers (mostly embedded / system-on-chip) 682# I2C system bus drivers (mostly embedded / system-on-chip)
659# 683#
684# CONFIG_I2C_DESIGNWARE is not set
660CONFIG_I2C_MPC=y 685CONFIG_I2C_MPC=y
661# CONFIG_I2C_OCORES is not set 686# CONFIG_I2C_OCORES is not set
662# CONFIG_I2C_SIMTEC is not set 687# CONFIG_I2C_SIMTEC is not set
@@ -676,22 +701,28 @@ CONFIG_I2C_MPC=y
676# Miscellaneous I2C Chip support 701# Miscellaneous I2C Chip support
677# 702#
678# CONFIG_DS1682 is not set 703# CONFIG_DS1682 is not set
679# CONFIG_SENSORS_PCF8574 is not set
680# CONFIG_PCF8575 is not set
681# CONFIG_SENSORS_PCA9539 is not set
682# CONFIG_SENSORS_MAX6875 is not set
683# CONFIG_SENSORS_TSL2550 is not set 704# CONFIG_SENSORS_TSL2550 is not set
684# CONFIG_I2C_DEBUG_CORE is not set 705# CONFIG_I2C_DEBUG_CORE is not set
685# CONFIG_I2C_DEBUG_ALGO is not set 706# CONFIG_I2C_DEBUG_ALGO is not set
686# CONFIG_I2C_DEBUG_BUS is not set 707# CONFIG_I2C_DEBUG_BUS is not set
687# CONFIG_I2C_DEBUG_CHIP is not set 708# CONFIG_I2C_DEBUG_CHIP is not set
688# CONFIG_SPI is not set 709# CONFIG_SPI is not set
710
711#
712# PPS support
713#
714# CONFIG_PPS is not set
689CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 715CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
690# CONFIG_GPIOLIB is not set 716# CONFIG_GPIOLIB is not set
691# CONFIG_W1 is not set 717# CONFIG_W1 is not set
692# CONFIG_POWER_SUPPLY is not set 718# CONFIG_POWER_SUPPLY is not set
693CONFIG_HWMON=y 719CONFIG_HWMON=y
694# CONFIG_HWMON_VID is not set 720# CONFIG_HWMON_VID is not set
721# CONFIG_HWMON_DEBUG_CHIP is not set
722
723#
724# Native drivers
725#
695# CONFIG_SENSORS_AD7414 is not set 726# CONFIG_SENSORS_AD7414 is not set
696# CONFIG_SENSORS_AD7418 is not set 727# CONFIG_SENSORS_AD7418 is not set
697# CONFIG_SENSORS_ADM1021 is not set 728# CONFIG_SENSORS_ADM1021 is not set
@@ -738,6 +769,8 @@ CONFIG_HWMON=y
738# CONFIG_SENSORS_SMSC47B397 is not set 769# CONFIG_SENSORS_SMSC47B397 is not set
739# CONFIG_SENSORS_ADS7828 is not set 770# CONFIG_SENSORS_ADS7828 is not set
740# CONFIG_SENSORS_THMC50 is not set 771# CONFIG_SENSORS_THMC50 is not set
772# CONFIG_SENSORS_TMP401 is not set
773# CONFIG_SENSORS_TMP421 is not set
741# CONFIG_SENSORS_VT1211 is not set 774# CONFIG_SENSORS_VT1211 is not set
742# CONFIG_SENSORS_W83781D is not set 775# CONFIG_SENSORS_W83781D is not set
743# CONFIG_SENSORS_W83791D is not set 776# CONFIG_SENSORS_W83791D is not set
@@ -747,9 +780,7 @@ CONFIG_HWMON=y
747# CONFIG_SENSORS_W83L786NG is not set 780# CONFIG_SENSORS_W83L786NG is not set
748# CONFIG_SENSORS_W83627HF is not set 781# CONFIG_SENSORS_W83627HF is not set
749# CONFIG_SENSORS_W83627EHF is not set 782# CONFIG_SENSORS_W83627EHF is not set
750# CONFIG_HWMON_DEBUG_CHIP is not set
751# CONFIG_THERMAL is not set 783# CONFIG_THERMAL is not set
752# CONFIG_THERMAL_HWMON is not set
753CONFIG_WATCHDOG=y 784CONFIG_WATCHDOG=y
754# CONFIG_WATCHDOG_NOWAYOUT is not set 785# CONFIG_WATCHDOG_NOWAYOUT is not set
755 786
@@ -775,25 +806,12 @@ CONFIG_SSB_POSSIBLE=y
775# CONFIG_MFD_TMIO is not set 806# CONFIG_MFD_TMIO is not set
776# CONFIG_PMIC_DA903X is not set 807# CONFIG_PMIC_DA903X is not set
777# CONFIG_MFD_WM8400 is not set 808# CONFIG_MFD_WM8400 is not set
809# CONFIG_MFD_WM831X is not set
778# CONFIG_MFD_WM8350_I2C is not set 810# CONFIG_MFD_WM8350_I2C is not set
779# CONFIG_MFD_PCF50633 is not set 811# CONFIG_MFD_PCF50633 is not set
812# CONFIG_AB3100_CORE is not set
780# CONFIG_REGULATOR is not set 813# CONFIG_REGULATOR is not set
781 814# CONFIG_MEDIA_SUPPORT is not set
782#
783# Multimedia devices
784#
785
786#
787# Multimedia core support
788#
789# CONFIG_VIDEO_DEV is not set
790# CONFIG_DVB_CORE is not set
791# CONFIG_VIDEO_MEDIA is not set
792
793#
794# Multimedia drivers
795#
796CONFIG_DAB=y
797 815
798# 816#
799# Graphics support 817# Graphics support
@@ -817,7 +835,7 @@ CONFIG_LEDS_CLASS=y
817# 835#
818# LED drivers 836# LED drivers
819# 837#
820# CONFIG_LEDS_LP5521 is not set 838# CONFIG_LEDS_LP3944 is not set
821# CONFIG_LEDS_PCA955X is not set 839# CONFIG_LEDS_PCA955X is not set
822# CONFIG_LEDS_BD2802 is not set 840# CONFIG_LEDS_BD2802 is not set
823 841
@@ -866,6 +884,7 @@ CONFIG_RTC_DRV_DS1307=y
866# CONFIG_RTC_DRV_S35390A is not set 884# CONFIG_RTC_DRV_S35390A is not set
867# CONFIG_RTC_DRV_FM3130 is not set 885# CONFIG_RTC_DRV_FM3130 is not set
868# CONFIG_RTC_DRV_RX8581 is not set 886# CONFIG_RTC_DRV_RX8581 is not set
887# CONFIG_RTC_DRV_RX8025 is not set
869 888
870# 889#
871# SPI RTC drivers 890# SPI RTC drivers
@@ -893,6 +912,10 @@ CONFIG_RTC_DRV_DS1307=y
893# CONFIG_DMADEVICES is not set 912# CONFIG_DMADEVICES is not set
894# CONFIG_AUXDISPLAY is not set 913# CONFIG_AUXDISPLAY is not set
895# CONFIG_UIO is not set 914# CONFIG_UIO is not set
915
916#
917# TI VLYNQ
918#
896# CONFIG_STAGING is not set 919# CONFIG_STAGING is not set
897 920
898# 921#
@@ -912,10 +935,13 @@ CONFIG_FS_MBCACHE=y
912# CONFIG_REISERFS_FS is not set 935# CONFIG_REISERFS_FS is not set
913# CONFIG_JFS_FS is not set 936# CONFIG_JFS_FS is not set
914# CONFIG_FS_POSIX_ACL is not set 937# CONFIG_FS_POSIX_ACL is not set
915CONFIG_FILE_LOCKING=y
916# CONFIG_XFS_FS is not set 938# CONFIG_XFS_FS is not set
939# CONFIG_GFS2_FS is not set
917# CONFIG_OCFS2_FS is not set 940# CONFIG_OCFS2_FS is not set
918# CONFIG_BTRFS_FS is not set 941# CONFIG_BTRFS_FS is not set
942# CONFIG_NILFS2_FS is not set
943CONFIG_FILE_LOCKING=y
944CONFIG_FSNOTIFY=y
919CONFIG_DNOTIFY=y 945CONFIG_DNOTIFY=y
920CONFIG_INOTIFY=y 946CONFIG_INOTIFY=y
921CONFIG_INOTIFY_USER=y 947CONFIG_INOTIFY_USER=y
@@ -986,12 +1012,12 @@ CONFIG_CRAMFS=y
986# CONFIG_ROMFS_FS is not set 1012# CONFIG_ROMFS_FS is not set
987# CONFIG_SYSV_FS is not set 1013# CONFIG_SYSV_FS is not set
988# CONFIG_UFS_FS is not set 1014# CONFIG_UFS_FS is not set
989# CONFIG_NILFS2_FS is not set
990CONFIG_NETWORK_FILESYSTEMS=y 1015CONFIG_NETWORK_FILESYSTEMS=y
991CONFIG_NFS_FS=y 1016CONFIG_NFS_FS=y
992CONFIG_NFS_V3=y 1017CONFIG_NFS_V3=y
993# CONFIG_NFS_V3_ACL is not set 1018# CONFIG_NFS_V3_ACL is not set
994CONFIG_NFS_V4=y 1019CONFIG_NFS_V4=y
1020# CONFIG_NFS_V4_1 is not set
995CONFIG_ROOT_NFS=y 1021CONFIG_ROOT_NFS=y
996# CONFIG_NFSD is not set 1022# CONFIG_NFSD is not set
997CONFIG_LOCKD=y 1023CONFIG_LOCKD=y
@@ -1091,6 +1117,7 @@ CONFIG_HAS_IOPORT=y
1091CONFIG_HAS_DMA=y 1117CONFIG_HAS_DMA=y
1092CONFIG_HAVE_LMB=y 1118CONFIG_HAVE_LMB=y
1093CONFIG_NLATTR=y 1119CONFIG_NLATTR=y
1120CONFIG_GENERIC_ATOMIC64=y
1094 1121
1095# 1122#
1096# Kernel hacking 1123# Kernel hacking
@@ -1100,6 +1127,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1100CONFIG_ENABLE_MUST_CHECK=y 1127CONFIG_ENABLE_MUST_CHECK=y
1101CONFIG_FRAME_WARN=1024 1128CONFIG_FRAME_WARN=1024
1102# CONFIG_MAGIC_SYSRQ is not set 1129# CONFIG_MAGIC_SYSRQ is not set
1130# CONFIG_STRIP_ASM_SYMS is not set
1103# CONFIG_UNUSED_SYMBOLS is not set 1131# CONFIG_UNUSED_SYMBOLS is not set
1104# CONFIG_DEBUG_FS is not set 1132# CONFIG_DEBUG_FS is not set
1105# CONFIG_HEADERS_CHECK is not set 1133# CONFIG_HEADERS_CHECK is not set
@@ -1117,10 +1145,14 @@ CONFIG_SCHED_DEBUG=y
1117# CONFIG_DEBUG_OBJECTS is not set 1145# CONFIG_DEBUG_OBJECTS is not set
1118# CONFIG_SLUB_DEBUG_ON is not set 1146# CONFIG_SLUB_DEBUG_ON is not set
1119# CONFIG_SLUB_STATS is not set 1147# CONFIG_SLUB_STATS is not set
1148# CONFIG_DEBUG_KMEMLEAK is not set
1120# CONFIG_DEBUG_RT_MUTEXES is not set 1149# CONFIG_DEBUG_RT_MUTEXES is not set
1121# CONFIG_RT_MUTEX_TESTER is not set 1150# CONFIG_RT_MUTEX_TESTER is not set
1122# CONFIG_DEBUG_SPINLOCK is not set 1151# CONFIG_DEBUG_SPINLOCK is not set
1123# CONFIG_DEBUG_MUTEXES is not set 1152# CONFIG_DEBUG_MUTEXES is not set
1153# CONFIG_DEBUG_LOCK_ALLOC is not set
1154# CONFIG_PROVE_LOCKING is not set
1155# CONFIG_LOCK_STAT is not set
1124# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1156# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1125# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1157# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1126# CONFIG_DEBUG_KOBJECT is not set 1158# CONFIG_DEBUG_KOBJECT is not set
@@ -1132,11 +1164,12 @@ CONFIG_DEBUG_INFO=y
1132# CONFIG_DEBUG_LIST is not set 1164# CONFIG_DEBUG_LIST is not set
1133# CONFIG_DEBUG_SG is not set 1165# CONFIG_DEBUG_SG is not set
1134# CONFIG_DEBUG_NOTIFIERS is not set 1166# CONFIG_DEBUG_NOTIFIERS is not set
1135# CONFIG_BOOT_PRINTK_DELAY is not set 1167# CONFIG_DEBUG_CREDENTIALS is not set
1136# CONFIG_RCU_TORTURE_TEST is not set 1168# CONFIG_RCU_TORTURE_TEST is not set
1137# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1169# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1138# CONFIG_BACKTRACE_SELF_TEST is not set 1170# CONFIG_BACKTRACE_SELF_TEST is not set
1139# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1171# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1172# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1140# CONFIG_FAULT_INJECTION is not set 1173# CONFIG_FAULT_INJECTION is not set
1141# CONFIG_LATENCYTOP is not set 1174# CONFIG_LATENCYTOP is not set
1142# CONFIG_DEBUG_PAGEALLOC is not set 1175# CONFIG_DEBUG_PAGEALLOC is not set
@@ -1145,23 +1178,25 @@ CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1145CONFIG_HAVE_DYNAMIC_FTRACE=y 1178CONFIG_HAVE_DYNAMIC_FTRACE=y
1146CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1179CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1147CONFIG_TRACING_SUPPORT=y 1180CONFIG_TRACING_SUPPORT=y
1148 1181CONFIG_FTRACE=y
1149#
1150# Tracers
1151#
1152# CONFIG_FUNCTION_TRACER is not set 1182# CONFIG_FUNCTION_TRACER is not set
1183# CONFIG_IRQSOFF_TRACER is not set
1153# CONFIG_SCHED_TRACER is not set 1184# CONFIG_SCHED_TRACER is not set
1154# CONFIG_CONTEXT_SWITCH_TRACER is not set 1185# CONFIG_ENABLE_DEFAULT_TRACERS is not set
1155# CONFIG_EVENT_TRACER is not set
1156# CONFIG_BOOT_TRACER is not set 1186# CONFIG_BOOT_TRACER is not set
1157# CONFIG_TRACE_BRANCH_PROFILING is not set 1187CONFIG_BRANCH_PROFILE_NONE=y
1188# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1189# CONFIG_PROFILE_ALL_BRANCHES is not set
1158# CONFIG_STACK_TRACER is not set 1190# CONFIG_STACK_TRACER is not set
1159# CONFIG_KMEMTRACE is not set 1191# CONFIG_KMEMTRACE is not set
1160# CONFIG_WORKQUEUE_TRACER is not set 1192# CONFIG_WORKQUEUE_TRACER is not set
1161# CONFIG_BLK_DEV_IO_TRACE is not set 1193# CONFIG_BLK_DEV_IO_TRACE is not set
1194# CONFIG_DMA_API_DEBUG is not set
1162# CONFIG_SAMPLES is not set 1195# CONFIG_SAMPLES is not set
1163CONFIG_HAVE_ARCH_KGDB=y 1196CONFIG_HAVE_ARCH_KGDB=y
1164# CONFIG_KGDB is not set 1197# CONFIG_KGDB is not set
1198# CONFIG_PPC_DISABLE_WERROR is not set
1199CONFIG_PPC_WERROR=y
1165CONFIG_PRINT_STACK_DEPTH=64 1200CONFIG_PRINT_STACK_DEPTH=64
1166# CONFIG_DEBUG_STACKOVERFLOW is not set 1201# CONFIG_DEBUG_STACKOVERFLOW is not set
1167# CONFIG_DEBUG_STACK_USAGE is not set 1202# CONFIG_DEBUG_STACK_USAGE is not set
@@ -1186,7 +1221,6 @@ CONFIG_CRYPTO=y
1186# 1221#
1187# Crypto core or helper 1222# Crypto core or helper
1188# 1223#
1189# CONFIG_CRYPTO_FIPS is not set
1190CONFIG_CRYPTO_ALGAPI=y 1224CONFIG_CRYPTO_ALGAPI=y
1191CONFIG_CRYPTO_ALGAPI2=y 1225CONFIG_CRYPTO_ALGAPI2=y
1192CONFIG_CRYPTO_AEAD2=y 1226CONFIG_CRYPTO_AEAD2=y
@@ -1227,11 +1261,13 @@ CONFIG_CRYPTO_PCBC=y
1227# 1261#
1228# CONFIG_CRYPTO_HMAC is not set 1262# CONFIG_CRYPTO_HMAC is not set
1229# CONFIG_CRYPTO_XCBC is not set 1263# CONFIG_CRYPTO_XCBC is not set
1264# CONFIG_CRYPTO_VMAC is not set
1230 1265
1231# 1266#
1232# Digest 1267# Digest
1233# 1268#
1234# CONFIG_CRYPTO_CRC32C is not set 1269# CONFIG_CRYPTO_CRC32C is not set
1270# CONFIG_CRYPTO_GHASH is not set
1235# CONFIG_CRYPTO_MD4 is not set 1271# CONFIG_CRYPTO_MD4 is not set
1236CONFIG_CRYPTO_MD5=y 1272CONFIG_CRYPTO_MD5=y
1237# CONFIG_CRYPTO_MICHAEL_MIC is not set 1273# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/52xx/pcm030_defconfig b/arch/powerpc/configs/52xx/pcm030_defconfig
index afb1a3d1ef0a..f9168c1a2fa5 100644
--- a/arch/powerpc/configs/52xx/pcm030_defconfig
+++ b/arch/powerpc/configs/52xx/pcm030_defconfig
@@ -1,25 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.30-rc2 3# Linux kernel version: 2.6.32-rc4
4# Sat Apr 18 00:48:42 2009 4# Thu Oct 15 10:33:25 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
8# 8#
9# Processor support 9# Processor support
10# 10#
11CONFIG_6xx=y 11CONFIG_PPC_BOOK3S_32=y
12# CONFIG_PPC_85xx is not set 12# CONFIG_PPC_85xx is not set
13# CONFIG_PPC_8xx is not set 13# CONFIG_PPC_8xx is not set
14# CONFIG_40x is not set 14# CONFIG_40x is not set
15# CONFIG_44x is not set 15# CONFIG_44x is not set
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_PPC_BOOK3S=y 17CONFIG_PPC_BOOK3S=y
18CONFIG_6xx=y
18CONFIG_PPC_FPU=y 19CONFIG_PPC_FPU=y
19# CONFIG_ALTIVEC is not set 20# CONFIG_ALTIVEC is not set
20CONFIG_PPC_STD_MMU=y 21CONFIG_PPC_STD_MMU=y
21CONFIG_PPC_STD_MMU_32=y 22CONFIG_PPC_STD_MMU_32=y
22# CONFIG_PPC_MM_SLICES is not set 23# CONFIG_PPC_MM_SLICES is not set
24CONFIG_PPC_HAVE_PMU_SUPPORT=y
23# CONFIG_SMP is not set 25# CONFIG_SMP is not set
24CONFIG_PPC32=y 26CONFIG_PPC32=y
25CONFIG_WORD_SIZE=32 27CONFIG_WORD_SIZE=32
@@ -30,15 +32,17 @@ CONFIG_GENERIC_TIME=y
30CONFIG_GENERIC_TIME_VSYSCALL=y 32CONFIG_GENERIC_TIME_VSYSCALL=y
31CONFIG_GENERIC_CLOCKEVENTS=y 33CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
34CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y 39CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_HAVE_LATENCYTOP_SUPPORT=y 40CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y
37CONFIG_LOCKDEP_SUPPORT=y 42CONFIG_LOCKDEP_SUPPORT=y
38CONFIG_RWSEM_XCHGADD_ALGORITHM=y 43CONFIG_RWSEM_XCHGADD_ALGORITHM=y
39CONFIG_ARCH_HAS_ILOG2_U32=y 44CONFIG_ARCH_HAS_ILOG2_U32=y
40CONFIG_GENERIC_HWEIGHT=y 45CONFIG_GENERIC_HWEIGHT=y
41CONFIG_GENERIC_CALIBRATE_DELAY=y
42CONFIG_GENERIC_FIND_NEXT_BIT=y 46CONFIG_GENERIC_FIND_NEXT_BIT=y
43# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 47# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
44CONFIG_PPC=y 48CONFIG_PPC=y
@@ -52,11 +56,13 @@ CONFIG_OF=y
52# CONFIG_GENERIC_TBSYNC is not set 56# CONFIG_GENERIC_TBSYNC is not set
53CONFIG_AUDIT_ARCH=y 57CONFIG_AUDIT_ARCH=y
54CONFIG_GENERIC_BUG=y 58CONFIG_GENERIC_BUG=y
59CONFIG_DTC=y
55CONFIG_DEFAULT_UIMAGE=y 60CONFIG_DEFAULT_UIMAGE=y
56# CONFIG_PPC_DCR_NATIVE is not set 61# CONFIG_PPC_DCR_NATIVE is not set
57# CONFIG_PPC_DCR_MMIO is not set 62# CONFIG_PPC_DCR_MMIO is not set
58CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 63CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
59CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 64CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
65CONFIG_CONSTRUCTORS=y
60 66
61# 67#
62# General setup 68# General setup
@@ -79,11 +85,12 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
79# 85#
80# RCU Subsystem 86# RCU Subsystem
81# 87#
82CONFIG_CLASSIC_RCU=y 88CONFIG_TREE_RCU=y
83# CONFIG_TREE_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
84# CONFIG_PREEMPT_RCU is not set 90# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set
85# CONFIG_TREE_RCU_TRACE is not set 93# CONFIG_TREE_RCU_TRACE is not set
86# CONFIG_PREEMPT_RCU_TRACE is not set
87CONFIG_IKCONFIG=y 94CONFIG_IKCONFIG=y
88CONFIG_IKCONFIG_PROC=y 95CONFIG_IKCONFIG_PROC=y
89CONFIG_LOG_BUF_SHIFT=14 96CONFIG_LOG_BUF_SHIFT=14
@@ -105,7 +112,6 @@ CONFIG_EMBEDDED=y
105# CONFIG_SYSCTL_SYSCALL is not set 112# CONFIG_SYSCTL_SYSCALL is not set
106CONFIG_KALLSYMS=y 113CONFIG_KALLSYMS=y
107# CONFIG_KALLSYMS_EXTRA_PASS is not set 114# CONFIG_KALLSYMS_EXTRA_PASS is not set
108# CONFIG_STRIP_ASM_SYMS is not set
109CONFIG_HOTPLUG=y 115CONFIG_HOTPLUG=y
110CONFIG_PRINTK=y 116CONFIG_PRINTK=y
111CONFIG_BUG=y 117CONFIG_BUG=y
@@ -118,6 +124,13 @@ CONFIG_TIMERFD=y
118CONFIG_EVENTFD=y 124CONFIG_EVENTFD=y
119CONFIG_SHMEM=y 125CONFIG_SHMEM=y
120CONFIG_AIO=y 126CONFIG_AIO=y
127CONFIG_HAVE_PERF_EVENTS=y
128
129#
130# Kernel Performance Events And Counters
131#
132# CONFIG_PERF_EVENTS is not set
133# CONFIG_PERF_COUNTERS is not set
121# CONFIG_VM_EVENT_COUNTERS is not set 134# CONFIG_VM_EVENT_COUNTERS is not set
122CONFIG_PCI_QUIRKS=y 135CONFIG_PCI_QUIRKS=y
123CONFIG_COMPAT_BRK=y 136CONFIG_COMPAT_BRK=y
@@ -125,7 +138,6 @@ CONFIG_SLAB=y
125# CONFIG_SLUB is not set 138# CONFIG_SLUB is not set
126# CONFIG_SLOB is not set 139# CONFIG_SLOB is not set
127# CONFIG_PROFILING is not set 140# CONFIG_PROFILING is not set
128# CONFIG_MARKERS is not set
129CONFIG_HAVE_OPROFILE=y 141CONFIG_HAVE_OPROFILE=y
130# CONFIG_KPROBES is not set 142# CONFIG_KPROBES is not set
131CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 143CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -133,7 +145,13 @@ CONFIG_HAVE_IOREMAP_PROT=y
133CONFIG_HAVE_KPROBES=y 145CONFIG_HAVE_KPROBES=y
134CONFIG_HAVE_KRETPROBES=y 146CONFIG_HAVE_KRETPROBES=y
135CONFIG_HAVE_ARCH_TRACEHOOK=y 147CONFIG_HAVE_ARCH_TRACEHOOK=y
148CONFIG_HAVE_DMA_ATTRS=y
136CONFIG_HAVE_CLK=y 149CONFIG_HAVE_CLK=y
150CONFIG_HAVE_DMA_API_DEBUG=y
151
152#
153# GCOV-based kernel profiling
154#
137# CONFIG_SLOW_WORK is not set 155# CONFIG_SLOW_WORK is not set
138# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 156# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
139CONFIG_SLABINFO=y 157CONFIG_SLABINFO=y
@@ -146,7 +164,7 @@ CONFIG_MODULE_UNLOAD=y
146# CONFIG_MODVERSIONS is not set 164# CONFIG_MODVERSIONS is not set
147# CONFIG_MODULE_SRCVERSION_ALL is not set 165# CONFIG_MODULE_SRCVERSION_ALL is not set
148CONFIG_BLOCK=y 166CONFIG_BLOCK=y
149# CONFIG_LBD is not set 167CONFIG_LBDAF=y
150# CONFIG_BLK_DEV_BSG is not set 168# CONFIG_BLK_DEV_BSG is not set
151# CONFIG_BLK_DEV_INTEGRITY is not set 169# CONFIG_BLK_DEV_INTEGRITY is not set
152 170
@@ -227,11 +245,13 @@ CONFIG_BINFMT_ELF=y
227# CONFIG_HAVE_AOUT is not set 245# CONFIG_HAVE_AOUT is not set
228# CONFIG_BINFMT_MISC is not set 246# CONFIG_BINFMT_MISC is not set
229# CONFIG_IOMMU_HELPER is not set 247# CONFIG_IOMMU_HELPER is not set
248# CONFIG_SWIOTLB is not set
230CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 249CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
231CONFIG_ARCH_HAS_WALK_MEMORY=y 250CONFIG_ARCH_HAS_WALK_MEMORY=y
232CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 251CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
233# CONFIG_KEXEC is not set 252# CONFIG_KEXEC is not set
234# CONFIG_CRASH_DUMP is not set 253# CONFIG_CRASH_DUMP is not set
254CONFIG_MAX_ACTIVE_REGIONS=32
235CONFIG_ARCH_FLATMEM_ENABLE=y 255CONFIG_ARCH_FLATMEM_ENABLE=y
236CONFIG_ARCH_POPULATES_NODE_MAP=y 256CONFIG_ARCH_POPULATES_NODE_MAP=y
237CONFIG_SELECT_MEMORY_MODEL=y 257CONFIG_SELECT_MEMORY_MODEL=y
@@ -247,9 +267,10 @@ CONFIG_MIGRATION=y
247CONFIG_ZONE_DMA_FLAG=1 267CONFIG_ZONE_DMA_FLAG=1
248CONFIG_BOUNCE=y 268CONFIG_BOUNCE=y
249CONFIG_VIRT_TO_BUS=y 269CONFIG_VIRT_TO_BUS=y
250CONFIG_UNEVICTABLE_LRU=y
251CONFIG_HAVE_MLOCK=y 270CONFIG_HAVE_MLOCK=y
252CONFIG_HAVE_MLOCKED_PAGE_BIT=y 271CONFIG_HAVE_MLOCKED_PAGE_BIT=y
272# CONFIG_KSM is not set
273CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
253CONFIG_PPC_4K_PAGES=y 274CONFIG_PPC_4K_PAGES=y
254# CONFIG_PPC_16K_PAGES is not set 275# CONFIG_PPC_16K_PAGES is not set
255# CONFIG_PPC_64K_PAGES is not set 276# CONFIG_PPC_64K_PAGES is not set
@@ -336,6 +357,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
336# CONFIG_NETFILTER is not set 357# CONFIG_NETFILTER is not set
337# CONFIG_IP_DCCP is not set 358# CONFIG_IP_DCCP is not set
338# CONFIG_IP_SCTP is not set 359# CONFIG_IP_SCTP is not set
360# CONFIG_RDS is not set
339# CONFIG_TIPC is not set 361# CONFIG_TIPC is not set
340# CONFIG_ATM is not set 362# CONFIG_ATM is not set
341# CONFIG_BRIDGE is not set 363# CONFIG_BRIDGE is not set
@@ -350,6 +372,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
350# CONFIG_ECONET is not set 372# CONFIG_ECONET is not set
351# CONFIG_WAN_ROUTER is not set 373# CONFIG_WAN_ROUTER is not set
352# CONFIG_PHONET is not set 374# CONFIG_PHONET is not set
375# CONFIG_IEEE802154 is not set
353# CONFIG_NET_SCHED is not set 376# CONFIG_NET_SCHED is not set
354# CONFIG_DCB is not set 377# CONFIG_DCB is not set
355 378
@@ -375,6 +398,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
375# Generic Driver Options 398# Generic Driver Options
376# 399#
377CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 400CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
401# CONFIG_DEVTMPFS is not set
378CONFIG_STANDALONE=y 402CONFIG_STANDALONE=y
379CONFIG_PREVENT_FIRMWARE_BUILD=y 403CONFIG_PREVENT_FIRMWARE_BUILD=y
380# CONFIG_FW_LOADER is not set 404# CONFIG_FW_LOADER is not set
@@ -382,9 +406,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
382# CONFIG_CONNECTOR is not set 406# CONFIG_CONNECTOR is not set
383CONFIG_MTD=y 407CONFIG_MTD=y
384# CONFIG_MTD_DEBUG is not set 408# CONFIG_MTD_DEBUG is not set
409# CONFIG_MTD_TESTS is not set
385# CONFIG_MTD_CONCAT is not set 410# CONFIG_MTD_CONCAT is not set
386CONFIG_MTD_PARTITIONS=y 411CONFIG_MTD_PARTITIONS=y
387# CONFIG_MTD_TESTS is not set
388# CONFIG_MTD_REDBOOT_PARTS is not set 412# CONFIG_MTD_REDBOOT_PARTS is not set
389CONFIG_MTD_CMDLINE_PARTS=y 413CONFIG_MTD_CMDLINE_PARTS=y
390# CONFIG_MTD_OF_PARTS is not set 414# CONFIG_MTD_OF_PARTS is not set
@@ -467,6 +491,7 @@ CONFIG_MTD_PHYSMAP=y
467# CONFIG_MTD_UBI is not set 491# CONFIG_MTD_UBI is not set
468CONFIG_OF_DEVICE=y 492CONFIG_OF_DEVICE=y
469CONFIG_OF_I2C=y 493CONFIG_OF_I2C=y
494CONFIG_OF_MDIO=y
470# CONFIG_PARPORT is not set 495# CONFIG_PARPORT is not set
471# CONFIG_BLK_DEV is not set 496# CONFIG_BLK_DEV is not set
472# CONFIG_MISC_DEVICES is not set 497# CONFIG_MISC_DEVICES is not set
@@ -492,10 +517,6 @@ CONFIG_BLK_DEV_SD=m
492# CONFIG_BLK_DEV_SR is not set 517# CONFIG_BLK_DEV_SR is not set
493# CONFIG_CHR_DEV_SG is not set 518# CONFIG_CHR_DEV_SG is not set
494# CONFIG_CHR_DEV_SCH is not set 519# CONFIG_CHR_DEV_SCH is not set
495
496#
497# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
498#
499# CONFIG_SCSI_MULTI_LUN is not set 520# CONFIG_SCSI_MULTI_LUN is not set
500# CONFIG_SCSI_CONSTANTS is not set 521# CONFIG_SCSI_CONSTANTS is not set
501# CONFIG_SCSI_LOGGING is not set 522# CONFIG_SCSI_LOGGING is not set
@@ -515,6 +536,7 @@ CONFIG_SCSI_WAIT_SCAN=m
515# CONFIG_SCSI_OSD_INITIATOR is not set 536# CONFIG_SCSI_OSD_INITIATOR is not set
516CONFIG_ATA=m 537CONFIG_ATA=m
517# CONFIG_ATA_NONSTANDARD is not set 538# CONFIG_ATA_NONSTANDARD is not set
539CONFIG_ATA_VERBOSE_ERROR=y
518CONFIG_SATA_PMP=y 540CONFIG_SATA_PMP=y
519# CONFIG_SATA_AHCI is not set 541# CONFIG_SATA_AHCI is not set
520# CONFIG_SATA_SIL24 is not set 542# CONFIG_SATA_SIL24 is not set
@@ -536,6 +558,7 @@ CONFIG_ATA_SFF=y
536# CONFIG_PATA_ALI is not set 558# CONFIG_PATA_ALI is not set
537# CONFIG_PATA_AMD is not set 559# CONFIG_PATA_AMD is not set
538# CONFIG_PATA_ARTOP is not set 560# CONFIG_PATA_ARTOP is not set
561# CONFIG_PATA_ATP867X is not set
539# CONFIG_PATA_ATIIXP is not set 562# CONFIG_PATA_ATIIXP is not set
540# CONFIG_PATA_CMD640_PCI is not set 563# CONFIG_PATA_CMD640_PCI is not set
541# CONFIG_PATA_CMD64X is not set 564# CONFIG_PATA_CMD64X is not set
@@ -564,6 +587,7 @@ CONFIG_PATA_MPC52xx=m
564# CONFIG_PATA_OPTIDMA is not set 587# CONFIG_PATA_OPTIDMA is not set
565# CONFIG_PATA_PDC_OLD is not set 588# CONFIG_PATA_PDC_OLD is not set
566# CONFIG_PATA_RADISYS is not set 589# CONFIG_PATA_RADISYS is not set
590# CONFIG_PATA_RDC is not set
567# CONFIG_PATA_RZ1000 is not set 591# CONFIG_PATA_RZ1000 is not set
568# CONFIG_PATA_SC1200 is not set 592# CONFIG_PATA_SC1200 is not set
569# CONFIG_PATA_SERVERWORKS is not set 593# CONFIG_PATA_SERVERWORKS is not set
@@ -582,14 +606,17 @@ CONFIG_PATA_MPC52xx=m
582# 606#
583 607
584# 608#
585# Enable only one of the two stacks, unless you know what you are doing 609# You can enable one or both FireWire driver stacks.
610#
611
612#
613# See the help texts for more information.
586# 614#
587# CONFIG_FIREWIRE is not set 615# CONFIG_FIREWIRE is not set
588# CONFIG_IEEE1394 is not set 616# CONFIG_IEEE1394 is not set
589# CONFIG_I2O is not set 617# CONFIG_I2O is not set
590# CONFIG_MACINTOSH_DRIVERS is not set 618# CONFIG_MACINTOSH_DRIVERS is not set
591CONFIG_NETDEVICES=y 619CONFIG_NETDEVICES=y
592CONFIG_COMPAT_NET_DEV_OPS=y
593# CONFIG_DUMMY is not set 620# CONFIG_DUMMY is not set
594# CONFIG_BONDING is not set 621# CONFIG_BONDING is not set
595# CONFIG_MACVLAN is not set 622# CONFIG_MACVLAN is not set
@@ -636,16 +663,16 @@ CONFIG_MII=y
636# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 663# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
637# CONFIG_NET_PCI is not set 664# CONFIG_NET_PCI is not set
638# CONFIG_B44 is not set 665# CONFIG_B44 is not set
666# CONFIG_KS8842 is not set
667# CONFIG_KS8851_MLL is not set
639CONFIG_FEC_MPC52xx=y 668CONFIG_FEC_MPC52xx=y
640CONFIG_FEC_MPC52xx_MDIO=y 669CONFIG_FEC_MPC52xx_MDIO=y
641# CONFIG_ATL2 is not set 670# CONFIG_ATL2 is not set
671# CONFIG_XILINX_EMACLITE is not set
642# CONFIG_NETDEV_1000 is not set 672# CONFIG_NETDEV_1000 is not set
643# CONFIG_NETDEV_10000 is not set 673# CONFIG_NETDEV_10000 is not set
644# CONFIG_TR is not set 674# CONFIG_TR is not set
645 675CONFIG_WLAN=y
646#
647# Wireless LAN
648#
649# CONFIG_WLAN_PRE80211 is not set 676# CONFIG_WLAN_PRE80211 is not set
650# CONFIG_WLAN_80211 is not set 677# CONFIG_WLAN_80211 is not set
651 678
@@ -722,6 +749,7 @@ CONFIG_HW_RANDOM=y
722CONFIG_DEVPORT=y 749CONFIG_DEVPORT=y
723CONFIG_I2C=y 750CONFIG_I2C=y
724CONFIG_I2C_BOARDINFO=y 751CONFIG_I2C_BOARDINFO=y
752CONFIG_I2C_COMPAT=y
725CONFIG_I2C_CHARDEV=y 753CONFIG_I2C_CHARDEV=y
726CONFIG_I2C_HELPER_AUTO=y 754CONFIG_I2C_HELPER_AUTO=y
727 755
@@ -750,6 +778,7 @@ CONFIG_I2C_HELPER_AUTO=y
750# 778#
751# I2C system bus drivers (mostly embedded / system-on-chip) 779# I2C system bus drivers (mostly embedded / system-on-chip)
752# 780#
781# CONFIG_I2C_DESIGNWARE is not set
753CONFIG_I2C_MPC=y 782CONFIG_I2C_MPC=y
754# CONFIG_I2C_OCORES is not set 783# CONFIG_I2C_OCORES is not set
755# CONFIG_I2C_SIMTEC is not set 784# CONFIG_I2C_SIMTEC is not set
@@ -776,23 +805,23 @@ CONFIG_I2C_MPC=y
776# Miscellaneous I2C Chip support 805# Miscellaneous I2C Chip support
777# 806#
778# CONFIG_DS1682 is not set 807# CONFIG_DS1682 is not set
779# CONFIG_SENSORS_PCF8574 is not set
780# CONFIG_PCF8575 is not set
781# CONFIG_SENSORS_PCA9539 is not set
782# CONFIG_SENSORS_MAX6875 is not set
783# CONFIG_SENSORS_TSL2550 is not set 808# CONFIG_SENSORS_TSL2550 is not set
784# CONFIG_I2C_DEBUG_CORE is not set 809# CONFIG_I2C_DEBUG_CORE is not set
785# CONFIG_I2C_DEBUG_ALGO is not set 810# CONFIG_I2C_DEBUG_ALGO is not set
786# CONFIG_I2C_DEBUG_BUS is not set 811# CONFIG_I2C_DEBUG_BUS is not set
787# CONFIG_I2C_DEBUG_CHIP is not set 812# CONFIG_I2C_DEBUG_CHIP is not set
788# CONFIG_SPI is not set 813# CONFIG_SPI is not set
814
815#
816# PPS support
817#
818# CONFIG_PPS is not set
789CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 819CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
790# CONFIG_GPIOLIB is not set 820# CONFIG_GPIOLIB is not set
791# CONFIG_W1 is not set 821# CONFIG_W1 is not set
792# CONFIG_POWER_SUPPLY is not set 822# CONFIG_POWER_SUPPLY is not set
793# CONFIG_HWMON is not set 823# CONFIG_HWMON is not set
794# CONFIG_THERMAL is not set 824# CONFIG_THERMAL is not set
795# CONFIG_THERMAL_HWMON is not set
796# CONFIG_WATCHDOG is not set 825# CONFIG_WATCHDOG is not set
797CONFIG_SSB_POSSIBLE=y 826CONFIG_SSB_POSSIBLE=y
798 827
@@ -811,30 +840,18 @@ CONFIG_SSB_POSSIBLE=y
811# CONFIG_MFD_TMIO is not set 840# CONFIG_MFD_TMIO is not set
812# CONFIG_PMIC_DA903X is not set 841# CONFIG_PMIC_DA903X is not set
813# CONFIG_MFD_WM8400 is not set 842# CONFIG_MFD_WM8400 is not set
843# CONFIG_MFD_WM831X is not set
814# CONFIG_MFD_WM8350_I2C is not set 844# CONFIG_MFD_WM8350_I2C is not set
815# CONFIG_MFD_PCF50633 is not set 845# CONFIG_MFD_PCF50633 is not set
846# CONFIG_AB3100_CORE is not set
816# CONFIG_REGULATOR is not set 847# CONFIG_REGULATOR is not set
817 848# CONFIG_MEDIA_SUPPORT is not set
818#
819# Multimedia devices
820#
821
822#
823# Multimedia core support
824#
825# CONFIG_VIDEO_DEV is not set
826# CONFIG_DVB_CORE is not set
827# CONFIG_VIDEO_MEDIA is not set
828
829#
830# Multimedia drivers
831#
832# CONFIG_DAB is not set
833 849
834# 850#
835# Graphics support 851# Graphics support
836# 852#
837# CONFIG_AGP is not set 853# CONFIG_AGP is not set
854CONFIG_VGA_ARB=y
838# CONFIG_DRM is not set 855# CONFIG_DRM is not set
839# CONFIG_VGASTATE is not set 856# CONFIG_VGASTATE is not set
840# CONFIG_VIDEO_OUTPUT_CONTROL is not set 857# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -871,15 +888,17 @@ CONFIG_USB_DEVICEFS=y
871# USB Host Controller Drivers 888# USB Host Controller Drivers
872# 889#
873# CONFIG_USB_C67X00_HCD is not set 890# CONFIG_USB_C67X00_HCD is not set
891# CONFIG_USB_XHCI_HCD is not set
874# CONFIG_USB_EHCI_HCD is not set 892# CONFIG_USB_EHCI_HCD is not set
875# CONFIG_USB_OXU210HP_HCD is not set 893# CONFIG_USB_OXU210HP_HCD is not set
876# CONFIG_USB_ISP116X_HCD is not set 894# CONFIG_USB_ISP116X_HCD is not set
877# CONFIG_USB_ISP1760_HCD is not set 895# CONFIG_USB_ISP1760_HCD is not set
896# CONFIG_USB_ISP1362_HCD is not set
878CONFIG_USB_OHCI_HCD=m 897CONFIG_USB_OHCI_HCD=m
879# CONFIG_USB_OHCI_HCD_PPC_SOC is not set 898# CONFIG_USB_OHCI_HCD_PPC_SOC is not set
880CONFIG_USB_OHCI_HCD_PPC_OF=y
881CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 899CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
882# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 900# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
901CONFIG_USB_OHCI_HCD_PPC_OF=y
883# CONFIG_USB_OHCI_HCD_PCI is not set 902# CONFIG_USB_OHCI_HCD_PCI is not set
884CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y 903CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
885CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y 904CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
@@ -995,6 +1014,7 @@ CONFIG_RTC_DRV_PCF8563=m
995# CONFIG_RTC_DRV_S35390A is not set 1014# CONFIG_RTC_DRV_S35390A is not set
996# CONFIG_RTC_DRV_FM3130 is not set 1015# CONFIG_RTC_DRV_FM3130 is not set
997# CONFIG_RTC_DRV_RX8581 is not set 1016# CONFIG_RTC_DRV_RX8581 is not set
1017# CONFIG_RTC_DRV_RX8025 is not set
998 1018
999# 1019#
1000# SPI RTC drivers 1020# SPI RTC drivers
@@ -1022,6 +1042,10 @@ CONFIG_RTC_DRV_PCF8563=m
1022# CONFIG_DMADEVICES is not set 1042# CONFIG_DMADEVICES is not set
1023# CONFIG_AUXDISPLAY is not set 1043# CONFIG_AUXDISPLAY is not set
1024# CONFIG_UIO is not set 1044# CONFIG_UIO is not set
1045
1046#
1047# TI VLYNQ
1048#
1025# CONFIG_STAGING is not set 1049# CONFIG_STAGING is not set
1026 1050
1027# 1051#
@@ -1041,12 +1065,16 @@ CONFIG_FS_MBCACHE=m
1041# CONFIG_REISERFS_FS is not set 1065# CONFIG_REISERFS_FS is not set
1042# CONFIG_JFS_FS is not set 1066# CONFIG_JFS_FS is not set
1043# CONFIG_FS_POSIX_ACL is not set 1067# CONFIG_FS_POSIX_ACL is not set
1044CONFIG_FILE_LOCKING=y
1045# CONFIG_XFS_FS is not set 1068# CONFIG_XFS_FS is not set
1069# CONFIG_GFS2_FS is not set
1046# CONFIG_OCFS2_FS is not set 1070# CONFIG_OCFS2_FS is not set
1047# CONFIG_BTRFS_FS is not set 1071# CONFIG_BTRFS_FS is not set
1072# CONFIG_NILFS2_FS is not set
1073CONFIG_FILE_LOCKING=y
1074CONFIG_FSNOTIFY=y
1048# CONFIG_DNOTIFY is not set 1075# CONFIG_DNOTIFY is not set
1049# CONFIG_INOTIFY is not set 1076# CONFIG_INOTIFY is not set
1077CONFIG_INOTIFY_USER=y
1050# CONFIG_QUOTA is not set 1078# CONFIG_QUOTA is not set
1051# CONFIG_AUTOFS_FS is not set 1079# CONFIG_AUTOFS_FS is not set
1052# CONFIG_AUTOFS4_FS is not set 1080# CONFIG_AUTOFS4_FS is not set
@@ -1114,7 +1142,6 @@ CONFIG_JFFS2_RTIME=y
1114# CONFIG_ROMFS_FS is not set 1142# CONFIG_ROMFS_FS is not set
1115# CONFIG_SYSV_FS is not set 1143# CONFIG_SYSV_FS is not set
1116# CONFIG_UFS_FS is not set 1144# CONFIG_UFS_FS is not set
1117# CONFIG_NILFS2_FS is not set
1118CONFIG_NETWORK_FILESYSTEMS=y 1145CONFIG_NETWORK_FILESYSTEMS=y
1119CONFIG_NFS_FS=y 1146CONFIG_NFS_FS=y
1120CONFIG_NFS_V3=y 1147CONFIG_NFS_V3=y
@@ -1201,6 +1228,7 @@ CONFIG_HAS_IOPORT=y
1201CONFIG_HAS_DMA=y 1228CONFIG_HAS_DMA=y
1202CONFIG_HAVE_LMB=y 1229CONFIG_HAVE_LMB=y
1203CONFIG_NLATTR=y 1230CONFIG_NLATTR=y
1231CONFIG_GENERIC_ATOMIC64=y
1204 1232
1205# 1233#
1206# Kernel hacking 1234# Kernel hacking
@@ -1210,6 +1238,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1210CONFIG_ENABLE_MUST_CHECK=y 1238CONFIG_ENABLE_MUST_CHECK=y
1211CONFIG_FRAME_WARN=1024 1239CONFIG_FRAME_WARN=1024
1212# CONFIG_MAGIC_SYSRQ is not set 1240# CONFIG_MAGIC_SYSRQ is not set
1241# CONFIG_STRIP_ASM_SYMS is not set
1213# CONFIG_UNUSED_SYMBOLS is not set 1242# CONFIG_UNUSED_SYMBOLS is not set
1214# CONFIG_DEBUG_FS is not set 1243# CONFIG_DEBUG_FS is not set
1215# CONFIG_HEADERS_CHECK is not set 1244# CONFIG_HEADERS_CHECK is not set
@@ -1223,23 +1252,12 @@ CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1223CONFIG_HAVE_DYNAMIC_FTRACE=y 1252CONFIG_HAVE_DYNAMIC_FTRACE=y
1224CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1253CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1225CONFIG_TRACING_SUPPORT=y 1254CONFIG_TRACING_SUPPORT=y
1226 1255# CONFIG_FTRACE is not set
1227# 1256# CONFIG_DMA_API_DEBUG is not set
1228# Tracers
1229#
1230# CONFIG_FUNCTION_TRACER is not set
1231# CONFIG_PREEMPT_TRACER is not set
1232# CONFIG_SCHED_TRACER is not set
1233# CONFIG_CONTEXT_SWITCH_TRACER is not set
1234# CONFIG_EVENT_TRACER is not set
1235# CONFIG_BOOT_TRACER is not set
1236# CONFIG_TRACE_BRANCH_PROFILING is not set
1237# CONFIG_STACK_TRACER is not set
1238# CONFIG_KMEMTRACE is not set
1239# CONFIG_WORKQUEUE_TRACER is not set
1240# CONFIG_BLK_DEV_IO_TRACE is not set
1241# CONFIG_SAMPLES is not set 1257# CONFIG_SAMPLES is not set
1242CONFIG_HAVE_ARCH_KGDB=y 1258CONFIG_HAVE_ARCH_KGDB=y
1259# CONFIG_PPC_DISABLE_WERROR is not set
1260CONFIG_PPC_WERROR=y
1243CONFIG_PRINT_STACK_DEPTH=64 1261CONFIG_PRINT_STACK_DEPTH=64
1244# CONFIG_IRQSTACKS is not set 1262# CONFIG_IRQSTACKS is not set
1245# CONFIG_BOOTX_TEXT is not set 1263# CONFIG_BOOTX_TEXT is not set
diff --git a/arch/powerpc/configs/52xx/tqm5200_defconfig b/arch/powerpc/configs/52xx/tqm5200_defconfig
index 8585c7c12861..75c835c2ae66 100644
--- a/arch/powerpc/configs/52xx/tqm5200_defconfig
+++ b/arch/powerpc/configs/52xx/tqm5200_defconfig
@@ -1,25 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.30-rc2 3# Linux kernel version: 2.6.32-rc4
4# Sat Apr 18 00:48:57 2009 4# Thu Oct 15 10:33:23 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
8# 8#
9# Processor support 9# Processor support
10# 10#
11CONFIG_6xx=y 11CONFIG_PPC_BOOK3S_32=y
12# CONFIG_PPC_85xx is not set 12# CONFIG_PPC_85xx is not set
13# CONFIG_PPC_8xx is not set 13# CONFIG_PPC_8xx is not set
14# CONFIG_40x is not set 14# CONFIG_40x is not set
15# CONFIG_44x is not set 15# CONFIG_44x is not set
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_PPC_BOOK3S=y 17CONFIG_PPC_BOOK3S=y
18CONFIG_6xx=y
18CONFIG_PPC_FPU=y 19CONFIG_PPC_FPU=y
19# CONFIG_ALTIVEC is not set 20# CONFIG_ALTIVEC is not set
20CONFIG_PPC_STD_MMU=y 21CONFIG_PPC_STD_MMU=y
21CONFIG_PPC_STD_MMU_32=y 22CONFIG_PPC_STD_MMU_32=y
22# CONFIG_PPC_MM_SLICES is not set 23# CONFIG_PPC_MM_SLICES is not set
24CONFIG_PPC_HAVE_PMU_SUPPORT=y
23# CONFIG_SMP is not set 25# CONFIG_SMP is not set
24CONFIG_PPC32=y 26CONFIG_PPC32=y
25CONFIG_WORD_SIZE=32 27CONFIG_WORD_SIZE=32
@@ -30,15 +32,17 @@ CONFIG_GENERIC_TIME=y
30CONFIG_GENERIC_TIME_VSYSCALL=y 32CONFIG_GENERIC_TIME_VSYSCALL=y
31CONFIG_GENERIC_CLOCKEVENTS=y 33CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
34CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y 39CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_HAVE_LATENCYTOP_SUPPORT=y 40CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y
37CONFIG_LOCKDEP_SUPPORT=y 42CONFIG_LOCKDEP_SUPPORT=y
38CONFIG_RWSEM_XCHGADD_ALGORITHM=y 43CONFIG_RWSEM_XCHGADD_ALGORITHM=y
39CONFIG_ARCH_HAS_ILOG2_U32=y 44CONFIG_ARCH_HAS_ILOG2_U32=y
40CONFIG_GENERIC_HWEIGHT=y 45CONFIG_GENERIC_HWEIGHT=y
41CONFIG_GENERIC_CALIBRATE_DELAY=y
42CONFIG_GENERIC_FIND_NEXT_BIT=y 46CONFIG_GENERIC_FIND_NEXT_BIT=y
43# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 47# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
44CONFIG_PPC=y 48CONFIG_PPC=y
@@ -52,11 +56,13 @@ CONFIG_OF=y
52# CONFIG_GENERIC_TBSYNC is not set 56# CONFIG_GENERIC_TBSYNC is not set
53CONFIG_AUDIT_ARCH=y 57CONFIG_AUDIT_ARCH=y
54CONFIG_GENERIC_BUG=y 58CONFIG_GENERIC_BUG=y
59CONFIG_DTC=y
55CONFIG_DEFAULT_UIMAGE=y 60CONFIG_DEFAULT_UIMAGE=y
56# CONFIG_PPC_DCR_NATIVE is not set 61# CONFIG_PPC_DCR_NATIVE is not set
57# CONFIG_PPC_DCR_MMIO is not set 62# CONFIG_PPC_DCR_MMIO is not set
58CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 63CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
59CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 64CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
65CONFIG_CONSTRUCTORS=y
60 66
61# 67#
62# General setup 68# General setup
@@ -77,11 +83,12 @@ CONFIG_SYSVIPC_SYSCTL=y
77# 83#
78# RCU Subsystem 84# RCU Subsystem
79# 85#
80CONFIG_CLASSIC_RCU=y 86CONFIG_TREE_RCU=y
81# CONFIG_TREE_RCU is not set 87# CONFIG_TREE_PREEMPT_RCU is not set
82# CONFIG_PREEMPT_RCU is not set 88# CONFIG_RCU_TRACE is not set
89CONFIG_RCU_FANOUT=32
90# CONFIG_RCU_FANOUT_EXACT is not set
83# CONFIG_TREE_RCU_TRACE is not set 91# CONFIG_TREE_RCU_TRACE is not set
84# CONFIG_PREEMPT_RCU_TRACE is not set
85# CONFIG_IKCONFIG is not set 92# CONFIG_IKCONFIG is not set
86CONFIG_LOG_BUF_SHIFT=14 93CONFIG_LOG_BUF_SHIFT=14
87CONFIG_GROUP_SCHED=y 94CONFIG_GROUP_SCHED=y
@@ -105,7 +112,6 @@ CONFIG_ANON_INODES=y
105CONFIG_EMBEDDED=y 112CONFIG_EMBEDDED=y
106# CONFIG_SYSCTL_SYSCALL is not set 113# CONFIG_SYSCTL_SYSCALL is not set
107# CONFIG_KALLSYMS is not set 114# CONFIG_KALLSYMS is not set
108# CONFIG_STRIP_ASM_SYMS is not set
109CONFIG_HOTPLUG=y 115CONFIG_HOTPLUG=y
110CONFIG_PRINTK=y 116CONFIG_PRINTK=y
111CONFIG_BUG=y 117CONFIG_BUG=y
@@ -118,6 +124,13 @@ CONFIG_TIMERFD=y
118CONFIG_EVENTFD=y 124CONFIG_EVENTFD=y
119CONFIG_SHMEM=y 125CONFIG_SHMEM=y
120CONFIG_AIO=y 126CONFIG_AIO=y
127CONFIG_HAVE_PERF_EVENTS=y
128
129#
130# Kernel Performance Events And Counters
131#
132# CONFIG_PERF_EVENTS is not set
133# CONFIG_PERF_COUNTERS is not set
121CONFIG_VM_EVENT_COUNTERS=y 134CONFIG_VM_EVENT_COUNTERS=y
122CONFIG_SLUB_DEBUG=y 135CONFIG_SLUB_DEBUG=y
123CONFIG_COMPAT_BRK=y 136CONFIG_COMPAT_BRK=y
@@ -125,14 +138,19 @@ CONFIG_COMPAT_BRK=y
125CONFIG_SLUB=y 138CONFIG_SLUB=y
126# CONFIG_SLOB is not set 139# CONFIG_SLOB is not set
127# CONFIG_PROFILING is not set 140# CONFIG_PROFILING is not set
128# CONFIG_MARKERS is not set
129CONFIG_HAVE_OPROFILE=y 141CONFIG_HAVE_OPROFILE=y
130CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 142CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
131CONFIG_HAVE_IOREMAP_PROT=y 143CONFIG_HAVE_IOREMAP_PROT=y
132CONFIG_HAVE_KPROBES=y 144CONFIG_HAVE_KPROBES=y
133CONFIG_HAVE_KRETPROBES=y 145CONFIG_HAVE_KRETPROBES=y
134CONFIG_HAVE_ARCH_TRACEHOOK=y 146CONFIG_HAVE_ARCH_TRACEHOOK=y
147CONFIG_HAVE_DMA_ATTRS=y
135CONFIG_HAVE_CLK=y 148CONFIG_HAVE_CLK=y
149CONFIG_HAVE_DMA_API_DEBUG=y
150
151#
152# GCOV-based kernel profiling
153#
136# CONFIG_SLOW_WORK is not set 154# CONFIG_SLOW_WORK is not set
137# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 155# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
138CONFIG_SLABINFO=y 156CONFIG_SLABINFO=y
@@ -145,7 +163,7 @@ CONFIG_MODULE_UNLOAD=y
145CONFIG_MODVERSIONS=y 163CONFIG_MODVERSIONS=y
146# CONFIG_MODULE_SRCVERSION_ALL is not set 164# CONFIG_MODULE_SRCVERSION_ALL is not set
147CONFIG_BLOCK=y 165CONFIG_BLOCK=y
148# CONFIG_LBD is not set 166CONFIG_LBDAF=y
149# CONFIG_BLK_DEV_BSG is not set 167# CONFIG_BLK_DEV_BSG is not set
150# CONFIG_BLK_DEV_INTEGRITY is not set 168# CONFIG_BLK_DEV_INTEGRITY is not set
151 169
@@ -225,11 +243,13 @@ CONFIG_BINFMT_ELF=y
225# CONFIG_HAVE_AOUT is not set 243# CONFIG_HAVE_AOUT is not set
226# CONFIG_BINFMT_MISC is not set 244# CONFIG_BINFMT_MISC is not set
227# CONFIG_IOMMU_HELPER is not set 245# CONFIG_IOMMU_HELPER is not set
246# CONFIG_SWIOTLB is not set
228CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 247CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
229CONFIG_ARCH_HAS_WALK_MEMORY=y 248CONFIG_ARCH_HAS_WALK_MEMORY=y
230CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 249CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
231# CONFIG_KEXEC is not set 250# CONFIG_KEXEC is not set
232# CONFIG_CRASH_DUMP is not set 251# CONFIG_CRASH_DUMP is not set
252CONFIG_MAX_ACTIVE_REGIONS=32
233CONFIG_ARCH_FLATMEM_ENABLE=y 253CONFIG_ARCH_FLATMEM_ENABLE=y
234CONFIG_ARCH_POPULATES_NODE_MAP=y 254CONFIG_ARCH_POPULATES_NODE_MAP=y
235CONFIG_SELECT_MEMORY_MODEL=y 255CONFIG_SELECT_MEMORY_MODEL=y
@@ -245,9 +265,10 @@ CONFIG_MIGRATION=y
245CONFIG_ZONE_DMA_FLAG=1 265CONFIG_ZONE_DMA_FLAG=1
246CONFIG_BOUNCE=y 266CONFIG_BOUNCE=y
247CONFIG_VIRT_TO_BUS=y 267CONFIG_VIRT_TO_BUS=y
248CONFIG_UNEVICTABLE_LRU=y
249CONFIG_HAVE_MLOCK=y 268CONFIG_HAVE_MLOCK=y
250CONFIG_HAVE_MLOCKED_PAGE_BIT=y 269CONFIG_HAVE_MLOCKED_PAGE_BIT=y
270# CONFIG_KSM is not set
271CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
251CONFIG_PPC_4K_PAGES=y 272CONFIG_PPC_4K_PAGES=y
252# CONFIG_PPC_16K_PAGES is not set 273# CONFIG_PPC_16K_PAGES is not set
253# CONFIG_PPC_64K_PAGES is not set 274# CONFIG_PPC_64K_PAGES is not set
@@ -258,6 +279,7 @@ CONFIG_PROC_DEVICETREE=y
258CONFIG_EXTRA_TARGETS="" 279CONFIG_EXTRA_TARGETS=""
259CONFIG_PM=y 280CONFIG_PM=y
260# CONFIG_PM_DEBUG is not set 281# CONFIG_PM_DEBUG is not set
282# CONFIG_PM_RUNTIME is not set
261CONFIG_SECCOMP=y 283CONFIG_SECCOMP=y
262CONFIG_ISA_DMA_API=y 284CONFIG_ISA_DMA_API=y
263 285
@@ -334,6 +356,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
334# CONFIG_NETFILTER is not set 356# CONFIG_NETFILTER is not set
335# CONFIG_IP_DCCP is not set 357# CONFIG_IP_DCCP is not set
336# CONFIG_IP_SCTP is not set 358# CONFIG_IP_SCTP is not set
359# CONFIG_RDS is not set
337# CONFIG_TIPC is not set 360# CONFIG_TIPC is not set
338# CONFIG_ATM is not set 361# CONFIG_ATM is not set
339# CONFIG_BRIDGE is not set 362# CONFIG_BRIDGE is not set
@@ -348,6 +371,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
348# CONFIG_ECONET is not set 371# CONFIG_ECONET is not set
349# CONFIG_WAN_ROUTER is not set 372# CONFIG_WAN_ROUTER is not set
350# CONFIG_PHONET is not set 373# CONFIG_PHONET is not set
374# CONFIG_IEEE802154 is not set
351# CONFIG_NET_SCHED is not set 375# CONFIG_NET_SCHED is not set
352# CONFIG_DCB is not set 376# CONFIG_DCB is not set
353 377
@@ -373,6 +397,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
373# Generic Driver Options 397# Generic Driver Options
374# 398#
375CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 399CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
400# CONFIG_DEVTMPFS is not set
376CONFIG_STANDALONE=y 401CONFIG_STANDALONE=y
377CONFIG_PREVENT_FIRMWARE_BUILD=y 402CONFIG_PREVENT_FIRMWARE_BUILD=y
378# CONFIG_FW_LOADER is not set 403# CONFIG_FW_LOADER is not set
@@ -382,9 +407,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
382# CONFIG_CONNECTOR is not set 407# CONFIG_CONNECTOR is not set
383CONFIG_MTD=y 408CONFIG_MTD=y
384# CONFIG_MTD_DEBUG is not set 409# CONFIG_MTD_DEBUG is not set
410# CONFIG_MTD_TESTS is not set
385CONFIG_MTD_CONCAT=y 411CONFIG_MTD_CONCAT=y
386CONFIG_MTD_PARTITIONS=y 412CONFIG_MTD_PARTITIONS=y
387# CONFIG_MTD_TESTS is not set
388# CONFIG_MTD_REDBOOT_PARTS is not set 413# CONFIG_MTD_REDBOOT_PARTS is not set
389CONFIG_MTD_CMDLINE_PARTS=y 414CONFIG_MTD_CMDLINE_PARTS=y
390# CONFIG_MTD_OF_PARTS is not set 415# CONFIG_MTD_OF_PARTS is not set
@@ -464,6 +489,7 @@ CONFIG_MTD_PHYSMAP_OF=y
464# CONFIG_MTD_UBI is not set 489# CONFIG_MTD_UBI is not set
465CONFIG_OF_DEVICE=y 490CONFIG_OF_DEVICE=y
466CONFIG_OF_I2C=y 491CONFIG_OF_I2C=y
492CONFIG_OF_MDIO=y
467# CONFIG_PARPORT is not set 493# CONFIG_PARPORT is not set
468CONFIG_BLK_DEV=y 494CONFIG_BLK_DEV=y
469# CONFIG_BLK_DEV_FD is not set 495# CONFIG_BLK_DEV_FD is not set
@@ -502,10 +528,6 @@ CONFIG_BLK_DEV_SD=y
502# CONFIG_BLK_DEV_SR is not set 528# CONFIG_BLK_DEV_SR is not set
503CONFIG_CHR_DEV_SG=y 529CONFIG_CHR_DEV_SG=y
504# CONFIG_CHR_DEV_SCH is not set 530# CONFIG_CHR_DEV_SCH is not set
505
506#
507# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
508#
509# CONFIG_SCSI_MULTI_LUN is not set 531# CONFIG_SCSI_MULTI_LUN is not set
510# CONFIG_SCSI_CONSTANTS is not set 532# CONFIG_SCSI_CONSTANTS is not set
511# CONFIG_SCSI_LOGGING is not set 533# CONFIG_SCSI_LOGGING is not set
@@ -529,6 +551,7 @@ CONFIG_SCSI_LOWLEVEL=y
529# CONFIG_SCSI_OSD_INITIATOR is not set 551# CONFIG_SCSI_OSD_INITIATOR is not set
530CONFIG_ATA=y 552CONFIG_ATA=y
531# CONFIG_ATA_NONSTANDARD is not set 553# CONFIG_ATA_NONSTANDARD is not set
554CONFIG_ATA_VERBOSE_ERROR=y
532CONFIG_SATA_PMP=y 555CONFIG_SATA_PMP=y
533CONFIG_ATA_SFF=y 556CONFIG_ATA_SFF=y
534# CONFIG_SATA_MV is not set 557# CONFIG_SATA_MV is not set
@@ -538,7 +561,6 @@ CONFIG_PATA_PLATFORM=y
538# CONFIG_MD is not set 561# CONFIG_MD is not set
539# CONFIG_MACINTOSH_DRIVERS is not set 562# CONFIG_MACINTOSH_DRIVERS is not set
540CONFIG_NETDEVICES=y 563CONFIG_NETDEVICES=y
541CONFIG_COMPAT_NET_DEV_OPS=y
542# CONFIG_DUMMY is not set 564# CONFIG_DUMMY is not set
543# CONFIG_BONDING is not set 565# CONFIG_BONDING is not set
544# CONFIG_MACVLAN is not set 566# CONFIG_MACVLAN is not set
@@ -577,14 +599,14 @@ CONFIG_NET_ETHERNET=y
577# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set 599# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
578# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 600# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
579# CONFIG_B44 is not set 601# CONFIG_B44 is not set
602# CONFIG_KS8842 is not set
603# CONFIG_KS8851_MLL is not set
580CONFIG_FEC_MPC52xx=y 604CONFIG_FEC_MPC52xx=y
581CONFIG_FEC_MPC52xx_MDIO=y 605CONFIG_FEC_MPC52xx_MDIO=y
606# CONFIG_XILINX_EMACLITE is not set
582# CONFIG_NETDEV_1000 is not set 607# CONFIG_NETDEV_1000 is not set
583# CONFIG_NETDEV_10000 is not set 608# CONFIG_NETDEV_10000 is not set
584 609CONFIG_WLAN=y
585#
586# Wireless LAN
587#
588# CONFIG_WLAN_PRE80211 is not set 610# CONFIG_WLAN_PRE80211 is not set
589# CONFIG_WLAN_80211 is not set 611# CONFIG_WLAN_80211 is not set
590 612
@@ -654,6 +676,7 @@ CONFIG_LEGACY_PTY_COUNT=256
654# CONFIG_TCG_TPM is not set 676# CONFIG_TCG_TPM is not set
655CONFIG_I2C=y 677CONFIG_I2C=y
656CONFIG_I2C_BOARDINFO=y 678CONFIG_I2C_BOARDINFO=y
679CONFIG_I2C_COMPAT=y
657CONFIG_I2C_CHARDEV=y 680CONFIG_I2C_CHARDEV=y
658CONFIG_I2C_HELPER_AUTO=y 681CONFIG_I2C_HELPER_AUTO=y
659 682
@@ -664,6 +687,7 @@ CONFIG_I2C_HELPER_AUTO=y
664# 687#
665# I2C system bus drivers (mostly embedded / system-on-chip) 688# I2C system bus drivers (mostly embedded / system-on-chip)
666# 689#
690# CONFIG_I2C_DESIGNWARE is not set
667CONFIG_I2C_MPC=y 691CONFIG_I2C_MPC=y
668# CONFIG_I2C_OCORES is not set 692# CONFIG_I2C_OCORES is not set
669# CONFIG_I2C_SIMTEC is not set 693# CONFIG_I2C_SIMTEC is not set
@@ -685,22 +709,28 @@ CONFIG_I2C_MPC=y
685# Miscellaneous I2C Chip support 709# Miscellaneous I2C Chip support
686# 710#
687# CONFIG_DS1682 is not set 711# CONFIG_DS1682 is not set
688# CONFIG_SENSORS_PCF8574 is not set
689# CONFIG_PCF8575 is not set
690# CONFIG_SENSORS_PCA9539 is not set
691# CONFIG_SENSORS_MAX6875 is not set
692# CONFIG_SENSORS_TSL2550 is not set 712# CONFIG_SENSORS_TSL2550 is not set
693# CONFIG_I2C_DEBUG_CORE is not set 713# CONFIG_I2C_DEBUG_CORE is not set
694# CONFIG_I2C_DEBUG_ALGO is not set 714# CONFIG_I2C_DEBUG_ALGO is not set
695# CONFIG_I2C_DEBUG_BUS is not set 715# CONFIG_I2C_DEBUG_BUS is not set
696# CONFIG_I2C_DEBUG_CHIP is not set 716# CONFIG_I2C_DEBUG_CHIP is not set
697# CONFIG_SPI is not set 717# CONFIG_SPI is not set
718
719#
720# PPS support
721#
722# CONFIG_PPS is not set
698CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 723CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
699# CONFIG_GPIOLIB is not set 724# CONFIG_GPIOLIB is not set
700# CONFIG_W1 is not set 725# CONFIG_W1 is not set
701# CONFIG_POWER_SUPPLY is not set 726# CONFIG_POWER_SUPPLY is not set
702CONFIG_HWMON=y 727CONFIG_HWMON=y
703# CONFIG_HWMON_VID is not set 728# CONFIG_HWMON_VID is not set
729# CONFIG_HWMON_DEBUG_CHIP is not set
730
731#
732# Native drivers
733#
704# CONFIG_SENSORS_AD7414 is not set 734# CONFIG_SENSORS_AD7414 is not set
705# CONFIG_SENSORS_AD7418 is not set 735# CONFIG_SENSORS_AD7418 is not set
706# CONFIG_SENSORS_ADM1021 is not set 736# CONFIG_SENSORS_ADM1021 is not set
@@ -747,6 +777,8 @@ CONFIG_HWMON=y
747# CONFIG_SENSORS_SMSC47B397 is not set 777# CONFIG_SENSORS_SMSC47B397 is not set
748# CONFIG_SENSORS_ADS7828 is not set 778# CONFIG_SENSORS_ADS7828 is not set
749# CONFIG_SENSORS_THMC50 is not set 779# CONFIG_SENSORS_THMC50 is not set
780# CONFIG_SENSORS_TMP401 is not set
781# CONFIG_SENSORS_TMP421 is not set
750# CONFIG_SENSORS_VT1211 is not set 782# CONFIG_SENSORS_VT1211 is not set
751# CONFIG_SENSORS_W83781D is not set 783# CONFIG_SENSORS_W83781D is not set
752# CONFIG_SENSORS_W83791D is not set 784# CONFIG_SENSORS_W83791D is not set
@@ -756,9 +788,7 @@ CONFIG_HWMON=y
756# CONFIG_SENSORS_W83L786NG is not set 788# CONFIG_SENSORS_W83L786NG is not set
757# CONFIG_SENSORS_W83627HF is not set 789# CONFIG_SENSORS_W83627HF is not set
758# CONFIG_SENSORS_W83627EHF is not set 790# CONFIG_SENSORS_W83627EHF is not set
759# CONFIG_HWMON_DEBUG_CHIP is not set
760# CONFIG_THERMAL is not set 791# CONFIG_THERMAL is not set
761# CONFIG_THERMAL_HWMON is not set
762CONFIG_WATCHDOG=y 792CONFIG_WATCHDOG=y
763# CONFIG_WATCHDOG_NOWAYOUT is not set 793# CONFIG_WATCHDOG_NOWAYOUT is not set
764 794
@@ -789,25 +819,12 @@ CONFIG_SSB_POSSIBLE=y
789# CONFIG_MFD_TMIO is not set 819# CONFIG_MFD_TMIO is not set
790# CONFIG_PMIC_DA903X is not set 820# CONFIG_PMIC_DA903X is not set
791# CONFIG_MFD_WM8400 is not set 821# CONFIG_MFD_WM8400 is not set
822# CONFIG_MFD_WM831X is not set
792# CONFIG_MFD_WM8350_I2C is not set 823# CONFIG_MFD_WM8350_I2C is not set
793# CONFIG_MFD_PCF50633 is not set 824# CONFIG_MFD_PCF50633 is not set
825# CONFIG_AB3100_CORE is not set
794# CONFIG_REGULATOR is not set 826# CONFIG_REGULATOR is not set
795 827# CONFIG_MEDIA_SUPPORT is not set
796#
797# Multimedia devices
798#
799
800#
801# Multimedia core support
802#
803# CONFIG_VIDEO_DEV is not set
804# CONFIG_DVB_CORE is not set
805# CONFIG_VIDEO_MEDIA is not set
806
807#
808# Multimedia drivers
809#
810# CONFIG_DAB is not set
811 828
812# 829#
813# Graphics support 830# Graphics support
@@ -851,11 +868,12 @@ CONFIG_USB_MON=y
851# CONFIG_USB_OXU210HP_HCD is not set 868# CONFIG_USB_OXU210HP_HCD is not set
852# CONFIG_USB_ISP116X_HCD is not set 869# CONFIG_USB_ISP116X_HCD is not set
853# CONFIG_USB_ISP1760_HCD is not set 870# CONFIG_USB_ISP1760_HCD is not set
871# CONFIG_USB_ISP1362_HCD is not set
854CONFIG_USB_OHCI_HCD=y 872CONFIG_USB_OHCI_HCD=y
855CONFIG_USB_OHCI_HCD_PPC_SOC=y 873CONFIG_USB_OHCI_HCD_PPC_SOC=y
856CONFIG_USB_OHCI_HCD_PPC_OF=y
857CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 874CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
858# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 875# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
876CONFIG_USB_OHCI_HCD_PPC_OF=y
859CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y 877CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
860CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y 878CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
861# CONFIG_USB_OHCI_LITTLE_ENDIAN is not set 879# CONFIG_USB_OHCI_LITTLE_ENDIAN is not set
@@ -969,6 +987,7 @@ CONFIG_RTC_DRV_DS1307=y
969# CONFIG_RTC_DRV_S35390A is not set 987# CONFIG_RTC_DRV_S35390A is not set
970# CONFIG_RTC_DRV_FM3130 is not set 988# CONFIG_RTC_DRV_FM3130 is not set
971# CONFIG_RTC_DRV_RX8581 is not set 989# CONFIG_RTC_DRV_RX8581 is not set
990# CONFIG_RTC_DRV_RX8025 is not set
972 991
973# 992#
974# SPI RTC drivers 993# SPI RTC drivers
@@ -996,6 +1015,10 @@ CONFIG_RTC_DRV_DS1307=y
996# CONFIG_DMADEVICES is not set 1015# CONFIG_DMADEVICES is not set
997# CONFIG_AUXDISPLAY is not set 1016# CONFIG_AUXDISPLAY is not set
998# CONFIG_UIO is not set 1017# CONFIG_UIO is not set
1018
1019#
1020# TI VLYNQ
1021#
999# CONFIG_STAGING is not set 1022# CONFIG_STAGING is not set
1000 1023
1001# 1024#
@@ -1015,10 +1038,13 @@ CONFIG_FS_MBCACHE=y
1015# CONFIG_REISERFS_FS is not set 1038# CONFIG_REISERFS_FS is not set
1016# CONFIG_JFS_FS is not set 1039# CONFIG_JFS_FS is not set
1017# CONFIG_FS_POSIX_ACL is not set 1040# CONFIG_FS_POSIX_ACL is not set
1018CONFIG_FILE_LOCKING=y
1019# CONFIG_XFS_FS is not set 1041# CONFIG_XFS_FS is not set
1042# CONFIG_GFS2_FS is not set
1020# CONFIG_OCFS2_FS is not set 1043# CONFIG_OCFS2_FS is not set
1021# CONFIG_BTRFS_FS is not set 1044# CONFIG_BTRFS_FS is not set
1045# CONFIG_NILFS2_FS is not set
1046CONFIG_FILE_LOCKING=y
1047CONFIG_FSNOTIFY=y
1022CONFIG_DNOTIFY=y 1048CONFIG_DNOTIFY=y
1023CONFIG_INOTIFY=y 1049CONFIG_INOTIFY=y
1024CONFIG_INOTIFY_USER=y 1050CONFIG_INOTIFY_USER=y
@@ -1089,12 +1115,12 @@ CONFIG_CRAMFS=y
1089# CONFIG_ROMFS_FS is not set 1115# CONFIG_ROMFS_FS is not set
1090# CONFIG_SYSV_FS is not set 1116# CONFIG_SYSV_FS is not set
1091# CONFIG_UFS_FS is not set 1117# CONFIG_UFS_FS is not set
1092# CONFIG_NILFS2_FS is not set
1093CONFIG_NETWORK_FILESYSTEMS=y 1118CONFIG_NETWORK_FILESYSTEMS=y
1094CONFIG_NFS_FS=y 1119CONFIG_NFS_FS=y
1095CONFIG_NFS_V3=y 1120CONFIG_NFS_V3=y
1096# CONFIG_NFS_V3_ACL is not set 1121# CONFIG_NFS_V3_ACL is not set
1097CONFIG_NFS_V4=y 1122CONFIG_NFS_V4=y
1123# CONFIG_NFS_V4_1 is not set
1098CONFIG_ROOT_NFS=y 1124CONFIG_ROOT_NFS=y
1099# CONFIG_NFSD is not set 1125# CONFIG_NFSD is not set
1100CONFIG_LOCKD=y 1126CONFIG_LOCKD=y
@@ -1194,6 +1220,7 @@ CONFIG_HAS_IOPORT=y
1194CONFIG_HAS_DMA=y 1220CONFIG_HAS_DMA=y
1195CONFIG_HAVE_LMB=y 1221CONFIG_HAVE_LMB=y
1196CONFIG_NLATTR=y 1222CONFIG_NLATTR=y
1223CONFIG_GENERIC_ATOMIC64=y
1197 1224
1198# 1225#
1199# Kernel hacking 1226# Kernel hacking
@@ -1203,6 +1230,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1203CONFIG_ENABLE_MUST_CHECK=y 1230CONFIG_ENABLE_MUST_CHECK=y
1204CONFIG_FRAME_WARN=1024 1231CONFIG_FRAME_WARN=1024
1205# CONFIG_MAGIC_SYSRQ is not set 1232# CONFIG_MAGIC_SYSRQ is not set
1233# CONFIG_STRIP_ASM_SYMS is not set
1206# CONFIG_UNUSED_SYMBOLS is not set 1234# CONFIG_UNUSED_SYMBOLS is not set
1207# CONFIG_DEBUG_FS is not set 1235# CONFIG_DEBUG_FS is not set
1208# CONFIG_HEADERS_CHECK is not set 1236# CONFIG_HEADERS_CHECK is not set
@@ -1220,10 +1248,14 @@ CONFIG_SCHED_DEBUG=y
1220# CONFIG_DEBUG_OBJECTS is not set 1248# CONFIG_DEBUG_OBJECTS is not set
1221# CONFIG_SLUB_DEBUG_ON is not set 1249# CONFIG_SLUB_DEBUG_ON is not set
1222# CONFIG_SLUB_STATS is not set 1250# CONFIG_SLUB_STATS is not set
1251# CONFIG_DEBUG_KMEMLEAK is not set
1223# CONFIG_DEBUG_RT_MUTEXES is not set 1252# CONFIG_DEBUG_RT_MUTEXES is not set
1224# CONFIG_RT_MUTEX_TESTER is not set 1253# CONFIG_RT_MUTEX_TESTER is not set
1225# CONFIG_DEBUG_SPINLOCK is not set 1254# CONFIG_DEBUG_SPINLOCK is not set
1226# CONFIG_DEBUG_MUTEXES is not set 1255# CONFIG_DEBUG_MUTEXES is not set
1256# CONFIG_DEBUG_LOCK_ALLOC is not set
1257# CONFIG_PROVE_LOCKING is not set
1258# CONFIG_LOCK_STAT is not set
1227# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1259# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1228# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1260# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1229# CONFIG_DEBUG_KOBJECT is not set 1261# CONFIG_DEBUG_KOBJECT is not set
@@ -1235,11 +1267,12 @@ CONFIG_DEBUG_INFO=y
1235# CONFIG_DEBUG_LIST is not set 1267# CONFIG_DEBUG_LIST is not set
1236# CONFIG_DEBUG_SG is not set 1268# CONFIG_DEBUG_SG is not set
1237# CONFIG_DEBUG_NOTIFIERS is not set 1269# CONFIG_DEBUG_NOTIFIERS is not set
1238# CONFIG_BOOT_PRINTK_DELAY is not set 1270# CONFIG_DEBUG_CREDENTIALS is not set
1239# CONFIG_RCU_TORTURE_TEST is not set 1271# CONFIG_RCU_TORTURE_TEST is not set
1240# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1272# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1241# CONFIG_BACKTRACE_SELF_TEST is not set 1273# CONFIG_BACKTRACE_SELF_TEST is not set
1242# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1274# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1275# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1243# CONFIG_FAULT_INJECTION is not set 1276# CONFIG_FAULT_INJECTION is not set
1244# CONFIG_LATENCYTOP is not set 1277# CONFIG_LATENCYTOP is not set
1245# CONFIG_DEBUG_PAGEALLOC is not set 1278# CONFIG_DEBUG_PAGEALLOC is not set
@@ -1248,23 +1281,25 @@ CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1248CONFIG_HAVE_DYNAMIC_FTRACE=y 1281CONFIG_HAVE_DYNAMIC_FTRACE=y
1249CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1282CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1250CONFIG_TRACING_SUPPORT=y 1283CONFIG_TRACING_SUPPORT=y
1251 1284CONFIG_FTRACE=y
1252#
1253# Tracers
1254#
1255# CONFIG_FUNCTION_TRACER is not set 1285# CONFIG_FUNCTION_TRACER is not set
1286# CONFIG_IRQSOFF_TRACER is not set
1256# CONFIG_SCHED_TRACER is not set 1287# CONFIG_SCHED_TRACER is not set
1257# CONFIG_CONTEXT_SWITCH_TRACER is not set 1288# CONFIG_ENABLE_DEFAULT_TRACERS is not set
1258# CONFIG_EVENT_TRACER is not set
1259# CONFIG_BOOT_TRACER is not set 1289# CONFIG_BOOT_TRACER is not set
1260# CONFIG_TRACE_BRANCH_PROFILING is not set 1290CONFIG_BRANCH_PROFILE_NONE=y
1291# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1292# CONFIG_PROFILE_ALL_BRANCHES is not set
1261# CONFIG_STACK_TRACER is not set 1293# CONFIG_STACK_TRACER is not set
1262# CONFIG_KMEMTRACE is not set 1294# CONFIG_KMEMTRACE is not set
1263# CONFIG_WORKQUEUE_TRACER is not set 1295# CONFIG_WORKQUEUE_TRACER is not set
1264# CONFIG_BLK_DEV_IO_TRACE is not set 1296# CONFIG_BLK_DEV_IO_TRACE is not set
1297# CONFIG_DMA_API_DEBUG is not set
1265# CONFIG_SAMPLES is not set 1298# CONFIG_SAMPLES is not set
1266CONFIG_HAVE_ARCH_KGDB=y 1299CONFIG_HAVE_ARCH_KGDB=y
1267# CONFIG_KGDB is not set 1300# CONFIG_KGDB is not set
1301# CONFIG_PPC_DISABLE_WERROR is not set
1302CONFIG_PPC_WERROR=y
1268CONFIG_PRINT_STACK_DEPTH=64 1303CONFIG_PRINT_STACK_DEPTH=64
1269# CONFIG_DEBUG_STACKOVERFLOW is not set 1304# CONFIG_DEBUG_STACKOVERFLOW is not set
1270# CONFIG_DEBUG_STACK_USAGE is not set 1305# CONFIG_DEBUG_STACK_USAGE is not set
@@ -1289,7 +1324,6 @@ CONFIG_CRYPTO=y
1289# 1324#
1290# Crypto core or helper 1325# Crypto core or helper
1291# 1326#
1292# CONFIG_CRYPTO_FIPS is not set
1293CONFIG_CRYPTO_ALGAPI=y 1327CONFIG_CRYPTO_ALGAPI=y
1294CONFIG_CRYPTO_ALGAPI2=y 1328CONFIG_CRYPTO_ALGAPI2=y
1295CONFIG_CRYPTO_AEAD2=y 1329CONFIG_CRYPTO_AEAD2=y
@@ -1331,11 +1365,13 @@ CONFIG_CRYPTO_PCBC=y
1331# 1365#
1332# CONFIG_CRYPTO_HMAC is not set 1366# CONFIG_CRYPTO_HMAC is not set
1333# CONFIG_CRYPTO_XCBC is not set 1367# CONFIG_CRYPTO_XCBC is not set
1368# CONFIG_CRYPTO_VMAC is not set
1334 1369
1335# 1370#
1336# Digest 1371# Digest
1337# 1372#
1338# CONFIG_CRYPTO_CRC32C is not set 1373# CONFIG_CRYPTO_CRC32C is not set
1374# CONFIG_CRYPTO_GHASH is not set
1339# CONFIG_CRYPTO_MD4 is not set 1375# CONFIG_CRYPTO_MD4 is not set
1340CONFIG_CRYPTO_MD5=y 1376CONFIG_CRYPTO_MD5=y
1341# CONFIG_CRYPTO_MICHAEL_MIC is not set 1377# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/83xx/asp8347_defconfig b/arch/powerpc/configs/83xx/asp8347_defconfig
index a2df0635b6de..466f09ac3153 100644
--- a/arch/powerpc/configs/83xx/asp8347_defconfig
+++ b/arch/powerpc/configs/83xx/asp8347_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:02 2009 4# Thu Nov 5 08:20:20 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -35,6 +35,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y 35CONFIG_GENERIC_HARDIRQS=y
36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -85,11 +86,12 @@ CONFIG_SYSVIPC_SYSCTL=y
85# 86#
86# RCU Subsystem 87# RCU Subsystem
87# 88#
88CONFIG_CLASSIC_RCU=y 89CONFIG_TREE_RCU=y
89# CONFIG_TREE_RCU is not set 90# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_PREEMPT_RCU is not set 91# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set
91# CONFIG_TREE_RCU_TRACE is not set 94# CONFIG_TREE_RCU_TRACE is not set
92# CONFIG_PREEMPT_RCU_TRACE is not set
93# CONFIG_IKCONFIG is not set 95# CONFIG_IKCONFIG is not set
94CONFIG_LOG_BUF_SHIFT=14 96CONFIG_LOG_BUF_SHIFT=14
95CONFIG_GROUP_SCHED=y 97CONFIG_GROUP_SCHED=y
@@ -125,28 +127,29 @@ CONFIG_TIMERFD=y
125CONFIG_EVENTFD=y 127CONFIG_EVENTFD=y
126CONFIG_SHMEM=y 128CONFIG_SHMEM=y
127CONFIG_AIO=y 129CONFIG_AIO=y
128CONFIG_HAVE_PERF_COUNTERS=y 130CONFIG_HAVE_PERF_EVENTS=y
129 131
130# 132#
131# Performance Counters 133# Kernel Performance Events And Counters
132# 134#
135# CONFIG_PERF_EVENTS is not set
133# CONFIG_PERF_COUNTERS is not set 136# CONFIG_PERF_COUNTERS is not set
134CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
135CONFIG_PCI_QUIRKS=y 138CONFIG_PCI_QUIRKS=y
136CONFIG_SLUB_DEBUG=y 139CONFIG_SLUB_DEBUG=y
137# CONFIG_STRIP_ASM_SYMS is not set
138CONFIG_COMPAT_BRK=y 140CONFIG_COMPAT_BRK=y
139# CONFIG_SLAB is not set 141# CONFIG_SLAB is not set
140CONFIG_SLUB=y 142CONFIG_SLUB=y
141# CONFIG_SLOB is not set 143# CONFIG_SLOB is not set
142# CONFIG_PROFILING is not set 144# CONFIG_PROFILING is not set
143# CONFIG_MARKERS is not set
144CONFIG_HAVE_OPROFILE=y 145CONFIG_HAVE_OPROFILE=y
145CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 146CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
146CONFIG_HAVE_IOREMAP_PROT=y 147CONFIG_HAVE_IOREMAP_PROT=y
147CONFIG_HAVE_KPROBES=y 148CONFIG_HAVE_KPROBES=y
148CONFIG_HAVE_KRETPROBES=y 149CONFIG_HAVE_KRETPROBES=y
149CONFIG_HAVE_ARCH_TRACEHOOK=y 150CONFIG_HAVE_ARCH_TRACEHOOK=y
151CONFIG_HAVE_DMA_ATTRS=y
152CONFIG_HAVE_DMA_API_DEBUG=y
150 153
151# 154#
152# GCOV-based kernel profiling 155# GCOV-based kernel profiling
@@ -257,6 +260,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
257CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 260CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
258# CONFIG_KEXEC is not set 261# CONFIG_KEXEC is not set
259# CONFIG_CRASH_DUMP is not set 262# CONFIG_CRASH_DUMP is not set
263CONFIG_MAX_ACTIVE_REGIONS=32
260CONFIG_ARCH_FLATMEM_ENABLE=y 264CONFIG_ARCH_FLATMEM_ENABLE=y
261CONFIG_ARCH_POPULATES_NODE_MAP=y 265CONFIG_ARCH_POPULATES_NODE_MAP=y
262CONFIG_SELECT_MEMORY_MODEL=y 266CONFIG_SELECT_MEMORY_MODEL=y
@@ -274,6 +278,7 @@ CONFIG_BOUNCE=y
274CONFIG_VIRT_TO_BUS=y 278CONFIG_VIRT_TO_BUS=y
275CONFIG_HAVE_MLOCK=y 279CONFIG_HAVE_MLOCK=y
276CONFIG_HAVE_MLOCKED_PAGE_BIT=y 280CONFIG_HAVE_MLOCKED_PAGE_BIT=y
281# CONFIG_KSM is not set
277CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 282CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
278CONFIG_PPC_4K_PAGES=y 283CONFIG_PPC_4K_PAGES=y
279# CONFIG_PPC_16K_PAGES is not set 284# CONFIG_PPC_16K_PAGES is not set
@@ -369,6 +374,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
369# CONFIG_NETFILTER is not set 374# CONFIG_NETFILTER is not set
370# CONFIG_IP_DCCP is not set 375# CONFIG_IP_DCCP is not set
371# CONFIG_IP_SCTP is not set 376# CONFIG_IP_SCTP is not set
377# CONFIG_RDS is not set
372# CONFIG_TIPC is not set 378# CONFIG_TIPC is not set
373# CONFIG_ATM is not set 379# CONFIG_ATM is not set
374# CONFIG_BRIDGE is not set 380# CONFIG_BRIDGE is not set
@@ -398,6 +404,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
398# CONFIG_AF_RXRPC is not set 404# CONFIG_AF_RXRPC is not set
399CONFIG_WIRELESS=y 405CONFIG_WIRELESS=y
400# CONFIG_CFG80211 is not set 406# CONFIG_CFG80211 is not set
407CONFIG_CFG80211_DEFAULT_PS_VALUE=0
401CONFIG_WIRELESS_OLD_REGULATORY=y 408CONFIG_WIRELESS_OLD_REGULATORY=y
402# CONFIG_WIRELESS_EXT is not set 409# CONFIG_WIRELESS_EXT is not set
403# CONFIG_LIB80211 is not set 410# CONFIG_LIB80211 is not set
@@ -405,7 +412,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
405# 412#
406# CFG80211 needs to be enabled for MAC80211 413# CFG80211 needs to be enabled for MAC80211
407# 414#
408CONFIG_MAC80211_DEFAULT_PS_VALUE=0
409# CONFIG_WIMAX is not set 415# CONFIG_WIMAX is not set
410# CONFIG_RFKILL is not set 416# CONFIG_RFKILL is not set
411# CONFIG_NET_9P is not set 417# CONFIG_NET_9P is not set
@@ -418,6 +424,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
418# Generic Driver Options 424# Generic Driver Options
419# 425#
420CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 426CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
427# CONFIG_DEVTMPFS is not set
421CONFIG_STANDALONE=y 428CONFIG_STANDALONE=y
422CONFIG_PREVENT_FIRMWARE_BUILD=y 429CONFIG_PREVENT_FIRMWARE_BUILD=y
423# CONFIG_FW_LOADER is not set 430# CONFIG_FW_LOADER is not set
@@ -425,9 +432,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
425# CONFIG_CONNECTOR is not set 432# CONFIG_CONNECTOR is not set
426CONFIG_MTD=y 433CONFIG_MTD=y
427# CONFIG_MTD_DEBUG is not set 434# CONFIG_MTD_DEBUG is not set
435# CONFIG_MTD_TESTS is not set
428# CONFIG_MTD_CONCAT is not set 436# CONFIG_MTD_CONCAT is not set
429CONFIG_MTD_PARTITIONS=y 437CONFIG_MTD_PARTITIONS=y
430# CONFIG_MTD_TESTS is not set
431CONFIG_MTD_REDBOOT_PARTS=y 438CONFIG_MTD_REDBOOT_PARTS=y
432CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 439CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
433CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y 440CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
@@ -628,7 +635,9 @@ CONFIG_MII=y
628# CONFIG_NET_PCI is not set 635# CONFIG_NET_PCI is not set
629# CONFIG_B44 is not set 636# CONFIG_B44 is not set
630# CONFIG_KS8842 is not set 637# CONFIG_KS8842 is not set
638# CONFIG_KS8851_MLL is not set
631# CONFIG_ATL2 is not set 639# CONFIG_ATL2 is not set
640# CONFIG_XILINX_EMACLITE is not set
632CONFIG_NETDEV_1000=y 641CONFIG_NETDEV_1000=y
633# CONFIG_ACENIC is not set 642# CONFIG_ACENIC is not set
634# CONFIG_DL2K is not set 643# CONFIG_DL2K is not set
@@ -658,10 +667,7 @@ CONFIG_GIANFAR=y
658# CONFIG_JME is not set 667# CONFIG_JME is not set
659# CONFIG_NETDEV_10000 is not set 668# CONFIG_NETDEV_10000 is not set
660# CONFIG_TR is not set 669# CONFIG_TR is not set
661 670CONFIG_WLAN=y
662#
663# Wireless LAN
664#
665# CONFIG_WLAN_PRE80211 is not set 671# CONFIG_WLAN_PRE80211 is not set
666# CONFIG_WLAN_80211 is not set 672# CONFIG_WLAN_80211 is not set
667 673
@@ -760,6 +766,7 @@ CONFIG_LEGACY_PTY_COUNT=256
760CONFIG_DEVPORT=y 766CONFIG_DEVPORT=y
761CONFIG_I2C=y 767CONFIG_I2C=y
762CONFIG_I2C_BOARDINFO=y 768CONFIG_I2C_BOARDINFO=y
769CONFIG_I2C_COMPAT=y
763CONFIG_I2C_CHARDEV=y 770CONFIG_I2C_CHARDEV=y
764CONFIG_I2C_HELPER_AUTO=y 771CONFIG_I2C_HELPER_AUTO=y
765 772
@@ -814,9 +821,6 @@ CONFIG_I2C_MPC=y
814# Miscellaneous I2C Chip support 821# Miscellaneous I2C Chip support
815# 822#
816# CONFIG_DS1682 is not set 823# CONFIG_DS1682 is not set
817# CONFIG_SENSORS_PCF8574 is not set
818# CONFIG_PCF8575 is not set
819# CONFIG_SENSORS_PCA9539 is not set
820# CONFIG_SENSORS_TSL2550 is not set 824# CONFIG_SENSORS_TSL2550 is not set
821# CONFIG_I2C_DEBUG_CORE is not set 825# CONFIG_I2C_DEBUG_CORE is not set
822# CONFIG_I2C_DEBUG_ALGO is not set 826# CONFIG_I2C_DEBUG_ALGO is not set
@@ -834,6 +838,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
834# CONFIG_POWER_SUPPLY is not set 838# CONFIG_POWER_SUPPLY is not set
835CONFIG_HWMON=y 839CONFIG_HWMON=y
836# CONFIG_HWMON_VID is not set 840# CONFIG_HWMON_VID is not set
841# CONFIG_HWMON_DEBUG_CHIP is not set
842
843#
844# Native drivers
845#
837# CONFIG_SENSORS_AD7414 is not set 846# CONFIG_SENSORS_AD7414 is not set
838# CONFIG_SENSORS_AD7418 is not set 847# CONFIG_SENSORS_AD7418 is not set
839# CONFIG_SENSORS_ADM1021 is not set 848# CONFIG_SENSORS_ADM1021 is not set
@@ -883,6 +892,7 @@ CONFIG_HWMON=y
883# CONFIG_SENSORS_ADS7828 is not set 892# CONFIG_SENSORS_ADS7828 is not set
884# CONFIG_SENSORS_THMC50 is not set 893# CONFIG_SENSORS_THMC50 is not set
885# CONFIG_SENSORS_TMP401 is not set 894# CONFIG_SENSORS_TMP401 is not set
895# CONFIG_SENSORS_TMP421 is not set
886# CONFIG_SENSORS_VIA686A is not set 896# CONFIG_SENSORS_VIA686A is not set
887# CONFIG_SENSORS_VT1211 is not set 897# CONFIG_SENSORS_VT1211 is not set
888# CONFIG_SENSORS_VT8231 is not set 898# CONFIG_SENSORS_VT8231 is not set
@@ -894,7 +904,6 @@ CONFIG_HWMON=y
894# CONFIG_SENSORS_W83L786NG is not set 904# CONFIG_SENSORS_W83L786NG is not set
895# CONFIG_SENSORS_W83627HF is not set 905# CONFIG_SENSORS_W83627HF is not set
896# CONFIG_SENSORS_W83627EHF is not set 906# CONFIG_SENSORS_W83627EHF is not set
897# CONFIG_HWMON_DEBUG_CHIP is not set
898CONFIG_THERMAL=y 907CONFIG_THERMAL=y
899# CONFIG_THERMAL_HWMON is not set 908# CONFIG_THERMAL_HWMON is not set
900CONFIG_WATCHDOG=y 909CONFIG_WATCHDOG=y
@@ -934,6 +943,7 @@ CONFIG_SSB_POSSIBLE=y
934# CONFIG_MFD_TMIO is not set 943# CONFIG_MFD_TMIO is not set
935# CONFIG_PMIC_DA903X is not set 944# CONFIG_PMIC_DA903X is not set
936# CONFIG_MFD_WM8400 is not set 945# CONFIG_MFD_WM8400 is not set
946# CONFIG_MFD_WM831X is not set
937# CONFIG_MFD_WM8350_I2C is not set 947# CONFIG_MFD_WM8350_I2C is not set
938# CONFIG_MFD_PCF50633 is not set 948# CONFIG_MFD_PCF50633 is not set
939# CONFIG_AB3100_CORE is not set 949# CONFIG_AB3100_CORE is not set
@@ -944,6 +954,7 @@ CONFIG_SSB_POSSIBLE=y
944# Graphics support 954# Graphics support
945# 955#
946# CONFIG_AGP is not set 956# CONFIG_AGP is not set
957CONFIG_VGA_ARB=y
947# CONFIG_DRM is not set 958# CONFIG_DRM is not set
948# CONFIG_VGASTATE is not set 959# CONFIG_VGASTATE is not set
949CONFIG_VIDEO_OUTPUT_CONTROL=m 960CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -990,6 +1001,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
990# CONFIG_USB_OXU210HP_HCD is not set 1001# CONFIG_USB_OXU210HP_HCD is not set
991# CONFIG_USB_ISP116X_HCD is not set 1002# CONFIG_USB_ISP116X_HCD is not set
992# CONFIG_USB_ISP1760_HCD is not set 1003# CONFIG_USB_ISP1760_HCD is not set
1004# CONFIG_USB_ISP1362_HCD is not set
993# CONFIG_USB_OHCI_HCD is not set 1005# CONFIG_USB_OHCI_HCD is not set
994# CONFIG_USB_UHCI_HCD is not set 1006# CONFIG_USB_UHCI_HCD is not set
995# CONFIG_USB_SL811_HCD is not set 1007# CONFIG_USB_SL811_HCD is not set
@@ -1045,6 +1057,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1045# CONFIG_USB_LD is not set 1057# CONFIG_USB_LD is not set
1046# CONFIG_USB_TRANCEVIBRATOR is not set 1058# CONFIG_USB_TRANCEVIBRATOR is not set
1047# CONFIG_USB_IOWARRIOR is not set 1059# CONFIG_USB_IOWARRIOR is not set
1060# CONFIG_USB_TEST is not set
1048# CONFIG_USB_ISIGHTFW is not set 1061# CONFIG_USB_ISIGHTFW is not set
1049# CONFIG_USB_VST is not set 1062# CONFIG_USB_VST is not set
1050# CONFIG_USB_GADGET is not set 1063# CONFIG_USB_GADGET is not set
@@ -1146,6 +1159,7 @@ CONFIG_FS_MBCACHE=y
1146# CONFIG_GFS2_FS is not set 1159# CONFIG_GFS2_FS is not set
1147# CONFIG_OCFS2_FS is not set 1160# CONFIG_OCFS2_FS is not set
1148# CONFIG_BTRFS_FS is not set 1161# CONFIG_BTRFS_FS is not set
1162# CONFIG_NILFS2_FS is not set
1149CONFIG_FILE_LOCKING=y 1163CONFIG_FILE_LOCKING=y
1150CONFIG_FSNOTIFY=y 1164CONFIG_FSNOTIFY=y
1151CONFIG_DNOTIFY=y 1165CONFIG_DNOTIFY=y
@@ -1215,7 +1229,6 @@ CONFIG_JFFS2_RTIME=y
1215# CONFIG_ROMFS_FS is not set 1229# CONFIG_ROMFS_FS is not set
1216# CONFIG_SYSV_FS is not set 1230# CONFIG_SYSV_FS is not set
1217# CONFIG_UFS_FS is not set 1231# CONFIG_UFS_FS is not set
1218# CONFIG_NILFS2_FS is not set
1219CONFIG_NETWORK_FILESYSTEMS=y 1232CONFIG_NETWORK_FILESYSTEMS=y
1220CONFIG_NFS_FS=y 1233CONFIG_NFS_FS=y
1221CONFIG_NFS_V3=y 1234CONFIG_NFS_V3=y
@@ -1327,6 +1340,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1327CONFIG_ENABLE_MUST_CHECK=y 1340CONFIG_ENABLE_MUST_CHECK=y
1328CONFIG_FRAME_WARN=1024 1341CONFIG_FRAME_WARN=1024
1329# CONFIG_MAGIC_SYSRQ is not set 1342# CONFIG_MAGIC_SYSRQ is not set
1343# CONFIG_STRIP_ASM_SYMS is not set
1330# CONFIG_UNUSED_SYMBOLS is not set 1344# CONFIG_UNUSED_SYMBOLS is not set
1331# CONFIG_DEBUG_FS is not set 1345# CONFIG_DEBUG_FS is not set
1332# CONFIG_HEADERS_CHECK is not set 1346# CONFIG_HEADERS_CHECK is not set
@@ -1344,6 +1358,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1344CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1358CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1345CONFIG_TRACING_SUPPORT=y 1359CONFIG_TRACING_SUPPORT=y
1346# CONFIG_FTRACE is not set 1360# CONFIG_FTRACE is not set
1361# CONFIG_DMA_API_DEBUG is not set
1347# CONFIG_SAMPLES is not set 1362# CONFIG_SAMPLES is not set
1348CONFIG_HAVE_ARCH_KGDB=y 1363CONFIG_HAVE_ARCH_KGDB=y
1349# CONFIG_PPC_DISABLE_WERROR is not set 1364# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1365,7 +1380,6 @@ CONFIG_CRYPTO=y
1365# 1380#
1366# Crypto core or helper 1381# Crypto core or helper
1367# 1382#
1368# CONFIG_CRYPTO_FIPS is not set
1369CONFIG_CRYPTO_ALGAPI=y 1383CONFIG_CRYPTO_ALGAPI=y
1370CONFIG_CRYPTO_ALGAPI2=y 1384CONFIG_CRYPTO_ALGAPI2=y
1371CONFIG_CRYPTO_AEAD2=y 1385CONFIG_CRYPTO_AEAD2=y
@@ -1407,11 +1421,13 @@ CONFIG_CRYPTO_PCBC=m
1407# 1421#
1408# CONFIG_CRYPTO_HMAC is not set 1422# CONFIG_CRYPTO_HMAC is not set
1409# CONFIG_CRYPTO_XCBC is not set 1423# CONFIG_CRYPTO_XCBC is not set
1424# CONFIG_CRYPTO_VMAC is not set
1410 1425
1411# 1426#
1412# Digest 1427# Digest
1413# 1428#
1414# CONFIG_CRYPTO_CRC32C is not set 1429# CONFIG_CRYPTO_CRC32C is not set
1430# CONFIG_CRYPTO_GHASH is not set
1415# CONFIG_CRYPTO_MD4 is not set 1431# CONFIG_CRYPTO_MD4 is not set
1416CONFIG_CRYPTO_MD5=y 1432CONFIG_CRYPTO_MD5=y
1417# CONFIG_CRYPTO_MICHAEL_MIC is not set 1433# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/83xx/kmeter1_defconfig b/arch/powerpc/configs/83xx/kmeter1_defconfig
index 93ebd443a18f..6694fb73cd99 100644
--- a/arch/powerpc/configs/83xx/kmeter1_defconfig
+++ b/arch/powerpc/configs/83xx/kmeter1_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:03 2009 4# Thu Nov 5 08:20:21 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -35,6 +35,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y 35CONFIG_GENERIC_HARDIRQS=y
36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -86,11 +87,12 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
86# 87#
87# RCU Subsystem 88# RCU Subsystem
88# 89#
89CONFIG_CLASSIC_RCU=y 90CONFIG_TREE_RCU=y
90# CONFIG_TREE_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
91# CONFIG_PREEMPT_RCU is not set 92# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set
92# CONFIG_TREE_RCU_TRACE is not set 95# CONFIG_TREE_RCU_TRACE is not set
93# CONFIG_PREEMPT_RCU_TRACE is not set
94# CONFIG_IKCONFIG is not set 96# CONFIG_IKCONFIG is not set
95CONFIG_LOG_BUF_SHIFT=14 97CONFIG_LOG_BUF_SHIFT=14
96# CONFIG_GROUP_SCHED is not set 98# CONFIG_GROUP_SCHED is not set
@@ -119,20 +121,19 @@ CONFIG_TIMERFD=y
119CONFIG_EVENTFD=y 121CONFIG_EVENTFD=y
120CONFIG_SHMEM=y 122CONFIG_SHMEM=y
121CONFIG_AIO=y 123CONFIG_AIO=y
122CONFIG_HAVE_PERF_COUNTERS=y 124CONFIG_HAVE_PERF_EVENTS=y
123 125
124# 126#
125# Performance Counters 127# Kernel Performance Events And Counters
126# 128#
129# CONFIG_PERF_EVENTS is not set
127# CONFIG_PERF_COUNTERS is not set 130# CONFIG_PERF_COUNTERS is not set
128CONFIG_VM_EVENT_COUNTERS=y 131CONFIG_VM_EVENT_COUNTERS=y
129# CONFIG_STRIP_ASM_SYMS is not set
130CONFIG_COMPAT_BRK=y 132CONFIG_COMPAT_BRK=y
131CONFIG_SLAB=y 133CONFIG_SLAB=y
132# CONFIG_SLUB is not set 134# CONFIG_SLUB is not set
133# CONFIG_SLOB is not set 135# CONFIG_SLOB is not set
134# CONFIG_PROFILING is not set 136# CONFIG_PROFILING is not set
135# CONFIG_MARKERS is not set
136CONFIG_HAVE_OPROFILE=y 137CONFIG_HAVE_OPROFILE=y
137# CONFIG_KPROBES is not set 138# CONFIG_KPROBES is not set
138CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 139CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -140,6 +141,8 @@ CONFIG_HAVE_IOREMAP_PROT=y
140CONFIG_HAVE_KPROBES=y 141CONFIG_HAVE_KPROBES=y
141CONFIG_HAVE_KRETPROBES=y 142CONFIG_HAVE_KRETPROBES=y
142CONFIG_HAVE_ARCH_TRACEHOOK=y 143CONFIG_HAVE_ARCH_TRACEHOOK=y
144CONFIG_HAVE_DMA_ATTRS=y
145CONFIG_HAVE_DMA_API_DEBUG=y
143 146
144# 147#
145# GCOV-based kernel profiling 148# GCOV-based kernel profiling
@@ -250,6 +253,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
250CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 253CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
251# CONFIG_KEXEC is not set 254# CONFIG_KEXEC is not set
252# CONFIG_CRASH_DUMP is not set 255# CONFIG_CRASH_DUMP is not set
256CONFIG_MAX_ACTIVE_REGIONS=32
253CONFIG_ARCH_FLATMEM_ENABLE=y 257CONFIG_ARCH_FLATMEM_ENABLE=y
254CONFIG_ARCH_POPULATES_NODE_MAP=y 258CONFIG_ARCH_POPULATES_NODE_MAP=y
255CONFIG_SELECT_MEMORY_MODEL=y 259CONFIG_SELECT_MEMORY_MODEL=y
@@ -267,6 +271,7 @@ CONFIG_BOUNCE=y
267CONFIG_VIRT_TO_BUS=y 271CONFIG_VIRT_TO_BUS=y
268CONFIG_HAVE_MLOCK=y 272CONFIG_HAVE_MLOCK=y
269CONFIG_HAVE_MLOCKED_PAGE_BIT=y 273CONFIG_HAVE_MLOCKED_PAGE_BIT=y
274# CONFIG_KSM is not set
270CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 275CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
271CONFIG_PPC_4K_PAGES=y 276CONFIG_PPC_4K_PAGES=y
272# CONFIG_PPC_16K_PAGES is not set 277# CONFIG_PPC_16K_PAGES is not set
@@ -348,6 +353,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
348# CONFIG_NETFILTER is not set 353# CONFIG_NETFILTER is not set
349# CONFIG_IP_DCCP is not set 354# CONFIG_IP_DCCP is not set
350# CONFIG_IP_SCTP is not set 355# CONFIG_IP_SCTP is not set
356# CONFIG_RDS is not set
351# CONFIG_TIPC is not set 357# CONFIG_TIPC is not set
352# CONFIG_ATM is not set 358# CONFIG_ATM is not set
353CONFIG_STP=m 359CONFIG_STP=m
@@ -396,9 +402,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
396# CONFIG_CONNECTOR is not set 402# CONFIG_CONNECTOR is not set
397CONFIG_MTD=y 403CONFIG_MTD=y
398# CONFIG_MTD_DEBUG is not set 404# CONFIG_MTD_DEBUG is not set
405# CONFIG_MTD_TESTS is not set
399CONFIG_MTD_CONCAT=y 406CONFIG_MTD_CONCAT=y
400CONFIG_MTD_PARTITIONS=y 407CONFIG_MTD_PARTITIONS=y
401# CONFIG_MTD_TESTS is not set
402# CONFIG_MTD_REDBOOT_PARTS is not set 408# CONFIG_MTD_REDBOOT_PARTS is not set
403CONFIG_MTD_CMDLINE_PARTS=y 409CONFIG_MTD_CMDLINE_PARTS=y
404CONFIG_MTD_OF_PARTS=y 410CONFIG_MTD_OF_PARTS=y
@@ -565,18 +571,16 @@ CONFIG_MII=y
565# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 571# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
566# CONFIG_B44 is not set 572# CONFIG_B44 is not set
567# CONFIG_KS8842 is not set 573# CONFIG_KS8842 is not set
574# CONFIG_KS8851_MLL is not set
575# CONFIG_XILINX_EMACLITE is not set
568CONFIG_NETDEV_1000=y 576CONFIG_NETDEV_1000=y
569CONFIG_FSL_PQ_MDIO=y 577CONFIG_FSL_PQ_MDIO=y
570# CONFIG_GIANFAR is not set 578# CONFIG_GIANFAR is not set
571CONFIG_UCC_GETH=y 579CONFIG_UCC_GETH=y
572# CONFIG_UGETH_MAGIC_PACKET is not set
573# CONFIG_UGETH_TX_ON_DEMAND is not set 580# CONFIG_UGETH_TX_ON_DEMAND is not set
574# CONFIG_MV643XX_ETH is not set 581# CONFIG_MV643XX_ETH is not set
575# CONFIG_NETDEV_10000 is not set 582# CONFIG_NETDEV_10000 is not set
576 583CONFIG_WLAN=y
577#
578# Wireless LAN
579#
580# CONFIG_WLAN_PRE80211 is not set 584# CONFIG_WLAN_PRE80211 is not set
581# CONFIG_WLAN_80211 is not set 585# CONFIG_WLAN_80211 is not set
582 586
@@ -663,6 +667,7 @@ CONFIG_HW_RANDOM=y
663# CONFIG_TCG_TPM is not set 667# CONFIG_TCG_TPM is not set
664CONFIG_I2C=y 668CONFIG_I2C=y
665CONFIG_I2C_BOARDINFO=y 669CONFIG_I2C_BOARDINFO=y
670CONFIG_I2C_COMPAT=y
666CONFIG_I2C_CHARDEV=y 671CONFIG_I2C_CHARDEV=y
667CONFIG_I2C_HELPER_AUTO=y 672CONFIG_I2C_HELPER_AUTO=y
668 673
@@ -693,9 +698,6 @@ CONFIG_I2C_MPC=y
693# Miscellaneous I2C Chip support 698# Miscellaneous I2C Chip support
694# 699#
695# CONFIG_DS1682 is not set 700# CONFIG_DS1682 is not set
696# CONFIG_SENSORS_PCF8574 is not set
697# CONFIG_PCF8575 is not set
698# CONFIG_SENSORS_PCA9539 is not set
699# CONFIG_SENSORS_TSL2550 is not set 701# CONFIG_SENSORS_TSL2550 is not set
700# CONFIG_I2C_DEBUG_CORE is not set 702# CONFIG_I2C_DEBUG_CORE is not set
701# CONFIG_I2C_DEBUG_ALGO is not set 703# CONFIG_I2C_DEBUG_ALGO is not set
@@ -713,7 +715,6 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
713# CONFIG_POWER_SUPPLY is not set 715# CONFIG_POWER_SUPPLY is not set
714# CONFIG_HWMON is not set 716# CONFIG_HWMON is not set
715# CONFIG_THERMAL is not set 717# CONFIG_THERMAL is not set
716# CONFIG_THERMAL_HWMON is not set
717# CONFIG_WATCHDOG is not set 718# CONFIG_WATCHDOG is not set
718CONFIG_SSB_POSSIBLE=y 719CONFIG_SSB_POSSIBLE=y
719 720
@@ -732,6 +733,7 @@ CONFIG_SSB_POSSIBLE=y
732# CONFIG_MFD_TMIO is not set 733# CONFIG_MFD_TMIO is not set
733# CONFIG_PMIC_DA903X is not set 734# CONFIG_PMIC_DA903X is not set
734# CONFIG_MFD_WM8400 is not set 735# CONFIG_MFD_WM8400 is not set
736# CONFIG_MFD_WM831X is not set
735# CONFIG_MFD_WM8350_I2C is not set 737# CONFIG_MFD_WM8350_I2C is not set
736# CONFIG_MFD_PCF50633 is not set 738# CONFIG_MFD_PCF50633 is not set
737# CONFIG_AB3100_CORE is not set 739# CONFIG_AB3100_CORE is not set
@@ -784,6 +786,7 @@ CONFIG_UIO=y
784# CONFIG_GFS2_FS is not set 786# CONFIG_GFS2_FS is not set
785# CONFIG_OCFS2_FS is not set 787# CONFIG_OCFS2_FS is not set
786# CONFIG_BTRFS_FS is not set 788# CONFIG_BTRFS_FS is not set
789# CONFIG_NILFS2_FS is not set
787CONFIG_FILE_LOCKING=y 790CONFIG_FILE_LOCKING=y
788CONFIG_FSNOTIFY=y 791CONFIG_FSNOTIFY=y
789# CONFIG_DNOTIFY is not set 792# CONFIG_DNOTIFY is not set
@@ -854,7 +857,6 @@ CONFIG_JFFS2_RTIME=y
854# CONFIG_ROMFS_FS is not set 857# CONFIG_ROMFS_FS is not set
855# CONFIG_SYSV_FS is not set 858# CONFIG_SYSV_FS is not set
856# CONFIG_UFS_FS is not set 859# CONFIG_UFS_FS is not set
857# CONFIG_NILFS2_FS is not set
858CONFIG_NETWORK_FILESYSTEMS=y 860CONFIG_NETWORK_FILESYSTEMS=y
859CONFIG_NFS_FS=y 861CONFIG_NFS_FS=y
860CONFIG_NFS_V3=y 862CONFIG_NFS_V3=y
@@ -926,6 +928,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
926CONFIG_ENABLE_MUST_CHECK=y 928CONFIG_ENABLE_MUST_CHECK=y
927CONFIG_FRAME_WARN=1024 929CONFIG_FRAME_WARN=1024
928# CONFIG_MAGIC_SYSRQ is not set 930# CONFIG_MAGIC_SYSRQ is not set
931# CONFIG_STRIP_ASM_SYMS is not set
929# CONFIG_UNUSED_SYMBOLS is not set 932# CONFIG_UNUSED_SYMBOLS is not set
930CONFIG_DEBUG_FS=y 933CONFIG_DEBUG_FS=y
931# CONFIG_HEADERS_CHECK is not set 934# CONFIG_HEADERS_CHECK is not set
@@ -942,6 +945,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
942CONFIG_TRACING_SUPPORT=y 945CONFIG_TRACING_SUPPORT=y
943# CONFIG_FTRACE is not set 946# CONFIG_FTRACE is not set
944# CONFIG_DYNAMIC_DEBUG is not set 947# CONFIG_DYNAMIC_DEBUG is not set
948# CONFIG_DMA_API_DEBUG is not set
945# CONFIG_SAMPLES is not set 949# CONFIG_SAMPLES is not set
946CONFIG_HAVE_ARCH_KGDB=y 950CONFIG_HAVE_ARCH_KGDB=y
947# CONFIG_PPC_DISABLE_WERROR is not set 951# CONFIG_PPC_DISABLE_WERROR is not set
diff --git a/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig b/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig
index ff33a7db2eab..86df19f041a4 100644
--- a/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig
+++ b/arch/powerpc/configs/83xx/mpc8313_rdb_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:04 2009 4# Thu Nov 5 08:20:22 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -35,6 +35,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y 35CONFIG_GENERIC_HARDIRQS=y
36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +85,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 85#
85# RCU Subsystem 86# RCU Subsystem
86# 87#
87CONFIG_CLASSIC_RCU=y 88CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 90# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 93# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 94# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 95CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 96CONFIG_GROUP_SCHED=y
@@ -124,28 +126,29 @@ CONFIG_TIMERFD=y
124CONFIG_EVENTFD=y 126CONFIG_EVENTFD=y
125CONFIG_SHMEM=y 127CONFIG_SHMEM=y
126CONFIG_AIO=y 128CONFIG_AIO=y
127CONFIG_HAVE_PERF_COUNTERS=y 129CONFIG_HAVE_PERF_EVENTS=y
128 130
129# 131#
130# Performance Counters 132# Kernel Performance Events And Counters
131# 133#
134# CONFIG_PERF_EVENTS is not set
132# CONFIG_PERF_COUNTERS is not set 135# CONFIG_PERF_COUNTERS is not set
133CONFIG_VM_EVENT_COUNTERS=y 136CONFIG_VM_EVENT_COUNTERS=y
134CONFIG_PCI_QUIRKS=y 137CONFIG_PCI_QUIRKS=y
135CONFIG_SLUB_DEBUG=y 138CONFIG_SLUB_DEBUG=y
136# CONFIG_STRIP_ASM_SYMS is not set
137CONFIG_COMPAT_BRK=y 139CONFIG_COMPAT_BRK=y
138# CONFIG_SLAB is not set 140# CONFIG_SLAB is not set
139CONFIG_SLUB=y 141CONFIG_SLUB=y
140# CONFIG_SLOB is not set 142# CONFIG_SLOB is not set
141# CONFIG_PROFILING is not set 143# CONFIG_PROFILING is not set
142# CONFIG_MARKERS is not set
143CONFIG_HAVE_OPROFILE=y 144CONFIG_HAVE_OPROFILE=y
144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 145CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
145CONFIG_HAVE_IOREMAP_PROT=y 146CONFIG_HAVE_IOREMAP_PROT=y
146CONFIG_HAVE_KPROBES=y 147CONFIG_HAVE_KPROBES=y
147CONFIG_HAVE_KRETPROBES=y 148CONFIG_HAVE_KRETPROBES=y
148CONFIG_HAVE_ARCH_TRACEHOOK=y 149CONFIG_HAVE_ARCH_TRACEHOOK=y
150CONFIG_HAVE_DMA_ATTRS=y
151CONFIG_HAVE_DMA_API_DEBUG=y
149 152
150# 153#
151# GCOV-based kernel profiling 154# GCOV-based kernel profiling
@@ -256,6 +259,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
256CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
257# CONFIG_KEXEC is not set 260# CONFIG_KEXEC is not set
258# CONFIG_CRASH_DUMP is not set 261# CONFIG_CRASH_DUMP is not set
262CONFIG_MAX_ACTIVE_REGIONS=32
259CONFIG_ARCH_FLATMEM_ENABLE=y 263CONFIG_ARCH_FLATMEM_ENABLE=y
260CONFIG_ARCH_POPULATES_NODE_MAP=y 264CONFIG_ARCH_POPULATES_NODE_MAP=y
261CONFIG_SELECT_MEMORY_MODEL=y 265CONFIG_SELECT_MEMORY_MODEL=y
@@ -273,6 +277,7 @@ CONFIG_BOUNCE=y
273CONFIG_VIRT_TO_BUS=y 277CONFIG_VIRT_TO_BUS=y
274CONFIG_HAVE_MLOCK=y 278CONFIG_HAVE_MLOCK=y
275CONFIG_HAVE_MLOCKED_PAGE_BIT=y 279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set
276CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
277CONFIG_PPC_4K_PAGES=y 282CONFIG_PPC_4K_PAGES=y
278# CONFIG_PPC_16K_PAGES is not set 283# CONFIG_PPC_16K_PAGES is not set
@@ -369,6 +374,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
369# CONFIG_NETFILTER is not set 374# CONFIG_NETFILTER is not set
370# CONFIG_IP_DCCP is not set 375# CONFIG_IP_DCCP is not set
371# CONFIG_IP_SCTP is not set 376# CONFIG_IP_SCTP is not set
377# CONFIG_RDS is not set
372# CONFIG_TIPC is not set 378# CONFIG_TIPC is not set
373# CONFIG_ATM is not set 379# CONFIG_ATM is not set
374# CONFIG_BRIDGE is not set 380# CONFIG_BRIDGE is not set
@@ -398,6 +404,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
398# CONFIG_AF_RXRPC is not set 404# CONFIG_AF_RXRPC is not set
399CONFIG_WIRELESS=y 405CONFIG_WIRELESS=y
400# CONFIG_CFG80211 is not set 406# CONFIG_CFG80211 is not set
407CONFIG_CFG80211_DEFAULT_PS_VALUE=0
401CONFIG_WIRELESS_OLD_REGULATORY=y 408CONFIG_WIRELESS_OLD_REGULATORY=y
402# CONFIG_WIRELESS_EXT is not set 409# CONFIG_WIRELESS_EXT is not set
403# CONFIG_LIB80211 is not set 410# CONFIG_LIB80211 is not set
@@ -405,7 +412,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
405# 412#
406# CFG80211 needs to be enabled for MAC80211 413# CFG80211 needs to be enabled for MAC80211
407# 414#
408CONFIG_MAC80211_DEFAULT_PS_VALUE=0
409# CONFIG_WIMAX is not set 415# CONFIG_WIMAX is not set
410# CONFIG_RFKILL is not set 416# CONFIG_RFKILL is not set
411# CONFIG_NET_9P is not set 417# CONFIG_NET_9P is not set
@@ -418,6 +424,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
418# Generic Driver Options 424# Generic Driver Options
419# 425#
420CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 426CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
427# CONFIG_DEVTMPFS is not set
421CONFIG_STANDALONE=y 428CONFIG_STANDALONE=y
422CONFIG_PREVENT_FIRMWARE_BUILD=y 429CONFIG_PREVENT_FIRMWARE_BUILD=y
423# CONFIG_FW_LOADER is not set 430# CONFIG_FW_LOADER is not set
@@ -427,9 +434,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
427# CONFIG_CONNECTOR is not set 434# CONFIG_CONNECTOR is not set
428CONFIG_MTD=y 435CONFIG_MTD=y
429# CONFIG_MTD_DEBUG is not set 436# CONFIG_MTD_DEBUG is not set
437# CONFIG_MTD_TESTS is not set
430# CONFIG_MTD_CONCAT is not set 438# CONFIG_MTD_CONCAT is not set
431CONFIG_MTD_PARTITIONS=y 439CONFIG_MTD_PARTITIONS=y
432# CONFIG_MTD_TESTS is not set
433# CONFIG_MTD_REDBOOT_PARTS is not set 440# CONFIG_MTD_REDBOOT_PARTS is not set
434# CONFIG_MTD_CMDLINE_PARTS is not set 441# CONFIG_MTD_CMDLINE_PARTS is not set
435CONFIG_MTD_OF_PARTS=y 442CONFIG_MTD_OF_PARTS=y
@@ -488,6 +495,7 @@ CONFIG_MTD_PHYSMAP_OF=y
488# CONFIG_MTD_PMC551 is not set 495# CONFIG_MTD_PMC551 is not set
489# CONFIG_MTD_DATAFLASH is not set 496# CONFIG_MTD_DATAFLASH is not set
490# CONFIG_MTD_M25P80 is not set 497# CONFIG_MTD_M25P80 is not set
498# CONFIG_MTD_SST25L is not set
491# CONFIG_MTD_SLRAM is not set 499# CONFIG_MTD_SLRAM is not set
492# CONFIG_MTD_PHRAM is not set 500# CONFIG_MTD_PHRAM is not set
493# CONFIG_MTD_MTDRAM is not set 501# CONFIG_MTD_MTDRAM is not set
@@ -605,6 +613,7 @@ CONFIG_SCSI_LOWLEVEL=y
605# CONFIG_ISCSI_TCP is not set 613# CONFIG_ISCSI_TCP is not set
606# CONFIG_SCSI_CXGB3_ISCSI is not set 614# CONFIG_SCSI_CXGB3_ISCSI is not set
607# CONFIG_SCSI_BNX2_ISCSI is not set 615# CONFIG_SCSI_BNX2_ISCSI is not set
616# CONFIG_BE2ISCSI is not set
608# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 617# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
609# CONFIG_SCSI_3W_9XXX is not set 618# CONFIG_SCSI_3W_9XXX is not set
610# CONFIG_SCSI_ACARD is not set 619# CONFIG_SCSI_ACARD is not set
@@ -643,7 +652,9 @@ CONFIG_SCSI_LOWLEVEL=y
643# CONFIG_SCSI_DC390T is not set 652# CONFIG_SCSI_DC390T is not set
644# CONFIG_SCSI_NSP32 is not set 653# CONFIG_SCSI_NSP32 is not set
645# CONFIG_SCSI_DEBUG is not set 654# CONFIG_SCSI_DEBUG is not set
655# CONFIG_SCSI_PMCRAID is not set
646# CONFIG_SCSI_SRP is not set 656# CONFIG_SCSI_SRP is not set
657# CONFIG_SCSI_BFA_FC is not set
647# CONFIG_SCSI_DH is not set 658# CONFIG_SCSI_DH is not set
648# CONFIG_SCSI_OSD_INITIATOR is not set 659# CONFIG_SCSI_OSD_INITIATOR is not set
649# CONFIG_ATA is not set 660# CONFIG_ATA is not set
@@ -741,9 +752,11 @@ CONFIG_E100=y
741# CONFIG_TLAN is not set 752# CONFIG_TLAN is not set
742# CONFIG_KS8842 is not set 753# CONFIG_KS8842 is not set
743# CONFIG_KS8851 is not set 754# CONFIG_KS8851 is not set
755# CONFIG_KS8851_MLL is not set
744# CONFIG_VIA_RHINE is not set 756# CONFIG_VIA_RHINE is not set
745# CONFIG_SC92031 is not set 757# CONFIG_SC92031 is not set
746# CONFIG_ATL2 is not set 758# CONFIG_ATL2 is not set
759# CONFIG_XILINX_EMACLITE is not set
747CONFIG_NETDEV_1000=y 760CONFIG_NETDEV_1000=y
748# CONFIG_ACENIC is not set 761# CONFIG_ACENIC is not set
749# CONFIG_DL2K is not set 762# CONFIG_DL2K is not set
@@ -791,10 +804,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
791# CONFIG_SFC is not set 804# CONFIG_SFC is not set
792# CONFIG_BE2NET is not set 805# CONFIG_BE2NET is not set
793# CONFIG_TR is not set 806# CONFIG_TR is not set
794 807CONFIG_WLAN=y
795#
796# Wireless LAN
797#
798# CONFIG_WLAN_PRE80211 is not set 808# CONFIG_WLAN_PRE80211 is not set
799# CONFIG_WLAN_80211 is not set 809# CONFIG_WLAN_80211 is not set
800 810
@@ -896,6 +906,7 @@ CONFIG_HW_RANDOM=y
896CONFIG_DEVPORT=y 906CONFIG_DEVPORT=y
897CONFIG_I2C=y 907CONFIG_I2C=y
898CONFIG_I2C_BOARDINFO=y 908CONFIG_I2C_BOARDINFO=y
909CONFIG_I2C_COMPAT=y
899CONFIG_I2C_CHARDEV=y 910CONFIG_I2C_CHARDEV=y
900CONFIG_I2C_HELPER_AUTO=y 911CONFIG_I2C_HELPER_AUTO=y
901 912
@@ -950,9 +961,6 @@ CONFIG_I2C_MPC=y
950# Miscellaneous I2C Chip support 961# Miscellaneous I2C Chip support
951# 962#
952# CONFIG_DS1682 is not set 963# CONFIG_DS1682 is not set
953# CONFIG_SENSORS_PCF8574 is not set
954# CONFIG_PCF8575 is not set
955# CONFIG_SENSORS_PCA9539 is not set
956# CONFIG_SENSORS_TSL2550 is not set 964# CONFIG_SENSORS_TSL2550 is not set
957# CONFIG_I2C_DEBUG_CORE is not set 965# CONFIG_I2C_DEBUG_CORE is not set
958# CONFIG_I2C_DEBUG_ALGO is not set 966# CONFIG_I2C_DEBUG_ALGO is not set
@@ -984,6 +992,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
984# CONFIG_POWER_SUPPLY is not set 992# CONFIG_POWER_SUPPLY is not set
985CONFIG_HWMON=y 993CONFIG_HWMON=y
986# CONFIG_HWMON_VID is not set 994# CONFIG_HWMON_VID is not set
995# CONFIG_HWMON_DEBUG_CHIP is not set
996
997#
998# Native drivers
999#
987# CONFIG_SENSORS_AD7414 is not set 1000# CONFIG_SENSORS_AD7414 is not set
988# CONFIG_SENSORS_AD7418 is not set 1001# CONFIG_SENSORS_AD7418 is not set
989# CONFIG_SENSORS_ADCXX is not set 1002# CONFIG_SENSORS_ADCXX is not set
@@ -1036,6 +1049,7 @@ CONFIG_HWMON=y
1036# CONFIG_SENSORS_ADS7828 is not set 1049# CONFIG_SENSORS_ADS7828 is not set
1037# CONFIG_SENSORS_THMC50 is not set 1050# CONFIG_SENSORS_THMC50 is not set
1038# CONFIG_SENSORS_TMP401 is not set 1051# CONFIG_SENSORS_TMP401 is not set
1052# CONFIG_SENSORS_TMP421 is not set
1039# CONFIG_SENSORS_VIA686A is not set 1053# CONFIG_SENSORS_VIA686A is not set
1040# CONFIG_SENSORS_VT1211 is not set 1054# CONFIG_SENSORS_VT1211 is not set
1041# CONFIG_SENSORS_VT8231 is not set 1055# CONFIG_SENSORS_VT8231 is not set
@@ -1048,9 +1062,7 @@ CONFIG_HWMON=y
1048# CONFIG_SENSORS_W83627HF is not set 1062# CONFIG_SENSORS_W83627HF is not set
1049# CONFIG_SENSORS_W83627EHF is not set 1063# CONFIG_SENSORS_W83627EHF is not set
1050# CONFIG_SENSORS_LIS3_SPI is not set 1064# CONFIG_SENSORS_LIS3_SPI is not set
1051# CONFIG_HWMON_DEBUG_CHIP is not set
1052# CONFIG_THERMAL is not set 1065# CONFIG_THERMAL is not set
1053# CONFIG_THERMAL_HWMON is not set
1054CONFIG_WATCHDOG=y 1066CONFIG_WATCHDOG=y
1055# CONFIG_WATCHDOG_NOWAYOUT is not set 1067# CONFIG_WATCHDOG_NOWAYOUT is not set
1056 1068
@@ -1088,8 +1100,10 @@ CONFIG_SSB_POSSIBLE=y
1088# CONFIG_MFD_TMIO is not set 1100# CONFIG_MFD_TMIO is not set
1089# CONFIG_PMIC_DA903X is not set 1101# CONFIG_PMIC_DA903X is not set
1090# CONFIG_MFD_WM8400 is not set 1102# CONFIG_MFD_WM8400 is not set
1103# CONFIG_MFD_WM831X is not set
1091# CONFIG_MFD_WM8350_I2C is not set 1104# CONFIG_MFD_WM8350_I2C is not set
1092# CONFIG_MFD_PCF50633 is not set 1105# CONFIG_MFD_PCF50633 is not set
1106# CONFIG_MFD_MC13783 is not set
1093# CONFIG_AB3100_CORE is not set 1107# CONFIG_AB3100_CORE is not set
1094# CONFIG_EZX_PCAP is not set 1108# CONFIG_EZX_PCAP is not set
1095# CONFIG_REGULATOR is not set 1109# CONFIG_REGULATOR is not set
@@ -1099,6 +1113,7 @@ CONFIG_SSB_POSSIBLE=y
1099# Graphics support 1113# Graphics support
1100# 1114#
1101# CONFIG_AGP is not set 1115# CONFIG_AGP is not set
1116CONFIG_VGA_ARB=y
1102# CONFIG_DRM is not set 1117# CONFIG_DRM is not set
1103# CONFIG_VGASTATE is not set 1118# CONFIG_VGASTATE is not set
1104CONFIG_VIDEO_OUTPUT_CONTROL=m 1119CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -1112,7 +1127,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
1112# CONFIG_SOUND is not set 1127# CONFIG_SOUND is not set
1113CONFIG_HID_SUPPORT=y 1128CONFIG_HID_SUPPORT=y
1114CONFIG_HID=y 1129CONFIG_HID=y
1115# CONFIG_HID_DEBUG is not set
1116# CONFIG_HIDRAW is not set 1130# CONFIG_HIDRAW is not set
1117 1131
1118# 1132#
@@ -1164,6 +1178,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1164# CONFIG_USB_OXU210HP_HCD is not set 1178# CONFIG_USB_OXU210HP_HCD is not set
1165# CONFIG_USB_ISP116X_HCD is not set 1179# CONFIG_USB_ISP116X_HCD is not set
1166# CONFIG_USB_ISP1760_HCD is not set 1180# CONFIG_USB_ISP1760_HCD is not set
1181# CONFIG_USB_ISP1362_HCD is not set
1167CONFIG_USB_OHCI_HCD=y 1182CONFIG_USB_OHCI_HCD=y
1168CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1183CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
1169# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 1184# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
@@ -1255,6 +1270,7 @@ CONFIG_USB_GADGET_SELECTED=y
1255# CONFIG_USB_GADGET_LH7A40X is not set 1270# CONFIG_USB_GADGET_LH7A40X is not set
1256# CONFIG_USB_GADGET_OMAP is not set 1271# CONFIG_USB_GADGET_OMAP is not set
1257# CONFIG_USB_GADGET_PXA25X is not set 1272# CONFIG_USB_GADGET_PXA25X is not set
1273# CONFIG_USB_GADGET_R8A66597 is not set
1258# CONFIG_USB_GADGET_PXA27X is not set 1274# CONFIG_USB_GADGET_PXA27X is not set
1259# CONFIG_USB_GADGET_S3C_HSOTG is not set 1275# CONFIG_USB_GADGET_S3C_HSOTG is not set
1260# CONFIG_USB_GADGET_IMX is not set 1276# CONFIG_USB_GADGET_IMX is not set
@@ -1273,6 +1289,7 @@ CONFIG_USB_GADGET_DUALSPEED=y
1273# CONFIG_USB_AUDIO is not set 1289# CONFIG_USB_AUDIO is not set
1274CONFIG_USB_ETH=y 1290CONFIG_USB_ETH=y
1275CONFIG_USB_ETH_RNDIS=y 1291CONFIG_USB_ETH_RNDIS=y
1292# CONFIG_USB_ETH_EEM is not set
1276# CONFIG_USB_GADGETFS is not set 1293# CONFIG_USB_GADGETFS is not set
1277# CONFIG_USB_FILE_STORAGE is not set 1294# CONFIG_USB_FILE_STORAGE is not set
1278# CONFIG_USB_G_SERIAL is not set 1295# CONFIG_USB_G_SERIAL is not set
@@ -1334,6 +1351,7 @@ CONFIG_RTC_DRV_DS1307=y
1334# CONFIG_RTC_DRV_R9701 is not set 1351# CONFIG_RTC_DRV_R9701 is not set
1335# CONFIG_RTC_DRV_RS5C348 is not set 1352# CONFIG_RTC_DRV_RS5C348 is not set
1336# CONFIG_RTC_DRV_DS3234 is not set 1353# CONFIG_RTC_DRV_DS3234 is not set
1354# CONFIG_RTC_DRV_PCF2123 is not set
1337 1355
1338# 1356#
1339# Platform RTC drivers 1357# Platform RTC drivers
@@ -1384,6 +1402,7 @@ CONFIG_FS_MBCACHE=y
1384# CONFIG_GFS2_FS is not set 1402# CONFIG_GFS2_FS is not set
1385# CONFIG_OCFS2_FS is not set 1403# CONFIG_OCFS2_FS is not set
1386# CONFIG_BTRFS_FS is not set 1404# CONFIG_BTRFS_FS is not set
1405# CONFIG_NILFS2_FS is not set
1387CONFIG_FILE_LOCKING=y 1406CONFIG_FILE_LOCKING=y
1388CONFIG_FSNOTIFY=y 1407CONFIG_FSNOTIFY=y
1389CONFIG_DNOTIFY=y 1408CONFIG_DNOTIFY=y
@@ -1453,7 +1472,6 @@ CONFIG_JFFS2_RTIME=y
1453# CONFIG_ROMFS_FS is not set 1472# CONFIG_ROMFS_FS is not set
1454# CONFIG_SYSV_FS is not set 1473# CONFIG_SYSV_FS is not set
1455# CONFIG_UFS_FS is not set 1474# CONFIG_UFS_FS is not set
1456# CONFIG_NILFS2_FS is not set
1457CONFIG_NETWORK_FILESYSTEMS=y 1475CONFIG_NETWORK_FILESYSTEMS=y
1458CONFIG_NFS_FS=y 1476CONFIG_NFS_FS=y
1459CONFIG_NFS_V3=y 1477CONFIG_NFS_V3=y
@@ -1569,6 +1587,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1569CONFIG_ENABLE_MUST_CHECK=y 1587CONFIG_ENABLE_MUST_CHECK=y
1570CONFIG_FRAME_WARN=1024 1588CONFIG_FRAME_WARN=1024
1571# CONFIG_MAGIC_SYSRQ is not set 1589# CONFIG_MAGIC_SYSRQ is not set
1590# CONFIG_STRIP_ASM_SYMS is not set
1572# CONFIG_UNUSED_SYMBOLS is not set 1591# CONFIG_UNUSED_SYMBOLS is not set
1573# CONFIG_DEBUG_FS is not set 1592# CONFIG_DEBUG_FS is not set
1574# CONFIG_HEADERS_CHECK is not set 1593# CONFIG_HEADERS_CHECK is not set
@@ -1586,6 +1605,7 @@ CONFIG_SCHED_DEBUG=y
1586# CONFIG_DEBUG_OBJECTS is not set 1605# CONFIG_DEBUG_OBJECTS is not set
1587# CONFIG_SLUB_DEBUG_ON is not set 1606# CONFIG_SLUB_DEBUG_ON is not set
1588# CONFIG_SLUB_STATS is not set 1607# CONFIG_SLUB_STATS is not set
1608# CONFIG_DEBUG_KMEMLEAK is not set
1589# CONFIG_DEBUG_RT_MUTEXES is not set 1609# CONFIG_DEBUG_RT_MUTEXES is not set
1590# CONFIG_RT_MUTEX_TESTER is not set 1610# CONFIG_RT_MUTEX_TESTER is not set
1591# CONFIG_DEBUG_SPINLOCK is not set 1611# CONFIG_DEBUG_SPINLOCK is not set
@@ -1604,10 +1624,12 @@ CONFIG_SCHED_DEBUG=y
1604# CONFIG_DEBUG_LIST is not set 1624# CONFIG_DEBUG_LIST is not set
1605# CONFIG_DEBUG_SG is not set 1625# CONFIG_DEBUG_SG is not set
1606# CONFIG_DEBUG_NOTIFIERS is not set 1626# CONFIG_DEBUG_NOTIFIERS is not set
1627# CONFIG_DEBUG_CREDENTIALS is not set
1607# CONFIG_RCU_TORTURE_TEST is not set 1628# CONFIG_RCU_TORTURE_TEST is not set
1608# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1629# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1609# CONFIG_BACKTRACE_SELF_TEST is not set 1630# CONFIG_BACKTRACE_SELF_TEST is not set
1610# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1631# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1632# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1611# CONFIG_FAULT_INJECTION is not set 1633# CONFIG_FAULT_INJECTION is not set
1612# CONFIG_LATENCYTOP is not set 1634# CONFIG_LATENCYTOP is not set
1613CONFIG_SYSCTL_SYSCALL_CHECK=y 1635CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1630,10 +1652,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1630# CONFIG_KMEMTRACE is not set 1652# CONFIG_KMEMTRACE is not set
1631# CONFIG_WORKQUEUE_TRACER is not set 1653# CONFIG_WORKQUEUE_TRACER is not set
1632# CONFIG_BLK_DEV_IO_TRACE is not set 1654# CONFIG_BLK_DEV_IO_TRACE is not set
1655# CONFIG_DMA_API_DEBUG is not set
1633# CONFIG_SAMPLES is not set 1656# CONFIG_SAMPLES is not set
1634CONFIG_HAVE_ARCH_KGDB=y 1657CONFIG_HAVE_ARCH_KGDB=y
1635# CONFIG_KGDB is not set 1658# CONFIG_KGDB is not set
1636# CONFIG_KMEMCHECK is not set
1637# CONFIG_PPC_DISABLE_WERROR is not set 1659# CONFIG_PPC_DISABLE_WERROR is not set
1638CONFIG_PPC_WERROR=y 1660CONFIG_PPC_WERROR=y
1639CONFIG_PRINT_STACK_DEPTH=64 1661CONFIG_PRINT_STACK_DEPTH=64
@@ -1660,7 +1682,6 @@ CONFIG_CRYPTO=y
1660# 1682#
1661# Crypto core or helper 1683# Crypto core or helper
1662# 1684#
1663# CONFIG_CRYPTO_FIPS is not set
1664CONFIG_CRYPTO_ALGAPI=y 1685CONFIG_CRYPTO_ALGAPI=y
1665CONFIG_CRYPTO_ALGAPI2=y 1686CONFIG_CRYPTO_ALGAPI2=y
1666CONFIG_CRYPTO_AEAD2=y 1687CONFIG_CRYPTO_AEAD2=y
@@ -1702,11 +1723,13 @@ CONFIG_CRYPTO_PCBC=m
1702# 1723#
1703# CONFIG_CRYPTO_HMAC is not set 1724# CONFIG_CRYPTO_HMAC is not set
1704# CONFIG_CRYPTO_XCBC is not set 1725# CONFIG_CRYPTO_XCBC is not set
1726# CONFIG_CRYPTO_VMAC is not set
1705 1727
1706# 1728#
1707# Digest 1729# Digest
1708# 1730#
1709# CONFIG_CRYPTO_CRC32C is not set 1731# CONFIG_CRYPTO_CRC32C is not set
1732# CONFIG_CRYPTO_GHASH is not set
1710# CONFIG_CRYPTO_MD4 is not set 1733# CONFIG_CRYPTO_MD4 is not set
1711CONFIG_CRYPTO_MD5=y 1734CONFIG_CRYPTO_MD5=y
1712# CONFIG_CRYPTO_MICHAEL_MIC is not set 1735# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig b/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig
index 76237d466702..7bf71d577033 100644
--- a/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig
+++ b/arch/powerpc/configs/83xx/mpc8315_rdb_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:05 2009 4# Thu Nov 5 08:20:23 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -35,6 +35,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y 35CONFIG_GENERIC_HARDIRQS=y
36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +85,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 85#
85# RCU Subsystem 86# RCU Subsystem
86# 87#
87CONFIG_CLASSIC_RCU=y 88CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 90# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 93# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 94# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 95CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 96CONFIG_GROUP_SCHED=y
@@ -124,28 +126,29 @@ CONFIG_TIMERFD=y
124CONFIG_EVENTFD=y 126CONFIG_EVENTFD=y
125CONFIG_SHMEM=y 127CONFIG_SHMEM=y
126CONFIG_AIO=y 128CONFIG_AIO=y
127CONFIG_HAVE_PERF_COUNTERS=y 129CONFIG_HAVE_PERF_EVENTS=y
128 130
129# 131#
130# Performance Counters 132# Kernel Performance Events And Counters
131# 133#
134# CONFIG_PERF_EVENTS is not set
132# CONFIG_PERF_COUNTERS is not set 135# CONFIG_PERF_COUNTERS is not set
133CONFIG_VM_EVENT_COUNTERS=y 136CONFIG_VM_EVENT_COUNTERS=y
134CONFIG_PCI_QUIRKS=y 137CONFIG_PCI_QUIRKS=y
135CONFIG_SLUB_DEBUG=y 138CONFIG_SLUB_DEBUG=y
136# CONFIG_STRIP_ASM_SYMS is not set
137CONFIG_COMPAT_BRK=y 139CONFIG_COMPAT_BRK=y
138# CONFIG_SLAB is not set 140# CONFIG_SLAB is not set
139CONFIG_SLUB=y 141CONFIG_SLUB=y
140# CONFIG_SLOB is not set 142# CONFIG_SLOB is not set
141# CONFIG_PROFILING is not set 143# CONFIG_PROFILING is not set
142# CONFIG_MARKERS is not set
143CONFIG_HAVE_OPROFILE=y 144CONFIG_HAVE_OPROFILE=y
144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 145CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
145CONFIG_HAVE_IOREMAP_PROT=y 146CONFIG_HAVE_IOREMAP_PROT=y
146CONFIG_HAVE_KPROBES=y 147CONFIG_HAVE_KPROBES=y
147CONFIG_HAVE_KRETPROBES=y 148CONFIG_HAVE_KRETPROBES=y
148CONFIG_HAVE_ARCH_TRACEHOOK=y 149CONFIG_HAVE_ARCH_TRACEHOOK=y
150CONFIG_HAVE_DMA_ATTRS=y
151CONFIG_HAVE_DMA_API_DEBUG=y
149 152
150# 153#
151# GCOV-based kernel profiling 154# GCOV-based kernel profiling
@@ -256,6 +259,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
256CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
257# CONFIG_KEXEC is not set 260# CONFIG_KEXEC is not set
258# CONFIG_CRASH_DUMP is not set 261# CONFIG_CRASH_DUMP is not set
262CONFIG_MAX_ACTIVE_REGIONS=32
259CONFIG_ARCH_FLATMEM_ENABLE=y 263CONFIG_ARCH_FLATMEM_ENABLE=y
260CONFIG_ARCH_POPULATES_NODE_MAP=y 264CONFIG_ARCH_POPULATES_NODE_MAP=y
261CONFIG_SELECT_MEMORY_MODEL=y 265CONFIG_SELECT_MEMORY_MODEL=y
@@ -273,6 +277,7 @@ CONFIG_BOUNCE=y
273CONFIG_VIRT_TO_BUS=y 277CONFIG_VIRT_TO_BUS=y
274CONFIG_HAVE_MLOCK=y 278CONFIG_HAVE_MLOCK=y
275CONFIG_HAVE_MLOCKED_PAGE_BIT=y 279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set
276CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
277CONFIG_PPC_4K_PAGES=y 282CONFIG_PPC_4K_PAGES=y
278# CONFIG_PPC_16K_PAGES is not set 283# CONFIG_PPC_16K_PAGES is not set
@@ -369,6 +374,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
369# CONFIG_NETFILTER is not set 374# CONFIG_NETFILTER is not set
370# CONFIG_IP_DCCP is not set 375# CONFIG_IP_DCCP is not set
371# CONFIG_IP_SCTP is not set 376# CONFIG_IP_SCTP is not set
377# CONFIG_RDS is not set
372# CONFIG_TIPC is not set 378# CONFIG_TIPC is not set
373# CONFIG_ATM is not set 379# CONFIG_ATM is not set
374# CONFIG_BRIDGE is not set 380# CONFIG_BRIDGE is not set
@@ -398,6 +404,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
398# CONFIG_AF_RXRPC is not set 404# CONFIG_AF_RXRPC is not set
399CONFIG_WIRELESS=y 405CONFIG_WIRELESS=y
400# CONFIG_CFG80211 is not set 406# CONFIG_CFG80211 is not set
407CONFIG_CFG80211_DEFAULT_PS_VALUE=0
401CONFIG_WIRELESS_OLD_REGULATORY=y 408CONFIG_WIRELESS_OLD_REGULATORY=y
402# CONFIG_WIRELESS_EXT is not set 409# CONFIG_WIRELESS_EXT is not set
403# CONFIG_LIB80211 is not set 410# CONFIG_LIB80211 is not set
@@ -405,7 +412,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
405# 412#
406# CFG80211 needs to be enabled for MAC80211 413# CFG80211 needs to be enabled for MAC80211
407# 414#
408CONFIG_MAC80211_DEFAULT_PS_VALUE=0
409# CONFIG_WIMAX is not set 415# CONFIG_WIMAX is not set
410# CONFIG_RFKILL is not set 416# CONFIG_RFKILL is not set
411# CONFIG_NET_9P is not set 417# CONFIG_NET_9P is not set
@@ -418,6 +424,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
418# Generic Driver Options 424# Generic Driver Options
419# 425#
420CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 426CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
427# CONFIG_DEVTMPFS is not set
421CONFIG_STANDALONE=y 428CONFIG_STANDALONE=y
422CONFIG_PREVENT_FIRMWARE_BUILD=y 429CONFIG_PREVENT_FIRMWARE_BUILD=y
423# CONFIG_FW_LOADER is not set 430# CONFIG_FW_LOADER is not set
@@ -427,9 +434,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
427# CONFIG_CONNECTOR is not set 434# CONFIG_CONNECTOR is not set
428CONFIG_MTD=y 435CONFIG_MTD=y
429# CONFIG_MTD_DEBUG is not set 436# CONFIG_MTD_DEBUG is not set
437# CONFIG_MTD_TESTS is not set
430# CONFIG_MTD_CONCAT is not set 438# CONFIG_MTD_CONCAT is not set
431CONFIG_MTD_PARTITIONS=y 439CONFIG_MTD_PARTITIONS=y
432# CONFIG_MTD_TESTS is not set
433# CONFIG_MTD_REDBOOT_PARTS is not set 440# CONFIG_MTD_REDBOOT_PARTS is not set
434# CONFIG_MTD_CMDLINE_PARTS is not set 441# CONFIG_MTD_CMDLINE_PARTS is not set
435# CONFIG_MTD_OF_PARTS is not set 442# CONFIG_MTD_OF_PARTS is not set
@@ -488,6 +495,7 @@ CONFIG_MTD_PHYSMAP_OF=y
488# CONFIG_MTD_PMC551 is not set 495# CONFIG_MTD_PMC551 is not set
489# CONFIG_MTD_DATAFLASH is not set 496# CONFIG_MTD_DATAFLASH is not set
490# CONFIG_MTD_M25P80 is not set 497# CONFIG_MTD_M25P80 is not set
498# CONFIG_MTD_SST25L is not set
491# CONFIG_MTD_SLRAM is not set 499# CONFIG_MTD_SLRAM is not set
492# CONFIG_MTD_PHRAM is not set 500# CONFIG_MTD_PHRAM is not set
493# CONFIG_MTD_MTDRAM is not set 501# CONFIG_MTD_MTDRAM is not set
@@ -605,6 +613,7 @@ CONFIG_SCSI_LOWLEVEL=y
605# CONFIG_ISCSI_TCP is not set 613# CONFIG_ISCSI_TCP is not set
606# CONFIG_SCSI_CXGB3_ISCSI is not set 614# CONFIG_SCSI_CXGB3_ISCSI is not set
607# CONFIG_SCSI_BNX2_ISCSI is not set 615# CONFIG_SCSI_BNX2_ISCSI is not set
616# CONFIG_BE2ISCSI is not set
608# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 617# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
609# CONFIG_SCSI_3W_9XXX is not set 618# CONFIG_SCSI_3W_9XXX is not set
610# CONFIG_SCSI_ACARD is not set 619# CONFIG_SCSI_ACARD is not set
@@ -644,11 +653,14 @@ CONFIG_SCSI_LOWLEVEL=y
644# CONFIG_SCSI_DC390T is not set 653# CONFIG_SCSI_DC390T is not set
645# CONFIG_SCSI_NSP32 is not set 654# CONFIG_SCSI_NSP32 is not set
646# CONFIG_SCSI_DEBUG is not set 655# CONFIG_SCSI_DEBUG is not set
656# CONFIG_SCSI_PMCRAID is not set
647# CONFIG_SCSI_SRP is not set 657# CONFIG_SCSI_SRP is not set
658# CONFIG_SCSI_BFA_FC is not set
648# CONFIG_SCSI_DH is not set 659# CONFIG_SCSI_DH is not set
649# CONFIG_SCSI_OSD_INITIATOR is not set 660# CONFIG_SCSI_OSD_INITIATOR is not set
650CONFIG_ATA=y 661CONFIG_ATA=y
651# CONFIG_ATA_NONSTANDARD is not set 662# CONFIG_ATA_NONSTANDARD is not set
663CONFIG_ATA_VERBOSE_ERROR=y
652CONFIG_SATA_PMP=y 664CONFIG_SATA_PMP=y
653# CONFIG_SATA_AHCI is not set 665# CONFIG_SATA_AHCI is not set
654# CONFIG_SATA_SIL24 is not set 666# CONFIG_SATA_SIL24 is not set
@@ -671,6 +683,7 @@ CONFIG_ATA_SFF=y
671# CONFIG_PATA_ALI is not set 683# CONFIG_PATA_ALI is not set
672# CONFIG_PATA_AMD is not set 684# CONFIG_PATA_AMD is not set
673# CONFIG_PATA_ARTOP is not set 685# CONFIG_PATA_ARTOP is not set
686# CONFIG_PATA_ATP867X is not set
674# CONFIG_PATA_ATIIXP is not set 687# CONFIG_PATA_ATIIXP is not set
675# CONFIG_PATA_CMD640_PCI is not set 688# CONFIG_PATA_CMD640_PCI is not set
676# CONFIG_PATA_CMD64X is not set 689# CONFIG_PATA_CMD64X is not set
@@ -698,6 +711,7 @@ CONFIG_ATA_SFF=y
698# CONFIG_PATA_OPTIDMA is not set 711# CONFIG_PATA_OPTIDMA is not set
699# CONFIG_PATA_PDC_OLD is not set 712# CONFIG_PATA_PDC_OLD is not set
700# CONFIG_PATA_RADISYS is not set 713# CONFIG_PATA_RADISYS is not set
714# CONFIG_PATA_RDC is not set
701# CONFIG_PATA_RZ1000 is not set 715# CONFIG_PATA_RZ1000 is not set
702# CONFIG_PATA_SC1200 is not set 716# CONFIG_PATA_SC1200 is not set
703# CONFIG_PATA_SERVERWORKS is not set 717# CONFIG_PATA_SERVERWORKS is not set
@@ -802,9 +816,11 @@ CONFIG_E100=y
802# CONFIG_TLAN is not set 816# CONFIG_TLAN is not set
803# CONFIG_KS8842 is not set 817# CONFIG_KS8842 is not set
804# CONFIG_KS8851 is not set 818# CONFIG_KS8851 is not set
819# CONFIG_KS8851_MLL is not set
805# CONFIG_VIA_RHINE is not set 820# CONFIG_VIA_RHINE is not set
806# CONFIG_SC92031 is not set 821# CONFIG_SC92031 is not set
807# CONFIG_ATL2 is not set 822# CONFIG_ATL2 is not set
823# CONFIG_XILINX_EMACLITE is not set
808CONFIG_NETDEV_1000=y 824CONFIG_NETDEV_1000=y
809# CONFIG_ACENIC is not set 825# CONFIG_ACENIC is not set
810# CONFIG_DL2K is not set 826# CONFIG_DL2K is not set
@@ -852,10 +868,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
852# CONFIG_SFC is not set 868# CONFIG_SFC is not set
853# CONFIG_BE2NET is not set 869# CONFIG_BE2NET is not set
854# CONFIG_TR is not set 870# CONFIG_TR is not set
855 871CONFIG_WLAN=y
856#
857# Wireless LAN
858#
859# CONFIG_WLAN_PRE80211 is not set 872# CONFIG_WLAN_PRE80211 is not set
860# CONFIG_WLAN_80211 is not set 873# CONFIG_WLAN_80211 is not set
861 874
@@ -957,6 +970,7 @@ CONFIG_HW_RANDOM=y
957CONFIG_DEVPORT=y 970CONFIG_DEVPORT=y
958CONFIG_I2C=y 971CONFIG_I2C=y
959CONFIG_I2C_BOARDINFO=y 972CONFIG_I2C_BOARDINFO=y
973CONFIG_I2C_COMPAT=y
960CONFIG_I2C_CHARDEV=y 974CONFIG_I2C_CHARDEV=y
961CONFIG_I2C_HELPER_AUTO=y 975CONFIG_I2C_HELPER_AUTO=y
962 976
@@ -1011,9 +1025,6 @@ CONFIG_I2C_MPC=y
1011# Miscellaneous I2C Chip support 1025# Miscellaneous I2C Chip support
1012# 1026#
1013# CONFIG_DS1682 is not set 1027# CONFIG_DS1682 is not set
1014# CONFIG_SENSORS_PCF8574 is not set
1015# CONFIG_PCF8575 is not set
1016# CONFIG_SENSORS_PCA9539 is not set
1017# CONFIG_SENSORS_TSL2550 is not set 1028# CONFIG_SENSORS_TSL2550 is not set
1018# CONFIG_I2C_DEBUG_CORE is not set 1029# CONFIG_I2C_DEBUG_CORE is not set
1019# CONFIG_I2C_DEBUG_ALGO is not set 1030# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1045,6 +1056,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
1045# CONFIG_POWER_SUPPLY is not set 1056# CONFIG_POWER_SUPPLY is not set
1046CONFIG_HWMON=y 1057CONFIG_HWMON=y
1047# CONFIG_HWMON_VID is not set 1058# CONFIG_HWMON_VID is not set
1059# CONFIG_HWMON_DEBUG_CHIP is not set
1060
1061#
1062# Native drivers
1063#
1048# CONFIG_SENSORS_AD7414 is not set 1064# CONFIG_SENSORS_AD7414 is not set
1049# CONFIG_SENSORS_AD7418 is not set 1065# CONFIG_SENSORS_AD7418 is not set
1050# CONFIG_SENSORS_ADCXX is not set 1066# CONFIG_SENSORS_ADCXX is not set
@@ -1097,6 +1113,7 @@ CONFIG_HWMON=y
1097# CONFIG_SENSORS_ADS7828 is not set 1113# CONFIG_SENSORS_ADS7828 is not set
1098# CONFIG_SENSORS_THMC50 is not set 1114# CONFIG_SENSORS_THMC50 is not set
1099# CONFIG_SENSORS_TMP401 is not set 1115# CONFIG_SENSORS_TMP401 is not set
1116# CONFIG_SENSORS_TMP421 is not set
1100# CONFIG_SENSORS_VIA686A is not set 1117# CONFIG_SENSORS_VIA686A is not set
1101# CONFIG_SENSORS_VT1211 is not set 1118# CONFIG_SENSORS_VT1211 is not set
1102# CONFIG_SENSORS_VT8231 is not set 1119# CONFIG_SENSORS_VT8231 is not set
@@ -1109,9 +1126,7 @@ CONFIG_HWMON=y
1109# CONFIG_SENSORS_W83627HF is not set 1126# CONFIG_SENSORS_W83627HF is not set
1110# CONFIG_SENSORS_W83627EHF is not set 1127# CONFIG_SENSORS_W83627EHF is not set
1111# CONFIG_SENSORS_LIS3_SPI is not set 1128# CONFIG_SENSORS_LIS3_SPI is not set
1112# CONFIG_HWMON_DEBUG_CHIP is not set
1113# CONFIG_THERMAL is not set 1129# CONFIG_THERMAL is not set
1114# CONFIG_THERMAL_HWMON is not set
1115CONFIG_WATCHDOG=y 1130CONFIG_WATCHDOG=y
1116# CONFIG_WATCHDOG_NOWAYOUT is not set 1131# CONFIG_WATCHDOG_NOWAYOUT is not set
1117 1132
@@ -1149,8 +1164,10 @@ CONFIG_SSB_POSSIBLE=y
1149# CONFIG_MFD_TMIO is not set 1164# CONFIG_MFD_TMIO is not set
1150# CONFIG_PMIC_DA903X is not set 1165# CONFIG_PMIC_DA903X is not set
1151# CONFIG_MFD_WM8400 is not set 1166# CONFIG_MFD_WM8400 is not set
1167# CONFIG_MFD_WM831X is not set
1152# CONFIG_MFD_WM8350_I2C is not set 1168# CONFIG_MFD_WM8350_I2C is not set
1153# CONFIG_MFD_PCF50633 is not set 1169# CONFIG_MFD_PCF50633 is not set
1170# CONFIG_MFD_MC13783 is not set
1154# CONFIG_AB3100_CORE is not set 1171# CONFIG_AB3100_CORE is not set
1155# CONFIG_EZX_PCAP is not set 1172# CONFIG_EZX_PCAP is not set
1156# CONFIG_REGULATOR is not set 1173# CONFIG_REGULATOR is not set
@@ -1160,6 +1177,7 @@ CONFIG_SSB_POSSIBLE=y
1160# Graphics support 1177# Graphics support
1161# 1178#
1162# CONFIG_AGP is not set 1179# CONFIG_AGP is not set
1180CONFIG_VGA_ARB=y
1163# CONFIG_DRM is not set 1181# CONFIG_DRM is not set
1164# CONFIG_VGASTATE is not set 1182# CONFIG_VGASTATE is not set
1165CONFIG_VIDEO_OUTPUT_CONTROL=m 1183CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -1173,7 +1191,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
1173# CONFIG_SOUND is not set 1191# CONFIG_SOUND is not set
1174CONFIG_HID_SUPPORT=y 1192CONFIG_HID_SUPPORT=y
1175CONFIG_HID=y 1193CONFIG_HID=y
1176# CONFIG_HID_DEBUG is not set
1177# CONFIG_HIDRAW is not set 1194# CONFIG_HIDRAW is not set
1178 1195
1179# 1196#
@@ -1225,6 +1242,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1225# CONFIG_USB_OXU210HP_HCD is not set 1242# CONFIG_USB_OXU210HP_HCD is not set
1226# CONFIG_USB_ISP116X_HCD is not set 1243# CONFIG_USB_ISP116X_HCD is not set
1227# CONFIG_USB_ISP1760_HCD is not set 1244# CONFIG_USB_ISP1760_HCD is not set
1245# CONFIG_USB_ISP1362_HCD is not set
1228CONFIG_USB_OHCI_HCD=y 1246CONFIG_USB_OHCI_HCD=y
1229CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1247CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
1230# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 1248# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
@@ -1316,6 +1334,7 @@ CONFIG_USB_GADGET_SELECTED=y
1316# CONFIG_USB_GADGET_LH7A40X is not set 1334# CONFIG_USB_GADGET_LH7A40X is not set
1317# CONFIG_USB_GADGET_OMAP is not set 1335# CONFIG_USB_GADGET_OMAP is not set
1318# CONFIG_USB_GADGET_PXA25X is not set 1336# CONFIG_USB_GADGET_PXA25X is not set
1337# CONFIG_USB_GADGET_R8A66597 is not set
1319# CONFIG_USB_GADGET_PXA27X is not set 1338# CONFIG_USB_GADGET_PXA27X is not set
1320# CONFIG_USB_GADGET_S3C_HSOTG is not set 1339# CONFIG_USB_GADGET_S3C_HSOTG is not set
1321# CONFIG_USB_GADGET_IMX is not set 1340# CONFIG_USB_GADGET_IMX is not set
@@ -1334,6 +1353,7 @@ CONFIG_USB_GADGET_DUALSPEED=y
1334# CONFIG_USB_AUDIO is not set 1353# CONFIG_USB_AUDIO is not set
1335CONFIG_USB_ETH=y 1354CONFIG_USB_ETH=y
1336CONFIG_USB_ETH_RNDIS=y 1355CONFIG_USB_ETH_RNDIS=y
1356# CONFIG_USB_ETH_EEM is not set
1337# CONFIG_USB_GADGETFS is not set 1357# CONFIG_USB_GADGETFS is not set
1338# CONFIG_USB_FILE_STORAGE is not set 1358# CONFIG_USB_FILE_STORAGE is not set
1339# CONFIG_USB_G_SERIAL is not set 1359# CONFIG_USB_G_SERIAL is not set
@@ -1395,6 +1415,7 @@ CONFIG_RTC_DRV_DS1307=y
1395# CONFIG_RTC_DRV_R9701 is not set 1415# CONFIG_RTC_DRV_R9701 is not set
1396# CONFIG_RTC_DRV_RS5C348 is not set 1416# CONFIG_RTC_DRV_RS5C348 is not set
1397# CONFIG_RTC_DRV_DS3234 is not set 1417# CONFIG_RTC_DRV_DS3234 is not set
1418# CONFIG_RTC_DRV_PCF2123 is not set
1398 1419
1399# 1420#
1400# Platform RTC drivers 1421# Platform RTC drivers
@@ -1445,6 +1466,7 @@ CONFIG_FS_MBCACHE=y
1445# CONFIG_GFS2_FS is not set 1466# CONFIG_GFS2_FS is not set
1446# CONFIG_OCFS2_FS is not set 1467# CONFIG_OCFS2_FS is not set
1447# CONFIG_BTRFS_FS is not set 1468# CONFIG_BTRFS_FS is not set
1469# CONFIG_NILFS2_FS is not set
1448CONFIG_FILE_LOCKING=y 1470CONFIG_FILE_LOCKING=y
1449CONFIG_FSNOTIFY=y 1471CONFIG_FSNOTIFY=y
1450CONFIG_DNOTIFY=y 1472CONFIG_DNOTIFY=y
@@ -1514,7 +1536,6 @@ CONFIG_JFFS2_RTIME=y
1514# CONFIG_ROMFS_FS is not set 1536# CONFIG_ROMFS_FS is not set
1515# CONFIG_SYSV_FS is not set 1537# CONFIG_SYSV_FS is not set
1516# CONFIG_UFS_FS is not set 1538# CONFIG_UFS_FS is not set
1517# CONFIG_NILFS2_FS is not set
1518CONFIG_NETWORK_FILESYSTEMS=y 1539CONFIG_NETWORK_FILESYSTEMS=y
1519CONFIG_NFS_FS=y 1540CONFIG_NFS_FS=y
1520CONFIG_NFS_V3=y 1541CONFIG_NFS_V3=y
@@ -1630,6 +1651,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1630CONFIG_ENABLE_MUST_CHECK=y 1651CONFIG_ENABLE_MUST_CHECK=y
1631CONFIG_FRAME_WARN=1024 1652CONFIG_FRAME_WARN=1024
1632# CONFIG_MAGIC_SYSRQ is not set 1653# CONFIG_MAGIC_SYSRQ is not set
1654# CONFIG_STRIP_ASM_SYMS is not set
1633# CONFIG_UNUSED_SYMBOLS is not set 1655# CONFIG_UNUSED_SYMBOLS is not set
1634# CONFIG_DEBUG_FS is not set 1656# CONFIG_DEBUG_FS is not set
1635# CONFIG_HEADERS_CHECK is not set 1657# CONFIG_HEADERS_CHECK is not set
@@ -1647,6 +1669,7 @@ CONFIG_SCHED_DEBUG=y
1647# CONFIG_DEBUG_OBJECTS is not set 1669# CONFIG_DEBUG_OBJECTS is not set
1648# CONFIG_SLUB_DEBUG_ON is not set 1670# CONFIG_SLUB_DEBUG_ON is not set
1649# CONFIG_SLUB_STATS is not set 1671# CONFIG_SLUB_STATS is not set
1672# CONFIG_DEBUG_KMEMLEAK is not set
1650# CONFIG_DEBUG_RT_MUTEXES is not set 1673# CONFIG_DEBUG_RT_MUTEXES is not set
1651# CONFIG_RT_MUTEX_TESTER is not set 1674# CONFIG_RT_MUTEX_TESTER is not set
1652# CONFIG_DEBUG_SPINLOCK is not set 1675# CONFIG_DEBUG_SPINLOCK is not set
@@ -1665,10 +1688,12 @@ CONFIG_SCHED_DEBUG=y
1665# CONFIG_DEBUG_LIST is not set 1688# CONFIG_DEBUG_LIST is not set
1666# CONFIG_DEBUG_SG is not set 1689# CONFIG_DEBUG_SG is not set
1667# CONFIG_DEBUG_NOTIFIERS is not set 1690# CONFIG_DEBUG_NOTIFIERS is not set
1691# CONFIG_DEBUG_CREDENTIALS is not set
1668# CONFIG_RCU_TORTURE_TEST is not set 1692# CONFIG_RCU_TORTURE_TEST is not set
1669# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1693# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1670# CONFIG_BACKTRACE_SELF_TEST is not set 1694# CONFIG_BACKTRACE_SELF_TEST is not set
1671# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1695# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1696# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1672# CONFIG_FAULT_INJECTION is not set 1697# CONFIG_FAULT_INJECTION is not set
1673# CONFIG_LATENCYTOP is not set 1698# CONFIG_LATENCYTOP is not set
1674CONFIG_SYSCTL_SYSCALL_CHECK=y 1699CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1691,10 +1716,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1691# CONFIG_KMEMTRACE is not set 1716# CONFIG_KMEMTRACE is not set
1692# CONFIG_WORKQUEUE_TRACER is not set 1717# CONFIG_WORKQUEUE_TRACER is not set
1693# CONFIG_BLK_DEV_IO_TRACE is not set 1718# CONFIG_BLK_DEV_IO_TRACE is not set
1719# CONFIG_DMA_API_DEBUG is not set
1694# CONFIG_SAMPLES is not set 1720# CONFIG_SAMPLES is not set
1695CONFIG_HAVE_ARCH_KGDB=y 1721CONFIG_HAVE_ARCH_KGDB=y
1696# CONFIG_KGDB is not set 1722# CONFIG_KGDB is not set
1697# CONFIG_KMEMCHECK is not set
1698# CONFIG_PPC_DISABLE_WERROR is not set 1723# CONFIG_PPC_DISABLE_WERROR is not set
1699CONFIG_PPC_WERROR=y 1724CONFIG_PPC_WERROR=y
1700CONFIG_PRINT_STACK_DEPTH=64 1725CONFIG_PRINT_STACK_DEPTH=64
@@ -1721,7 +1746,6 @@ CONFIG_CRYPTO=y
1721# 1746#
1722# Crypto core or helper 1747# Crypto core or helper
1723# 1748#
1724# CONFIG_CRYPTO_FIPS is not set
1725CONFIG_CRYPTO_ALGAPI=y 1749CONFIG_CRYPTO_ALGAPI=y
1726CONFIG_CRYPTO_ALGAPI2=y 1750CONFIG_CRYPTO_ALGAPI2=y
1727CONFIG_CRYPTO_AEAD2=y 1751CONFIG_CRYPTO_AEAD2=y
@@ -1763,11 +1787,13 @@ CONFIG_CRYPTO_PCBC=m
1763# 1787#
1764# CONFIG_CRYPTO_HMAC is not set 1788# CONFIG_CRYPTO_HMAC is not set
1765# CONFIG_CRYPTO_XCBC is not set 1789# CONFIG_CRYPTO_XCBC is not set
1790# CONFIG_CRYPTO_VMAC is not set
1766 1791
1767# 1792#
1768# Digest 1793# Digest
1769# 1794#
1770# CONFIG_CRYPTO_CRC32C is not set 1795# CONFIG_CRYPTO_CRC32C is not set
1796# CONFIG_CRYPTO_GHASH is not set
1771# CONFIG_CRYPTO_MD4 is not set 1797# CONFIG_CRYPTO_MD4 is not set
1772CONFIG_CRYPTO_MD5=y 1798CONFIG_CRYPTO_MD5=y
1773# CONFIG_CRYPTO_MICHAEL_MIC is not set 1799# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/83xx/mpc832x_mds_defconfig b/arch/powerpc/configs/83xx/mpc832x_mds_defconfig
index e0e36a113409..7def83518a6c 100644
--- a/arch/powerpc/configs/83xx/mpc832x_mds_defconfig
+++ b/arch/powerpc/configs/83xx/mpc832x_mds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:06 2009 4# Thu Nov 5 08:20:24 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -35,6 +35,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y 35CONFIG_GENERIC_HARDIRQS=y
36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +85,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 85#
85# RCU Subsystem 86# RCU Subsystem
86# 87#
87CONFIG_CLASSIC_RCU=y 88CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 90# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 93# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 94# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 95CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 96CONFIG_GROUP_SCHED=y
@@ -124,28 +126,29 @@ CONFIG_TIMERFD=y
124CONFIG_EVENTFD=y 126CONFIG_EVENTFD=y
125CONFIG_SHMEM=y 127CONFIG_SHMEM=y
126CONFIG_AIO=y 128CONFIG_AIO=y
127CONFIG_HAVE_PERF_COUNTERS=y 129CONFIG_HAVE_PERF_EVENTS=y
128 130
129# 131#
130# Performance Counters 132# Kernel Performance Events And Counters
131# 133#
134# CONFIG_PERF_EVENTS is not set
132# CONFIG_PERF_COUNTERS is not set 135# CONFIG_PERF_COUNTERS is not set
133CONFIG_VM_EVENT_COUNTERS=y 136CONFIG_VM_EVENT_COUNTERS=y
134CONFIG_PCI_QUIRKS=y 137CONFIG_PCI_QUIRKS=y
135CONFIG_SLUB_DEBUG=y 138CONFIG_SLUB_DEBUG=y
136# CONFIG_STRIP_ASM_SYMS is not set
137CONFIG_COMPAT_BRK=y 139CONFIG_COMPAT_BRK=y
138# CONFIG_SLAB is not set 140# CONFIG_SLAB is not set
139CONFIG_SLUB=y 141CONFIG_SLUB=y
140# CONFIG_SLOB is not set 142# CONFIG_SLOB is not set
141# CONFIG_PROFILING is not set 143# CONFIG_PROFILING is not set
142# CONFIG_MARKERS is not set
143CONFIG_HAVE_OPROFILE=y 144CONFIG_HAVE_OPROFILE=y
144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 145CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
145CONFIG_HAVE_IOREMAP_PROT=y 146CONFIG_HAVE_IOREMAP_PROT=y
146CONFIG_HAVE_KPROBES=y 147CONFIG_HAVE_KPROBES=y
147CONFIG_HAVE_KRETPROBES=y 148CONFIG_HAVE_KRETPROBES=y
148CONFIG_HAVE_ARCH_TRACEHOOK=y 149CONFIG_HAVE_ARCH_TRACEHOOK=y
150CONFIG_HAVE_DMA_ATTRS=y
151CONFIG_HAVE_DMA_API_DEBUG=y
149 152
150# 153#
151# GCOV-based kernel profiling 154# GCOV-based kernel profiling
@@ -257,6 +260,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
257CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 260CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
258# CONFIG_KEXEC is not set 261# CONFIG_KEXEC is not set
259# CONFIG_CRASH_DUMP is not set 262# CONFIG_CRASH_DUMP is not set
263CONFIG_MAX_ACTIVE_REGIONS=32
260CONFIG_ARCH_FLATMEM_ENABLE=y 264CONFIG_ARCH_FLATMEM_ENABLE=y
261CONFIG_ARCH_POPULATES_NODE_MAP=y 265CONFIG_ARCH_POPULATES_NODE_MAP=y
262CONFIG_SELECT_MEMORY_MODEL=y 266CONFIG_SELECT_MEMORY_MODEL=y
@@ -274,6 +278,7 @@ CONFIG_BOUNCE=y
274CONFIG_VIRT_TO_BUS=y 278CONFIG_VIRT_TO_BUS=y
275CONFIG_HAVE_MLOCK=y 279CONFIG_HAVE_MLOCK=y
276CONFIG_HAVE_MLOCKED_PAGE_BIT=y 280CONFIG_HAVE_MLOCKED_PAGE_BIT=y
281# CONFIG_KSM is not set
277CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 282CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
278CONFIG_PPC_4K_PAGES=y 283CONFIG_PPC_4K_PAGES=y
279# CONFIG_PPC_16K_PAGES is not set 284# CONFIG_PPC_16K_PAGES is not set
@@ -369,6 +374,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
369# CONFIG_NETFILTER is not set 374# CONFIG_NETFILTER is not set
370# CONFIG_IP_DCCP is not set 375# CONFIG_IP_DCCP is not set
371# CONFIG_IP_SCTP is not set 376# CONFIG_IP_SCTP is not set
377# CONFIG_RDS is not set
372# CONFIG_TIPC is not set 378# CONFIG_TIPC is not set
373# CONFIG_ATM is not set 379# CONFIG_ATM is not set
374# CONFIG_BRIDGE is not set 380# CONFIG_BRIDGE is not set
@@ -398,6 +404,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
398# CONFIG_AF_RXRPC is not set 404# CONFIG_AF_RXRPC is not set
399CONFIG_WIRELESS=y 405CONFIG_WIRELESS=y
400# CONFIG_CFG80211 is not set 406# CONFIG_CFG80211 is not set
407CONFIG_CFG80211_DEFAULT_PS_VALUE=0
401CONFIG_WIRELESS_OLD_REGULATORY=y 408CONFIG_WIRELESS_OLD_REGULATORY=y
402# CONFIG_WIRELESS_EXT is not set 409# CONFIG_WIRELESS_EXT is not set
403# CONFIG_LIB80211 is not set 410# CONFIG_LIB80211 is not set
@@ -405,7 +412,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
405# 412#
406# CFG80211 needs to be enabled for MAC80211 413# CFG80211 needs to be enabled for MAC80211
407# 414#
408CONFIG_MAC80211_DEFAULT_PS_VALUE=0
409# CONFIG_WIMAX is not set 415# CONFIG_WIMAX is not set
410# CONFIG_RFKILL is not set 416# CONFIG_RFKILL is not set
411# CONFIG_NET_9P is not set 417# CONFIG_NET_9P is not set
@@ -418,6 +424,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
418# Generic Driver Options 424# Generic Driver Options
419# 425#
420CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 426CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
427# CONFIG_DEVTMPFS is not set
421CONFIG_STANDALONE=y 428CONFIG_STANDALONE=y
422CONFIG_PREVENT_FIRMWARE_BUILD=y 429CONFIG_PREVENT_FIRMWARE_BUILD=y
423# CONFIG_FW_LOADER is not set 430# CONFIG_FW_LOADER is not set
@@ -504,6 +511,7 @@ CONFIG_SCSI_LOWLEVEL=y
504# CONFIG_ISCSI_TCP is not set 511# CONFIG_ISCSI_TCP is not set
505# CONFIG_SCSI_CXGB3_ISCSI is not set 512# CONFIG_SCSI_CXGB3_ISCSI is not set
506# CONFIG_SCSI_BNX2_ISCSI is not set 513# CONFIG_SCSI_BNX2_ISCSI is not set
514# CONFIG_BE2ISCSI is not set
507# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 515# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
508# CONFIG_SCSI_3W_9XXX is not set 516# CONFIG_SCSI_3W_9XXX is not set
509# CONFIG_SCSI_ACARD is not set 517# CONFIG_SCSI_ACARD is not set
@@ -542,7 +550,9 @@ CONFIG_SCSI_LOWLEVEL=y
542# CONFIG_SCSI_DC390T is not set 550# CONFIG_SCSI_DC390T is not set
543# CONFIG_SCSI_NSP32 is not set 551# CONFIG_SCSI_NSP32 is not set
544# CONFIG_SCSI_DEBUG is not set 552# CONFIG_SCSI_DEBUG is not set
553# CONFIG_SCSI_PMCRAID is not set
545# CONFIG_SCSI_SRP is not set 554# CONFIG_SCSI_SRP is not set
555# CONFIG_SCSI_BFA_FC is not set
546# CONFIG_SCSI_DH is not set 556# CONFIG_SCSI_DH is not set
547# CONFIG_SCSI_OSD_INITIATOR is not set 557# CONFIG_SCSI_OSD_INITIATOR is not set
548# CONFIG_ATA is not set 558# CONFIG_ATA is not set
@@ -612,7 +622,9 @@ CONFIG_MII=y
612# CONFIG_NET_PCI is not set 622# CONFIG_NET_PCI is not set
613# CONFIG_B44 is not set 623# CONFIG_B44 is not set
614# CONFIG_KS8842 is not set 624# CONFIG_KS8842 is not set
625# CONFIG_KS8851_MLL is not set
615# CONFIG_ATL2 is not set 626# CONFIG_ATL2 is not set
627# CONFIG_XILINX_EMACLITE is not set
616CONFIG_NETDEV_1000=y 628CONFIG_NETDEV_1000=y
617# CONFIG_ACENIC is not set 629# CONFIG_ACENIC is not set
618# CONFIG_DL2K is not set 630# CONFIG_DL2K is not set
@@ -635,7 +647,6 @@ CONFIG_NETDEV_1000=y
635CONFIG_FSL_PQ_MDIO=y 647CONFIG_FSL_PQ_MDIO=y
636# CONFIG_GIANFAR is not set 648# CONFIG_GIANFAR is not set
637CONFIG_UCC_GETH=y 649CONFIG_UCC_GETH=y
638# CONFIG_UGETH_MAGIC_PACKET is not set
639# CONFIG_UGETH_TX_ON_DEMAND is not set 650# CONFIG_UGETH_TX_ON_DEMAND is not set
640# CONFIG_MV643XX_ETH is not set 651# CONFIG_MV643XX_ETH is not set
641# CONFIG_QLA3XXX is not set 652# CONFIG_QLA3XXX is not set
@@ -663,10 +674,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
663# CONFIG_SFC is not set 674# CONFIG_SFC is not set
664# CONFIG_BE2NET is not set 675# CONFIG_BE2NET is not set
665# CONFIG_TR is not set 676# CONFIG_TR is not set
666 677CONFIG_WLAN=y
667#
668# Wireless LAN
669#
670# CONFIG_WLAN_PRE80211 is not set 678# CONFIG_WLAN_PRE80211 is not set
671# CONFIG_WLAN_80211 is not set 679# CONFIG_WLAN_80211 is not set
672 680
@@ -759,6 +767,7 @@ CONFIG_HW_RANDOM=y
759CONFIG_DEVPORT=y 767CONFIG_DEVPORT=y
760CONFIG_I2C=y 768CONFIG_I2C=y
761CONFIG_I2C_BOARDINFO=y 769CONFIG_I2C_BOARDINFO=y
770CONFIG_I2C_COMPAT=y
762CONFIG_I2C_CHARDEV=y 771CONFIG_I2C_CHARDEV=y
763CONFIG_I2C_HELPER_AUTO=y 772CONFIG_I2C_HELPER_AUTO=y
764 773
@@ -812,9 +821,6 @@ CONFIG_I2C_MPC=y
812# Miscellaneous I2C Chip support 821# Miscellaneous I2C Chip support
813# 822#
814# CONFIG_DS1682 is not set 823# CONFIG_DS1682 is not set
815# CONFIG_SENSORS_PCF8574 is not set
816# CONFIG_PCF8575 is not set
817# CONFIG_SENSORS_PCA9539 is not set
818# CONFIG_SENSORS_TSL2550 is not set 824# CONFIG_SENSORS_TSL2550 is not set
819# CONFIG_I2C_DEBUG_CORE is not set 825# CONFIG_I2C_DEBUG_CORE is not set
820# CONFIG_I2C_DEBUG_ALGO is not set 826# CONFIG_I2C_DEBUG_ALGO is not set
@@ -832,6 +838,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
832# CONFIG_POWER_SUPPLY is not set 838# CONFIG_POWER_SUPPLY is not set
833CONFIG_HWMON=y 839CONFIG_HWMON=y
834# CONFIG_HWMON_VID is not set 840# CONFIG_HWMON_VID is not set
841# CONFIG_HWMON_DEBUG_CHIP is not set
842
843#
844# Native drivers
845#
835# CONFIG_SENSORS_AD7414 is not set 846# CONFIG_SENSORS_AD7414 is not set
836# CONFIG_SENSORS_AD7418 is not set 847# CONFIG_SENSORS_AD7418 is not set
837# CONFIG_SENSORS_ADM1021 is not set 848# CONFIG_SENSORS_ADM1021 is not set
@@ -881,6 +892,7 @@ CONFIG_HWMON=y
881# CONFIG_SENSORS_ADS7828 is not set 892# CONFIG_SENSORS_ADS7828 is not set
882# CONFIG_SENSORS_THMC50 is not set 893# CONFIG_SENSORS_THMC50 is not set
883# CONFIG_SENSORS_TMP401 is not set 894# CONFIG_SENSORS_TMP401 is not set
895# CONFIG_SENSORS_TMP421 is not set
884# CONFIG_SENSORS_VIA686A is not set 896# CONFIG_SENSORS_VIA686A is not set
885# CONFIG_SENSORS_VT1211 is not set 897# CONFIG_SENSORS_VT1211 is not set
886# CONFIG_SENSORS_VT8231 is not set 898# CONFIG_SENSORS_VT8231 is not set
@@ -892,9 +904,7 @@ CONFIG_HWMON=y
892# CONFIG_SENSORS_W83L786NG is not set 904# CONFIG_SENSORS_W83L786NG is not set
893# CONFIG_SENSORS_W83627HF is not set 905# CONFIG_SENSORS_W83627HF is not set
894# CONFIG_SENSORS_W83627EHF is not set 906# CONFIG_SENSORS_W83627EHF is not set
895# CONFIG_HWMON_DEBUG_CHIP is not set
896# CONFIG_THERMAL is not set 907# CONFIG_THERMAL is not set
897# CONFIG_THERMAL_HWMON is not set
898CONFIG_WATCHDOG=y 908CONFIG_WATCHDOG=y
899# CONFIG_WATCHDOG_NOWAYOUT is not set 909# CONFIG_WATCHDOG_NOWAYOUT is not set
900 910
@@ -927,6 +937,7 @@ CONFIG_SSB_POSSIBLE=y
927# CONFIG_MFD_TMIO is not set 937# CONFIG_MFD_TMIO is not set
928# CONFIG_PMIC_DA903X is not set 938# CONFIG_PMIC_DA903X is not set
929# CONFIG_MFD_WM8400 is not set 939# CONFIG_MFD_WM8400 is not set
940# CONFIG_MFD_WM831X is not set
930# CONFIG_MFD_WM8350_I2C is not set 941# CONFIG_MFD_WM8350_I2C is not set
931# CONFIG_MFD_PCF50633 is not set 942# CONFIG_MFD_PCF50633 is not set
932# CONFIG_AB3100_CORE is not set 943# CONFIG_AB3100_CORE is not set
@@ -937,6 +948,7 @@ CONFIG_SSB_POSSIBLE=y
937# Graphics support 948# Graphics support
938# 949#
939# CONFIG_AGP is not set 950# CONFIG_AGP is not set
951CONFIG_VGA_ARB=y
940# CONFIG_DRM is not set 952# CONFIG_DRM is not set
941# CONFIG_VGASTATE is not set 953# CONFIG_VGASTATE is not set
942CONFIG_VIDEO_OUTPUT_CONTROL=m 954CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -950,7 +962,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
950# CONFIG_SOUND is not set 962# CONFIG_SOUND is not set
951CONFIG_HID_SUPPORT=y 963CONFIG_HID_SUPPORT=y
952CONFIG_HID=y 964CONFIG_HID=y
953# CONFIG_HID_DEBUG is not set
954# CONFIG_HIDRAW is not set 965# CONFIG_HIDRAW is not set
955# CONFIG_HID_PID is not set 966# CONFIG_HID_PID is not set
956 967
@@ -1070,6 +1081,7 @@ CONFIG_FS_MBCACHE=y
1070# CONFIG_GFS2_FS is not set 1081# CONFIG_GFS2_FS is not set
1071# CONFIG_OCFS2_FS is not set 1082# CONFIG_OCFS2_FS is not set
1072# CONFIG_BTRFS_FS is not set 1083# CONFIG_BTRFS_FS is not set
1084# CONFIG_NILFS2_FS is not set
1073CONFIG_FILE_LOCKING=y 1085CONFIG_FILE_LOCKING=y
1074CONFIG_FSNOTIFY=y 1086CONFIG_FSNOTIFY=y
1075CONFIG_DNOTIFY=y 1087CONFIG_DNOTIFY=y
@@ -1128,7 +1140,6 @@ CONFIG_MISC_FILESYSTEMS=y
1128# CONFIG_ROMFS_FS is not set 1140# CONFIG_ROMFS_FS is not set
1129# CONFIG_SYSV_FS is not set 1141# CONFIG_SYSV_FS is not set
1130# CONFIG_UFS_FS is not set 1142# CONFIG_UFS_FS is not set
1131# CONFIG_NILFS2_FS is not set
1132CONFIG_NETWORK_FILESYSTEMS=y 1143CONFIG_NETWORK_FILESYSTEMS=y
1133CONFIG_NFS_FS=y 1144CONFIG_NFS_FS=y
1134CONFIG_NFS_V3=y 1145CONFIG_NFS_V3=y
@@ -1202,6 +1213,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1202CONFIG_ENABLE_MUST_CHECK=y 1213CONFIG_ENABLE_MUST_CHECK=y
1203CONFIG_FRAME_WARN=1024 1214CONFIG_FRAME_WARN=1024
1204# CONFIG_MAGIC_SYSRQ is not set 1215# CONFIG_MAGIC_SYSRQ is not set
1216# CONFIG_STRIP_ASM_SYMS is not set
1205# CONFIG_UNUSED_SYMBOLS is not set 1217# CONFIG_UNUSED_SYMBOLS is not set
1206# CONFIG_DEBUG_FS is not set 1218# CONFIG_DEBUG_FS is not set
1207# CONFIG_HEADERS_CHECK is not set 1219# CONFIG_HEADERS_CHECK is not set
@@ -1219,6 +1231,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1219CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1231CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1220CONFIG_TRACING_SUPPORT=y 1232CONFIG_TRACING_SUPPORT=y
1221# CONFIG_FTRACE is not set 1233# CONFIG_FTRACE is not set
1234# CONFIG_DMA_API_DEBUG is not set
1222# CONFIG_SAMPLES is not set 1235# CONFIG_SAMPLES is not set
1223CONFIG_HAVE_ARCH_KGDB=y 1236CONFIG_HAVE_ARCH_KGDB=y
1224# CONFIG_PPC_DISABLE_WERROR is not set 1237# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1240,7 +1253,6 @@ CONFIG_CRYPTO=y
1240# 1253#
1241# Crypto core or helper 1254# Crypto core or helper
1242# 1255#
1243# CONFIG_CRYPTO_FIPS is not set
1244CONFIG_CRYPTO_ALGAPI=y 1256CONFIG_CRYPTO_ALGAPI=y
1245CONFIG_CRYPTO_ALGAPI2=y 1257CONFIG_CRYPTO_ALGAPI2=y
1246CONFIG_CRYPTO_AEAD2=y 1258CONFIG_CRYPTO_AEAD2=y
@@ -1282,11 +1294,13 @@ CONFIG_CRYPTO_PCBC=m
1282# 1294#
1283# CONFIG_CRYPTO_HMAC is not set 1295# CONFIG_CRYPTO_HMAC is not set
1284# CONFIG_CRYPTO_XCBC is not set 1296# CONFIG_CRYPTO_XCBC is not set
1297# CONFIG_CRYPTO_VMAC is not set
1285 1298
1286# 1299#
1287# Digest 1300# Digest
1288# 1301#
1289# CONFIG_CRYPTO_CRC32C is not set 1302# CONFIG_CRYPTO_CRC32C is not set
1303# CONFIG_CRYPTO_GHASH is not set
1290# CONFIG_CRYPTO_MD4 is not set 1304# CONFIG_CRYPTO_MD4 is not set
1291CONFIG_CRYPTO_MD5=y 1305CONFIG_CRYPTO_MD5=y
1292# CONFIG_CRYPTO_MICHAEL_MIC is not set 1306# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig b/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig
index 4f27d4548223..b398b9b2b635 100644
--- a/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig
+++ b/arch/powerpc/configs/83xx/mpc832x_rdb_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:07 2009 4# Thu Nov 5 08:20:24 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -35,6 +35,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y 35CONFIG_GENERIC_HARDIRQS=y
36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +85,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 85#
85# RCU Subsystem 86# RCU Subsystem
86# 87#
87CONFIG_CLASSIC_RCU=y 88CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 90# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 93# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 94# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 95CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 96CONFIG_GROUP_SCHED=y
@@ -124,28 +126,29 @@ CONFIG_TIMERFD=y
124CONFIG_EVENTFD=y 126CONFIG_EVENTFD=y
125CONFIG_SHMEM=y 127CONFIG_SHMEM=y
126CONFIG_AIO=y 128CONFIG_AIO=y
127CONFIG_HAVE_PERF_COUNTERS=y 129CONFIG_HAVE_PERF_EVENTS=y
128 130
129# 131#
130# Performance Counters 132# Kernel Performance Events And Counters
131# 133#
134# CONFIG_PERF_EVENTS is not set
132# CONFIG_PERF_COUNTERS is not set 135# CONFIG_PERF_COUNTERS is not set
133CONFIG_VM_EVENT_COUNTERS=y 136CONFIG_VM_EVENT_COUNTERS=y
134CONFIG_PCI_QUIRKS=y 137CONFIG_PCI_QUIRKS=y
135CONFIG_SLUB_DEBUG=y 138CONFIG_SLUB_DEBUG=y
136# CONFIG_STRIP_ASM_SYMS is not set
137CONFIG_COMPAT_BRK=y 139CONFIG_COMPAT_BRK=y
138# CONFIG_SLAB is not set 140# CONFIG_SLAB is not set
139CONFIG_SLUB=y 141CONFIG_SLUB=y
140# CONFIG_SLOB is not set 142# CONFIG_SLOB is not set
141# CONFIG_PROFILING is not set 143# CONFIG_PROFILING is not set
142# CONFIG_MARKERS is not set
143CONFIG_HAVE_OPROFILE=y 144CONFIG_HAVE_OPROFILE=y
144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 145CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
145CONFIG_HAVE_IOREMAP_PROT=y 146CONFIG_HAVE_IOREMAP_PROT=y
146CONFIG_HAVE_KPROBES=y 147CONFIG_HAVE_KPROBES=y
147CONFIG_HAVE_KRETPROBES=y 148CONFIG_HAVE_KRETPROBES=y
148CONFIG_HAVE_ARCH_TRACEHOOK=y 149CONFIG_HAVE_ARCH_TRACEHOOK=y
150CONFIG_HAVE_DMA_ATTRS=y
151CONFIG_HAVE_DMA_API_DEBUG=y
149 152
150# 153#
151# GCOV-based kernel profiling 154# GCOV-based kernel profiling
@@ -257,6 +260,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
257CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 260CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
258# CONFIG_KEXEC is not set 261# CONFIG_KEXEC is not set
259# CONFIG_CRASH_DUMP is not set 262# CONFIG_CRASH_DUMP is not set
263CONFIG_MAX_ACTIVE_REGIONS=32
260CONFIG_ARCH_FLATMEM_ENABLE=y 264CONFIG_ARCH_FLATMEM_ENABLE=y
261CONFIG_ARCH_POPULATES_NODE_MAP=y 265CONFIG_ARCH_POPULATES_NODE_MAP=y
262CONFIG_SELECT_MEMORY_MODEL=y 266CONFIG_SELECT_MEMORY_MODEL=y
@@ -274,6 +278,7 @@ CONFIG_BOUNCE=y
274CONFIG_VIRT_TO_BUS=y 278CONFIG_VIRT_TO_BUS=y
275CONFIG_HAVE_MLOCK=y 279CONFIG_HAVE_MLOCK=y
276CONFIG_HAVE_MLOCKED_PAGE_BIT=y 280CONFIG_HAVE_MLOCKED_PAGE_BIT=y
281# CONFIG_KSM is not set
277CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 282CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
278CONFIG_PPC_4K_PAGES=y 283CONFIG_PPC_4K_PAGES=y
279# CONFIG_PPC_16K_PAGES is not set 284# CONFIG_PPC_16K_PAGES is not set
@@ -369,6 +374,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
369# CONFIG_NETFILTER is not set 374# CONFIG_NETFILTER is not set
370# CONFIG_IP_DCCP is not set 375# CONFIG_IP_DCCP is not set
371# CONFIG_IP_SCTP is not set 376# CONFIG_IP_SCTP is not set
377# CONFIG_RDS is not set
372# CONFIG_TIPC is not set 378# CONFIG_TIPC is not set
373# CONFIG_ATM is not set 379# CONFIG_ATM is not set
374# CONFIG_BRIDGE is not set 380# CONFIG_BRIDGE is not set
@@ -398,6 +404,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
398# CONFIG_AF_RXRPC is not set 404# CONFIG_AF_RXRPC is not set
399CONFIG_WIRELESS=y 405CONFIG_WIRELESS=y
400# CONFIG_CFG80211 is not set 406# CONFIG_CFG80211 is not set
407CONFIG_CFG80211_DEFAULT_PS_VALUE=0
401CONFIG_WIRELESS_OLD_REGULATORY=y 408CONFIG_WIRELESS_OLD_REGULATORY=y
402# CONFIG_WIRELESS_EXT is not set 409# CONFIG_WIRELESS_EXT is not set
403# CONFIG_LIB80211 is not set 410# CONFIG_LIB80211 is not set
@@ -405,7 +412,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
405# 412#
406# CFG80211 needs to be enabled for MAC80211 413# CFG80211 needs to be enabled for MAC80211
407# 414#
408CONFIG_MAC80211_DEFAULT_PS_VALUE=0
409# CONFIG_WIMAX is not set 415# CONFIG_WIMAX is not set
410# CONFIG_RFKILL is not set 416# CONFIG_RFKILL is not set
411# CONFIG_NET_9P is not set 417# CONFIG_NET_9P is not set
@@ -418,6 +424,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
418# Generic Driver Options 424# Generic Driver Options
419# 425#
420CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 426CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
427# CONFIG_DEVTMPFS is not set
421CONFIG_STANDALONE=y 428CONFIG_STANDALONE=y
422CONFIG_PREVENT_FIRMWARE_BUILD=y 429CONFIG_PREVENT_FIRMWARE_BUILD=y
423# CONFIG_FW_LOADER is not set 430# CONFIG_FW_LOADER is not set
@@ -507,6 +514,7 @@ CONFIG_SCSI_LOWLEVEL=y
507# CONFIG_ISCSI_TCP is not set 514# CONFIG_ISCSI_TCP is not set
508# CONFIG_SCSI_CXGB3_ISCSI is not set 515# CONFIG_SCSI_CXGB3_ISCSI is not set
509# CONFIG_SCSI_BNX2_ISCSI is not set 516# CONFIG_SCSI_BNX2_ISCSI is not set
517# CONFIG_BE2ISCSI is not set
510# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 518# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
511# CONFIG_SCSI_3W_9XXX is not set 519# CONFIG_SCSI_3W_9XXX is not set
512# CONFIG_SCSI_ACARD is not set 520# CONFIG_SCSI_ACARD is not set
@@ -545,7 +553,9 @@ CONFIG_SCSI_LOWLEVEL=y
545# CONFIG_SCSI_DC390T is not set 553# CONFIG_SCSI_DC390T is not set
546# CONFIG_SCSI_NSP32 is not set 554# CONFIG_SCSI_NSP32 is not set
547# CONFIG_SCSI_DEBUG is not set 555# CONFIG_SCSI_DEBUG is not set
556# CONFIG_SCSI_PMCRAID is not set
548# CONFIG_SCSI_SRP is not set 557# CONFIG_SCSI_SRP is not set
558# CONFIG_SCSI_BFA_FC is not set
549# CONFIG_SCSI_DH is not set 559# CONFIG_SCSI_DH is not set
550# CONFIG_SCSI_OSD_INITIATOR is not set 560# CONFIG_SCSI_OSD_INITIATOR is not set
551# CONFIG_ATA is not set 561# CONFIG_ATA is not set
@@ -617,7 +627,9 @@ CONFIG_MII=y
617# CONFIG_B44 is not set 627# CONFIG_B44 is not set
618# CONFIG_KS8842 is not set 628# CONFIG_KS8842 is not set
619# CONFIG_KS8851 is not set 629# CONFIG_KS8851 is not set
630# CONFIG_KS8851_MLL is not set
620# CONFIG_ATL2 is not set 631# CONFIG_ATL2 is not set
632# CONFIG_XILINX_EMACLITE is not set
621CONFIG_NETDEV_1000=y 633CONFIG_NETDEV_1000=y
622# CONFIG_ACENIC is not set 634# CONFIG_ACENIC is not set
623# CONFIG_DL2K is not set 635# CONFIG_DL2K is not set
@@ -640,7 +652,6 @@ CONFIG_E1000=y
640CONFIG_FSL_PQ_MDIO=y 652CONFIG_FSL_PQ_MDIO=y
641# CONFIG_GIANFAR is not set 653# CONFIG_GIANFAR is not set
642CONFIG_UCC_GETH=y 654CONFIG_UCC_GETH=y
643# CONFIG_UGETH_MAGIC_PACKET is not set
644# CONFIG_UGETH_TX_ON_DEMAND is not set 655# CONFIG_UGETH_TX_ON_DEMAND is not set
645# CONFIG_MV643XX_ETH is not set 656# CONFIG_MV643XX_ETH is not set
646# CONFIG_QLA3XXX is not set 657# CONFIG_QLA3XXX is not set
@@ -668,10 +679,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
668# CONFIG_SFC is not set 679# CONFIG_SFC is not set
669# CONFIG_BE2NET is not set 680# CONFIG_BE2NET is not set
670# CONFIG_TR is not set 681# CONFIG_TR is not set
671 682CONFIG_WLAN=y
672#
673# Wireless LAN
674#
675# CONFIG_WLAN_PRE80211 is not set 683# CONFIG_WLAN_PRE80211 is not set
676# CONFIG_WLAN_80211 is not set 684# CONFIG_WLAN_80211 is not set
677 685
@@ -776,6 +784,7 @@ CONFIG_GEN_RTC=y
776CONFIG_DEVPORT=y 784CONFIG_DEVPORT=y
777CONFIG_I2C=y 785CONFIG_I2C=y
778CONFIG_I2C_BOARDINFO=y 786CONFIG_I2C_BOARDINFO=y
787CONFIG_I2C_COMPAT=y
779CONFIG_I2C_CHARDEV=y 788CONFIG_I2C_CHARDEV=y
780CONFIG_I2C_HELPER_AUTO=y 789CONFIG_I2C_HELPER_AUTO=y
781 790
@@ -830,9 +839,6 @@ CONFIG_I2C_MPC=y
830# Miscellaneous I2C Chip support 839# Miscellaneous I2C Chip support
831# 840#
832# CONFIG_DS1682 is not set 841# CONFIG_DS1682 is not set
833# CONFIG_SENSORS_PCF8574 is not set
834# CONFIG_PCF8575 is not set
835# CONFIG_SENSORS_PCA9539 is not set
836# CONFIG_SENSORS_TSL2550 is not set 842# CONFIG_SENSORS_TSL2550 is not set
837# CONFIG_I2C_DEBUG_CORE is not set 843# CONFIG_I2C_DEBUG_CORE is not set
838# CONFIG_I2C_DEBUG_ALGO is not set 844# CONFIG_I2C_DEBUG_ALGO is not set
@@ -863,6 +869,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
863# CONFIG_POWER_SUPPLY is not set 869# CONFIG_POWER_SUPPLY is not set
864CONFIG_HWMON=y 870CONFIG_HWMON=y
865# CONFIG_HWMON_VID is not set 871# CONFIG_HWMON_VID is not set
872# CONFIG_HWMON_DEBUG_CHIP is not set
873
874#
875# Native drivers
876#
866# CONFIG_SENSORS_AD7414 is not set 877# CONFIG_SENSORS_AD7414 is not set
867# CONFIG_SENSORS_AD7418 is not set 878# CONFIG_SENSORS_AD7418 is not set
868# CONFIG_SENSORS_ADCXX is not set 879# CONFIG_SENSORS_ADCXX is not set
@@ -915,6 +926,7 @@ CONFIG_HWMON=y
915# CONFIG_SENSORS_ADS7828 is not set 926# CONFIG_SENSORS_ADS7828 is not set
916# CONFIG_SENSORS_THMC50 is not set 927# CONFIG_SENSORS_THMC50 is not set
917# CONFIG_SENSORS_TMP401 is not set 928# CONFIG_SENSORS_TMP401 is not set
929# CONFIG_SENSORS_TMP421 is not set
918# CONFIG_SENSORS_VIA686A is not set 930# CONFIG_SENSORS_VIA686A is not set
919# CONFIG_SENSORS_VT1211 is not set 931# CONFIG_SENSORS_VT1211 is not set
920# CONFIG_SENSORS_VT8231 is not set 932# CONFIG_SENSORS_VT8231 is not set
@@ -927,9 +939,7 @@ CONFIG_HWMON=y
927# CONFIG_SENSORS_W83627HF is not set 939# CONFIG_SENSORS_W83627HF is not set
928# CONFIG_SENSORS_W83627EHF is not set 940# CONFIG_SENSORS_W83627EHF is not set
929# CONFIG_SENSORS_LIS3_SPI is not set 941# CONFIG_SENSORS_LIS3_SPI is not set
930# CONFIG_HWMON_DEBUG_CHIP is not set
931# CONFIG_THERMAL is not set 942# CONFIG_THERMAL is not set
932# CONFIG_THERMAL_HWMON is not set
933CONFIG_WATCHDOG=y 943CONFIG_WATCHDOG=y
934# CONFIG_WATCHDOG_NOWAYOUT is not set 944# CONFIG_WATCHDOG_NOWAYOUT is not set
935 945
@@ -967,8 +977,10 @@ CONFIG_SSB_POSSIBLE=y
967# CONFIG_MFD_TMIO is not set 977# CONFIG_MFD_TMIO is not set
968# CONFIG_PMIC_DA903X is not set 978# CONFIG_PMIC_DA903X is not set
969# CONFIG_MFD_WM8400 is not set 979# CONFIG_MFD_WM8400 is not set
980# CONFIG_MFD_WM831X is not set
970# CONFIG_MFD_WM8350_I2C is not set 981# CONFIG_MFD_WM8350_I2C is not set
971# CONFIG_MFD_PCF50633 is not set 982# CONFIG_MFD_PCF50633 is not set
983# CONFIG_MFD_MC13783 is not set
972# CONFIG_AB3100_CORE is not set 984# CONFIG_AB3100_CORE is not set
973# CONFIG_EZX_PCAP is not set 985# CONFIG_EZX_PCAP is not set
974# CONFIG_REGULATOR is not set 986# CONFIG_REGULATOR is not set
@@ -978,6 +990,7 @@ CONFIG_SSB_POSSIBLE=y
978# Graphics support 990# Graphics support
979# 991#
980# CONFIG_AGP is not set 992# CONFIG_AGP is not set
993CONFIG_VGA_ARB=y
981# CONFIG_DRM is not set 994# CONFIG_DRM is not set
982# CONFIG_VGASTATE is not set 995# CONFIG_VGASTATE is not set
983CONFIG_VIDEO_OUTPUT_CONTROL=m 996CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -991,7 +1004,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
991# CONFIG_SOUND is not set 1004# CONFIG_SOUND is not set
992CONFIG_HID_SUPPORT=y 1005CONFIG_HID_SUPPORT=y
993CONFIG_HID=y 1006CONFIG_HID=y
994# CONFIG_HID_DEBUG is not set
995# CONFIG_HIDRAW is not set 1007# CONFIG_HIDRAW is not set
996 1008
997# 1009#
@@ -1043,6 +1055,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1043# CONFIG_USB_OXU210HP_HCD is not set 1055# CONFIG_USB_OXU210HP_HCD is not set
1044# CONFIG_USB_ISP116X_HCD is not set 1056# CONFIG_USB_ISP116X_HCD is not set
1045# CONFIG_USB_ISP1760_HCD is not set 1057# CONFIG_USB_ISP1760_HCD is not set
1058# CONFIG_USB_ISP1362_HCD is not set
1046CONFIG_USB_OHCI_HCD=y 1059CONFIG_USB_OHCI_HCD=y
1047CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1060CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
1048# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 1061# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
@@ -1146,6 +1159,8 @@ CONFIG_MMC_BLOCK_BOUNCE=y
1146# 1159#
1147# CONFIG_MMC_SDHCI is not set 1160# CONFIG_MMC_SDHCI is not set
1148# CONFIG_MMC_WBSD is not set 1161# CONFIG_MMC_WBSD is not set
1162# CONFIG_MMC_AT91 is not set
1163# CONFIG_MMC_ATMELMCI is not set
1149# CONFIG_MMC_TIFM_SD is not set 1164# CONFIG_MMC_TIFM_SD is not set
1150CONFIG_MMC_SPI=y 1165CONFIG_MMC_SPI=y
1151# CONFIG_MMC_CB710 is not set 1166# CONFIG_MMC_CB710 is not set
@@ -1186,6 +1201,7 @@ CONFIG_FS_MBCACHE=y
1186# CONFIG_GFS2_FS is not set 1201# CONFIG_GFS2_FS is not set
1187# CONFIG_OCFS2_FS is not set 1202# CONFIG_OCFS2_FS is not set
1188# CONFIG_BTRFS_FS is not set 1203# CONFIG_BTRFS_FS is not set
1204# CONFIG_NILFS2_FS is not set
1189CONFIG_FILE_LOCKING=y 1205CONFIG_FILE_LOCKING=y
1190CONFIG_FSNOTIFY=y 1206CONFIG_FSNOTIFY=y
1191CONFIG_DNOTIFY=y 1207CONFIG_DNOTIFY=y
@@ -1247,7 +1263,6 @@ CONFIG_MISC_FILESYSTEMS=y
1247# CONFIG_ROMFS_FS is not set 1263# CONFIG_ROMFS_FS is not set
1248# CONFIG_SYSV_FS is not set 1264# CONFIG_SYSV_FS is not set
1249# CONFIG_UFS_FS is not set 1265# CONFIG_UFS_FS is not set
1250# CONFIG_NILFS2_FS is not set
1251CONFIG_NETWORK_FILESYSTEMS=y 1266CONFIG_NETWORK_FILESYSTEMS=y
1252CONFIG_NFS_FS=y 1267CONFIG_NFS_FS=y
1253CONFIG_NFS_V3=y 1268CONFIG_NFS_V3=y
@@ -1365,6 +1380,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1365CONFIG_ENABLE_MUST_CHECK=y 1380CONFIG_ENABLE_MUST_CHECK=y
1366CONFIG_FRAME_WARN=1024 1381CONFIG_FRAME_WARN=1024
1367# CONFIG_MAGIC_SYSRQ is not set 1382# CONFIG_MAGIC_SYSRQ is not set
1383# CONFIG_STRIP_ASM_SYMS is not set
1368# CONFIG_UNUSED_SYMBOLS is not set 1384# CONFIG_UNUSED_SYMBOLS is not set
1369# CONFIG_DEBUG_FS is not set 1385# CONFIG_DEBUG_FS is not set
1370# CONFIG_HEADERS_CHECK is not set 1386# CONFIG_HEADERS_CHECK is not set
@@ -1382,6 +1398,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1382CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1398CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1383CONFIG_TRACING_SUPPORT=y 1399CONFIG_TRACING_SUPPORT=y
1384# CONFIG_FTRACE is not set 1400# CONFIG_FTRACE is not set
1401# CONFIG_DMA_API_DEBUG is not set
1385# CONFIG_SAMPLES is not set 1402# CONFIG_SAMPLES is not set
1386CONFIG_HAVE_ARCH_KGDB=y 1403CONFIG_HAVE_ARCH_KGDB=y
1387# CONFIG_PPC_DISABLE_WERROR is not set 1404# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1403,7 +1420,6 @@ CONFIG_CRYPTO=y
1403# 1420#
1404# Crypto core or helper 1421# Crypto core or helper
1405# 1422#
1406# CONFIG_CRYPTO_FIPS is not set
1407CONFIG_CRYPTO_ALGAPI=y 1423CONFIG_CRYPTO_ALGAPI=y
1408CONFIG_CRYPTO_ALGAPI2=y 1424CONFIG_CRYPTO_ALGAPI2=y
1409CONFIG_CRYPTO_AEAD2=y 1425CONFIG_CRYPTO_AEAD2=y
@@ -1445,11 +1461,13 @@ CONFIG_CRYPTO_PCBC=m
1445# 1461#
1446# CONFIG_CRYPTO_HMAC is not set 1462# CONFIG_CRYPTO_HMAC is not set
1447# CONFIG_CRYPTO_XCBC is not set 1463# CONFIG_CRYPTO_XCBC is not set
1464# CONFIG_CRYPTO_VMAC is not set
1448 1465
1449# 1466#
1450# Digest 1467# Digest
1451# 1468#
1452# CONFIG_CRYPTO_CRC32C is not set 1469# CONFIG_CRYPTO_CRC32C is not set
1470# CONFIG_CRYPTO_GHASH is not set
1453# CONFIG_CRYPTO_MD4 is not set 1471# CONFIG_CRYPTO_MD4 is not set
1454CONFIG_CRYPTO_MD5=y 1472CONFIG_CRYPTO_MD5=y
1455# CONFIG_CRYPTO_MICHAEL_MIC is not set 1473# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/83xx/mpc834x_itx_defconfig b/arch/powerpc/configs/83xx/mpc834x_itx_defconfig
index 648dac0c9d8d..f67317e1934c 100644
--- a/arch/powerpc/configs/83xx/mpc834x_itx_defconfig
+++ b/arch/powerpc/configs/83xx/mpc834x_itx_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:07 2009 4# Thu Nov 5 08:20:25 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -35,6 +35,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y 35CONFIG_GENERIC_HARDIRQS=y
36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +85,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 85#
85# RCU Subsystem 86# RCU Subsystem
86# 87#
87CONFIG_CLASSIC_RCU=y 88CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 90# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 93# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 94# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 95CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 96CONFIG_GROUP_SCHED=y
@@ -124,28 +126,29 @@ CONFIG_TIMERFD=y
124CONFIG_EVENTFD=y 126CONFIG_EVENTFD=y
125CONFIG_SHMEM=y 127CONFIG_SHMEM=y
126CONFIG_AIO=y 128CONFIG_AIO=y
127CONFIG_HAVE_PERF_COUNTERS=y 129CONFIG_HAVE_PERF_EVENTS=y
128 130
129# 131#
130# Performance Counters 132# Kernel Performance Events And Counters
131# 133#
134# CONFIG_PERF_EVENTS is not set
132# CONFIG_PERF_COUNTERS is not set 135# CONFIG_PERF_COUNTERS is not set
133CONFIG_VM_EVENT_COUNTERS=y 136CONFIG_VM_EVENT_COUNTERS=y
134CONFIG_PCI_QUIRKS=y 137CONFIG_PCI_QUIRKS=y
135CONFIG_SLUB_DEBUG=y 138CONFIG_SLUB_DEBUG=y
136# CONFIG_STRIP_ASM_SYMS is not set
137CONFIG_COMPAT_BRK=y 139CONFIG_COMPAT_BRK=y
138# CONFIG_SLAB is not set 140# CONFIG_SLAB is not set
139CONFIG_SLUB=y 141CONFIG_SLUB=y
140# CONFIG_SLOB is not set 142# CONFIG_SLOB is not set
141# CONFIG_PROFILING is not set 143# CONFIG_PROFILING is not set
142# CONFIG_MARKERS is not set
143CONFIG_HAVE_OPROFILE=y 144CONFIG_HAVE_OPROFILE=y
144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 145CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
145CONFIG_HAVE_IOREMAP_PROT=y 146CONFIG_HAVE_IOREMAP_PROT=y
146CONFIG_HAVE_KPROBES=y 147CONFIG_HAVE_KPROBES=y
147CONFIG_HAVE_KRETPROBES=y 148CONFIG_HAVE_KRETPROBES=y
148CONFIG_HAVE_ARCH_TRACEHOOK=y 149CONFIG_HAVE_ARCH_TRACEHOOK=y
150CONFIG_HAVE_DMA_ATTRS=y
151CONFIG_HAVE_DMA_API_DEBUG=y
149 152
150# 153#
151# GCOV-based kernel profiling 154# GCOV-based kernel profiling
@@ -256,6 +259,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
256CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
257# CONFIG_KEXEC is not set 260# CONFIG_KEXEC is not set
258# CONFIG_CRASH_DUMP is not set 261# CONFIG_CRASH_DUMP is not set
262CONFIG_MAX_ACTIVE_REGIONS=32
259CONFIG_ARCH_FLATMEM_ENABLE=y 263CONFIG_ARCH_FLATMEM_ENABLE=y
260CONFIG_ARCH_POPULATES_NODE_MAP=y 264CONFIG_ARCH_POPULATES_NODE_MAP=y
261CONFIG_SELECT_MEMORY_MODEL=y 265CONFIG_SELECT_MEMORY_MODEL=y
@@ -273,6 +277,7 @@ CONFIG_BOUNCE=y
273CONFIG_VIRT_TO_BUS=y 277CONFIG_VIRT_TO_BUS=y
274CONFIG_HAVE_MLOCK=y 278CONFIG_HAVE_MLOCK=y
275CONFIG_HAVE_MLOCKED_PAGE_BIT=y 279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set
276CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
277CONFIG_PPC_4K_PAGES=y 282CONFIG_PPC_4K_PAGES=y
278# CONFIG_PPC_16K_PAGES is not set 283# CONFIG_PPC_16K_PAGES is not set
@@ -368,6 +373,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
368# CONFIG_NETFILTER is not set 373# CONFIG_NETFILTER is not set
369# CONFIG_IP_DCCP is not set 374# CONFIG_IP_DCCP is not set
370# CONFIG_IP_SCTP is not set 375# CONFIG_IP_SCTP is not set
376# CONFIG_RDS is not set
371# CONFIG_TIPC is not set 377# CONFIG_TIPC is not set
372# CONFIG_ATM is not set 378# CONFIG_ATM is not set
373# CONFIG_BRIDGE is not set 379# CONFIG_BRIDGE is not set
@@ -397,6 +403,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
397# CONFIG_AF_RXRPC is not set 403# CONFIG_AF_RXRPC is not set
398CONFIG_WIRELESS=y 404CONFIG_WIRELESS=y
399# CONFIG_CFG80211 is not set 405# CONFIG_CFG80211 is not set
406CONFIG_CFG80211_DEFAULT_PS_VALUE=0
400CONFIG_WIRELESS_OLD_REGULATORY=y 407CONFIG_WIRELESS_OLD_REGULATORY=y
401# CONFIG_WIRELESS_EXT is not set 408# CONFIG_WIRELESS_EXT is not set
402# CONFIG_LIB80211 is not set 409# CONFIG_LIB80211 is not set
@@ -404,7 +411,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
404# 411#
405# CFG80211 needs to be enabled for MAC80211 412# CFG80211 needs to be enabled for MAC80211
406# 413#
407CONFIG_MAC80211_DEFAULT_PS_VALUE=0
408# CONFIG_WIMAX is not set 414# CONFIG_WIMAX is not set
409# CONFIG_RFKILL is not set 415# CONFIG_RFKILL is not set
410# CONFIG_NET_9P is not set 416# CONFIG_NET_9P is not set
@@ -417,6 +423,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
417# Generic Driver Options 423# Generic Driver Options
418# 424#
419CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 425CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
426# CONFIG_DEVTMPFS is not set
420CONFIG_STANDALONE=y 427CONFIG_STANDALONE=y
421CONFIG_PREVENT_FIRMWARE_BUILD=y 428CONFIG_PREVENT_FIRMWARE_BUILD=y
422# CONFIG_FW_LOADER is not set 429# CONFIG_FW_LOADER is not set
@@ -424,9 +431,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
424# CONFIG_CONNECTOR is not set 431# CONFIG_CONNECTOR is not set
425CONFIG_MTD=y 432CONFIG_MTD=y
426# CONFIG_MTD_DEBUG is not set 433# CONFIG_MTD_DEBUG is not set
434# CONFIG_MTD_TESTS is not set
427# CONFIG_MTD_CONCAT is not set 435# CONFIG_MTD_CONCAT is not set
428# CONFIG_MTD_PARTITIONS is not set 436# CONFIG_MTD_PARTITIONS is not set
429# CONFIG_MTD_TESTS is not set
430 437
431# 438#
432# User Modules And Translation Layers 439# User Modules And Translation Layers
@@ -483,6 +490,7 @@ CONFIG_MTD_PHYSMAP=y
483# CONFIG_MTD_PMC551 is not set 490# CONFIG_MTD_PMC551 is not set
484# CONFIG_MTD_DATAFLASH is not set 491# CONFIG_MTD_DATAFLASH is not set
485# CONFIG_MTD_M25P80 is not set 492# CONFIG_MTD_M25P80 is not set
493# CONFIG_MTD_SST25L is not set
486# CONFIG_MTD_SLRAM is not set 494# CONFIG_MTD_SLRAM is not set
487# CONFIG_MTD_PHRAM is not set 495# CONFIG_MTD_PHRAM is not set
488# CONFIG_MTD_MTDRAM is not set 496# CONFIG_MTD_MTDRAM is not set
@@ -637,6 +645,7 @@ CONFIG_SCSI_LOWLEVEL=y
637# CONFIG_ISCSI_TCP is not set 645# CONFIG_ISCSI_TCP is not set
638# CONFIG_SCSI_CXGB3_ISCSI is not set 646# CONFIG_SCSI_CXGB3_ISCSI is not set
639# CONFIG_SCSI_BNX2_ISCSI is not set 647# CONFIG_SCSI_BNX2_ISCSI is not set
648# CONFIG_BE2ISCSI is not set
640# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 649# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
641# CONFIG_SCSI_3W_9XXX is not set 650# CONFIG_SCSI_3W_9XXX is not set
642# CONFIG_SCSI_ACARD is not set 651# CONFIG_SCSI_ACARD is not set
@@ -676,11 +685,14 @@ CONFIG_SCSI_LOWLEVEL=y
676# CONFIG_SCSI_DC390T is not set 685# CONFIG_SCSI_DC390T is not set
677# CONFIG_SCSI_NSP32 is not set 686# CONFIG_SCSI_NSP32 is not set
678# CONFIG_SCSI_DEBUG is not set 687# CONFIG_SCSI_DEBUG is not set
688# CONFIG_SCSI_PMCRAID is not set
679# CONFIG_SCSI_SRP is not set 689# CONFIG_SCSI_SRP is not set
690# CONFIG_SCSI_BFA_FC is not set
680# CONFIG_SCSI_DH is not set 691# CONFIG_SCSI_DH is not set
681# CONFIG_SCSI_OSD_INITIATOR is not set 692# CONFIG_SCSI_OSD_INITIATOR is not set
682CONFIG_ATA=y 693CONFIG_ATA=y
683# CONFIG_ATA_NONSTANDARD is not set 694# CONFIG_ATA_NONSTANDARD is not set
695CONFIG_ATA_VERBOSE_ERROR=y
684CONFIG_SATA_PMP=y 696CONFIG_SATA_PMP=y
685# CONFIG_SATA_AHCI is not set 697# CONFIG_SATA_AHCI is not set
686# CONFIG_SATA_SIL24 is not set 698# CONFIG_SATA_SIL24 is not set
@@ -703,6 +715,7 @@ CONFIG_SATA_SIL=y
703# CONFIG_PATA_ALI is not set 715# CONFIG_PATA_ALI is not set
704# CONFIG_PATA_AMD is not set 716# CONFIG_PATA_AMD is not set
705# CONFIG_PATA_ARTOP is not set 717# CONFIG_PATA_ARTOP is not set
718# CONFIG_PATA_ATP867X is not set
706# CONFIG_PATA_ATIIXP is not set 719# CONFIG_PATA_ATIIXP is not set
707# CONFIG_PATA_CMD640_PCI is not set 720# CONFIG_PATA_CMD640_PCI is not set
708# CONFIG_PATA_CMD64X is not set 721# CONFIG_PATA_CMD64X is not set
@@ -730,6 +743,7 @@ CONFIG_SATA_SIL=y
730# CONFIG_PATA_OPTIDMA is not set 743# CONFIG_PATA_OPTIDMA is not set
731# CONFIG_PATA_PDC_OLD is not set 744# CONFIG_PATA_PDC_OLD is not set
732# CONFIG_PATA_RADISYS is not set 745# CONFIG_PATA_RADISYS is not set
746# CONFIG_PATA_RDC is not set
733# CONFIG_PATA_RZ1000 is not set 747# CONFIG_PATA_RZ1000 is not set
734# CONFIG_PATA_SC1200 is not set 748# CONFIG_PATA_SC1200 is not set
735# CONFIG_PATA_SERVERWORKS is not set 749# CONFIG_PATA_SERVERWORKS is not set
@@ -845,10 +859,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
845# CONFIG_SFC is not set 859# CONFIG_SFC is not set
846# CONFIG_BE2NET is not set 860# CONFIG_BE2NET is not set
847# CONFIG_TR is not set 861# CONFIG_TR is not set
848 862CONFIG_WLAN=y
849#
850# Wireless LAN
851#
852# CONFIG_WLAN_PRE80211 is not set 863# CONFIG_WLAN_PRE80211 is not set
853# CONFIG_WLAN_80211 is not set 864# CONFIG_WLAN_80211 is not set
854 865
@@ -930,6 +941,7 @@ CONFIG_HW_RANDOM=y
930CONFIG_DEVPORT=y 941CONFIG_DEVPORT=y
931CONFIG_I2C=y 942CONFIG_I2C=y
932CONFIG_I2C_BOARDINFO=y 943CONFIG_I2C_BOARDINFO=y
944CONFIG_I2C_COMPAT=y
933CONFIG_I2C_CHARDEV=y 945CONFIG_I2C_CHARDEV=y
934CONFIG_I2C_HELPER_AUTO=y 946CONFIG_I2C_HELPER_AUTO=y
935 947
@@ -984,9 +996,6 @@ CONFIG_I2C_MPC=y
984# Miscellaneous I2C Chip support 996# Miscellaneous I2C Chip support
985# 997#
986# CONFIG_DS1682 is not set 998# CONFIG_DS1682 is not set
987CONFIG_SENSORS_PCF8574=y
988# CONFIG_PCF8575 is not set
989# CONFIG_SENSORS_PCA9539 is not set
990# CONFIG_SENSORS_TSL2550 is not set 999# CONFIG_SENSORS_TSL2550 is not set
991# CONFIG_I2C_DEBUG_CORE is not set 1000# CONFIG_I2C_DEBUG_CORE is not set
992# CONFIG_I2C_DEBUG_ALGO is not set 1001# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1017,7 +1026,6 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
1017# CONFIG_POWER_SUPPLY is not set 1026# CONFIG_POWER_SUPPLY is not set
1018# CONFIG_HWMON is not set 1027# CONFIG_HWMON is not set
1019# CONFIG_THERMAL is not set 1028# CONFIG_THERMAL is not set
1020# CONFIG_THERMAL_HWMON is not set
1021CONFIG_WATCHDOG=y 1029CONFIG_WATCHDOG=y
1022# CONFIG_WATCHDOG_NOWAYOUT is not set 1030# CONFIG_WATCHDOG_NOWAYOUT is not set
1023 1031
@@ -1055,8 +1063,10 @@ CONFIG_SSB_POSSIBLE=y
1055# CONFIG_MFD_TMIO is not set 1063# CONFIG_MFD_TMIO is not set
1056# CONFIG_PMIC_DA903X is not set 1064# CONFIG_PMIC_DA903X is not set
1057# CONFIG_MFD_WM8400 is not set 1065# CONFIG_MFD_WM8400 is not set
1066# CONFIG_MFD_WM831X is not set
1058# CONFIG_MFD_WM8350_I2C is not set 1067# CONFIG_MFD_WM8350_I2C is not set
1059# CONFIG_MFD_PCF50633 is not set 1068# CONFIG_MFD_PCF50633 is not set
1069# CONFIG_MFD_MC13783 is not set
1060# CONFIG_AB3100_CORE is not set 1070# CONFIG_AB3100_CORE is not set
1061# CONFIG_EZX_PCAP is not set 1071# CONFIG_EZX_PCAP is not set
1062# CONFIG_REGULATOR is not set 1072# CONFIG_REGULATOR is not set
@@ -1066,6 +1076,7 @@ CONFIG_SSB_POSSIBLE=y
1066# Graphics support 1076# Graphics support
1067# 1077#
1068# CONFIG_AGP is not set 1078# CONFIG_AGP is not set
1079CONFIG_VGA_ARB=y
1069# CONFIG_DRM is not set 1080# CONFIG_DRM is not set
1070# CONFIG_VGASTATE is not set 1081# CONFIG_VGASTATE is not set
1071CONFIG_VIDEO_OUTPUT_CONTROL=m 1082CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -1111,6 +1122,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1111# CONFIG_USB_OXU210HP_HCD is not set 1122# CONFIG_USB_OXU210HP_HCD is not set
1112# CONFIG_USB_ISP116X_HCD is not set 1123# CONFIG_USB_ISP116X_HCD is not set
1113# CONFIG_USB_ISP1760_HCD is not set 1124# CONFIG_USB_ISP1760_HCD is not set
1125# CONFIG_USB_ISP1362_HCD is not set
1114# CONFIG_USB_OHCI_HCD is not set 1126# CONFIG_USB_OHCI_HCD is not set
1115CONFIG_USB_UHCI_HCD=y 1127CONFIG_USB_UHCI_HCD=y
1116# CONFIG_USB_SL811_HCD is not set 1128# CONFIG_USB_SL811_HCD is not set
@@ -1238,6 +1250,7 @@ CONFIG_RTC_DRV_DS1307=y
1238# CONFIG_RTC_DRV_R9701 is not set 1250# CONFIG_RTC_DRV_R9701 is not set
1239# CONFIG_RTC_DRV_RS5C348 is not set 1251# CONFIG_RTC_DRV_RS5C348 is not set
1240# CONFIG_RTC_DRV_DS3234 is not set 1252# CONFIG_RTC_DRV_DS3234 is not set
1253# CONFIG_RTC_DRV_PCF2123 is not set
1241 1254
1242# 1255#
1243# Platform RTC drivers 1256# Platform RTC drivers
@@ -1288,6 +1301,7 @@ CONFIG_FS_MBCACHE=y
1288# CONFIG_GFS2_FS is not set 1301# CONFIG_GFS2_FS is not set
1289# CONFIG_OCFS2_FS is not set 1302# CONFIG_OCFS2_FS is not set
1290# CONFIG_BTRFS_FS is not set 1303# CONFIG_BTRFS_FS is not set
1304# CONFIG_NILFS2_FS is not set
1291CONFIG_FILE_LOCKING=y 1305CONFIG_FILE_LOCKING=y
1292CONFIG_FSNOTIFY=y 1306CONFIG_FSNOTIFY=y
1293CONFIG_DNOTIFY=y 1307CONFIG_DNOTIFY=y
@@ -1350,7 +1364,6 @@ CONFIG_MISC_FILESYSTEMS=y
1350# CONFIG_ROMFS_FS is not set 1364# CONFIG_ROMFS_FS is not set
1351# CONFIG_SYSV_FS is not set 1365# CONFIG_SYSV_FS is not set
1352# CONFIG_UFS_FS is not set 1366# CONFIG_UFS_FS is not set
1353# CONFIG_NILFS2_FS is not set
1354CONFIG_NETWORK_FILESYSTEMS=y 1367CONFIG_NETWORK_FILESYSTEMS=y
1355CONFIG_NFS_FS=y 1368CONFIG_NFS_FS=y
1356CONFIG_NFS_V3=y 1369CONFIG_NFS_V3=y
@@ -1465,6 +1478,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1465CONFIG_ENABLE_MUST_CHECK=y 1478CONFIG_ENABLE_MUST_CHECK=y
1466CONFIG_FRAME_WARN=1024 1479CONFIG_FRAME_WARN=1024
1467# CONFIG_MAGIC_SYSRQ is not set 1480# CONFIG_MAGIC_SYSRQ is not set
1481# CONFIG_STRIP_ASM_SYMS is not set
1468# CONFIG_UNUSED_SYMBOLS is not set 1482# CONFIG_UNUSED_SYMBOLS is not set
1469# CONFIG_DEBUG_FS is not set 1483# CONFIG_DEBUG_FS is not set
1470# CONFIG_HEADERS_CHECK is not set 1484# CONFIG_HEADERS_CHECK is not set
@@ -1482,6 +1496,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1482CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1496CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1483CONFIG_TRACING_SUPPORT=y 1497CONFIG_TRACING_SUPPORT=y
1484# CONFIG_FTRACE is not set 1498# CONFIG_FTRACE is not set
1499# CONFIG_DMA_API_DEBUG is not set
1485# CONFIG_SAMPLES is not set 1500# CONFIG_SAMPLES is not set
1486CONFIG_HAVE_ARCH_KGDB=y 1501CONFIG_HAVE_ARCH_KGDB=y
1487# CONFIG_PPC_DISABLE_WERROR is not set 1502# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1503,7 +1518,6 @@ CONFIG_CRYPTO=y
1503# 1518#
1504# Crypto core or helper 1519# Crypto core or helper
1505# 1520#
1506# CONFIG_CRYPTO_FIPS is not set
1507CONFIG_CRYPTO_ALGAPI=y 1521CONFIG_CRYPTO_ALGAPI=y
1508CONFIG_CRYPTO_ALGAPI2=y 1522CONFIG_CRYPTO_ALGAPI2=y
1509CONFIG_CRYPTO_AEAD2=y 1523CONFIG_CRYPTO_AEAD2=y
@@ -1545,11 +1559,13 @@ CONFIG_CRYPTO_PCBC=m
1545# 1559#
1546# CONFIG_CRYPTO_HMAC is not set 1560# CONFIG_CRYPTO_HMAC is not set
1547# CONFIG_CRYPTO_XCBC is not set 1561# CONFIG_CRYPTO_XCBC is not set
1562# CONFIG_CRYPTO_VMAC is not set
1548 1563
1549# 1564#
1550# Digest 1565# Digest
1551# 1566#
1552# CONFIG_CRYPTO_CRC32C is not set 1567# CONFIG_CRYPTO_CRC32C is not set
1568# CONFIG_CRYPTO_GHASH is not set
1553# CONFIG_CRYPTO_MD4 is not set 1569# CONFIG_CRYPTO_MD4 is not set
1554CONFIG_CRYPTO_MD5=y 1570CONFIG_CRYPTO_MD5=y
1555# CONFIG_CRYPTO_MICHAEL_MIC is not set 1571# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig b/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig
index bf6deb831dc3..a668110c10f6 100644
--- a/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig
+++ b/arch/powerpc/configs/83xx/mpc834x_itxgp_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:08 2009 4# Thu Nov 5 08:20:26 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -35,6 +35,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y 35CONFIG_GENERIC_HARDIRQS=y
36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +85,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 85#
85# RCU Subsystem 86# RCU Subsystem
86# 87#
87CONFIG_CLASSIC_RCU=y 88CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 90# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 93# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 94# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 95CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 96CONFIG_GROUP_SCHED=y
@@ -124,28 +126,29 @@ CONFIG_TIMERFD=y
124CONFIG_EVENTFD=y 126CONFIG_EVENTFD=y
125CONFIG_SHMEM=y 127CONFIG_SHMEM=y
126CONFIG_AIO=y 128CONFIG_AIO=y
127CONFIG_HAVE_PERF_COUNTERS=y 129CONFIG_HAVE_PERF_EVENTS=y
128 130
129# 131#
130# Performance Counters 132# Kernel Performance Events And Counters
131# 133#
134# CONFIG_PERF_EVENTS is not set
132# CONFIG_PERF_COUNTERS is not set 135# CONFIG_PERF_COUNTERS is not set
133CONFIG_VM_EVENT_COUNTERS=y 136CONFIG_VM_EVENT_COUNTERS=y
134CONFIG_PCI_QUIRKS=y 137CONFIG_PCI_QUIRKS=y
135CONFIG_SLUB_DEBUG=y 138CONFIG_SLUB_DEBUG=y
136# CONFIG_STRIP_ASM_SYMS is not set
137CONFIG_COMPAT_BRK=y 139CONFIG_COMPAT_BRK=y
138# CONFIG_SLAB is not set 140# CONFIG_SLAB is not set
139CONFIG_SLUB=y 141CONFIG_SLUB=y
140# CONFIG_SLOB is not set 142# CONFIG_SLOB is not set
141# CONFIG_PROFILING is not set 143# CONFIG_PROFILING is not set
142# CONFIG_MARKERS is not set
143CONFIG_HAVE_OPROFILE=y 144CONFIG_HAVE_OPROFILE=y
144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 145CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
145CONFIG_HAVE_IOREMAP_PROT=y 146CONFIG_HAVE_IOREMAP_PROT=y
146CONFIG_HAVE_KPROBES=y 147CONFIG_HAVE_KPROBES=y
147CONFIG_HAVE_KRETPROBES=y 148CONFIG_HAVE_KRETPROBES=y
148CONFIG_HAVE_ARCH_TRACEHOOK=y 149CONFIG_HAVE_ARCH_TRACEHOOK=y
150CONFIG_HAVE_DMA_ATTRS=y
151CONFIG_HAVE_DMA_API_DEBUG=y
149 152
150# 153#
151# GCOV-based kernel profiling 154# GCOV-based kernel profiling
@@ -256,6 +259,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
256CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
257# CONFIG_KEXEC is not set 260# CONFIG_KEXEC is not set
258# CONFIG_CRASH_DUMP is not set 261# CONFIG_CRASH_DUMP is not set
262CONFIG_MAX_ACTIVE_REGIONS=32
259CONFIG_ARCH_FLATMEM_ENABLE=y 263CONFIG_ARCH_FLATMEM_ENABLE=y
260CONFIG_ARCH_POPULATES_NODE_MAP=y 264CONFIG_ARCH_POPULATES_NODE_MAP=y
261CONFIG_SELECT_MEMORY_MODEL=y 265CONFIG_SELECT_MEMORY_MODEL=y
@@ -273,6 +277,7 @@ CONFIG_BOUNCE=y
273CONFIG_VIRT_TO_BUS=y 277CONFIG_VIRT_TO_BUS=y
274CONFIG_HAVE_MLOCK=y 278CONFIG_HAVE_MLOCK=y
275CONFIG_HAVE_MLOCKED_PAGE_BIT=y 279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set
276CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
277CONFIG_PPC_4K_PAGES=y 282CONFIG_PPC_4K_PAGES=y
278# CONFIG_PPC_16K_PAGES is not set 283# CONFIG_PPC_16K_PAGES is not set
@@ -368,6 +373,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
368# CONFIG_NETFILTER is not set 373# CONFIG_NETFILTER is not set
369# CONFIG_IP_DCCP is not set 374# CONFIG_IP_DCCP is not set
370# CONFIG_IP_SCTP is not set 375# CONFIG_IP_SCTP is not set
376# CONFIG_RDS is not set
371# CONFIG_TIPC is not set 377# CONFIG_TIPC is not set
372# CONFIG_ATM is not set 378# CONFIG_ATM is not set
373# CONFIG_BRIDGE is not set 379# CONFIG_BRIDGE is not set
@@ -397,6 +403,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
397# CONFIG_AF_RXRPC is not set 403# CONFIG_AF_RXRPC is not set
398CONFIG_WIRELESS=y 404CONFIG_WIRELESS=y
399# CONFIG_CFG80211 is not set 405# CONFIG_CFG80211 is not set
406CONFIG_CFG80211_DEFAULT_PS_VALUE=0
400CONFIG_WIRELESS_OLD_REGULATORY=y 407CONFIG_WIRELESS_OLD_REGULATORY=y
401# CONFIG_WIRELESS_EXT is not set 408# CONFIG_WIRELESS_EXT is not set
402# CONFIG_LIB80211 is not set 409# CONFIG_LIB80211 is not set
@@ -404,7 +411,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
404# 411#
405# CFG80211 needs to be enabled for MAC80211 412# CFG80211 needs to be enabled for MAC80211
406# 413#
407CONFIG_MAC80211_DEFAULT_PS_VALUE=0
408# CONFIG_WIMAX is not set 414# CONFIG_WIMAX is not set
409# CONFIG_RFKILL is not set 415# CONFIG_RFKILL is not set
410# CONFIG_NET_9P is not set 416# CONFIG_NET_9P is not set
@@ -417,6 +423,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
417# Generic Driver Options 423# Generic Driver Options
418# 424#
419CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 425CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
426# CONFIG_DEVTMPFS is not set
420CONFIG_STANDALONE=y 427CONFIG_STANDALONE=y
421CONFIG_PREVENT_FIRMWARE_BUILD=y 428CONFIG_PREVENT_FIRMWARE_BUILD=y
422# CONFIG_FW_LOADER is not set 429# CONFIG_FW_LOADER is not set
@@ -424,9 +431,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
424# CONFIG_CONNECTOR is not set 431# CONFIG_CONNECTOR is not set
425CONFIG_MTD=y 432CONFIG_MTD=y
426# CONFIG_MTD_DEBUG is not set 433# CONFIG_MTD_DEBUG is not set
434# CONFIG_MTD_TESTS is not set
427# CONFIG_MTD_CONCAT is not set 435# CONFIG_MTD_CONCAT is not set
428# CONFIG_MTD_PARTITIONS is not set 436# CONFIG_MTD_PARTITIONS is not set
429# CONFIG_MTD_TESTS is not set
430 437
431# 438#
432# User Modules And Translation Layers 439# User Modules And Translation Layers
@@ -483,6 +490,7 @@ CONFIG_MTD_PHYSMAP=y
483# CONFIG_MTD_PMC551 is not set 490# CONFIG_MTD_PMC551 is not set
484# CONFIG_MTD_DATAFLASH is not set 491# CONFIG_MTD_DATAFLASH is not set
485# CONFIG_MTD_M25P80 is not set 492# CONFIG_MTD_M25P80 is not set
493# CONFIG_MTD_SST25L is not set
486# CONFIG_MTD_SLRAM is not set 494# CONFIG_MTD_SLRAM is not set
487# CONFIG_MTD_PHRAM is not set 495# CONFIG_MTD_PHRAM is not set
488# CONFIG_MTD_MTDRAM is not set 496# CONFIG_MTD_MTDRAM is not set
@@ -589,6 +597,7 @@ CONFIG_SCSI_LOWLEVEL=y
589# CONFIG_ISCSI_TCP is not set 597# CONFIG_ISCSI_TCP is not set
590# CONFIG_SCSI_CXGB3_ISCSI is not set 598# CONFIG_SCSI_CXGB3_ISCSI is not set
591# CONFIG_SCSI_BNX2_ISCSI is not set 599# CONFIG_SCSI_BNX2_ISCSI is not set
600# CONFIG_BE2ISCSI is not set
592# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 601# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
593# CONFIG_SCSI_3W_9XXX is not set 602# CONFIG_SCSI_3W_9XXX is not set
594# CONFIG_SCSI_ACARD is not set 603# CONFIG_SCSI_ACARD is not set
@@ -627,7 +636,9 @@ CONFIG_SCSI_LOWLEVEL=y
627# CONFIG_SCSI_DC390T is not set 636# CONFIG_SCSI_DC390T is not set
628# CONFIG_SCSI_NSP32 is not set 637# CONFIG_SCSI_NSP32 is not set
629# CONFIG_SCSI_DEBUG is not set 638# CONFIG_SCSI_DEBUG is not set
639# CONFIG_SCSI_PMCRAID is not set
630# CONFIG_SCSI_SRP is not set 640# CONFIG_SCSI_SRP is not set
641# CONFIG_SCSI_BFA_FC is not set
631# CONFIG_SCSI_DH is not set 642# CONFIG_SCSI_DH is not set
632# CONFIG_SCSI_OSD_INITIATOR is not set 643# CONFIG_SCSI_OSD_INITIATOR is not set
633# CONFIG_ATA is not set 644# CONFIG_ATA is not set
@@ -725,10 +736,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
725# CONFIG_SFC is not set 736# CONFIG_SFC is not set
726# CONFIG_BE2NET is not set 737# CONFIG_BE2NET is not set
727# CONFIG_TR is not set 738# CONFIG_TR is not set
728 739CONFIG_WLAN=y
729#
730# Wireless LAN
731#
732# CONFIG_WLAN_PRE80211 is not set 740# CONFIG_WLAN_PRE80211 is not set
733# CONFIG_WLAN_80211 is not set 741# CONFIG_WLAN_80211 is not set
734 742
@@ -810,6 +818,7 @@ CONFIG_HW_RANDOM=y
810CONFIG_DEVPORT=y 818CONFIG_DEVPORT=y
811CONFIG_I2C=y 819CONFIG_I2C=y
812CONFIG_I2C_BOARDINFO=y 820CONFIG_I2C_BOARDINFO=y
821CONFIG_I2C_COMPAT=y
813CONFIG_I2C_CHARDEV=y 822CONFIG_I2C_CHARDEV=y
814CONFIG_I2C_HELPER_AUTO=y 823CONFIG_I2C_HELPER_AUTO=y
815 824
@@ -864,9 +873,6 @@ CONFIG_I2C_MPC=y
864# Miscellaneous I2C Chip support 873# Miscellaneous I2C Chip support
865# 874#
866# CONFIG_DS1682 is not set 875# CONFIG_DS1682 is not set
867CONFIG_SENSORS_PCF8574=y
868# CONFIG_PCF8575 is not set
869# CONFIG_SENSORS_PCA9539 is not set
870# CONFIG_SENSORS_TSL2550 is not set 876# CONFIG_SENSORS_TSL2550 is not set
871# CONFIG_I2C_DEBUG_CORE is not set 877# CONFIG_I2C_DEBUG_CORE is not set
872# CONFIG_I2C_DEBUG_ALGO is not set 878# CONFIG_I2C_DEBUG_ALGO is not set
@@ -897,7 +903,6 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
897# CONFIG_POWER_SUPPLY is not set 903# CONFIG_POWER_SUPPLY is not set
898# CONFIG_HWMON is not set 904# CONFIG_HWMON is not set
899# CONFIG_THERMAL is not set 905# CONFIG_THERMAL is not set
900# CONFIG_THERMAL_HWMON is not set
901CONFIG_WATCHDOG=y 906CONFIG_WATCHDOG=y
902# CONFIG_WATCHDOG_NOWAYOUT is not set 907# CONFIG_WATCHDOG_NOWAYOUT is not set
903 908
@@ -935,8 +940,10 @@ CONFIG_SSB_POSSIBLE=y
935# CONFIG_MFD_TMIO is not set 940# CONFIG_MFD_TMIO is not set
936# CONFIG_PMIC_DA903X is not set 941# CONFIG_PMIC_DA903X is not set
937# CONFIG_MFD_WM8400 is not set 942# CONFIG_MFD_WM8400 is not set
943# CONFIG_MFD_WM831X is not set
938# CONFIG_MFD_WM8350_I2C is not set 944# CONFIG_MFD_WM8350_I2C is not set
939# CONFIG_MFD_PCF50633 is not set 945# CONFIG_MFD_PCF50633 is not set
946# CONFIG_MFD_MC13783 is not set
940# CONFIG_AB3100_CORE is not set 947# CONFIG_AB3100_CORE is not set
941# CONFIG_EZX_PCAP is not set 948# CONFIG_EZX_PCAP is not set
942# CONFIG_REGULATOR is not set 949# CONFIG_REGULATOR is not set
@@ -946,6 +953,7 @@ CONFIG_SSB_POSSIBLE=y
946# Graphics support 953# Graphics support
947# 954#
948# CONFIG_AGP is not set 955# CONFIG_AGP is not set
956CONFIG_VGA_ARB=y
949# CONFIG_DRM is not set 957# CONFIG_DRM is not set
950# CONFIG_VGASTATE is not set 958# CONFIG_VGASTATE is not set
951CONFIG_VIDEO_OUTPUT_CONTROL=m 959CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -991,6 +999,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
991# CONFIG_USB_OXU210HP_HCD is not set 999# CONFIG_USB_OXU210HP_HCD is not set
992# CONFIG_USB_ISP116X_HCD is not set 1000# CONFIG_USB_ISP116X_HCD is not set
993# CONFIG_USB_ISP1760_HCD is not set 1001# CONFIG_USB_ISP1760_HCD is not set
1002# CONFIG_USB_ISP1362_HCD is not set
994# CONFIG_USB_OHCI_HCD is not set 1003# CONFIG_USB_OHCI_HCD is not set
995CONFIG_USB_UHCI_HCD=y 1004CONFIG_USB_UHCI_HCD=y
996# CONFIG_USB_SL811_HCD is not set 1005# CONFIG_USB_SL811_HCD is not set
@@ -1059,6 +1068,7 @@ CONFIG_USB_STORAGE=y
1059# CONFIG_USB_LD is not set 1068# CONFIG_USB_LD is not set
1060# CONFIG_USB_TRANCEVIBRATOR is not set 1069# CONFIG_USB_TRANCEVIBRATOR is not set
1061# CONFIG_USB_IOWARRIOR is not set 1070# CONFIG_USB_IOWARRIOR is not set
1071# CONFIG_USB_TEST is not set
1062# CONFIG_USB_ISIGHTFW is not set 1072# CONFIG_USB_ISIGHTFW is not set
1063# CONFIG_USB_VST is not set 1073# CONFIG_USB_VST is not set
1064# CONFIG_USB_GADGET is not set 1074# CONFIG_USB_GADGET is not set
@@ -1117,6 +1127,7 @@ CONFIG_RTC_DRV_DS1307=y
1117# CONFIG_RTC_DRV_R9701 is not set 1127# CONFIG_RTC_DRV_R9701 is not set
1118# CONFIG_RTC_DRV_RS5C348 is not set 1128# CONFIG_RTC_DRV_RS5C348 is not set
1119# CONFIG_RTC_DRV_DS3234 is not set 1129# CONFIG_RTC_DRV_DS3234 is not set
1130# CONFIG_RTC_DRV_PCF2123 is not set
1120 1131
1121# 1132#
1122# Platform RTC drivers 1133# Platform RTC drivers
@@ -1167,6 +1178,7 @@ CONFIG_FS_MBCACHE=y
1167# CONFIG_GFS2_FS is not set 1178# CONFIG_GFS2_FS is not set
1168# CONFIG_OCFS2_FS is not set 1179# CONFIG_OCFS2_FS is not set
1169# CONFIG_BTRFS_FS is not set 1180# CONFIG_BTRFS_FS is not set
1181# CONFIG_NILFS2_FS is not set
1170CONFIG_FILE_LOCKING=y 1182CONFIG_FILE_LOCKING=y
1171CONFIG_FSNOTIFY=y 1183CONFIG_FSNOTIFY=y
1172CONFIG_DNOTIFY=y 1184CONFIG_DNOTIFY=y
@@ -1229,7 +1241,6 @@ CONFIG_MISC_FILESYSTEMS=y
1229# CONFIG_ROMFS_FS is not set 1241# CONFIG_ROMFS_FS is not set
1230# CONFIG_SYSV_FS is not set 1242# CONFIG_SYSV_FS is not set
1231# CONFIG_UFS_FS is not set 1243# CONFIG_UFS_FS is not set
1232# CONFIG_NILFS2_FS is not set
1233CONFIG_NETWORK_FILESYSTEMS=y 1244CONFIG_NETWORK_FILESYSTEMS=y
1234CONFIG_NFS_FS=y 1245CONFIG_NFS_FS=y
1235CONFIG_NFS_V3=y 1246CONFIG_NFS_V3=y
@@ -1344,6 +1355,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1344CONFIG_ENABLE_MUST_CHECK=y 1355CONFIG_ENABLE_MUST_CHECK=y
1345CONFIG_FRAME_WARN=1024 1356CONFIG_FRAME_WARN=1024
1346# CONFIG_MAGIC_SYSRQ is not set 1357# CONFIG_MAGIC_SYSRQ is not set
1358# CONFIG_STRIP_ASM_SYMS is not set
1347# CONFIG_UNUSED_SYMBOLS is not set 1359# CONFIG_UNUSED_SYMBOLS is not set
1348# CONFIG_DEBUG_FS is not set 1360# CONFIG_DEBUG_FS is not set
1349# CONFIG_HEADERS_CHECK is not set 1361# CONFIG_HEADERS_CHECK is not set
@@ -1361,6 +1373,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1361CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1373CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1362CONFIG_TRACING_SUPPORT=y 1374CONFIG_TRACING_SUPPORT=y
1363# CONFIG_FTRACE is not set 1375# CONFIG_FTRACE is not set
1376# CONFIG_DMA_API_DEBUG is not set
1364# CONFIG_SAMPLES is not set 1377# CONFIG_SAMPLES is not set
1365CONFIG_HAVE_ARCH_KGDB=y 1378CONFIG_HAVE_ARCH_KGDB=y
1366# CONFIG_PPC_DISABLE_WERROR is not set 1379# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1382,7 +1395,6 @@ CONFIG_CRYPTO=y
1382# 1395#
1383# Crypto core or helper 1396# Crypto core or helper
1384# 1397#
1385# CONFIG_CRYPTO_FIPS is not set
1386CONFIG_CRYPTO_ALGAPI=y 1398CONFIG_CRYPTO_ALGAPI=y
1387CONFIG_CRYPTO_ALGAPI2=y 1399CONFIG_CRYPTO_ALGAPI2=y
1388CONFIG_CRYPTO_AEAD2=y 1400CONFIG_CRYPTO_AEAD2=y
@@ -1424,11 +1436,13 @@ CONFIG_CRYPTO_PCBC=m
1424# 1436#
1425# CONFIG_CRYPTO_HMAC is not set 1437# CONFIG_CRYPTO_HMAC is not set
1426# CONFIG_CRYPTO_XCBC is not set 1438# CONFIG_CRYPTO_XCBC is not set
1439# CONFIG_CRYPTO_VMAC is not set
1427 1440
1428# 1441#
1429# Digest 1442# Digest
1430# 1443#
1431# CONFIG_CRYPTO_CRC32C is not set 1444# CONFIG_CRYPTO_CRC32C is not set
1445# CONFIG_CRYPTO_GHASH is not set
1432# CONFIG_CRYPTO_MD4 is not set 1446# CONFIG_CRYPTO_MD4 is not set
1433CONFIG_CRYPTO_MD5=y 1447CONFIG_CRYPTO_MD5=y
1434# CONFIG_CRYPTO_MICHAEL_MIC is not set 1448# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/83xx/mpc834x_mds_defconfig b/arch/powerpc/configs/83xx/mpc834x_mds_defconfig
index 3236c47712c2..c4e92ba5c38b 100644
--- a/arch/powerpc/configs/83xx/mpc834x_mds_defconfig
+++ b/arch/powerpc/configs/83xx/mpc834x_mds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:09 2009 4# Thu Nov 5 08:20:27 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -35,6 +35,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y 35CONFIG_GENERIC_HARDIRQS=y
36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +85,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 85#
85# RCU Subsystem 86# RCU Subsystem
86# 87#
87CONFIG_CLASSIC_RCU=y 88CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 90# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 93# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 94# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 95CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 96CONFIG_GROUP_SCHED=y
@@ -124,28 +126,29 @@ CONFIG_TIMERFD=y
124CONFIG_EVENTFD=y 126CONFIG_EVENTFD=y
125CONFIG_SHMEM=y 127CONFIG_SHMEM=y
126CONFIG_AIO=y 128CONFIG_AIO=y
127CONFIG_HAVE_PERF_COUNTERS=y 129CONFIG_HAVE_PERF_EVENTS=y
128 130
129# 131#
130# Performance Counters 132# Kernel Performance Events And Counters
131# 133#
134# CONFIG_PERF_EVENTS is not set
132# CONFIG_PERF_COUNTERS is not set 135# CONFIG_PERF_COUNTERS is not set
133CONFIG_VM_EVENT_COUNTERS=y 136CONFIG_VM_EVENT_COUNTERS=y
134CONFIG_PCI_QUIRKS=y 137CONFIG_PCI_QUIRKS=y
135CONFIG_SLUB_DEBUG=y 138CONFIG_SLUB_DEBUG=y
136# CONFIG_STRIP_ASM_SYMS is not set
137CONFIG_COMPAT_BRK=y 139CONFIG_COMPAT_BRK=y
138# CONFIG_SLAB is not set 140# CONFIG_SLAB is not set
139CONFIG_SLUB=y 141CONFIG_SLUB=y
140# CONFIG_SLOB is not set 142# CONFIG_SLOB is not set
141# CONFIG_PROFILING is not set 143# CONFIG_PROFILING is not set
142# CONFIG_MARKERS is not set
143CONFIG_HAVE_OPROFILE=y 144CONFIG_HAVE_OPROFILE=y
144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 145CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
145CONFIG_HAVE_IOREMAP_PROT=y 146CONFIG_HAVE_IOREMAP_PROT=y
146CONFIG_HAVE_KPROBES=y 147CONFIG_HAVE_KPROBES=y
147CONFIG_HAVE_KRETPROBES=y 148CONFIG_HAVE_KRETPROBES=y
148CONFIG_HAVE_ARCH_TRACEHOOK=y 149CONFIG_HAVE_ARCH_TRACEHOOK=y
150CONFIG_HAVE_DMA_ATTRS=y
151CONFIG_HAVE_DMA_API_DEBUG=y
149 152
150# 153#
151# GCOV-based kernel profiling 154# GCOV-based kernel profiling
@@ -256,6 +259,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
256CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
257# CONFIG_KEXEC is not set 260# CONFIG_KEXEC is not set
258# CONFIG_CRASH_DUMP is not set 261# CONFIG_CRASH_DUMP is not set
262CONFIG_MAX_ACTIVE_REGIONS=32
259CONFIG_ARCH_FLATMEM_ENABLE=y 263CONFIG_ARCH_FLATMEM_ENABLE=y
260CONFIG_ARCH_POPULATES_NODE_MAP=y 264CONFIG_ARCH_POPULATES_NODE_MAP=y
261CONFIG_SELECT_MEMORY_MODEL=y 265CONFIG_SELECT_MEMORY_MODEL=y
@@ -273,6 +277,7 @@ CONFIG_BOUNCE=y
273CONFIG_VIRT_TO_BUS=y 277CONFIG_VIRT_TO_BUS=y
274CONFIG_HAVE_MLOCK=y 278CONFIG_HAVE_MLOCK=y
275CONFIG_HAVE_MLOCKED_PAGE_BIT=y 279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set
276CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
277CONFIG_PPC_4K_PAGES=y 282CONFIG_PPC_4K_PAGES=y
278# CONFIG_PPC_16K_PAGES is not set 283# CONFIG_PPC_16K_PAGES is not set
@@ -368,6 +373,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
368# CONFIG_NETFILTER is not set 373# CONFIG_NETFILTER is not set
369# CONFIG_IP_DCCP is not set 374# CONFIG_IP_DCCP is not set
370# CONFIG_IP_SCTP is not set 375# CONFIG_IP_SCTP is not set
376# CONFIG_RDS is not set
371# CONFIG_TIPC is not set 377# CONFIG_TIPC is not set
372# CONFIG_ATM is not set 378# CONFIG_ATM is not set
373# CONFIG_BRIDGE is not set 379# CONFIG_BRIDGE is not set
@@ -397,6 +403,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
397# CONFIG_AF_RXRPC is not set 403# CONFIG_AF_RXRPC is not set
398CONFIG_WIRELESS=y 404CONFIG_WIRELESS=y
399# CONFIG_CFG80211 is not set 405# CONFIG_CFG80211 is not set
406CONFIG_CFG80211_DEFAULT_PS_VALUE=0
400CONFIG_WIRELESS_OLD_REGULATORY=y 407CONFIG_WIRELESS_OLD_REGULATORY=y
401# CONFIG_WIRELESS_EXT is not set 408# CONFIG_WIRELESS_EXT is not set
402# CONFIG_LIB80211 is not set 409# CONFIG_LIB80211 is not set
@@ -404,7 +411,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
404# 411#
405# CFG80211 needs to be enabled for MAC80211 412# CFG80211 needs to be enabled for MAC80211
406# 413#
407CONFIG_MAC80211_DEFAULT_PS_VALUE=0
408# CONFIG_WIMAX is not set 414# CONFIG_WIMAX is not set
409# CONFIG_RFKILL is not set 415# CONFIG_RFKILL is not set
410# CONFIG_NET_9P is not set 416# CONFIG_NET_9P is not set
@@ -417,6 +423,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
417# Generic Driver Options 423# Generic Driver Options
418# 424#
419CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 425CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
426# CONFIG_DEVTMPFS is not set
420CONFIG_STANDALONE=y 427CONFIG_STANDALONE=y
421CONFIG_PREVENT_FIRMWARE_BUILD=y 428CONFIG_PREVENT_FIRMWARE_BUILD=y
422# CONFIG_FW_LOADER is not set 429# CONFIG_FW_LOADER is not set
@@ -556,9 +563,11 @@ CONFIG_E100=y
556# CONFIG_SUNDANCE is not set 563# CONFIG_SUNDANCE is not set
557# CONFIG_TLAN is not set 564# CONFIG_TLAN is not set
558# CONFIG_KS8842 is not set 565# CONFIG_KS8842 is not set
566# CONFIG_KS8851_MLL is not set
559# CONFIG_VIA_RHINE is not set 567# CONFIG_VIA_RHINE is not set
560# CONFIG_SC92031 is not set 568# CONFIG_SC92031 is not set
561# CONFIG_ATL2 is not set 569# CONFIG_ATL2 is not set
570# CONFIG_XILINX_EMACLITE is not set
562CONFIG_NETDEV_1000=y 571CONFIG_NETDEV_1000=y
563# CONFIG_ACENIC is not set 572# CONFIG_ACENIC is not set
564# CONFIG_DL2K is not set 573# CONFIG_DL2K is not set
@@ -606,10 +615,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
606# CONFIG_SFC is not set 615# CONFIG_SFC is not set
607# CONFIG_BE2NET is not set 616# CONFIG_BE2NET is not set
608# CONFIG_TR is not set 617# CONFIG_TR is not set
609 618CONFIG_WLAN=y
610#
611# Wireless LAN
612#
613# CONFIG_WLAN_PRE80211 is not set 619# CONFIG_WLAN_PRE80211 is not set
614# CONFIG_WLAN_80211 is not set 620# CONFIG_WLAN_80211 is not set
615 621
@@ -699,6 +705,7 @@ CONFIG_LEGACY_PTY_COUNT=256
699CONFIG_DEVPORT=y 705CONFIG_DEVPORT=y
700CONFIG_I2C=y 706CONFIG_I2C=y
701CONFIG_I2C_BOARDINFO=y 707CONFIG_I2C_BOARDINFO=y
708CONFIG_I2C_COMPAT=y
702CONFIG_I2C_CHARDEV=y 709CONFIG_I2C_CHARDEV=y
703CONFIG_I2C_HELPER_AUTO=y 710CONFIG_I2C_HELPER_AUTO=y
704 711
@@ -752,9 +759,6 @@ CONFIG_I2C_MPC=y
752# Miscellaneous I2C Chip support 759# Miscellaneous I2C Chip support
753# 760#
754# CONFIG_DS1682 is not set 761# CONFIG_DS1682 is not set
755# CONFIG_SENSORS_PCF8574 is not set
756# CONFIG_PCF8575 is not set
757# CONFIG_SENSORS_PCA9539 is not set
758# CONFIG_SENSORS_TSL2550 is not set 762# CONFIG_SENSORS_TSL2550 is not set
759# CONFIG_I2C_DEBUG_CORE is not set 763# CONFIG_I2C_DEBUG_CORE is not set
760# CONFIG_I2C_DEBUG_ALGO is not set 764# CONFIG_I2C_DEBUG_ALGO is not set
@@ -772,6 +776,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
772# CONFIG_POWER_SUPPLY is not set 776# CONFIG_POWER_SUPPLY is not set
773CONFIG_HWMON=y 777CONFIG_HWMON=y
774# CONFIG_HWMON_VID is not set 778# CONFIG_HWMON_VID is not set
779# CONFIG_HWMON_DEBUG_CHIP is not set
780
781#
782# Native drivers
783#
775# CONFIG_SENSORS_AD7414 is not set 784# CONFIG_SENSORS_AD7414 is not set
776# CONFIG_SENSORS_AD7418 is not set 785# CONFIG_SENSORS_AD7418 is not set
777# CONFIG_SENSORS_ADM1021 is not set 786# CONFIG_SENSORS_ADM1021 is not set
@@ -821,6 +830,7 @@ CONFIG_HWMON=y
821# CONFIG_SENSORS_ADS7828 is not set 830# CONFIG_SENSORS_ADS7828 is not set
822# CONFIG_SENSORS_THMC50 is not set 831# CONFIG_SENSORS_THMC50 is not set
823# CONFIG_SENSORS_TMP401 is not set 832# CONFIG_SENSORS_TMP401 is not set
833# CONFIG_SENSORS_TMP421 is not set
824# CONFIG_SENSORS_VIA686A is not set 834# CONFIG_SENSORS_VIA686A is not set
825# CONFIG_SENSORS_VT1211 is not set 835# CONFIG_SENSORS_VT1211 is not set
826# CONFIG_SENSORS_VT8231 is not set 836# CONFIG_SENSORS_VT8231 is not set
@@ -832,9 +842,7 @@ CONFIG_HWMON=y
832# CONFIG_SENSORS_W83L786NG is not set 842# CONFIG_SENSORS_W83L786NG is not set
833# CONFIG_SENSORS_W83627HF is not set 843# CONFIG_SENSORS_W83627HF is not set
834# CONFIG_SENSORS_W83627EHF is not set 844# CONFIG_SENSORS_W83627EHF is not set
835# CONFIG_HWMON_DEBUG_CHIP is not set
836# CONFIG_THERMAL is not set 845# CONFIG_THERMAL is not set
837# CONFIG_THERMAL_HWMON is not set
838CONFIG_WATCHDOG=y 846CONFIG_WATCHDOG=y
839# CONFIG_WATCHDOG_NOWAYOUT is not set 847# CONFIG_WATCHDOG_NOWAYOUT is not set
840 848
@@ -867,6 +875,7 @@ CONFIG_SSB_POSSIBLE=y
867# CONFIG_MFD_TMIO is not set 875# CONFIG_MFD_TMIO is not set
868# CONFIG_PMIC_DA903X is not set 876# CONFIG_PMIC_DA903X is not set
869# CONFIG_MFD_WM8400 is not set 877# CONFIG_MFD_WM8400 is not set
878# CONFIG_MFD_WM831X is not set
870# CONFIG_MFD_WM8350_I2C is not set 879# CONFIG_MFD_WM8350_I2C is not set
871# CONFIG_MFD_PCF50633 is not set 880# CONFIG_MFD_PCF50633 is not set
872# CONFIG_AB3100_CORE is not set 881# CONFIG_AB3100_CORE is not set
@@ -877,6 +886,7 @@ CONFIG_SSB_POSSIBLE=y
877# Graphics support 886# Graphics support
878# 887#
879# CONFIG_AGP is not set 888# CONFIG_AGP is not set
889CONFIG_VGA_ARB=y
880# CONFIG_DRM is not set 890# CONFIG_DRM is not set
881# CONFIG_VGASTATE is not set 891# CONFIG_VGASTATE is not set
882CONFIG_VIDEO_OUTPUT_CONTROL=m 892CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -890,7 +900,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
890# CONFIG_SOUND is not set 900# CONFIG_SOUND is not set
891CONFIG_HID_SUPPORT=y 901CONFIG_HID_SUPPORT=y
892CONFIG_HID=y 902CONFIG_HID=y
893# CONFIG_HID_DEBUG is not set
894# CONFIG_HIDRAW is not set 903# CONFIG_HIDRAW is not set
895# CONFIG_HID_PID is not set 904# CONFIG_HID_PID is not set
896 905
@@ -1010,6 +1019,7 @@ CONFIG_FS_MBCACHE=y
1010# CONFIG_GFS2_FS is not set 1019# CONFIG_GFS2_FS is not set
1011# CONFIG_OCFS2_FS is not set 1020# CONFIG_OCFS2_FS is not set
1012# CONFIG_BTRFS_FS is not set 1021# CONFIG_BTRFS_FS is not set
1022# CONFIG_NILFS2_FS is not set
1013CONFIG_FILE_LOCKING=y 1023CONFIG_FILE_LOCKING=y
1014CONFIG_FSNOTIFY=y 1024CONFIG_FSNOTIFY=y
1015CONFIG_DNOTIFY=y 1025CONFIG_DNOTIFY=y
@@ -1068,7 +1078,6 @@ CONFIG_MISC_FILESYSTEMS=y
1068# CONFIG_ROMFS_FS is not set 1078# CONFIG_ROMFS_FS is not set
1069# CONFIG_SYSV_FS is not set 1079# CONFIG_SYSV_FS is not set
1070# CONFIG_UFS_FS is not set 1080# CONFIG_UFS_FS is not set
1071# CONFIG_NILFS2_FS is not set
1072CONFIG_NETWORK_FILESYSTEMS=y 1081CONFIG_NETWORK_FILESYSTEMS=y
1073CONFIG_NFS_FS=y 1082CONFIG_NFS_FS=y
1074CONFIG_NFS_V3=y 1083CONFIG_NFS_V3=y
@@ -1140,6 +1149,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1140CONFIG_ENABLE_MUST_CHECK=y 1149CONFIG_ENABLE_MUST_CHECK=y
1141CONFIG_FRAME_WARN=1024 1150CONFIG_FRAME_WARN=1024
1142# CONFIG_MAGIC_SYSRQ is not set 1151# CONFIG_MAGIC_SYSRQ is not set
1152# CONFIG_STRIP_ASM_SYMS is not set
1143# CONFIG_UNUSED_SYMBOLS is not set 1153# CONFIG_UNUSED_SYMBOLS is not set
1144# CONFIG_DEBUG_FS is not set 1154# CONFIG_DEBUG_FS is not set
1145# CONFIG_HEADERS_CHECK is not set 1155# CONFIG_HEADERS_CHECK is not set
@@ -1157,6 +1167,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1157CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1167CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1158CONFIG_TRACING_SUPPORT=y 1168CONFIG_TRACING_SUPPORT=y
1159# CONFIG_FTRACE is not set 1169# CONFIG_FTRACE is not set
1170# CONFIG_DMA_API_DEBUG is not set
1160# CONFIG_SAMPLES is not set 1171# CONFIG_SAMPLES is not set
1161CONFIG_HAVE_ARCH_KGDB=y 1172CONFIG_HAVE_ARCH_KGDB=y
1162# CONFIG_PPC_DISABLE_WERROR is not set 1173# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1178,7 +1189,6 @@ CONFIG_CRYPTO=y
1178# 1189#
1179# Crypto core or helper 1190# Crypto core or helper
1180# 1191#
1181# CONFIG_CRYPTO_FIPS is not set
1182CONFIG_CRYPTO_ALGAPI=y 1192CONFIG_CRYPTO_ALGAPI=y
1183CONFIG_CRYPTO_ALGAPI2=y 1193CONFIG_CRYPTO_ALGAPI2=y
1184CONFIG_CRYPTO_AEAD2=y 1194CONFIG_CRYPTO_AEAD2=y
@@ -1220,11 +1230,13 @@ CONFIG_CRYPTO_PCBC=m
1220# 1230#
1221# CONFIG_CRYPTO_HMAC is not set 1231# CONFIG_CRYPTO_HMAC is not set
1222# CONFIG_CRYPTO_XCBC is not set 1232# CONFIG_CRYPTO_XCBC is not set
1233# CONFIG_CRYPTO_VMAC is not set
1223 1234
1224# 1235#
1225# Digest 1236# Digest
1226# 1237#
1227# CONFIG_CRYPTO_CRC32C is not set 1238# CONFIG_CRYPTO_CRC32C is not set
1239# CONFIG_CRYPTO_GHASH is not set
1228# CONFIG_CRYPTO_MD4 is not set 1240# CONFIG_CRYPTO_MD4 is not set
1229CONFIG_CRYPTO_MD5=y 1241CONFIG_CRYPTO_MD5=y
1230# CONFIG_CRYPTO_MICHAEL_MIC is not set 1242# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/83xx/mpc836x_mds_defconfig b/arch/powerpc/configs/83xx/mpc836x_mds_defconfig
index 8c5299d74813..4f434b1492fa 100644
--- a/arch/powerpc/configs/83xx/mpc836x_mds_defconfig
+++ b/arch/powerpc/configs/83xx/mpc836x_mds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:10 2009 4# Thu Nov 5 08:20:28 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -35,6 +35,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y 35CONFIG_GENERIC_HARDIRQS=y
36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +85,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 85#
85# RCU Subsystem 86# RCU Subsystem
86# 87#
87CONFIG_CLASSIC_RCU=y 88CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 90# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 93# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 94# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 95CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 96CONFIG_GROUP_SCHED=y
@@ -124,28 +126,29 @@ CONFIG_TIMERFD=y
124CONFIG_EVENTFD=y 126CONFIG_EVENTFD=y
125CONFIG_SHMEM=y 127CONFIG_SHMEM=y
126CONFIG_AIO=y 128CONFIG_AIO=y
127CONFIG_HAVE_PERF_COUNTERS=y 129CONFIG_HAVE_PERF_EVENTS=y
128 130
129# 131#
130# Performance Counters 132# Kernel Performance Events And Counters
131# 133#
134# CONFIG_PERF_EVENTS is not set
132# CONFIG_PERF_COUNTERS is not set 135# CONFIG_PERF_COUNTERS is not set
133CONFIG_VM_EVENT_COUNTERS=y 136CONFIG_VM_EVENT_COUNTERS=y
134CONFIG_PCI_QUIRKS=y 137CONFIG_PCI_QUIRKS=y
135CONFIG_SLUB_DEBUG=y 138CONFIG_SLUB_DEBUG=y
136# CONFIG_STRIP_ASM_SYMS is not set
137CONFIG_COMPAT_BRK=y 139CONFIG_COMPAT_BRK=y
138# CONFIG_SLAB is not set 140# CONFIG_SLAB is not set
139CONFIG_SLUB=y 141CONFIG_SLUB=y
140# CONFIG_SLOB is not set 142# CONFIG_SLOB is not set
141# CONFIG_PROFILING is not set 143# CONFIG_PROFILING is not set
142# CONFIG_MARKERS is not set
143CONFIG_HAVE_OPROFILE=y 144CONFIG_HAVE_OPROFILE=y
144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 145CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
145CONFIG_HAVE_IOREMAP_PROT=y 146CONFIG_HAVE_IOREMAP_PROT=y
146CONFIG_HAVE_KPROBES=y 147CONFIG_HAVE_KPROBES=y
147CONFIG_HAVE_KRETPROBES=y 148CONFIG_HAVE_KRETPROBES=y
148CONFIG_HAVE_ARCH_TRACEHOOK=y 149CONFIG_HAVE_ARCH_TRACEHOOK=y
150CONFIG_HAVE_DMA_ATTRS=y
151CONFIG_HAVE_DMA_API_DEBUG=y
149 152
150# 153#
151# GCOV-based kernel profiling 154# GCOV-based kernel profiling
@@ -255,6 +258,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
255CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 258CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
256# CONFIG_KEXEC is not set 259# CONFIG_KEXEC is not set
257# CONFIG_CRASH_DUMP is not set 260# CONFIG_CRASH_DUMP is not set
261CONFIG_MAX_ACTIVE_REGIONS=32
258CONFIG_ARCH_FLATMEM_ENABLE=y 262CONFIG_ARCH_FLATMEM_ENABLE=y
259CONFIG_ARCH_POPULATES_NODE_MAP=y 263CONFIG_ARCH_POPULATES_NODE_MAP=y
260CONFIG_SELECT_MEMORY_MODEL=y 264CONFIG_SELECT_MEMORY_MODEL=y
@@ -272,6 +276,7 @@ CONFIG_BOUNCE=y
272CONFIG_VIRT_TO_BUS=y 276CONFIG_VIRT_TO_BUS=y
273CONFIG_HAVE_MLOCK=y 277CONFIG_HAVE_MLOCK=y
274CONFIG_HAVE_MLOCKED_PAGE_BIT=y 278CONFIG_HAVE_MLOCKED_PAGE_BIT=y
279# CONFIG_KSM is not set
275CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 280CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
276CONFIG_PPC_4K_PAGES=y 281CONFIG_PPC_4K_PAGES=y
277# CONFIG_PPC_16K_PAGES is not set 282# CONFIG_PPC_16K_PAGES is not set
@@ -367,6 +372,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
367# CONFIG_NETFILTER is not set 372# CONFIG_NETFILTER is not set
368# CONFIG_IP_DCCP is not set 373# CONFIG_IP_DCCP is not set
369# CONFIG_IP_SCTP is not set 374# CONFIG_IP_SCTP is not set
375# CONFIG_RDS is not set
370# CONFIG_TIPC is not set 376# CONFIG_TIPC is not set
371# CONFIG_ATM is not set 377# CONFIG_ATM is not set
372# CONFIG_BRIDGE is not set 378# CONFIG_BRIDGE is not set
@@ -396,6 +402,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
396# CONFIG_AF_RXRPC is not set 402# CONFIG_AF_RXRPC is not set
397CONFIG_WIRELESS=y 403CONFIG_WIRELESS=y
398# CONFIG_CFG80211 is not set 404# CONFIG_CFG80211 is not set
405CONFIG_CFG80211_DEFAULT_PS_VALUE=0
399CONFIG_WIRELESS_OLD_REGULATORY=y 406CONFIG_WIRELESS_OLD_REGULATORY=y
400# CONFIG_WIRELESS_EXT is not set 407# CONFIG_WIRELESS_EXT is not set
401# CONFIG_LIB80211 is not set 408# CONFIG_LIB80211 is not set
@@ -403,7 +410,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
403# 410#
404# CFG80211 needs to be enabled for MAC80211 411# CFG80211 needs to be enabled for MAC80211
405# 412#
406CONFIG_MAC80211_DEFAULT_PS_VALUE=0
407# CONFIG_WIMAX is not set 413# CONFIG_WIMAX is not set
408# CONFIG_RFKILL is not set 414# CONFIG_RFKILL is not set
409# CONFIG_NET_9P is not set 415# CONFIG_NET_9P is not set
@@ -416,6 +422,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
416# Generic Driver Options 422# Generic Driver Options
417# 423#
418CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 424CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
425# CONFIG_DEVTMPFS is not set
419CONFIG_STANDALONE=y 426CONFIG_STANDALONE=y
420CONFIG_PREVENT_FIRMWARE_BUILD=y 427CONFIG_PREVENT_FIRMWARE_BUILD=y
421# CONFIG_FW_LOADER is not set 428# CONFIG_FW_LOADER is not set
@@ -423,9 +430,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
423# CONFIG_CONNECTOR is not set 430# CONFIG_CONNECTOR is not set
424CONFIG_MTD=y 431CONFIG_MTD=y
425# CONFIG_MTD_DEBUG is not set 432# CONFIG_MTD_DEBUG is not set
433# CONFIG_MTD_TESTS is not set
426# CONFIG_MTD_CONCAT is not set 434# CONFIG_MTD_CONCAT is not set
427CONFIG_MTD_PARTITIONS=y 435CONFIG_MTD_PARTITIONS=y
428# CONFIG_MTD_TESTS is not set
429# CONFIG_MTD_REDBOOT_PARTS is not set 436# CONFIG_MTD_REDBOOT_PARTS is not set
430CONFIG_MTD_CMDLINE_PARTS=y 437CONFIG_MTD_CMDLINE_PARTS=y
431# CONFIG_MTD_OF_PARTS is not set 438# CONFIG_MTD_OF_PARTS is not set
@@ -585,6 +592,7 @@ CONFIG_SCSI_LOWLEVEL=y
585# CONFIG_ISCSI_TCP is not set 592# CONFIG_ISCSI_TCP is not set
586# CONFIG_SCSI_CXGB3_ISCSI is not set 593# CONFIG_SCSI_CXGB3_ISCSI is not set
587# CONFIG_SCSI_BNX2_ISCSI is not set 594# CONFIG_SCSI_BNX2_ISCSI is not set
595# CONFIG_BE2ISCSI is not set
588# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 596# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
589# CONFIG_SCSI_3W_9XXX is not set 597# CONFIG_SCSI_3W_9XXX is not set
590# CONFIG_SCSI_ACARD is not set 598# CONFIG_SCSI_ACARD is not set
@@ -623,7 +631,9 @@ CONFIG_SCSI_LOWLEVEL=y
623# CONFIG_SCSI_DC390T is not set 631# CONFIG_SCSI_DC390T is not set
624# CONFIG_SCSI_NSP32 is not set 632# CONFIG_SCSI_NSP32 is not set
625# CONFIG_SCSI_DEBUG is not set 633# CONFIG_SCSI_DEBUG is not set
634# CONFIG_SCSI_PMCRAID is not set
626# CONFIG_SCSI_SRP is not set 635# CONFIG_SCSI_SRP is not set
636# CONFIG_SCSI_BFA_FC is not set
627# CONFIG_SCSI_DH is not set 637# CONFIG_SCSI_DH is not set
628# CONFIG_SCSI_OSD_INITIATOR is not set 638# CONFIG_SCSI_OSD_INITIATOR is not set
629# CONFIG_ATA is not set 639# CONFIG_ATA is not set
@@ -693,7 +703,9 @@ CONFIG_MII=y
693# CONFIG_NET_PCI is not set 703# CONFIG_NET_PCI is not set
694# CONFIG_B44 is not set 704# CONFIG_B44 is not set
695# CONFIG_KS8842 is not set 705# CONFIG_KS8842 is not set
706# CONFIG_KS8851_MLL is not set
696# CONFIG_ATL2 is not set 707# CONFIG_ATL2 is not set
708# CONFIG_XILINX_EMACLITE is not set
697CONFIG_NETDEV_1000=y 709CONFIG_NETDEV_1000=y
698# CONFIG_ACENIC is not set 710# CONFIG_ACENIC is not set
699# CONFIG_DL2K is not set 711# CONFIG_DL2K is not set
@@ -716,7 +728,6 @@ CONFIG_NETDEV_1000=y
716CONFIG_FSL_PQ_MDIO=y 728CONFIG_FSL_PQ_MDIO=y
717# CONFIG_GIANFAR is not set 729# CONFIG_GIANFAR is not set
718CONFIG_UCC_GETH=y 730CONFIG_UCC_GETH=y
719# CONFIG_UGETH_MAGIC_PACKET is not set
720# CONFIG_UGETH_TX_ON_DEMAND is not set 731# CONFIG_UGETH_TX_ON_DEMAND is not set
721# CONFIG_MV643XX_ETH is not set 732# CONFIG_MV643XX_ETH is not set
722# CONFIG_QLA3XXX is not set 733# CONFIG_QLA3XXX is not set
@@ -744,10 +755,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
744# CONFIG_SFC is not set 755# CONFIG_SFC is not set
745# CONFIG_BE2NET is not set 756# CONFIG_BE2NET is not set
746# CONFIG_TR is not set 757# CONFIG_TR is not set
747 758CONFIG_WLAN=y
748#
749# Wireless LAN
750#
751# CONFIG_WLAN_PRE80211 is not set 759# CONFIG_WLAN_PRE80211 is not set
752# CONFIG_WLAN_80211 is not set 760# CONFIG_WLAN_80211 is not set
753 761
@@ -840,6 +848,7 @@ CONFIG_HW_RANDOM=y
840CONFIG_DEVPORT=y 848CONFIG_DEVPORT=y
841CONFIG_I2C=y 849CONFIG_I2C=y
842CONFIG_I2C_BOARDINFO=y 850CONFIG_I2C_BOARDINFO=y
851CONFIG_I2C_COMPAT=y
843CONFIG_I2C_CHARDEV=y 852CONFIG_I2C_CHARDEV=y
844CONFIG_I2C_HELPER_AUTO=y 853CONFIG_I2C_HELPER_AUTO=y
845 854
@@ -893,9 +902,6 @@ CONFIG_I2C_MPC=y
893# Miscellaneous I2C Chip support 902# Miscellaneous I2C Chip support
894# 903#
895# CONFIG_DS1682 is not set 904# CONFIG_DS1682 is not set
896# CONFIG_SENSORS_PCF8574 is not set
897# CONFIG_PCF8575 is not set
898# CONFIG_SENSORS_PCA9539 is not set
899# CONFIG_SENSORS_TSL2550 is not set 905# CONFIG_SENSORS_TSL2550 is not set
900# CONFIG_I2C_DEBUG_CORE is not set 906# CONFIG_I2C_DEBUG_CORE is not set
901# CONFIG_I2C_DEBUG_ALGO is not set 907# CONFIG_I2C_DEBUG_ALGO is not set
@@ -913,6 +919,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
913# CONFIG_POWER_SUPPLY is not set 919# CONFIG_POWER_SUPPLY is not set
914CONFIG_HWMON=y 920CONFIG_HWMON=y
915# CONFIG_HWMON_VID is not set 921# CONFIG_HWMON_VID is not set
922# CONFIG_HWMON_DEBUG_CHIP is not set
923
924#
925# Native drivers
926#
916# CONFIG_SENSORS_AD7414 is not set 927# CONFIG_SENSORS_AD7414 is not set
917# CONFIG_SENSORS_AD7418 is not set 928# CONFIG_SENSORS_AD7418 is not set
918# CONFIG_SENSORS_ADM1021 is not set 929# CONFIG_SENSORS_ADM1021 is not set
@@ -962,6 +973,7 @@ CONFIG_HWMON=y
962# CONFIG_SENSORS_ADS7828 is not set 973# CONFIG_SENSORS_ADS7828 is not set
963# CONFIG_SENSORS_THMC50 is not set 974# CONFIG_SENSORS_THMC50 is not set
964# CONFIG_SENSORS_TMP401 is not set 975# CONFIG_SENSORS_TMP401 is not set
976# CONFIG_SENSORS_TMP421 is not set
965# CONFIG_SENSORS_VIA686A is not set 977# CONFIG_SENSORS_VIA686A is not set
966# CONFIG_SENSORS_VT1211 is not set 978# CONFIG_SENSORS_VT1211 is not set
967# CONFIG_SENSORS_VT8231 is not set 979# CONFIG_SENSORS_VT8231 is not set
@@ -973,9 +985,7 @@ CONFIG_HWMON=y
973# CONFIG_SENSORS_W83L786NG is not set 985# CONFIG_SENSORS_W83L786NG is not set
974# CONFIG_SENSORS_W83627HF is not set 986# CONFIG_SENSORS_W83627HF is not set
975# CONFIG_SENSORS_W83627EHF is not set 987# CONFIG_SENSORS_W83627EHF is not set
976# CONFIG_HWMON_DEBUG_CHIP is not set
977# CONFIG_THERMAL is not set 988# CONFIG_THERMAL is not set
978# CONFIG_THERMAL_HWMON is not set
979CONFIG_WATCHDOG=y 989CONFIG_WATCHDOG=y
980# CONFIG_WATCHDOG_NOWAYOUT is not set 990# CONFIG_WATCHDOG_NOWAYOUT is not set
981 991
@@ -1008,6 +1018,7 @@ CONFIG_SSB_POSSIBLE=y
1008# CONFIG_MFD_TMIO is not set 1018# CONFIG_MFD_TMIO is not set
1009# CONFIG_PMIC_DA903X is not set 1019# CONFIG_PMIC_DA903X is not set
1010# CONFIG_MFD_WM8400 is not set 1020# CONFIG_MFD_WM8400 is not set
1021# CONFIG_MFD_WM831X is not set
1011# CONFIG_MFD_WM8350_I2C is not set 1022# CONFIG_MFD_WM8350_I2C is not set
1012# CONFIG_MFD_PCF50633 is not set 1023# CONFIG_MFD_PCF50633 is not set
1013# CONFIG_AB3100_CORE is not set 1024# CONFIG_AB3100_CORE is not set
@@ -1018,6 +1029,7 @@ CONFIG_SSB_POSSIBLE=y
1018# Graphics support 1029# Graphics support
1019# 1030#
1020# CONFIG_AGP is not set 1031# CONFIG_AGP is not set
1032CONFIG_VGA_ARB=y
1021# CONFIG_DRM is not set 1033# CONFIG_DRM is not set
1022# CONFIG_VGASTATE is not set 1034# CONFIG_VGASTATE is not set
1023CONFIG_VIDEO_OUTPUT_CONTROL=m 1035CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -1031,7 +1043,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
1031# CONFIG_SOUND is not set 1043# CONFIG_SOUND is not set
1032CONFIG_HID_SUPPORT=y 1044CONFIG_HID_SUPPORT=y
1033CONFIG_HID=y 1045CONFIG_HID=y
1034# CONFIG_HID_DEBUG is not set
1035# CONFIG_HIDRAW is not set 1046# CONFIG_HIDRAW is not set
1036# CONFIG_HID_PID is not set 1047# CONFIG_HID_PID is not set
1037 1048
@@ -1151,6 +1162,7 @@ CONFIG_FS_MBCACHE=y
1151# CONFIG_GFS2_FS is not set 1162# CONFIG_GFS2_FS is not set
1152# CONFIG_OCFS2_FS is not set 1163# CONFIG_OCFS2_FS is not set
1153# CONFIG_BTRFS_FS is not set 1164# CONFIG_BTRFS_FS is not set
1165# CONFIG_NILFS2_FS is not set
1154CONFIG_FILE_LOCKING=y 1166CONFIG_FILE_LOCKING=y
1155CONFIG_FSNOTIFY=y 1167CONFIG_FSNOTIFY=y
1156CONFIG_DNOTIFY=y 1168CONFIG_DNOTIFY=y
@@ -1210,7 +1222,6 @@ CONFIG_MISC_FILESYSTEMS=y
1210# CONFIG_ROMFS_FS is not set 1222# CONFIG_ROMFS_FS is not set
1211# CONFIG_SYSV_FS is not set 1223# CONFIG_SYSV_FS is not set
1212# CONFIG_UFS_FS is not set 1224# CONFIG_UFS_FS is not set
1213# CONFIG_NILFS2_FS is not set
1214CONFIG_NETWORK_FILESYSTEMS=y 1225CONFIG_NETWORK_FILESYSTEMS=y
1215CONFIG_NFS_FS=y 1226CONFIG_NFS_FS=y
1216CONFIG_NFS_V3=y 1227CONFIG_NFS_V3=y
@@ -1284,6 +1295,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1284CONFIG_ENABLE_MUST_CHECK=y 1295CONFIG_ENABLE_MUST_CHECK=y
1285CONFIG_FRAME_WARN=1024 1296CONFIG_FRAME_WARN=1024
1286# CONFIG_MAGIC_SYSRQ is not set 1297# CONFIG_MAGIC_SYSRQ is not set
1298# CONFIG_STRIP_ASM_SYMS is not set
1287# CONFIG_UNUSED_SYMBOLS is not set 1299# CONFIG_UNUSED_SYMBOLS is not set
1288# CONFIG_DEBUG_FS is not set 1300# CONFIG_DEBUG_FS is not set
1289# CONFIG_HEADERS_CHECK is not set 1301# CONFIG_HEADERS_CHECK is not set
@@ -1301,6 +1313,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1301CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1313CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1302CONFIG_TRACING_SUPPORT=y 1314CONFIG_TRACING_SUPPORT=y
1303# CONFIG_FTRACE is not set 1315# CONFIG_FTRACE is not set
1316# CONFIG_DMA_API_DEBUG is not set
1304# CONFIG_SAMPLES is not set 1317# CONFIG_SAMPLES is not set
1305CONFIG_HAVE_ARCH_KGDB=y 1318CONFIG_HAVE_ARCH_KGDB=y
1306# CONFIG_PPC_DISABLE_WERROR is not set 1319# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1322,7 +1335,6 @@ CONFIG_CRYPTO=y
1322# 1335#
1323# Crypto core or helper 1336# Crypto core or helper
1324# 1337#
1325# CONFIG_CRYPTO_FIPS is not set
1326CONFIG_CRYPTO_ALGAPI=y 1338CONFIG_CRYPTO_ALGAPI=y
1327CONFIG_CRYPTO_ALGAPI2=y 1339CONFIG_CRYPTO_ALGAPI2=y
1328CONFIG_CRYPTO_AEAD2=y 1340CONFIG_CRYPTO_AEAD2=y
@@ -1364,11 +1376,13 @@ CONFIG_CRYPTO_PCBC=m
1364# 1376#
1365# CONFIG_CRYPTO_HMAC is not set 1377# CONFIG_CRYPTO_HMAC is not set
1366# CONFIG_CRYPTO_XCBC is not set 1378# CONFIG_CRYPTO_XCBC is not set
1379# CONFIG_CRYPTO_VMAC is not set
1367 1380
1368# 1381#
1369# Digest 1382# Digest
1370# 1383#
1371# CONFIG_CRYPTO_CRC32C is not set 1384# CONFIG_CRYPTO_CRC32C is not set
1385# CONFIG_CRYPTO_GHASH is not set
1372# CONFIG_CRYPTO_MD4 is not set 1386# CONFIG_CRYPTO_MD4 is not set
1373CONFIG_CRYPTO_MD5=y 1387CONFIG_CRYPTO_MD5=y
1374# CONFIG_CRYPTO_MICHAEL_MIC is not set 1388# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/83xx/mpc836x_rdk_defconfig b/arch/powerpc/configs/83xx/mpc836x_rdk_defconfig
index ff31667a890b..b52ec0861679 100644
--- a/arch/powerpc/configs/83xx/mpc836x_rdk_defconfig
+++ b/arch/powerpc/configs/83xx/mpc836x_rdk_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:12 2009 4# Thu Nov 5 08:20:30 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -35,6 +35,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y 35CONFIG_GENERIC_HARDIRQS=y
36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -85,11 +86,12 @@ CONFIG_SYSVIPC_SYSCTL=y
85# 86#
86# RCU Subsystem 87# RCU Subsystem
87# 88#
88CONFIG_CLASSIC_RCU=y 89CONFIG_TREE_RCU=y
89# CONFIG_TREE_RCU is not set 90# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_PREEMPT_RCU is not set 91# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set
91# CONFIG_TREE_RCU_TRACE is not set 94# CONFIG_TREE_RCU_TRACE is not set
92# CONFIG_PREEMPT_RCU_TRACE is not set
93# CONFIG_IKCONFIG is not set 95# CONFIG_IKCONFIG is not set
94CONFIG_LOG_BUF_SHIFT=14 96CONFIG_LOG_BUF_SHIFT=14
95CONFIG_GROUP_SCHED=y 97CONFIG_GROUP_SCHED=y
@@ -125,28 +127,29 @@ CONFIG_TIMERFD=y
125CONFIG_EVENTFD=y 127CONFIG_EVENTFD=y
126CONFIG_SHMEM=y 128CONFIG_SHMEM=y
127CONFIG_AIO=y 129CONFIG_AIO=y
128CONFIG_HAVE_PERF_COUNTERS=y 130CONFIG_HAVE_PERF_EVENTS=y
129 131
130# 132#
131# Performance Counters 133# Kernel Performance Events And Counters
132# 134#
135# CONFIG_PERF_EVENTS is not set
133# CONFIG_PERF_COUNTERS is not set 136# CONFIG_PERF_COUNTERS is not set
134CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
135CONFIG_PCI_QUIRKS=y 138CONFIG_PCI_QUIRKS=y
136CONFIG_SLUB_DEBUG=y 139CONFIG_SLUB_DEBUG=y
137# CONFIG_STRIP_ASM_SYMS is not set
138CONFIG_COMPAT_BRK=y 140CONFIG_COMPAT_BRK=y
139# CONFIG_SLAB is not set 141# CONFIG_SLAB is not set
140CONFIG_SLUB=y 142CONFIG_SLUB=y
141# CONFIG_SLOB is not set 143# CONFIG_SLOB is not set
142# CONFIG_PROFILING is not set 144# CONFIG_PROFILING is not set
143# CONFIG_MARKERS is not set
144CONFIG_HAVE_OPROFILE=y 145CONFIG_HAVE_OPROFILE=y
145CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 146CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
146CONFIG_HAVE_IOREMAP_PROT=y 147CONFIG_HAVE_IOREMAP_PROT=y
147CONFIG_HAVE_KPROBES=y 148CONFIG_HAVE_KPROBES=y
148CONFIG_HAVE_KRETPROBES=y 149CONFIG_HAVE_KRETPROBES=y
149CONFIG_HAVE_ARCH_TRACEHOOK=y 150CONFIG_HAVE_ARCH_TRACEHOOK=y
151CONFIG_HAVE_DMA_ATTRS=y
152CONFIG_HAVE_DMA_API_DEBUG=y
150 153
151# 154#
152# GCOV-based kernel profiling 155# GCOV-based kernel profiling
@@ -255,6 +258,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
255CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 258CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
256# CONFIG_KEXEC is not set 259# CONFIG_KEXEC is not set
257# CONFIG_CRASH_DUMP is not set 260# CONFIG_CRASH_DUMP is not set
261CONFIG_MAX_ACTIVE_REGIONS=32
258CONFIG_ARCH_FLATMEM_ENABLE=y 262CONFIG_ARCH_FLATMEM_ENABLE=y
259CONFIG_ARCH_POPULATES_NODE_MAP=y 263CONFIG_ARCH_POPULATES_NODE_MAP=y
260CONFIG_SELECT_MEMORY_MODEL=y 264CONFIG_SELECT_MEMORY_MODEL=y
@@ -272,6 +276,7 @@ CONFIG_BOUNCE=y
272CONFIG_VIRT_TO_BUS=y 276CONFIG_VIRT_TO_BUS=y
273CONFIG_HAVE_MLOCK=y 277CONFIG_HAVE_MLOCK=y
274CONFIG_HAVE_MLOCKED_PAGE_BIT=y 278CONFIG_HAVE_MLOCKED_PAGE_BIT=y
279# CONFIG_KSM is not set
275CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 280CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
276CONFIG_PPC_4K_PAGES=y 281CONFIG_PPC_4K_PAGES=y
277# CONFIG_PPC_16K_PAGES is not set 282# CONFIG_PPC_16K_PAGES is not set
@@ -369,6 +374,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
369# CONFIG_NETFILTER is not set 374# CONFIG_NETFILTER is not set
370# CONFIG_IP_DCCP is not set 375# CONFIG_IP_DCCP is not set
371# CONFIG_IP_SCTP is not set 376# CONFIG_IP_SCTP is not set
377# CONFIG_RDS is not set
372# CONFIG_TIPC is not set 378# CONFIG_TIPC is not set
373# CONFIG_ATM is not set 379# CONFIG_ATM is not set
374# CONFIG_BRIDGE is not set 380# CONFIG_BRIDGE is not set
@@ -398,6 +404,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
398# CONFIG_AF_RXRPC is not set 404# CONFIG_AF_RXRPC is not set
399CONFIG_WIRELESS=y 405CONFIG_WIRELESS=y
400# CONFIG_CFG80211 is not set 406# CONFIG_CFG80211 is not set
407CONFIG_CFG80211_DEFAULT_PS_VALUE=0
401CONFIG_WIRELESS_OLD_REGULATORY=y 408CONFIG_WIRELESS_OLD_REGULATORY=y
402# CONFIG_WIRELESS_EXT is not set 409# CONFIG_WIRELESS_EXT is not set
403# CONFIG_LIB80211 is not set 410# CONFIG_LIB80211 is not set
@@ -405,7 +412,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
405# 412#
406# CFG80211 needs to be enabled for MAC80211 413# CFG80211 needs to be enabled for MAC80211
407# 414#
408CONFIG_MAC80211_DEFAULT_PS_VALUE=0
409# CONFIG_WIMAX is not set 415# CONFIG_WIMAX is not set
410# CONFIG_RFKILL is not set 416# CONFIG_RFKILL is not set
411# CONFIG_NET_9P is not set 417# CONFIG_NET_9P is not set
@@ -418,6 +424,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
418# Generic Driver Options 424# Generic Driver Options
419# 425#
420CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 426CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
427# CONFIG_DEVTMPFS is not set
421CONFIG_STANDALONE=y 428CONFIG_STANDALONE=y
422CONFIG_PREVENT_FIRMWARE_BUILD=y 429CONFIG_PREVENT_FIRMWARE_BUILD=y
423CONFIG_FW_LOADER=y 430CONFIG_FW_LOADER=y
@@ -427,9 +434,9 @@ CONFIG_EXTRA_FIRMWARE=""
427# CONFIG_CONNECTOR is not set 434# CONFIG_CONNECTOR is not set
428CONFIG_MTD=y 435CONFIG_MTD=y
429# CONFIG_MTD_DEBUG is not set 436# CONFIG_MTD_DEBUG is not set
437# CONFIG_MTD_TESTS is not set
430# CONFIG_MTD_CONCAT is not set 438# CONFIG_MTD_CONCAT is not set
431CONFIG_MTD_PARTITIONS=y 439CONFIG_MTD_PARTITIONS=y
432# CONFIG_MTD_TESTS is not set
433# CONFIG_MTD_REDBOOT_PARTS is not set 440# CONFIG_MTD_REDBOOT_PARTS is not set
434CONFIG_MTD_CMDLINE_PARTS=y 441CONFIG_MTD_CMDLINE_PARTS=y
435# CONFIG_MTD_OF_PARTS is not set 442# CONFIG_MTD_OF_PARTS is not set
@@ -493,6 +500,7 @@ CONFIG_MTD_PHYSMAP_OF=y
493# CONFIG_MTD_PMC551 is not set 500# CONFIG_MTD_PMC551 is not set
494# CONFIG_MTD_DATAFLASH is not set 501# CONFIG_MTD_DATAFLASH is not set
495# CONFIG_MTD_M25P80 is not set 502# CONFIG_MTD_M25P80 is not set
503# CONFIG_MTD_SST25L is not set
496# CONFIG_MTD_SLRAM is not set 504# CONFIG_MTD_SLRAM is not set
497# CONFIG_MTD_PHRAM is not set 505# CONFIG_MTD_PHRAM is not set
498# CONFIG_MTD_MTDRAM is not set 506# CONFIG_MTD_MTDRAM is not set
@@ -639,7 +647,6 @@ CONFIG_NETDEV_1000=y
639CONFIG_FSL_PQ_MDIO=y 647CONFIG_FSL_PQ_MDIO=y
640# CONFIG_GIANFAR is not set 648# CONFIG_GIANFAR is not set
641CONFIG_UCC_GETH=y 649CONFIG_UCC_GETH=y
642# CONFIG_UGETH_MAGIC_PACKET is not set
643# CONFIG_UGETH_TX_ON_DEMAND is not set 650# CONFIG_UGETH_TX_ON_DEMAND is not set
644# CONFIG_MV643XX_ETH is not set 651# CONFIG_MV643XX_ETH is not set
645# CONFIG_QLA3XXX is not set 652# CONFIG_QLA3XXX is not set
@@ -649,10 +656,7 @@ CONFIG_UCC_GETH=y
649# CONFIG_JME is not set 656# CONFIG_JME is not set
650# CONFIG_NETDEV_10000 is not set 657# CONFIG_NETDEV_10000 is not set
651# CONFIG_TR is not set 658# CONFIG_TR is not set
652 659CONFIG_WLAN=y
653#
654# Wireless LAN
655#
656# CONFIG_WLAN_PRE80211 is not set 660# CONFIG_WLAN_PRE80211 is not set
657# CONFIG_WLAN_80211 is not set 661# CONFIG_WLAN_80211 is not set
658 662
@@ -750,6 +754,7 @@ CONFIG_HW_RANDOM=y
750CONFIG_DEVPORT=y 754CONFIG_DEVPORT=y
751CONFIG_I2C=y 755CONFIG_I2C=y
752CONFIG_I2C_BOARDINFO=y 756CONFIG_I2C_BOARDINFO=y
757CONFIG_I2C_COMPAT=y
753CONFIG_I2C_CHARDEV=y 758CONFIG_I2C_CHARDEV=y
754CONFIG_I2C_HELPER_AUTO=y 759CONFIG_I2C_HELPER_AUTO=y
755 760
@@ -804,9 +809,6 @@ CONFIG_I2C_MPC=y
804# Miscellaneous I2C Chip support 809# Miscellaneous I2C Chip support
805# 810#
806# CONFIG_DS1682 is not set 811# CONFIG_DS1682 is not set
807# CONFIG_SENSORS_PCF8574 is not set
808# CONFIG_PCF8575 is not set
809# CONFIG_SENSORS_PCA9539 is not set
810# CONFIG_SENSORS_TSL2550 is not set 812# CONFIG_SENSORS_TSL2550 is not set
811# CONFIG_I2C_DEBUG_CORE is not set 813# CONFIG_I2C_DEBUG_CORE is not set
812# CONFIG_I2C_DEBUG_ALGO is not set 814# CONFIG_I2C_DEBUG_ALGO is not set
@@ -853,17 +855,22 @@ CONFIG_GPIOLIB=y
853# PCI GPIO expanders: 855# PCI GPIO expanders:
854# 856#
855# CONFIG_GPIO_BT8XX is not set 857# CONFIG_GPIO_BT8XX is not set
858# CONFIG_GPIO_LANGWELL is not set
856 859
857# 860#
858# SPI GPIO expanders: 861# SPI GPIO expanders:
859# 862#
860# CONFIG_GPIO_MAX7301 is not set 863# CONFIG_GPIO_MAX7301 is not set
861# CONFIG_GPIO_MCP23S08 is not set 864# CONFIG_GPIO_MCP23S08 is not set
865# CONFIG_GPIO_MC33880 is not set
866
867#
868# AC97 GPIO expanders:
869#
862# CONFIG_W1 is not set 870# CONFIG_W1 is not set
863# CONFIG_POWER_SUPPLY is not set 871# CONFIG_POWER_SUPPLY is not set
864# CONFIG_HWMON is not set 872# CONFIG_HWMON is not set
865# CONFIG_THERMAL is not set 873# CONFIG_THERMAL is not set
866# CONFIG_THERMAL_HWMON is not set
867CONFIG_WATCHDOG=y 874CONFIG_WATCHDOG=y
868# CONFIG_WATCHDOG_NOWAYOUT is not set 875# CONFIG_WATCHDOG_NOWAYOUT is not set
869 876
@@ -897,8 +904,10 @@ CONFIG_SSB_POSSIBLE=y
897# CONFIG_MFD_TMIO is not set 904# CONFIG_MFD_TMIO is not set
898# CONFIG_PMIC_DA903X is not set 905# CONFIG_PMIC_DA903X is not set
899# CONFIG_MFD_WM8400 is not set 906# CONFIG_MFD_WM8400 is not set
907# CONFIG_MFD_WM831X is not set
900# CONFIG_MFD_WM8350_I2C is not set 908# CONFIG_MFD_WM8350_I2C is not set
901# CONFIG_MFD_PCF50633 is not set 909# CONFIG_MFD_PCF50633 is not set
910# CONFIG_MFD_MC13783 is not set
902# CONFIG_AB3100_CORE is not set 911# CONFIG_AB3100_CORE is not set
903# CONFIG_EZX_PCAP is not set 912# CONFIG_EZX_PCAP is not set
904# CONFIG_REGULATOR is not set 913# CONFIG_REGULATOR is not set
@@ -908,6 +917,7 @@ CONFIG_SSB_POSSIBLE=y
908# Graphics support 917# Graphics support
909# 918#
910# CONFIG_AGP is not set 919# CONFIG_AGP is not set
920CONFIG_VGA_ARB=y
911# CONFIG_DRM is not set 921# CONFIG_DRM is not set
912# CONFIG_VGASTATE is not set 922# CONFIG_VGASTATE is not set
913# CONFIG_VIDEO_OUTPUT_CONTROL is not set 923# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -992,7 +1002,6 @@ CONFIG_LOGO_LINUX_CLUT224=y
992# CONFIG_SOUND is not set 1002# CONFIG_SOUND is not set
993CONFIG_HID_SUPPORT=y 1003CONFIG_HID_SUPPORT=y
994CONFIG_HID=y 1004CONFIG_HID=y
995# CONFIG_HID_DEBUG is not set
996# CONFIG_HIDRAW is not set 1005# CONFIG_HIDRAW is not set
997# CONFIG_HID_PID is not set 1006# CONFIG_HID_PID is not set
998 1007
@@ -1038,6 +1047,7 @@ CONFIG_FS_MBCACHE=y
1038# CONFIG_GFS2_FS is not set 1047# CONFIG_GFS2_FS is not set
1039# CONFIG_OCFS2_FS is not set 1048# CONFIG_OCFS2_FS is not set
1040# CONFIG_BTRFS_FS is not set 1049# CONFIG_BTRFS_FS is not set
1050# CONFIG_NILFS2_FS is not set
1041CONFIG_FILE_LOCKING=y 1051CONFIG_FILE_LOCKING=y
1042CONFIG_FSNOTIFY=y 1052CONFIG_FSNOTIFY=y
1043CONFIG_DNOTIFY=y 1053CONFIG_DNOTIFY=y
@@ -1107,7 +1117,6 @@ CONFIG_JFFS2_RTIME=y
1107# CONFIG_ROMFS_FS is not set 1117# CONFIG_ROMFS_FS is not set
1108# CONFIG_SYSV_FS is not set 1118# CONFIG_SYSV_FS is not set
1109# CONFIG_UFS_FS is not set 1119# CONFIG_UFS_FS is not set
1110# CONFIG_NILFS2_FS is not set
1111CONFIG_NETWORK_FILESYSTEMS=y 1120CONFIG_NETWORK_FILESYSTEMS=y
1112CONFIG_NFS_FS=y 1121CONFIG_NFS_FS=y
1113CONFIG_NFS_V3=y 1122CONFIG_NFS_V3=y
@@ -1183,6 +1192,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1183CONFIG_ENABLE_MUST_CHECK=y 1192CONFIG_ENABLE_MUST_CHECK=y
1184CONFIG_FRAME_WARN=1024 1193CONFIG_FRAME_WARN=1024
1185# CONFIG_MAGIC_SYSRQ is not set 1194# CONFIG_MAGIC_SYSRQ is not set
1195# CONFIG_STRIP_ASM_SYMS is not set
1186# CONFIG_UNUSED_SYMBOLS is not set 1196# CONFIG_UNUSED_SYMBOLS is not set
1187# CONFIG_DEBUG_FS is not set 1197# CONFIG_DEBUG_FS is not set
1188# CONFIG_HEADERS_CHECK is not set 1198# CONFIG_HEADERS_CHECK is not set
@@ -1200,6 +1210,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1200CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1210CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1201CONFIG_TRACING_SUPPORT=y 1211CONFIG_TRACING_SUPPORT=y
1202# CONFIG_FTRACE is not set 1212# CONFIG_FTRACE is not set
1213# CONFIG_DMA_API_DEBUG is not set
1203# CONFIG_SAMPLES is not set 1214# CONFIG_SAMPLES is not set
1204CONFIG_HAVE_ARCH_KGDB=y 1215CONFIG_HAVE_ARCH_KGDB=y
1205# CONFIG_PPC_DISABLE_WERROR is not set 1216# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1232,7 +1243,6 @@ CONFIG_CRYPTO=y
1232# 1243#
1233# Crypto core or helper 1244# Crypto core or helper
1234# 1245#
1235# CONFIG_CRYPTO_FIPS is not set
1236CONFIG_CRYPTO_ALGAPI=y 1246CONFIG_CRYPTO_ALGAPI=y
1237CONFIG_CRYPTO_ALGAPI2=y 1247CONFIG_CRYPTO_ALGAPI2=y
1238CONFIG_CRYPTO_AEAD2=y 1248CONFIG_CRYPTO_AEAD2=y
@@ -1274,11 +1284,13 @@ CONFIG_CRYPTO_CBC=y
1274# 1284#
1275# CONFIG_CRYPTO_HMAC is not set 1285# CONFIG_CRYPTO_HMAC is not set
1276# CONFIG_CRYPTO_XCBC is not set 1286# CONFIG_CRYPTO_XCBC is not set
1287# CONFIG_CRYPTO_VMAC is not set
1277 1288
1278# 1289#
1279# Digest 1290# Digest
1280# 1291#
1281# CONFIG_CRYPTO_CRC32C is not set 1292# CONFIG_CRYPTO_CRC32C is not set
1293# CONFIG_CRYPTO_GHASH is not set
1282# CONFIG_CRYPTO_MD4 is not set 1294# CONFIG_CRYPTO_MD4 is not set
1283CONFIG_CRYPTO_MD5=y 1295CONFIG_CRYPTO_MD5=y
1284# CONFIG_CRYPTO_MICHAEL_MIC is not set 1296# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/83xx/mpc837x_mds_defconfig b/arch/powerpc/configs/83xx/mpc837x_mds_defconfig
index e285ec0fe958..730061574f96 100644
--- a/arch/powerpc/configs/83xx/mpc837x_mds_defconfig
+++ b/arch/powerpc/configs/83xx/mpc837x_mds_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:11 2009 4# Thu Nov 5 08:20:29 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -35,6 +35,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y 35CONFIG_GENERIC_HARDIRQS=y
36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +85,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 85#
85# RCU Subsystem 86# RCU Subsystem
86# 87#
87CONFIG_CLASSIC_RCU=y 88CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 90# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 93# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 94# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 95CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 96CONFIG_GROUP_SCHED=y
@@ -125,21 +127,20 @@ CONFIG_TIMERFD=y
125CONFIG_EVENTFD=y 127CONFIG_EVENTFD=y
126CONFIG_SHMEM=y 128CONFIG_SHMEM=y
127CONFIG_AIO=y 129CONFIG_AIO=y
128CONFIG_HAVE_PERF_COUNTERS=y 130CONFIG_HAVE_PERF_EVENTS=y
129 131
130# 132#
131# Performance Counters 133# Kernel Performance Events And Counters
132# 134#
135# CONFIG_PERF_EVENTS is not set
133# CONFIG_PERF_COUNTERS is not set 136# CONFIG_PERF_COUNTERS is not set
134CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
135CONFIG_PCI_QUIRKS=y 138CONFIG_PCI_QUIRKS=y
136# CONFIG_STRIP_ASM_SYMS is not set
137CONFIG_COMPAT_BRK=y 139CONFIG_COMPAT_BRK=y
138CONFIG_SLAB=y 140CONFIG_SLAB=y
139# CONFIG_SLUB is not set 141# CONFIG_SLUB is not set
140# CONFIG_SLOB is not set 142# CONFIG_SLOB is not set
141# CONFIG_PROFILING is not set 143# CONFIG_PROFILING is not set
142# CONFIG_MARKERS is not set
143CONFIG_HAVE_OPROFILE=y 144CONFIG_HAVE_OPROFILE=y
144# CONFIG_KPROBES is not set 145# CONFIG_KPROBES is not set
145CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 146CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -147,6 +148,8 @@ CONFIG_HAVE_IOREMAP_PROT=y
147CONFIG_HAVE_KPROBES=y 148CONFIG_HAVE_KPROBES=y
148CONFIG_HAVE_KRETPROBES=y 149CONFIG_HAVE_KRETPROBES=y
149CONFIG_HAVE_ARCH_TRACEHOOK=y 150CONFIG_HAVE_ARCH_TRACEHOOK=y
151CONFIG_HAVE_DMA_ATTRS=y
152CONFIG_HAVE_DMA_API_DEBUG=y
150 153
151# 154#
152# GCOV-based kernel profiling 155# GCOV-based kernel profiling
@@ -256,6 +259,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
256CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
257# CONFIG_KEXEC is not set 260# CONFIG_KEXEC is not set
258# CONFIG_CRASH_DUMP is not set 261# CONFIG_CRASH_DUMP is not set
262CONFIG_MAX_ACTIVE_REGIONS=32
259CONFIG_ARCH_FLATMEM_ENABLE=y 263CONFIG_ARCH_FLATMEM_ENABLE=y
260CONFIG_ARCH_POPULATES_NODE_MAP=y 264CONFIG_ARCH_POPULATES_NODE_MAP=y
261CONFIG_SELECT_MEMORY_MODEL=y 265CONFIG_SELECT_MEMORY_MODEL=y
@@ -273,6 +277,7 @@ CONFIG_BOUNCE=y
273CONFIG_VIRT_TO_BUS=y 277CONFIG_VIRT_TO_BUS=y
274CONFIG_HAVE_MLOCK=y 278CONFIG_HAVE_MLOCK=y
275CONFIG_HAVE_MLOCKED_PAGE_BIT=y 279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set
276CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
277CONFIG_PPC_4K_PAGES=y 282CONFIG_PPC_4K_PAGES=y
278# CONFIG_PPC_16K_PAGES is not set 283# CONFIG_PPC_16K_PAGES is not set
@@ -368,6 +373,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
368# CONFIG_NETFILTER is not set 373# CONFIG_NETFILTER is not set
369# CONFIG_IP_DCCP is not set 374# CONFIG_IP_DCCP is not set
370# CONFIG_IP_SCTP is not set 375# CONFIG_IP_SCTP is not set
376# CONFIG_RDS is not set
371# CONFIG_TIPC is not set 377# CONFIG_TIPC is not set
372# CONFIG_ATM is not set 378# CONFIG_ATM is not set
373# CONFIG_BRIDGE is not set 379# CONFIG_BRIDGE is not set
@@ -397,6 +403,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
397# CONFIG_AF_RXRPC is not set 403# CONFIG_AF_RXRPC is not set
398CONFIG_WIRELESS=y 404CONFIG_WIRELESS=y
399# CONFIG_CFG80211 is not set 405# CONFIG_CFG80211 is not set
406CONFIG_CFG80211_DEFAULT_PS_VALUE=0
400CONFIG_WIRELESS_OLD_REGULATORY=y 407CONFIG_WIRELESS_OLD_REGULATORY=y
401# CONFIG_WIRELESS_EXT is not set 408# CONFIG_WIRELESS_EXT is not set
402# CONFIG_LIB80211 is not set 409# CONFIG_LIB80211 is not set
@@ -404,7 +411,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
404# 411#
405# CFG80211 needs to be enabled for MAC80211 412# CFG80211 needs to be enabled for MAC80211
406# 413#
407CONFIG_MAC80211_DEFAULT_PS_VALUE=0
408# CONFIG_WIMAX is not set 414# CONFIG_WIMAX is not set
409# CONFIG_RFKILL is not set 415# CONFIG_RFKILL is not set
410# CONFIG_NET_9P is not set 416# CONFIG_NET_9P is not set
@@ -417,6 +423,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
417# Generic Driver Options 423# Generic Driver Options
418# 424#
419CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 425CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
426# CONFIG_DEVTMPFS is not set
420CONFIG_STANDALONE=y 427CONFIG_STANDALONE=y
421CONFIG_PREVENT_FIRMWARE_BUILD=y 428CONFIG_PREVENT_FIRMWARE_BUILD=y
422# CONFIG_FW_LOADER is not set 429# CONFIG_FW_LOADER is not set
@@ -503,6 +510,7 @@ CONFIG_SCSI_LOWLEVEL=y
503# CONFIG_ISCSI_TCP is not set 510# CONFIG_ISCSI_TCP is not set
504# CONFIG_SCSI_CXGB3_ISCSI is not set 511# CONFIG_SCSI_CXGB3_ISCSI is not set
505# CONFIG_SCSI_BNX2_ISCSI is not set 512# CONFIG_SCSI_BNX2_ISCSI is not set
513# CONFIG_BE2ISCSI is not set
506# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 514# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
507# CONFIG_SCSI_3W_9XXX is not set 515# CONFIG_SCSI_3W_9XXX is not set
508# CONFIG_SCSI_ACARD is not set 516# CONFIG_SCSI_ACARD is not set
@@ -542,11 +550,14 @@ CONFIG_SCSI_LOWLEVEL=y
542# CONFIG_SCSI_DC390T is not set 550# CONFIG_SCSI_DC390T is not set
543# CONFIG_SCSI_NSP32 is not set 551# CONFIG_SCSI_NSP32 is not set
544# CONFIG_SCSI_DEBUG is not set 552# CONFIG_SCSI_DEBUG is not set
553# CONFIG_SCSI_PMCRAID is not set
545# CONFIG_SCSI_SRP is not set 554# CONFIG_SCSI_SRP is not set
555# CONFIG_SCSI_BFA_FC is not set
546# CONFIG_SCSI_DH is not set 556# CONFIG_SCSI_DH is not set
547# CONFIG_SCSI_OSD_INITIATOR is not set 557# CONFIG_SCSI_OSD_INITIATOR is not set
548CONFIG_ATA=y 558CONFIG_ATA=y
549# CONFIG_ATA_NONSTANDARD is not set 559# CONFIG_ATA_NONSTANDARD is not set
560CONFIG_ATA_VERBOSE_ERROR=y
550CONFIG_SATA_PMP=y 561CONFIG_SATA_PMP=y
551# CONFIG_SATA_AHCI is not set 562# CONFIG_SATA_AHCI is not set
552# CONFIG_SATA_SIL24 is not set 563# CONFIG_SATA_SIL24 is not set
@@ -569,6 +580,7 @@ CONFIG_ATA_SFF=y
569# CONFIG_PATA_ALI is not set 580# CONFIG_PATA_ALI is not set
570# CONFIG_PATA_AMD is not set 581# CONFIG_PATA_AMD is not set
571# CONFIG_PATA_ARTOP is not set 582# CONFIG_PATA_ARTOP is not set
583# CONFIG_PATA_ATP867X is not set
572# CONFIG_PATA_ATIIXP is not set 584# CONFIG_PATA_ATIIXP is not set
573# CONFIG_PATA_CMD640_PCI is not set 585# CONFIG_PATA_CMD640_PCI is not set
574# CONFIG_PATA_CMD64X is not set 586# CONFIG_PATA_CMD64X is not set
@@ -596,6 +608,7 @@ CONFIG_ATA_SFF=y
596# CONFIG_PATA_OPTIDMA is not set 608# CONFIG_PATA_OPTIDMA is not set
597# CONFIG_PATA_PDC_OLD is not set 609# CONFIG_PATA_PDC_OLD is not set
598# CONFIG_PATA_RADISYS is not set 610# CONFIG_PATA_RADISYS is not set
611# CONFIG_PATA_RDC is not set
599# CONFIG_PATA_RZ1000 is not set 612# CONFIG_PATA_RZ1000 is not set
600# CONFIG_PATA_SC1200 is not set 613# CONFIG_PATA_SC1200 is not set
601# CONFIG_PATA_SERVERWORKS is not set 614# CONFIG_PATA_SERVERWORKS is not set
@@ -672,7 +685,9 @@ CONFIG_MII=y
672# CONFIG_NET_PCI is not set 685# CONFIG_NET_PCI is not set
673# CONFIG_B44 is not set 686# CONFIG_B44 is not set
674# CONFIG_KS8842 is not set 687# CONFIG_KS8842 is not set
688# CONFIG_KS8851_MLL is not set
675# CONFIG_ATL2 is not set 689# CONFIG_ATL2 is not set
690# CONFIG_XILINX_EMACLITE is not set
676CONFIG_NETDEV_1000=y 691CONFIG_NETDEV_1000=y
677# CONFIG_ACENIC is not set 692# CONFIG_ACENIC is not set
678# CONFIG_DL2K is not set 693# CONFIG_DL2K is not set
@@ -720,10 +735,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
720# CONFIG_SFC is not set 735# CONFIG_SFC is not set
721# CONFIG_BE2NET is not set 736# CONFIG_BE2NET is not set
722# CONFIG_TR is not set 737# CONFIG_TR is not set
723 738CONFIG_WLAN=y
724#
725# Wireless LAN
726#
727# CONFIG_WLAN_PRE80211 is not set 739# CONFIG_WLAN_PRE80211 is not set
728# CONFIG_WLAN_80211 is not set 740# CONFIG_WLAN_80211 is not set
729 741
@@ -816,6 +828,7 @@ CONFIG_GEN_RTC=y
816CONFIG_DEVPORT=y 828CONFIG_DEVPORT=y
817CONFIG_I2C=y 829CONFIG_I2C=y
818CONFIG_I2C_BOARDINFO=y 830CONFIG_I2C_BOARDINFO=y
831CONFIG_I2C_COMPAT=y
819CONFIG_I2C_CHARDEV=y 832CONFIG_I2C_CHARDEV=y
820CONFIG_I2C_HELPER_AUTO=y 833CONFIG_I2C_HELPER_AUTO=y
821 834
@@ -869,9 +882,6 @@ CONFIG_I2C_MPC=y
869# Miscellaneous I2C Chip support 882# Miscellaneous I2C Chip support
870# 883#
871# CONFIG_DS1682 is not set 884# CONFIG_DS1682 is not set
872# CONFIG_SENSORS_PCF8574 is not set
873# CONFIG_PCF8575 is not set
874# CONFIG_SENSORS_PCA9539 is not set
875# CONFIG_SENSORS_TSL2550 is not set 885# CONFIG_SENSORS_TSL2550 is not set
876# CONFIG_I2C_DEBUG_CORE is not set 886# CONFIG_I2C_DEBUG_CORE is not set
877# CONFIG_I2C_DEBUG_ALGO is not set 887# CONFIG_I2C_DEBUG_ALGO is not set
@@ -889,6 +899,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
889# CONFIG_POWER_SUPPLY is not set 899# CONFIG_POWER_SUPPLY is not set
890CONFIG_HWMON=y 900CONFIG_HWMON=y
891# CONFIG_HWMON_VID is not set 901# CONFIG_HWMON_VID is not set
902# CONFIG_HWMON_DEBUG_CHIP is not set
903
904#
905# Native drivers
906#
892# CONFIG_SENSORS_AD7414 is not set 907# CONFIG_SENSORS_AD7414 is not set
893# CONFIG_SENSORS_AD7418 is not set 908# CONFIG_SENSORS_AD7418 is not set
894# CONFIG_SENSORS_ADM1021 is not set 909# CONFIG_SENSORS_ADM1021 is not set
@@ -938,6 +953,7 @@ CONFIG_HWMON=y
938# CONFIG_SENSORS_ADS7828 is not set 953# CONFIG_SENSORS_ADS7828 is not set
939# CONFIG_SENSORS_THMC50 is not set 954# CONFIG_SENSORS_THMC50 is not set
940# CONFIG_SENSORS_TMP401 is not set 955# CONFIG_SENSORS_TMP401 is not set
956# CONFIG_SENSORS_TMP421 is not set
941# CONFIG_SENSORS_VIA686A is not set 957# CONFIG_SENSORS_VIA686A is not set
942# CONFIG_SENSORS_VT1211 is not set 958# CONFIG_SENSORS_VT1211 is not set
943# CONFIG_SENSORS_VT8231 is not set 959# CONFIG_SENSORS_VT8231 is not set
@@ -949,9 +965,7 @@ CONFIG_HWMON=y
949# CONFIG_SENSORS_W83L786NG is not set 965# CONFIG_SENSORS_W83L786NG is not set
950# CONFIG_SENSORS_W83627HF is not set 966# CONFIG_SENSORS_W83627HF is not set
951# CONFIG_SENSORS_W83627EHF is not set 967# CONFIG_SENSORS_W83627EHF is not set
952# CONFIG_HWMON_DEBUG_CHIP is not set
953# CONFIG_THERMAL is not set 968# CONFIG_THERMAL is not set
954# CONFIG_THERMAL_HWMON is not set
955CONFIG_WATCHDOG=y 969CONFIG_WATCHDOG=y
956# CONFIG_WATCHDOG_NOWAYOUT is not set 970# CONFIG_WATCHDOG_NOWAYOUT is not set
957 971
@@ -984,6 +998,7 @@ CONFIG_SSB_POSSIBLE=y
984# CONFIG_MFD_TMIO is not set 998# CONFIG_MFD_TMIO is not set
985# CONFIG_PMIC_DA903X is not set 999# CONFIG_PMIC_DA903X is not set
986# CONFIG_MFD_WM8400 is not set 1000# CONFIG_MFD_WM8400 is not set
1001# CONFIG_MFD_WM831X is not set
987# CONFIG_MFD_WM8350_I2C is not set 1002# CONFIG_MFD_WM8350_I2C is not set
988# CONFIG_MFD_PCF50633 is not set 1003# CONFIG_MFD_PCF50633 is not set
989# CONFIG_AB3100_CORE is not set 1004# CONFIG_AB3100_CORE is not set
@@ -994,6 +1009,7 @@ CONFIG_SSB_POSSIBLE=y
994# Graphics support 1009# Graphics support
995# 1010#
996# CONFIG_AGP is not set 1011# CONFIG_AGP is not set
1012CONFIG_VGA_ARB=y
997# CONFIG_DRM is not set 1013# CONFIG_DRM is not set
998# CONFIG_VGASTATE is not set 1014# CONFIG_VGASTATE is not set
999CONFIG_VIDEO_OUTPUT_CONTROL=m 1015CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -1007,7 +1023,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
1007# CONFIG_SOUND is not set 1023# CONFIG_SOUND is not set
1008CONFIG_HID_SUPPORT=y 1024CONFIG_HID_SUPPORT=y
1009CONFIG_HID=y 1025CONFIG_HID=y
1010# CONFIG_HID_DEBUG is not set
1011# CONFIG_HIDRAW is not set 1026# CONFIG_HIDRAW is not set
1012# CONFIG_HID_PID is not set 1027# CONFIG_HID_PID is not set
1013 1028
@@ -1072,6 +1087,7 @@ CONFIG_FS_MBCACHE=y
1072# CONFIG_GFS2_FS is not set 1087# CONFIG_GFS2_FS is not set
1073# CONFIG_OCFS2_FS is not set 1088# CONFIG_OCFS2_FS is not set
1074# CONFIG_BTRFS_FS is not set 1089# CONFIG_BTRFS_FS is not set
1090# CONFIG_NILFS2_FS is not set
1075CONFIG_FILE_LOCKING=y 1091CONFIG_FILE_LOCKING=y
1076CONFIG_FSNOTIFY=y 1092CONFIG_FSNOTIFY=y
1077CONFIG_DNOTIFY=y 1093CONFIG_DNOTIFY=y
@@ -1130,7 +1146,6 @@ CONFIG_MISC_FILESYSTEMS=y
1130# CONFIG_ROMFS_FS is not set 1146# CONFIG_ROMFS_FS is not set
1131# CONFIG_SYSV_FS is not set 1147# CONFIG_SYSV_FS is not set
1132# CONFIG_UFS_FS is not set 1148# CONFIG_UFS_FS is not set
1133# CONFIG_NILFS2_FS is not set
1134CONFIG_NETWORK_FILESYSTEMS=y 1149CONFIG_NETWORK_FILESYSTEMS=y
1135CONFIG_NFS_FS=y 1150CONFIG_NFS_FS=y
1136CONFIG_NFS_V3=y 1151CONFIG_NFS_V3=y
@@ -1206,6 +1221,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1206CONFIG_ENABLE_MUST_CHECK=y 1221CONFIG_ENABLE_MUST_CHECK=y
1207CONFIG_FRAME_WARN=1024 1222CONFIG_FRAME_WARN=1024
1208# CONFIG_MAGIC_SYSRQ is not set 1223# CONFIG_MAGIC_SYSRQ is not set
1224# CONFIG_STRIP_ASM_SYMS is not set
1209# CONFIG_UNUSED_SYMBOLS is not set 1225# CONFIG_UNUSED_SYMBOLS is not set
1210# CONFIG_DEBUG_FS is not set 1226# CONFIG_DEBUG_FS is not set
1211# CONFIG_HEADERS_CHECK is not set 1227# CONFIG_HEADERS_CHECK is not set
@@ -1221,6 +1237,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1221CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1237CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1222CONFIG_TRACING_SUPPORT=y 1238CONFIG_TRACING_SUPPORT=y
1223# CONFIG_FTRACE is not set 1239# CONFIG_FTRACE is not set
1240# CONFIG_DMA_API_DEBUG is not set
1224# CONFIG_SAMPLES is not set 1241# CONFIG_SAMPLES is not set
1225CONFIG_HAVE_ARCH_KGDB=y 1242CONFIG_HAVE_ARCH_KGDB=y
1226# CONFIG_PPC_DISABLE_WERROR is not set 1243# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1242,7 +1259,6 @@ CONFIG_CRYPTO=y
1242# 1259#
1243# Crypto core or helper 1260# Crypto core or helper
1244# 1261#
1245# CONFIG_CRYPTO_FIPS is not set
1246CONFIG_CRYPTO_ALGAPI=y 1262CONFIG_CRYPTO_ALGAPI=y
1247CONFIG_CRYPTO_ALGAPI2=y 1263CONFIG_CRYPTO_ALGAPI2=y
1248CONFIG_CRYPTO_AEAD2=y 1264CONFIG_CRYPTO_AEAD2=y
@@ -1284,11 +1300,13 @@ CONFIG_CRYPTO_PCBC=m
1284# 1300#
1285# CONFIG_CRYPTO_HMAC is not set 1301# CONFIG_CRYPTO_HMAC is not set
1286# CONFIG_CRYPTO_XCBC is not set 1302# CONFIG_CRYPTO_XCBC is not set
1303# CONFIG_CRYPTO_VMAC is not set
1287 1304
1288# 1305#
1289# Digest 1306# Digest
1290# 1307#
1291# CONFIG_CRYPTO_CRC32C is not set 1308# CONFIG_CRYPTO_CRC32C is not set
1309# CONFIG_CRYPTO_GHASH is not set
1292# CONFIG_CRYPTO_MD4 is not set 1310# CONFIG_CRYPTO_MD4 is not set
1293CONFIG_CRYPTO_MD5=y 1311CONFIG_CRYPTO_MD5=y
1294# CONFIG_CRYPTO_MICHAEL_MIC is not set 1312# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig b/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig
index 1ab3e4cd3018..9e9158a5b190 100644
--- a/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig
+++ b/arch/powerpc/configs/83xx/mpc837x_rdb_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:13 2009 4# Thu Nov 5 08:20:30 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -35,6 +35,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y 35CONFIG_GENERIC_HARDIRQS=y
36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +85,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 85#
85# RCU Subsystem 86# RCU Subsystem
86# 87#
87CONFIG_CLASSIC_RCU=y 88CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 90# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 93# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 94# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 95CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 96CONFIG_GROUP_SCHED=y
@@ -125,21 +127,20 @@ CONFIG_TIMERFD=y
125CONFIG_EVENTFD=y 127CONFIG_EVENTFD=y
126CONFIG_SHMEM=y 128CONFIG_SHMEM=y
127CONFIG_AIO=y 129CONFIG_AIO=y
128CONFIG_HAVE_PERF_COUNTERS=y 130CONFIG_HAVE_PERF_EVENTS=y
129 131
130# 132#
131# Performance Counters 133# Kernel Performance Events And Counters
132# 134#
135# CONFIG_PERF_EVENTS is not set
133# CONFIG_PERF_COUNTERS is not set 136# CONFIG_PERF_COUNTERS is not set
134CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
135CONFIG_PCI_QUIRKS=y 138CONFIG_PCI_QUIRKS=y
136# CONFIG_STRIP_ASM_SYMS is not set
137CONFIG_COMPAT_BRK=y 139CONFIG_COMPAT_BRK=y
138CONFIG_SLAB=y 140CONFIG_SLAB=y
139# CONFIG_SLUB is not set 141# CONFIG_SLUB is not set
140# CONFIG_SLOB is not set 142# CONFIG_SLOB is not set
141# CONFIG_PROFILING is not set 143# CONFIG_PROFILING is not set
142# CONFIG_MARKERS is not set
143CONFIG_HAVE_OPROFILE=y 144CONFIG_HAVE_OPROFILE=y
144# CONFIG_KPROBES is not set 145# CONFIG_KPROBES is not set
145CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 146CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -147,6 +148,8 @@ CONFIG_HAVE_IOREMAP_PROT=y
147CONFIG_HAVE_KPROBES=y 148CONFIG_HAVE_KPROBES=y
148CONFIG_HAVE_KRETPROBES=y 149CONFIG_HAVE_KRETPROBES=y
149CONFIG_HAVE_ARCH_TRACEHOOK=y 150CONFIG_HAVE_ARCH_TRACEHOOK=y
151CONFIG_HAVE_DMA_ATTRS=y
152CONFIG_HAVE_DMA_API_DEBUG=y
150 153
151# 154#
152# GCOV-based kernel profiling 155# GCOV-based kernel profiling
@@ -256,6 +259,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
256CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
257# CONFIG_KEXEC is not set 260# CONFIG_KEXEC is not set
258# CONFIG_CRASH_DUMP is not set 261# CONFIG_CRASH_DUMP is not set
262CONFIG_MAX_ACTIVE_REGIONS=32
259CONFIG_ARCH_FLATMEM_ENABLE=y 263CONFIG_ARCH_FLATMEM_ENABLE=y
260CONFIG_ARCH_POPULATES_NODE_MAP=y 264CONFIG_ARCH_POPULATES_NODE_MAP=y
261CONFIG_SELECT_MEMORY_MODEL=y 265CONFIG_SELECT_MEMORY_MODEL=y
@@ -273,6 +277,7 @@ CONFIG_BOUNCE=y
273CONFIG_VIRT_TO_BUS=y 277CONFIG_VIRT_TO_BUS=y
274CONFIG_HAVE_MLOCK=y 278CONFIG_HAVE_MLOCK=y
275CONFIG_HAVE_MLOCKED_PAGE_BIT=y 279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set
276CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
277CONFIG_PPC_4K_PAGES=y 282CONFIG_PPC_4K_PAGES=y
278# CONFIG_PPC_16K_PAGES is not set 283# CONFIG_PPC_16K_PAGES is not set
@@ -363,6 +368,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
363# CONFIG_NETFILTER is not set 368# CONFIG_NETFILTER is not set
364# CONFIG_IP_DCCP is not set 369# CONFIG_IP_DCCP is not set
365# CONFIG_IP_SCTP is not set 370# CONFIG_IP_SCTP is not set
371# CONFIG_RDS is not set
366# CONFIG_TIPC is not set 372# CONFIG_TIPC is not set
367# CONFIG_ATM is not set 373# CONFIG_ATM is not set
368# CONFIG_BRIDGE is not set 374# CONFIG_BRIDGE is not set
@@ -392,6 +398,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
392# CONFIG_AF_RXRPC is not set 398# CONFIG_AF_RXRPC is not set
393CONFIG_WIRELESS=y 399CONFIG_WIRELESS=y
394# CONFIG_CFG80211 is not set 400# CONFIG_CFG80211 is not set
401CONFIG_CFG80211_DEFAULT_PS_VALUE=0
395CONFIG_WIRELESS_OLD_REGULATORY=y 402CONFIG_WIRELESS_OLD_REGULATORY=y
396# CONFIG_WIRELESS_EXT is not set 403# CONFIG_WIRELESS_EXT is not set
397# CONFIG_LIB80211 is not set 404# CONFIG_LIB80211 is not set
@@ -399,7 +406,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
399# 406#
400# CFG80211 needs to be enabled for MAC80211 407# CFG80211 needs to be enabled for MAC80211
401# 408#
402CONFIG_MAC80211_DEFAULT_PS_VALUE=0
403# CONFIG_WIMAX is not set 409# CONFIG_WIMAX is not set
404# CONFIG_RFKILL is not set 410# CONFIG_RFKILL is not set
405# CONFIG_NET_9P is not set 411# CONFIG_NET_9P is not set
@@ -412,6 +418,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
412# Generic Driver Options 418# Generic Driver Options
413# 419#
414CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 420CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
421# CONFIG_DEVTMPFS is not set
415CONFIG_STANDALONE=y 422CONFIG_STANDALONE=y
416CONFIG_PREVENT_FIRMWARE_BUILD=y 423CONFIG_PREVENT_FIRMWARE_BUILD=y
417# CONFIG_FW_LOADER is not set 424# CONFIG_FW_LOADER is not set
@@ -498,6 +505,7 @@ CONFIG_SCSI_WAIT_SCAN=m
498CONFIG_SCSI_LOWLEVEL=y 505CONFIG_SCSI_LOWLEVEL=y
499# CONFIG_ISCSI_TCP is not set 506# CONFIG_ISCSI_TCP is not set
500# CONFIG_SCSI_BNX2_ISCSI is not set 507# CONFIG_SCSI_BNX2_ISCSI is not set
508# CONFIG_BE2ISCSI is not set
501# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 509# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
502# CONFIG_SCSI_3W_9XXX is not set 510# CONFIG_SCSI_3W_9XXX is not set
503# CONFIG_SCSI_ACARD is not set 511# CONFIG_SCSI_ACARD is not set
@@ -537,11 +545,14 @@ CONFIG_SCSI_LOWLEVEL=y
537# CONFIG_SCSI_DC390T is not set 545# CONFIG_SCSI_DC390T is not set
538# CONFIG_SCSI_NSP32 is not set 546# CONFIG_SCSI_NSP32 is not set
539# CONFIG_SCSI_DEBUG is not set 547# CONFIG_SCSI_DEBUG is not set
548# CONFIG_SCSI_PMCRAID is not set
540# CONFIG_SCSI_SRP is not set 549# CONFIG_SCSI_SRP is not set
550# CONFIG_SCSI_BFA_FC is not set
541# CONFIG_SCSI_DH is not set 551# CONFIG_SCSI_DH is not set
542# CONFIG_SCSI_OSD_INITIATOR is not set 552# CONFIG_SCSI_OSD_INITIATOR is not set
543CONFIG_ATA=y 553CONFIG_ATA=y
544# CONFIG_ATA_NONSTANDARD is not set 554# CONFIG_ATA_NONSTANDARD is not set
555CONFIG_ATA_VERBOSE_ERROR=y
545CONFIG_SATA_PMP=y 556CONFIG_SATA_PMP=y
546# CONFIG_SATA_AHCI is not set 557# CONFIG_SATA_AHCI is not set
547# CONFIG_SATA_SIL24 is not set 558# CONFIG_SATA_SIL24 is not set
@@ -564,6 +575,7 @@ CONFIG_ATA_SFF=y
564# CONFIG_PATA_ALI is not set 575# CONFIG_PATA_ALI is not set
565# CONFIG_PATA_AMD is not set 576# CONFIG_PATA_AMD is not set
566# CONFIG_PATA_ARTOP is not set 577# CONFIG_PATA_ARTOP is not set
578# CONFIG_PATA_ATP867X is not set
567# CONFIG_PATA_ATIIXP is not set 579# CONFIG_PATA_ATIIXP is not set
568# CONFIG_PATA_CMD640_PCI is not set 580# CONFIG_PATA_CMD640_PCI is not set
569# CONFIG_PATA_CMD64X is not set 581# CONFIG_PATA_CMD64X is not set
@@ -591,6 +603,7 @@ CONFIG_ATA_SFF=y
591# CONFIG_PATA_OPTIDMA is not set 603# CONFIG_PATA_OPTIDMA is not set
592# CONFIG_PATA_PDC_OLD is not set 604# CONFIG_PATA_PDC_OLD is not set
593# CONFIG_PATA_RADISYS is not set 605# CONFIG_PATA_RADISYS is not set
606# CONFIG_PATA_RDC is not set
594# CONFIG_PATA_RZ1000 is not set 607# CONFIG_PATA_RZ1000 is not set
595# CONFIG_PATA_SC1200 is not set 608# CONFIG_PATA_SC1200 is not set
596# CONFIG_PATA_SERVERWORKS is not set 609# CONFIG_PATA_SERVERWORKS is not set
@@ -610,6 +623,7 @@ CONFIG_MD_RAID1=y
610# CONFIG_MD_RAID10 is not set 623# CONFIG_MD_RAID10 is not set
611CONFIG_MD_RAID456=y 624CONFIG_MD_RAID456=y
612CONFIG_MD_RAID6_PQ=y 625CONFIG_MD_RAID6_PQ=y
626# CONFIG_ASYNC_RAID6_TEST is not set
613# CONFIG_MD_MULTIPATH is not set 627# CONFIG_MD_MULTIPATH is not set
614# CONFIG_MD_FAULTY is not set 628# CONFIG_MD_FAULTY is not set
615# CONFIG_BLK_DEV_DM is not set 629# CONFIG_BLK_DEV_DM is not set
@@ -678,7 +692,9 @@ CONFIG_MII=y
678# CONFIG_NET_PCI is not set 692# CONFIG_NET_PCI is not set
679# CONFIG_B44 is not set 693# CONFIG_B44 is not set
680# CONFIG_KS8842 is not set 694# CONFIG_KS8842 is not set
695# CONFIG_KS8851_MLL is not set
681# CONFIG_ATL2 is not set 696# CONFIG_ATL2 is not set
697# CONFIG_XILINX_EMACLITE is not set
682CONFIG_NETDEV_1000=y 698CONFIG_NETDEV_1000=y
683# CONFIG_ACENIC is not set 699# CONFIG_ACENIC is not set
684# CONFIG_DL2K is not set 700# CONFIG_DL2K is not set
@@ -708,10 +724,7 @@ CONFIG_GIANFAR=y
708# CONFIG_JME is not set 724# CONFIG_JME is not set
709# CONFIG_NETDEV_10000 is not set 725# CONFIG_NETDEV_10000 is not set
710# CONFIG_TR is not set 726# CONFIG_TR is not set
711 727CONFIG_WLAN=y
712#
713# Wireless LAN
714#
715# CONFIG_WLAN_PRE80211 is not set 728# CONFIG_WLAN_PRE80211 is not set
716# CONFIG_WLAN_80211 is not set 729# CONFIG_WLAN_80211 is not set
717 730
@@ -813,6 +826,7 @@ CONFIG_GEN_RTC=y
813CONFIG_DEVPORT=y 826CONFIG_DEVPORT=y
814CONFIG_I2C=y 827CONFIG_I2C=y
815CONFIG_I2C_BOARDINFO=y 828CONFIG_I2C_BOARDINFO=y
829CONFIG_I2C_COMPAT=y
816CONFIG_I2C_CHARDEV=y 830CONFIG_I2C_CHARDEV=y
817CONFIG_I2C_HELPER_AUTO=y 831CONFIG_I2C_HELPER_AUTO=y
818 832
@@ -867,9 +881,6 @@ CONFIG_I2C_MPC=y
867# Miscellaneous I2C Chip support 881# Miscellaneous I2C Chip support
868# 882#
869# CONFIG_DS1682 is not set 883# CONFIG_DS1682 is not set
870# CONFIG_SENSORS_PCF8574 is not set
871# CONFIG_PCF8575 is not set
872# CONFIG_SENSORS_PCA9539 is not set
873# CONFIG_SENSORS_TSL2550 is not set 884# CONFIG_SENSORS_TSL2550 is not set
874# CONFIG_I2C_DEBUG_CORE is not set 885# CONFIG_I2C_DEBUG_CORE is not set
875# CONFIG_I2C_DEBUG_ALGO is not set 886# CONFIG_I2C_DEBUG_ALGO is not set
@@ -887,6 +898,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
887# CONFIG_POWER_SUPPLY is not set 898# CONFIG_POWER_SUPPLY is not set
888CONFIG_HWMON=y 899CONFIG_HWMON=y
889# CONFIG_HWMON_VID is not set 900# CONFIG_HWMON_VID is not set
901# CONFIG_HWMON_DEBUG_CHIP is not set
902
903#
904# Native drivers
905#
890# CONFIG_SENSORS_AD7414 is not set 906# CONFIG_SENSORS_AD7414 is not set
891# CONFIG_SENSORS_AD7418 is not set 907# CONFIG_SENSORS_AD7418 is not set
892# CONFIG_SENSORS_ADM1021 is not set 908# CONFIG_SENSORS_ADM1021 is not set
@@ -936,6 +952,7 @@ CONFIG_HWMON=y
936# CONFIG_SENSORS_ADS7828 is not set 952# CONFIG_SENSORS_ADS7828 is not set
937# CONFIG_SENSORS_THMC50 is not set 953# CONFIG_SENSORS_THMC50 is not set
938# CONFIG_SENSORS_TMP401 is not set 954# CONFIG_SENSORS_TMP401 is not set
955# CONFIG_SENSORS_TMP421 is not set
939# CONFIG_SENSORS_VIA686A is not set 956# CONFIG_SENSORS_VIA686A is not set
940# CONFIG_SENSORS_VT1211 is not set 957# CONFIG_SENSORS_VT1211 is not set
941# CONFIG_SENSORS_VT8231 is not set 958# CONFIG_SENSORS_VT8231 is not set
@@ -947,9 +964,7 @@ CONFIG_HWMON=y
947# CONFIG_SENSORS_W83L786NG is not set 964# CONFIG_SENSORS_W83L786NG is not set
948# CONFIG_SENSORS_W83627HF is not set 965# CONFIG_SENSORS_W83627HF is not set
949# CONFIG_SENSORS_W83627EHF is not set 966# CONFIG_SENSORS_W83627EHF is not set
950# CONFIG_HWMON_DEBUG_CHIP is not set
951# CONFIG_THERMAL is not set 967# CONFIG_THERMAL is not set
952# CONFIG_THERMAL_HWMON is not set
953CONFIG_WATCHDOG=y 968CONFIG_WATCHDOG=y
954# CONFIG_WATCHDOG_NOWAYOUT is not set 969# CONFIG_WATCHDOG_NOWAYOUT is not set
955 970
@@ -987,6 +1002,7 @@ CONFIG_SSB_POSSIBLE=y
987# CONFIG_MFD_TMIO is not set 1002# CONFIG_MFD_TMIO is not set
988# CONFIG_PMIC_DA903X is not set 1003# CONFIG_PMIC_DA903X is not set
989# CONFIG_MFD_WM8400 is not set 1004# CONFIG_MFD_WM8400 is not set
1005# CONFIG_MFD_WM831X is not set
990# CONFIG_MFD_WM8350_I2C is not set 1006# CONFIG_MFD_WM8350_I2C is not set
991# CONFIG_MFD_PCF50633 is not set 1007# CONFIG_MFD_PCF50633 is not set
992# CONFIG_AB3100_CORE is not set 1008# CONFIG_AB3100_CORE is not set
@@ -997,6 +1013,7 @@ CONFIG_SSB_POSSIBLE=y
997# Graphics support 1013# Graphics support
998# 1014#
999# CONFIG_AGP is not set 1015# CONFIG_AGP is not set
1016CONFIG_VGA_ARB=y
1000# CONFIG_DRM is not set 1017# CONFIG_DRM is not set
1001# CONFIG_VGASTATE is not set 1018# CONFIG_VGASTATE is not set
1002CONFIG_VIDEO_OUTPUT_CONTROL=m 1019CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -1010,7 +1027,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
1010# CONFIG_SOUND is not set 1027# CONFIG_SOUND is not set
1011CONFIG_HID_SUPPORT=y 1028CONFIG_HID_SUPPORT=y
1012CONFIG_HID=y 1029CONFIG_HID=y
1013# CONFIG_HID_DEBUG is not set
1014# CONFIG_HIDRAW is not set 1030# CONFIG_HIDRAW is not set
1015 1031
1016# 1032#
@@ -1033,6 +1049,7 @@ CONFIG_HID_CYPRESS=y
1033CONFIG_HID_EZKEY=y 1049CONFIG_HID_EZKEY=y
1034# CONFIG_HID_KYE is not set 1050# CONFIG_HID_KYE is not set
1035CONFIG_HID_GYRATION=y 1051CONFIG_HID_GYRATION=y
1052# CONFIG_HID_TWINHAN is not set
1036# CONFIG_HID_KENSINGTON is not set 1053# CONFIG_HID_KENSINGTON is not set
1037CONFIG_HID_LOGITECH=y 1054CONFIG_HID_LOGITECH=y
1038# CONFIG_LOGITECH_FF is not set 1055# CONFIG_LOGITECH_FF is not set
@@ -1085,6 +1102,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1085# CONFIG_USB_OXU210HP_HCD is not set 1102# CONFIG_USB_OXU210HP_HCD is not set
1086# CONFIG_USB_ISP116X_HCD is not set 1103# CONFIG_USB_ISP116X_HCD is not set
1087# CONFIG_USB_ISP1760_HCD is not set 1104# CONFIG_USB_ISP1760_HCD is not set
1105# CONFIG_USB_ISP1362_HCD is not set
1088# CONFIG_USB_OHCI_HCD is not set 1106# CONFIG_USB_OHCI_HCD is not set
1089# CONFIG_USB_UHCI_HCD is not set 1107# CONFIG_USB_UHCI_HCD is not set
1090# CONFIG_USB_SL811_HCD is not set 1108# CONFIG_USB_SL811_HCD is not set
@@ -1142,6 +1160,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1142# CONFIG_USB_LD is not set 1160# CONFIG_USB_LD is not set
1143# CONFIG_USB_TRANCEVIBRATOR is not set 1161# CONFIG_USB_TRANCEVIBRATOR is not set
1144# CONFIG_USB_IOWARRIOR is not set 1162# CONFIG_USB_IOWARRIOR is not set
1163# CONFIG_USB_TEST is not set
1145# CONFIG_USB_ISIGHTFW is not set 1164# CONFIG_USB_ISIGHTFW is not set
1146# CONFIG_USB_VST is not set 1165# CONFIG_USB_VST is not set
1147# CONFIG_USB_GADGET is not set 1166# CONFIG_USB_GADGET is not set
@@ -1188,6 +1207,7 @@ CONFIG_FS_MBCACHE=y
1188# CONFIG_GFS2_FS is not set 1207# CONFIG_GFS2_FS is not set
1189# CONFIG_OCFS2_FS is not set 1208# CONFIG_OCFS2_FS is not set
1190# CONFIG_BTRFS_FS is not set 1209# CONFIG_BTRFS_FS is not set
1210# CONFIG_NILFS2_FS is not set
1191CONFIG_FILE_LOCKING=y 1211CONFIG_FILE_LOCKING=y
1192CONFIG_FSNOTIFY=y 1212CONFIG_FSNOTIFY=y
1193CONFIG_DNOTIFY=y 1213CONFIG_DNOTIFY=y
@@ -1246,7 +1266,6 @@ CONFIG_MISC_FILESYSTEMS=y
1246# CONFIG_ROMFS_FS is not set 1266# CONFIG_ROMFS_FS is not set
1247# CONFIG_SYSV_FS is not set 1267# CONFIG_SYSV_FS is not set
1248# CONFIG_UFS_FS is not set 1268# CONFIG_UFS_FS is not set
1249# CONFIG_NILFS2_FS is not set
1250CONFIG_NETWORK_FILESYSTEMS=y 1269CONFIG_NETWORK_FILESYSTEMS=y
1251CONFIG_NFS_FS=y 1270CONFIG_NFS_FS=y
1252CONFIG_NFS_V3=y 1271CONFIG_NFS_V3=y
@@ -1361,6 +1380,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1361# CONFIG_ENABLE_MUST_CHECK is not set 1380# CONFIG_ENABLE_MUST_CHECK is not set
1362CONFIG_FRAME_WARN=1024 1381CONFIG_FRAME_WARN=1024
1363# CONFIG_MAGIC_SYSRQ is not set 1382# CONFIG_MAGIC_SYSRQ is not set
1383# CONFIG_STRIP_ASM_SYMS is not set
1364# CONFIG_UNUSED_SYMBOLS is not set 1384# CONFIG_UNUSED_SYMBOLS is not set
1365# CONFIG_DEBUG_FS is not set 1385# CONFIG_DEBUG_FS is not set
1366# CONFIG_HEADERS_CHECK is not set 1386# CONFIG_HEADERS_CHECK is not set
@@ -1376,6 +1396,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1376CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1396CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1377CONFIG_TRACING_SUPPORT=y 1397CONFIG_TRACING_SUPPORT=y
1378# CONFIG_FTRACE is not set 1398# CONFIG_FTRACE is not set
1399# CONFIG_DMA_API_DEBUG is not set
1379# CONFIG_SAMPLES is not set 1400# CONFIG_SAMPLES is not set
1380CONFIG_HAVE_ARCH_KGDB=y 1401CONFIG_HAVE_ARCH_KGDB=y
1381# CONFIG_PPC_DISABLE_WERROR is not set 1402# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1396,12 +1417,13 @@ CONFIG_XOR_BLOCKS=y
1396CONFIG_ASYNC_CORE=y 1417CONFIG_ASYNC_CORE=y
1397CONFIG_ASYNC_MEMCPY=y 1418CONFIG_ASYNC_MEMCPY=y
1398CONFIG_ASYNC_XOR=y 1419CONFIG_ASYNC_XOR=y
1420CONFIG_ASYNC_PQ=y
1421CONFIG_ASYNC_RAID6_RECOV=y
1399CONFIG_CRYPTO=y 1422CONFIG_CRYPTO=y
1400 1423
1401# 1424#
1402# Crypto core or helper 1425# Crypto core or helper
1403# 1426#
1404# CONFIG_CRYPTO_FIPS is not set
1405CONFIG_CRYPTO_ALGAPI=y 1427CONFIG_CRYPTO_ALGAPI=y
1406CONFIG_CRYPTO_ALGAPI2=y 1428CONFIG_CRYPTO_ALGAPI2=y
1407CONFIG_CRYPTO_AEAD2=y 1429CONFIG_CRYPTO_AEAD2=y
@@ -1443,11 +1465,13 @@ CONFIG_CRYPTO_PCBC=m
1443# 1465#
1444# CONFIG_CRYPTO_HMAC is not set 1466# CONFIG_CRYPTO_HMAC is not set
1445# CONFIG_CRYPTO_XCBC is not set 1467# CONFIG_CRYPTO_XCBC is not set
1468# CONFIG_CRYPTO_VMAC is not set
1446 1469
1447# 1470#
1448# Digest 1471# Digest
1449# 1472#
1450# CONFIG_CRYPTO_CRC32C is not set 1473# CONFIG_CRYPTO_CRC32C is not set
1474# CONFIG_CRYPTO_GHASH is not set
1451# CONFIG_CRYPTO_MD4 is not set 1475# CONFIG_CRYPTO_MD4 is not set
1452CONFIG_CRYPTO_MD5=y 1476CONFIG_CRYPTO_MD5=y
1453# CONFIG_CRYPTO_MICHAEL_MIC is not set 1477# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/83xx/sbc834x_defconfig b/arch/powerpc/configs/83xx/sbc834x_defconfig
index 3a68f861b1bd..6b399154970f 100644
--- a/arch/powerpc/configs/83xx/sbc834x_defconfig
+++ b/arch/powerpc/configs/83xx/sbc834x_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.31-rc5 3# Linux kernel version: 2.6.32-rc5
4# Tue Aug 11 19:57:51 2009 4# Thu Nov 5 08:20:31 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -35,6 +35,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y 35CONFIG_GENERIC_HARDIRQS=y
36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +85,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 85#
85# RCU Subsystem 86# RCU Subsystem
86# 87#
87CONFIG_CLASSIC_RCU=y 88CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 90# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 93# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 94# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 95CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 96CONFIG_GROUP_SCHED=y
@@ -124,27 +126,28 @@ CONFIG_TIMERFD=y
124CONFIG_EVENTFD=y 126CONFIG_EVENTFD=y
125CONFIG_SHMEM=y 127CONFIG_SHMEM=y
126CONFIG_AIO=y 128CONFIG_AIO=y
127CONFIG_HAVE_PERF_COUNTERS=y 129CONFIG_HAVE_PERF_EVENTS=y
128 130
129# 131#
130# Performance Counters 132# Kernel Performance Events And Counters
131# 133#
134# CONFIG_PERF_EVENTS is not set
132# CONFIG_PERF_COUNTERS is not set 135# CONFIG_PERF_COUNTERS is not set
133CONFIG_VM_EVENT_COUNTERS=y 136CONFIG_VM_EVENT_COUNTERS=y
134CONFIG_PCI_QUIRKS=y 137CONFIG_PCI_QUIRKS=y
135# CONFIG_STRIP_ASM_SYMS is not set
136CONFIG_COMPAT_BRK=y 138CONFIG_COMPAT_BRK=y
137CONFIG_SLAB=y 139CONFIG_SLAB=y
138# CONFIG_SLUB is not set 140# CONFIG_SLUB is not set
139# CONFIG_SLOB is not set 141# CONFIG_SLOB is not set
140# CONFIG_PROFILING is not set 142# CONFIG_PROFILING is not set
141# CONFIG_MARKERS is not set
142CONFIG_HAVE_OPROFILE=y 143CONFIG_HAVE_OPROFILE=y
143CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
144CONFIG_HAVE_IOREMAP_PROT=y 145CONFIG_HAVE_IOREMAP_PROT=y
145CONFIG_HAVE_KPROBES=y 146CONFIG_HAVE_KPROBES=y
146CONFIG_HAVE_KRETPROBES=y 147CONFIG_HAVE_KRETPROBES=y
147CONFIG_HAVE_ARCH_TRACEHOOK=y 148CONFIG_HAVE_ARCH_TRACEHOOK=y
149CONFIG_HAVE_DMA_ATTRS=y
150CONFIG_HAVE_DMA_API_DEBUG=y
148 151
149# 152#
150# GCOV-based kernel profiling 153# GCOV-based kernel profiling
@@ -254,6 +257,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
254CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 257CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
255# CONFIG_KEXEC is not set 258# CONFIG_KEXEC is not set
256# CONFIG_CRASH_DUMP is not set 259# CONFIG_CRASH_DUMP is not set
260CONFIG_MAX_ACTIVE_REGIONS=32
257CONFIG_ARCH_FLATMEM_ENABLE=y 261CONFIG_ARCH_FLATMEM_ENABLE=y
258CONFIG_ARCH_POPULATES_NODE_MAP=y 262CONFIG_ARCH_POPULATES_NODE_MAP=y
259CONFIG_SELECT_MEMORY_MODEL=y 263CONFIG_SELECT_MEMORY_MODEL=y
@@ -271,6 +275,7 @@ CONFIG_BOUNCE=y
271CONFIG_VIRT_TO_BUS=y 275CONFIG_VIRT_TO_BUS=y
272CONFIG_HAVE_MLOCK=y 276CONFIG_HAVE_MLOCK=y
273CONFIG_HAVE_MLOCKED_PAGE_BIT=y 277CONFIG_HAVE_MLOCKED_PAGE_BIT=y
278# CONFIG_KSM is not set
274CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 279CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
275CONFIG_PPC_4K_PAGES=y 280CONFIG_PPC_4K_PAGES=y
276# CONFIG_PPC_16K_PAGES is not set 281# CONFIG_PPC_16K_PAGES is not set
@@ -366,6 +371,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
366# CONFIG_NETFILTER is not set 371# CONFIG_NETFILTER is not set
367# CONFIG_IP_DCCP is not set 372# CONFIG_IP_DCCP is not set
368# CONFIG_IP_SCTP is not set 373# CONFIG_IP_SCTP is not set
374# CONFIG_RDS is not set
369# CONFIG_TIPC is not set 375# CONFIG_TIPC is not set
370# CONFIG_ATM is not set 376# CONFIG_ATM is not set
371# CONFIG_BRIDGE is not set 377# CONFIG_BRIDGE is not set
@@ -395,6 +401,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
395# CONFIG_AF_RXRPC is not set 401# CONFIG_AF_RXRPC is not set
396CONFIG_WIRELESS=y 402CONFIG_WIRELESS=y
397# CONFIG_CFG80211 is not set 403# CONFIG_CFG80211 is not set
404CONFIG_CFG80211_DEFAULT_PS_VALUE=0
398CONFIG_WIRELESS_OLD_REGULATORY=y 405CONFIG_WIRELESS_OLD_REGULATORY=y
399# CONFIG_WIRELESS_EXT is not set 406# CONFIG_WIRELESS_EXT is not set
400# CONFIG_LIB80211 is not set 407# CONFIG_LIB80211 is not set
@@ -402,7 +409,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
402# 409#
403# CFG80211 needs to be enabled for MAC80211 410# CFG80211 needs to be enabled for MAC80211
404# 411#
405CONFIG_MAC80211_DEFAULT_PS_VALUE=0
406# CONFIG_WIMAX is not set 412# CONFIG_WIMAX is not set
407# CONFIG_RFKILL is not set 413# CONFIG_RFKILL is not set
408# CONFIG_NET_9P is not set 414# CONFIG_NET_9P is not set
@@ -415,6 +421,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
415# Generic Driver Options 421# Generic Driver Options
416# 422#
417CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 423CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
424# CONFIG_DEVTMPFS is not set
418CONFIG_STANDALONE=y 425CONFIG_STANDALONE=y
419CONFIG_PREVENT_FIRMWARE_BUILD=y 426CONFIG_PREVENT_FIRMWARE_BUILD=y
420# CONFIG_FW_LOADER is not set 427# CONFIG_FW_LOADER is not set
@@ -422,9 +429,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
422# CONFIG_CONNECTOR is not set 429# CONFIG_CONNECTOR is not set
423CONFIG_MTD=y 430CONFIG_MTD=y
424# CONFIG_MTD_DEBUG is not set 431# CONFIG_MTD_DEBUG is not set
432# CONFIG_MTD_TESTS is not set
425CONFIG_MTD_CONCAT=y 433CONFIG_MTD_CONCAT=y
426CONFIG_MTD_PARTITIONS=y 434CONFIG_MTD_PARTITIONS=y
427# CONFIG_MTD_TESTS is not set
428# CONFIG_MTD_REDBOOT_PARTS is not set 435# CONFIG_MTD_REDBOOT_PARTS is not set
429CONFIG_MTD_CMDLINE_PARTS=y 436CONFIG_MTD_CMDLINE_PARTS=y
430CONFIG_MTD_OF_PARTS=y 437CONFIG_MTD_OF_PARTS=y
@@ -651,7 +658,9 @@ CONFIG_MII=y
651# CONFIG_NET_PCI is not set 658# CONFIG_NET_PCI is not set
652# CONFIG_B44 is not set 659# CONFIG_B44 is not set
653# CONFIG_KS8842 is not set 660# CONFIG_KS8842 is not set
661# CONFIG_KS8851_MLL is not set
654# CONFIG_ATL2 is not set 662# CONFIG_ATL2 is not set
663# CONFIG_XILINX_EMACLITE is not set
655CONFIG_NETDEV_1000=y 664CONFIG_NETDEV_1000=y
656# CONFIG_ACENIC is not set 665# CONFIG_ACENIC is not set
657# CONFIG_DL2K is not set 666# CONFIG_DL2K is not set
@@ -681,10 +690,7 @@ CONFIG_GIANFAR=y
681# CONFIG_JME is not set 690# CONFIG_JME is not set
682# CONFIG_NETDEV_10000 is not set 691# CONFIG_NETDEV_10000 is not set
683# CONFIG_TR is not set 692# CONFIG_TR is not set
684 693CONFIG_WLAN=y
685#
686# Wireless LAN
687#
688# CONFIG_WLAN_PRE80211 is not set 694# CONFIG_WLAN_PRE80211 is not set
689# CONFIG_WLAN_80211 is not set 695# CONFIG_WLAN_80211 is not set
690 696
@@ -786,6 +792,7 @@ CONFIG_GEN_RTC=y
786CONFIG_DEVPORT=y 792CONFIG_DEVPORT=y
787CONFIG_I2C=y 793CONFIG_I2C=y
788CONFIG_I2C_BOARDINFO=y 794CONFIG_I2C_BOARDINFO=y
795CONFIG_I2C_COMPAT=y
789CONFIG_I2C_CHARDEV=y 796CONFIG_I2C_CHARDEV=y
790CONFIG_I2C_HELPER_AUTO=y 797CONFIG_I2C_HELPER_AUTO=y
791 798
@@ -840,9 +847,6 @@ CONFIG_I2C_MPC=y
840# Miscellaneous I2C Chip support 847# Miscellaneous I2C Chip support
841# 848#
842# CONFIG_DS1682 is not set 849# CONFIG_DS1682 is not set
843# CONFIG_SENSORS_PCF8574 is not set
844# CONFIG_PCF8575 is not set
845# CONFIG_SENSORS_PCA9539 is not set
846# CONFIG_SENSORS_TSL2550 is not set 850# CONFIG_SENSORS_TSL2550 is not set
847# CONFIG_I2C_DEBUG_CORE is not set 851# CONFIG_I2C_DEBUG_CORE is not set
848# CONFIG_I2C_DEBUG_ALGO is not set 852# CONFIG_I2C_DEBUG_ALGO is not set
@@ -860,6 +864,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
860# CONFIG_POWER_SUPPLY is not set 864# CONFIG_POWER_SUPPLY is not set
861CONFIG_HWMON=y 865CONFIG_HWMON=y
862# CONFIG_HWMON_VID is not set 866# CONFIG_HWMON_VID is not set
867# CONFIG_HWMON_DEBUG_CHIP is not set
868
869#
870# Native drivers
871#
863# CONFIG_SENSORS_AD7414 is not set 872# CONFIG_SENSORS_AD7414 is not set
864# CONFIG_SENSORS_AD7418 is not set 873# CONFIG_SENSORS_AD7418 is not set
865# CONFIG_SENSORS_ADM1021 is not set 874# CONFIG_SENSORS_ADM1021 is not set
@@ -909,6 +918,7 @@ CONFIG_HWMON=y
909# CONFIG_SENSORS_ADS7828 is not set 918# CONFIG_SENSORS_ADS7828 is not set
910# CONFIG_SENSORS_THMC50 is not set 919# CONFIG_SENSORS_THMC50 is not set
911# CONFIG_SENSORS_TMP401 is not set 920# CONFIG_SENSORS_TMP401 is not set
921# CONFIG_SENSORS_TMP421 is not set
912# CONFIG_SENSORS_VIA686A is not set 922# CONFIG_SENSORS_VIA686A is not set
913# CONFIG_SENSORS_VT1211 is not set 923# CONFIG_SENSORS_VT1211 is not set
914# CONFIG_SENSORS_VT8231 is not set 924# CONFIG_SENSORS_VT8231 is not set
@@ -920,9 +930,7 @@ CONFIG_HWMON=y
920# CONFIG_SENSORS_W83L786NG is not set 930# CONFIG_SENSORS_W83L786NG is not set
921# CONFIG_SENSORS_W83627HF is not set 931# CONFIG_SENSORS_W83627HF is not set
922# CONFIG_SENSORS_W83627EHF is not set 932# CONFIG_SENSORS_W83627EHF is not set
923# CONFIG_HWMON_DEBUG_CHIP is not set
924# CONFIG_THERMAL is not set 933# CONFIG_THERMAL is not set
925# CONFIG_THERMAL_HWMON is not set
926CONFIG_WATCHDOG=y 934CONFIG_WATCHDOG=y
927# CONFIG_WATCHDOG_NOWAYOUT is not set 935# CONFIG_WATCHDOG_NOWAYOUT is not set
928 936
@@ -960,6 +968,7 @@ CONFIG_SSB_POSSIBLE=y
960# CONFIG_MFD_TMIO is not set 968# CONFIG_MFD_TMIO is not set
961# CONFIG_PMIC_DA903X is not set 969# CONFIG_PMIC_DA903X is not set
962# CONFIG_MFD_WM8400 is not set 970# CONFIG_MFD_WM8400 is not set
971# CONFIG_MFD_WM831X is not set
963# CONFIG_MFD_WM8350_I2C is not set 972# CONFIG_MFD_WM8350_I2C is not set
964# CONFIG_MFD_PCF50633 is not set 973# CONFIG_MFD_PCF50633 is not set
965# CONFIG_AB3100_CORE is not set 974# CONFIG_AB3100_CORE is not set
@@ -970,6 +979,7 @@ CONFIG_SSB_POSSIBLE=y
970# Graphics support 979# Graphics support
971# 980#
972# CONFIG_AGP is not set 981# CONFIG_AGP is not set
982CONFIG_VGA_ARB=y
973# CONFIG_DRM is not set 983# CONFIG_DRM is not set
974# CONFIG_VGASTATE is not set 984# CONFIG_VGASTATE is not set
975# CONFIG_VIDEO_OUTPUT_CONTROL is not set 985# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -983,7 +993,6 @@ CONFIG_SSB_POSSIBLE=y
983# CONFIG_SOUND is not set 993# CONFIG_SOUND is not set
984CONFIG_HID_SUPPORT=y 994CONFIG_HID_SUPPORT=y
985CONFIG_HID=y 995CONFIG_HID=y
986# CONFIG_HID_DEBUG is not set
987# CONFIG_HIDRAW is not set 996# CONFIG_HIDRAW is not set
988 997
989# 998#
@@ -1035,6 +1044,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1035# CONFIG_USB_OXU210HP_HCD is not set 1044# CONFIG_USB_OXU210HP_HCD is not set
1036# CONFIG_USB_ISP116X_HCD is not set 1045# CONFIG_USB_ISP116X_HCD is not set
1037# CONFIG_USB_ISP1760_HCD is not set 1046# CONFIG_USB_ISP1760_HCD is not set
1047# CONFIG_USB_ISP1362_HCD is not set
1038# CONFIG_USB_OHCI_HCD is not set 1048# CONFIG_USB_OHCI_HCD is not set
1039# CONFIG_USB_UHCI_HCD is not set 1049# CONFIG_USB_UHCI_HCD is not set
1040# CONFIG_USB_SL811_HCD is not set 1050# CONFIG_USB_SL811_HCD is not set
@@ -1148,6 +1158,7 @@ CONFIG_JBD=y
1148# CONFIG_GFS2_FS is not set 1158# CONFIG_GFS2_FS is not set
1149# CONFIG_OCFS2_FS is not set 1159# CONFIG_OCFS2_FS is not set
1150# CONFIG_BTRFS_FS is not set 1160# CONFIG_BTRFS_FS is not set
1161# CONFIG_NILFS2_FS is not set
1151CONFIG_FILE_LOCKING=y 1162CONFIG_FILE_LOCKING=y
1152CONFIG_FSNOTIFY=y 1163CONFIG_FSNOTIFY=y
1153CONFIG_DNOTIFY=y 1164CONFIG_DNOTIFY=y
@@ -1207,7 +1218,6 @@ CONFIG_MISC_FILESYSTEMS=y
1207# CONFIG_ROMFS_FS is not set 1218# CONFIG_ROMFS_FS is not set
1208# CONFIG_SYSV_FS is not set 1219# CONFIG_SYSV_FS is not set
1209# CONFIG_UFS_FS is not set 1220# CONFIG_UFS_FS is not set
1210# CONFIG_NILFS2_FS is not set
1211CONFIG_NETWORK_FILESYSTEMS=y 1221CONFIG_NETWORK_FILESYSTEMS=y
1212CONFIG_NFS_FS=y 1222CONFIG_NFS_FS=y
1213CONFIG_NFS_V3=y 1223CONFIG_NFS_V3=y
@@ -1306,6 +1316,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1306CONFIG_ENABLE_MUST_CHECK=y 1316CONFIG_ENABLE_MUST_CHECK=y
1307CONFIG_FRAME_WARN=1024 1317CONFIG_FRAME_WARN=1024
1308# CONFIG_MAGIC_SYSRQ is not set 1318# CONFIG_MAGIC_SYSRQ is not set
1319# CONFIG_STRIP_ASM_SYMS is not set
1309# CONFIG_UNUSED_SYMBOLS is not set 1320# CONFIG_UNUSED_SYMBOLS is not set
1310# CONFIG_DEBUG_FS is not set 1321# CONFIG_DEBUG_FS is not set
1311# CONFIG_HEADERS_CHECK is not set 1322# CONFIG_HEADERS_CHECK is not set
@@ -1321,6 +1332,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1321CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1332CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1322CONFIG_TRACING_SUPPORT=y 1333CONFIG_TRACING_SUPPORT=y
1323# CONFIG_FTRACE is not set 1334# CONFIG_FTRACE is not set
1335# CONFIG_DMA_API_DEBUG is not set
1324# CONFIG_SAMPLES is not set 1336# CONFIG_SAMPLES is not set
1325CONFIG_HAVE_ARCH_KGDB=y 1337CONFIG_HAVE_ARCH_KGDB=y
1326# CONFIG_PPC_DISABLE_WERROR is not set 1338# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1342,7 +1354,6 @@ CONFIG_CRYPTO=y
1342# 1354#
1343# Crypto core or helper 1355# Crypto core or helper
1344# 1356#
1345# CONFIG_CRYPTO_FIPS is not set
1346CONFIG_CRYPTO_ALGAPI=y 1357CONFIG_CRYPTO_ALGAPI=y
1347CONFIG_CRYPTO_ALGAPI2=y 1358CONFIG_CRYPTO_ALGAPI2=y
1348CONFIG_CRYPTO_AEAD2=y 1359CONFIG_CRYPTO_AEAD2=y
@@ -1384,11 +1395,13 @@ CONFIG_CRYPTO_PCBC=m
1384# 1395#
1385# CONFIG_CRYPTO_HMAC is not set 1396# CONFIG_CRYPTO_HMAC is not set
1386# CONFIG_CRYPTO_XCBC is not set 1397# CONFIG_CRYPTO_XCBC is not set
1398# CONFIG_CRYPTO_VMAC is not set
1387 1399
1388# 1400#
1389# Digest 1401# Digest
1390# 1402#
1391# CONFIG_CRYPTO_CRC32C is not set 1403# CONFIG_CRYPTO_CRC32C is not set
1404# CONFIG_CRYPTO_GHASH is not set
1392# CONFIG_CRYPTO_MD4 is not set 1405# CONFIG_CRYPTO_MD4 is not set
1393CONFIG_CRYPTO_MD5=y 1406CONFIG_CRYPTO_MD5=y
1394# CONFIG_CRYPTO_MICHAEL_MIC is not set 1407# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/85xx/ksi8560_defconfig b/arch/powerpc/configs/85xx/ksi8560_defconfig
index ff04e1028f5e..a5bde8da462c 100644
--- a/arch/powerpc/configs/85xx/ksi8560_defconfig
+++ b/arch/powerpc/configs/85xx/ksi8560_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:14 2009 4# Thu Nov 5 08:20:32 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_MMU_NOHASH_32=y
25CONFIG_PPC_BOOK3E_MMU=y 26CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set 27# CONFIG_PPC_MM_SLICES is not set
27# CONFIG_SMP is not set 28# CONFIG_SMP is not set
@@ -36,6 +37,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 37CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -85,11 +87,12 @@ CONFIG_SYSVIPC_SYSCTL=y
85# 87#
86# RCU Subsystem 88# RCU Subsystem
87# 89#
88CONFIG_CLASSIC_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_PREEMPT_RCU is not set 92# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set
91# CONFIG_TREE_RCU_TRACE is not set 95# CONFIG_TREE_RCU_TRACE is not set
92# CONFIG_PREEMPT_RCU_TRACE is not set
93# CONFIG_IKCONFIG is not set 96# CONFIG_IKCONFIG is not set
94CONFIG_LOG_BUF_SHIFT=14 97CONFIG_LOG_BUF_SHIFT=14
95# CONFIG_GROUP_SCHED is not set 98# CONFIG_GROUP_SCHED is not set
@@ -123,28 +126,29 @@ CONFIG_TIMERFD=y
123CONFIG_EVENTFD=y 126CONFIG_EVENTFD=y
124CONFIG_SHMEM=y 127CONFIG_SHMEM=y
125CONFIG_AIO=y 128CONFIG_AIO=y
126CONFIG_HAVE_PERF_COUNTERS=y 129CONFIG_HAVE_PERF_EVENTS=y
127 130
128# 131#
129# Performance Counters 132# Kernel Performance Events And Counters
130# 133#
134# CONFIG_PERF_EVENTS is not set
131# CONFIG_PERF_COUNTERS is not set 135# CONFIG_PERF_COUNTERS is not set
132CONFIG_VM_EVENT_COUNTERS=y 136CONFIG_VM_EVENT_COUNTERS=y
133CONFIG_SLUB_DEBUG=y 137CONFIG_SLUB_DEBUG=y
134# CONFIG_STRIP_ASM_SYMS is not set
135CONFIG_COMPAT_BRK=y 138CONFIG_COMPAT_BRK=y
136# CONFIG_SLAB is not set 139# CONFIG_SLAB is not set
137CONFIG_SLUB=y 140CONFIG_SLUB=y
138# CONFIG_SLOB is not set 141# CONFIG_SLOB is not set
139# CONFIG_PROFILING is not set 142# CONFIG_PROFILING is not set
140# CONFIG_MARKERS is not set
141CONFIG_HAVE_OPROFILE=y 143CONFIG_HAVE_OPROFILE=y
142CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
143CONFIG_HAVE_IOREMAP_PROT=y 145CONFIG_HAVE_IOREMAP_PROT=y
144CONFIG_HAVE_KPROBES=y 146CONFIG_HAVE_KPROBES=y
145CONFIG_HAVE_KRETPROBES=y 147CONFIG_HAVE_KRETPROBES=y
146CONFIG_HAVE_ARCH_TRACEHOOK=y 148CONFIG_HAVE_ARCH_TRACEHOOK=y
149CONFIG_HAVE_DMA_ATTRS=y
147CONFIG_HAVE_CLK=y 150CONFIG_HAVE_CLK=y
151CONFIG_HAVE_DMA_API_DEBUG=y
148 152
149# 153#
150# GCOV-based kernel profiling 154# GCOV-based kernel profiling
@@ -188,6 +192,7 @@ CONFIG_MPC85xx=y
188# CONFIG_MPC85xx_MDS is not set 192# CONFIG_MPC85xx_MDS is not set
189# CONFIG_MPC8536_DS is not set 193# CONFIG_MPC8536_DS is not set
190# CONFIG_MPC85xx_DS is not set 194# CONFIG_MPC85xx_DS is not set
195# CONFIG_MPC85xx_RDB is not set
191# CONFIG_SOCRATES is not set 196# CONFIG_SOCRATES is not set
192CONFIG_KSI8560=y 197CONFIG_KSI8560=y
193# CONFIG_XES_MPC85xx is not set 198# CONFIG_XES_MPC85xx is not set
@@ -243,6 +248,7 @@ CONFIG_MATH_EMULATION=y
243CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 248CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
244CONFIG_ARCH_HAS_WALK_MEMORY=y 249CONFIG_ARCH_HAS_WALK_MEMORY=y
245CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 250CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
251CONFIG_MAX_ACTIVE_REGIONS=32
246CONFIG_ARCH_FLATMEM_ENABLE=y 252CONFIG_ARCH_FLATMEM_ENABLE=y
247CONFIG_ARCH_POPULATES_NODE_MAP=y 253CONFIG_ARCH_POPULATES_NODE_MAP=y
248CONFIG_SELECT_MEMORY_MODEL=y 254CONFIG_SELECT_MEMORY_MODEL=y
@@ -260,6 +266,7 @@ CONFIG_BOUNCE=y
260CONFIG_VIRT_TO_BUS=y 266CONFIG_VIRT_TO_BUS=y
261CONFIG_HAVE_MLOCK=y 267CONFIG_HAVE_MLOCK=y
262CONFIG_HAVE_MLOCKED_PAGE_BIT=y 268CONFIG_HAVE_MLOCKED_PAGE_BIT=y
269# CONFIG_KSM is not set
263CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 270CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
264CONFIG_PPC_4K_PAGES=y 271CONFIG_PPC_4K_PAGES=y
265# CONFIG_PPC_16K_PAGES is not set 272# CONFIG_PPC_16K_PAGES is not set
@@ -348,6 +355,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
348# CONFIG_NETFILTER is not set 355# CONFIG_NETFILTER is not set
349# CONFIG_IP_DCCP is not set 356# CONFIG_IP_DCCP is not set
350# CONFIG_IP_SCTP is not set 357# CONFIG_IP_SCTP is not set
358# CONFIG_RDS is not set
351# CONFIG_TIPC is not set 359# CONFIG_TIPC is not set
352# CONFIG_ATM is not set 360# CONFIG_ATM is not set
353# CONFIG_BRIDGE is not set 361# CONFIG_BRIDGE is not set
@@ -377,6 +385,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
377# CONFIG_AF_RXRPC is not set 385# CONFIG_AF_RXRPC is not set
378CONFIG_WIRELESS=y 386CONFIG_WIRELESS=y
379# CONFIG_CFG80211 is not set 387# CONFIG_CFG80211 is not set
388CONFIG_CFG80211_DEFAULT_PS_VALUE=0
380CONFIG_WIRELESS_OLD_REGULATORY=y 389CONFIG_WIRELESS_OLD_REGULATORY=y
381# CONFIG_WIRELESS_EXT is not set 390# CONFIG_WIRELESS_EXT is not set
382# CONFIG_LIB80211 is not set 391# CONFIG_LIB80211 is not set
@@ -384,7 +393,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
384# 393#
385# CFG80211 needs to be enabled for MAC80211 394# CFG80211 needs to be enabled for MAC80211
386# 395#
387CONFIG_MAC80211_DEFAULT_PS_VALUE=0
388# CONFIG_WIMAX is not set 396# CONFIG_WIMAX is not set
389# CONFIG_RFKILL is not set 397# CONFIG_RFKILL is not set
390# CONFIG_NET_9P is not set 398# CONFIG_NET_9P is not set
@@ -397,6 +405,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
397# Generic Driver Options 405# Generic Driver Options
398# 406#
399CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 407CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
408# CONFIG_DEVTMPFS is not set
400CONFIG_STANDALONE=y 409CONFIG_STANDALONE=y
401CONFIG_PREVENT_FIRMWARE_BUILD=y 410CONFIG_PREVENT_FIRMWARE_BUILD=y
402# CONFIG_FW_LOADER is not set 411# CONFIG_FW_LOADER is not set
@@ -582,6 +591,8 @@ CONFIG_MII=y
582# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 591# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
583# CONFIG_B44 is not set 592# CONFIG_B44 is not set
584# CONFIG_KS8842 is not set 593# CONFIG_KS8842 is not set
594# CONFIG_KS8851_MLL is not set
595# CONFIG_XILINX_EMACLITE is not set
585CONFIG_FS_ENET=y 596CONFIG_FS_ENET=y
586# CONFIG_FS_ENET_HAS_SCC is not set 597# CONFIG_FS_ENET_HAS_SCC is not set
587CONFIG_FS_ENET_HAS_FCC=y 598CONFIG_FS_ENET_HAS_FCC=y
@@ -591,10 +602,7 @@ CONFIG_FSL_PQ_MDIO=y
591CONFIG_GIANFAR=y 602CONFIG_GIANFAR=y
592# CONFIG_MV643XX_ETH is not set 603# CONFIG_MV643XX_ETH is not set
593CONFIG_NETDEV_10000=y 604CONFIG_NETDEV_10000=y
594 605CONFIG_WLAN=y
595#
596# Wireless LAN
597#
598# CONFIG_WLAN_PRE80211 is not set 606# CONFIG_WLAN_PRE80211 is not set
599# CONFIG_WLAN_80211 is not set 607# CONFIG_WLAN_80211 is not set
600 608
@@ -704,10 +712,19 @@ CONFIG_GPIOLIB=y
704# 712#
705# SPI GPIO expanders: 713# SPI GPIO expanders:
706# 714#
715
716#
717# AC97 GPIO expanders:
718#
707# CONFIG_W1 is not set 719# CONFIG_W1 is not set
708# CONFIG_POWER_SUPPLY is not set 720# CONFIG_POWER_SUPPLY is not set
709CONFIG_HWMON=y 721CONFIG_HWMON=y
710# CONFIG_HWMON_VID is not set 722# CONFIG_HWMON_VID is not set
723# CONFIG_HWMON_DEBUG_CHIP is not set
724
725#
726# Native drivers
727#
711# CONFIG_SENSORS_F71805F is not set 728# CONFIG_SENSORS_F71805F is not set
712# CONFIG_SENSORS_F71882FG is not set 729# CONFIG_SENSORS_F71882FG is not set
713# CONFIG_SENSORS_IT87 is not set 730# CONFIG_SENSORS_IT87 is not set
@@ -719,9 +736,7 @@ CONFIG_HWMON=y
719# CONFIG_SENSORS_VT1211 is not set 736# CONFIG_SENSORS_VT1211 is not set
720# CONFIG_SENSORS_W83627HF is not set 737# CONFIG_SENSORS_W83627HF is not set
721# CONFIG_SENSORS_W83627EHF is not set 738# CONFIG_SENSORS_W83627EHF is not set
722# CONFIG_HWMON_DEBUG_CHIP is not set
723# CONFIG_THERMAL is not set 739# CONFIG_THERMAL is not set
724# CONFIG_THERMAL_HWMON is not set
725# CONFIG_WATCHDOG is not set 740# CONFIG_WATCHDOG is not set
726CONFIG_SSB_POSSIBLE=y 741CONFIG_SSB_POSSIBLE=y
727 742
@@ -755,7 +770,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
755# CONFIG_SOUND is not set 770# CONFIG_SOUND is not set
756CONFIG_HID_SUPPORT=y 771CONFIG_HID_SUPPORT=y
757CONFIG_HID=y 772CONFIG_HID=y
758# CONFIG_HID_DEBUG is not set
759# CONFIG_HIDRAW is not set 773# CONFIG_HIDRAW is not set
760# CONFIG_HID_PID is not set 774# CONFIG_HID_PID is not set
761 775
@@ -818,6 +832,7 @@ CONFIG_FS_MBCACHE=y
818# CONFIG_GFS2_FS is not set 832# CONFIG_GFS2_FS is not set
819# CONFIG_OCFS2_FS is not set 833# CONFIG_OCFS2_FS is not set
820# CONFIG_BTRFS_FS is not set 834# CONFIG_BTRFS_FS is not set
835# CONFIG_NILFS2_FS is not set
821CONFIG_FILE_LOCKING=y 836CONFIG_FILE_LOCKING=y
822CONFIG_FSNOTIFY=y 837CONFIG_FSNOTIFY=y
823CONFIG_DNOTIFY=y 838CONFIG_DNOTIFY=y
@@ -877,7 +892,6 @@ CONFIG_MISC_FILESYSTEMS=y
877# CONFIG_ROMFS_FS is not set 892# CONFIG_ROMFS_FS is not set
878# CONFIG_SYSV_FS is not set 893# CONFIG_SYSV_FS is not set
879# CONFIG_UFS_FS is not set 894# CONFIG_UFS_FS is not set
880# CONFIG_NILFS2_FS is not set
881CONFIG_NETWORK_FILESYSTEMS=y 895CONFIG_NETWORK_FILESYSTEMS=y
882CONFIG_NFS_FS=y 896CONFIG_NFS_FS=y
883# CONFIG_NFS_V3 is not set 897# CONFIG_NFS_V3 is not set
@@ -945,6 +959,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
945CONFIG_ENABLE_MUST_CHECK=y 959CONFIG_ENABLE_MUST_CHECK=y
946CONFIG_FRAME_WARN=1024 960CONFIG_FRAME_WARN=1024
947# CONFIG_MAGIC_SYSRQ is not set 961# CONFIG_MAGIC_SYSRQ is not set
962# CONFIG_STRIP_ASM_SYMS is not set
948# CONFIG_UNUSED_SYMBOLS is not set 963# CONFIG_UNUSED_SYMBOLS is not set
949CONFIG_DEBUG_FS=y 964CONFIG_DEBUG_FS=y
950# CONFIG_HEADERS_CHECK is not set 965# CONFIG_HEADERS_CHECK is not set
@@ -962,6 +977,7 @@ CONFIG_SCHED_DEBUG=y
962# CONFIG_DEBUG_OBJECTS is not set 977# CONFIG_DEBUG_OBJECTS is not set
963# CONFIG_SLUB_DEBUG_ON is not set 978# CONFIG_SLUB_DEBUG_ON is not set
964# CONFIG_SLUB_STATS is not set 979# CONFIG_SLUB_STATS is not set
980# CONFIG_DEBUG_KMEMLEAK is not set
965# CONFIG_DEBUG_RT_MUTEXES is not set 981# CONFIG_DEBUG_RT_MUTEXES is not set
966# CONFIG_RT_MUTEX_TESTER is not set 982# CONFIG_RT_MUTEX_TESTER is not set
967# CONFIG_DEBUG_SPINLOCK is not set 983# CONFIG_DEBUG_SPINLOCK is not set
@@ -981,10 +997,12 @@ CONFIG_DEBUG_MUTEXES=y
981# CONFIG_DEBUG_LIST is not set 997# CONFIG_DEBUG_LIST is not set
982# CONFIG_DEBUG_SG is not set 998# CONFIG_DEBUG_SG is not set
983# CONFIG_DEBUG_NOTIFIERS is not set 999# CONFIG_DEBUG_NOTIFIERS is not set
1000# CONFIG_DEBUG_CREDENTIALS is not set
984# CONFIG_RCU_TORTURE_TEST is not set 1001# CONFIG_RCU_TORTURE_TEST is not set
985# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1002# CONFIG_RCU_CPU_STALL_DETECTOR is not set
986# CONFIG_BACKTRACE_SELF_TEST is not set 1003# CONFIG_BACKTRACE_SELF_TEST is not set
987# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1004# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1005# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
988# CONFIG_FAULT_INJECTION is not set 1006# CONFIG_FAULT_INJECTION is not set
989# CONFIG_LATENCYTOP is not set 1007# CONFIG_LATENCYTOP is not set
990CONFIG_SYSCTL_SYSCALL_CHECK=y 1008CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1008,10 +1026,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1008# CONFIG_WORKQUEUE_TRACER is not set 1026# CONFIG_WORKQUEUE_TRACER is not set
1009# CONFIG_BLK_DEV_IO_TRACE is not set 1027# CONFIG_BLK_DEV_IO_TRACE is not set
1010# CONFIG_DYNAMIC_DEBUG is not set 1028# CONFIG_DYNAMIC_DEBUG is not set
1029# CONFIG_DMA_API_DEBUG is not set
1011# CONFIG_SAMPLES is not set 1030# CONFIG_SAMPLES is not set
1012CONFIG_HAVE_ARCH_KGDB=y 1031CONFIG_HAVE_ARCH_KGDB=y
1013# CONFIG_KGDB is not set 1032# CONFIG_KGDB is not set
1014# CONFIG_KMEMCHECK is not set
1015# CONFIG_PPC_DISABLE_WERROR is not set 1033# CONFIG_PPC_DISABLE_WERROR is not set
1016CONFIG_PPC_WERROR=y 1034CONFIG_PPC_WERROR=y
1017CONFIG_PRINT_STACK_DEPTH=64 1035CONFIG_PRINT_STACK_DEPTH=64
@@ -1039,7 +1057,6 @@ CONFIG_CRYPTO=y
1039# 1057#
1040# Crypto core or helper 1058# Crypto core or helper
1041# 1059#
1042# CONFIG_CRYPTO_FIPS is not set
1043# CONFIG_CRYPTO_MANAGER is not set 1060# CONFIG_CRYPTO_MANAGER is not set
1044# CONFIG_CRYPTO_MANAGER2 is not set 1061# CONFIG_CRYPTO_MANAGER2 is not set
1045# CONFIG_CRYPTO_GF128MUL is not set 1062# CONFIG_CRYPTO_GF128MUL is not set
@@ -1070,11 +1087,13 @@ CONFIG_CRYPTO=y
1070# 1087#
1071# CONFIG_CRYPTO_HMAC is not set 1088# CONFIG_CRYPTO_HMAC is not set
1072# CONFIG_CRYPTO_XCBC is not set 1089# CONFIG_CRYPTO_XCBC is not set
1090# CONFIG_CRYPTO_VMAC is not set
1073 1091
1074# 1092#
1075# Digest 1093# Digest
1076# 1094#
1077# CONFIG_CRYPTO_CRC32C is not set 1095# CONFIG_CRYPTO_CRC32C is not set
1096# CONFIG_CRYPTO_GHASH is not set
1078# CONFIG_CRYPTO_MD4 is not set 1097# CONFIG_CRYPTO_MD4 is not set
1079# CONFIG_CRYPTO_MD5 is not set 1098# CONFIG_CRYPTO_MD5 is not set
1080# CONFIG_CRYPTO_MICHAEL_MIC is not set 1099# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/85xx/mpc8540_ads_defconfig b/arch/powerpc/configs/85xx/mpc8540_ads_defconfig
index fb10cc83702e..c10e26f8763f 100644
--- a/arch/powerpc/configs/85xx/mpc8540_ads_defconfig
+++ b/arch/powerpc/configs/85xx/mpc8540_ads_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:15 2009 4# Thu Nov 5 08:20:33 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_MMU_NOHASH_32=y
25CONFIG_PPC_BOOK3E_MMU=y 26CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set 27# CONFIG_PPC_MM_SLICES is not set
27# CONFIG_SMP is not set 28# CONFIG_SMP is not set
@@ -36,6 +37,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 37CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +86,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 86#
85# RCU Subsystem 87# RCU Subsystem
86# 88#
87CONFIG_CLASSIC_RCU=y 89CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 90# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 91# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 94# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 95# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 96CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 97CONFIG_GROUP_SCHED=y
@@ -126,27 +129,28 @@ CONFIG_TIMERFD=y
126CONFIG_EVENTFD=y 129CONFIG_EVENTFD=y
127CONFIG_SHMEM=y 130CONFIG_SHMEM=y
128CONFIG_AIO=y 131CONFIG_AIO=y
129CONFIG_HAVE_PERF_COUNTERS=y 132CONFIG_HAVE_PERF_EVENTS=y
130 133
131# 134#
132# Performance Counters 135# Kernel Performance Events And Counters
133# 136#
137# CONFIG_PERF_EVENTS is not set
134# CONFIG_PERF_COUNTERS is not set 138# CONFIG_PERF_COUNTERS is not set
135CONFIG_VM_EVENT_COUNTERS=y 139CONFIG_VM_EVENT_COUNTERS=y
136CONFIG_SLUB_DEBUG=y 140CONFIG_SLUB_DEBUG=y
137# CONFIG_STRIP_ASM_SYMS is not set
138CONFIG_COMPAT_BRK=y 141CONFIG_COMPAT_BRK=y
139# CONFIG_SLAB is not set 142# CONFIG_SLAB is not set
140CONFIG_SLUB=y 143CONFIG_SLUB=y
141# CONFIG_SLOB is not set 144# CONFIG_SLOB is not set
142# CONFIG_PROFILING is not set 145# CONFIG_PROFILING is not set
143# CONFIG_MARKERS is not set
144CONFIG_HAVE_OPROFILE=y 146CONFIG_HAVE_OPROFILE=y
145CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 147CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
146CONFIG_HAVE_IOREMAP_PROT=y 148CONFIG_HAVE_IOREMAP_PROT=y
147CONFIG_HAVE_KPROBES=y 149CONFIG_HAVE_KPROBES=y
148CONFIG_HAVE_KRETPROBES=y 150CONFIG_HAVE_KRETPROBES=y
149CONFIG_HAVE_ARCH_TRACEHOOK=y 151CONFIG_HAVE_ARCH_TRACEHOOK=y
152CONFIG_HAVE_DMA_ATTRS=y
153CONFIG_HAVE_DMA_API_DEBUG=y
150 154
151# 155#
152# GCOV-based kernel profiling 156# GCOV-based kernel profiling
@@ -189,6 +193,7 @@ CONFIG_MPC8540_ADS=y
189# CONFIG_MPC85xx_MDS is not set 193# CONFIG_MPC85xx_MDS is not set
190# CONFIG_MPC8536_DS is not set 194# CONFIG_MPC8536_DS is not set
191# CONFIG_MPC85xx_DS is not set 195# CONFIG_MPC85xx_DS is not set
196# CONFIG_MPC85xx_RDB is not set
192# CONFIG_SOCRATES is not set 197# CONFIG_SOCRATES is not set
193# CONFIG_KSI8560 is not set 198# CONFIG_KSI8560 is not set
194# CONFIG_XES_MPC85xx is not set 199# CONFIG_XES_MPC85xx is not set
@@ -244,6 +249,7 @@ CONFIG_MATH_EMULATION=y
244CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 249CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
245CONFIG_ARCH_HAS_WALK_MEMORY=y 250CONFIG_ARCH_HAS_WALK_MEMORY=y
246CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 251CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
252CONFIG_MAX_ACTIVE_REGIONS=32
247CONFIG_ARCH_FLATMEM_ENABLE=y 253CONFIG_ARCH_FLATMEM_ENABLE=y
248CONFIG_ARCH_POPULATES_NODE_MAP=y 254CONFIG_ARCH_POPULATES_NODE_MAP=y
249CONFIG_SELECT_MEMORY_MODEL=y 255CONFIG_SELECT_MEMORY_MODEL=y
@@ -261,6 +267,7 @@ CONFIG_BOUNCE=y
261CONFIG_VIRT_TO_BUS=y 267CONFIG_VIRT_TO_BUS=y
262CONFIG_HAVE_MLOCK=y 268CONFIG_HAVE_MLOCK=y
263CONFIG_HAVE_MLOCKED_PAGE_BIT=y 269CONFIG_HAVE_MLOCKED_PAGE_BIT=y
270# CONFIG_KSM is not set
264CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 271CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
265CONFIG_PPC_4K_PAGES=y 272CONFIG_PPC_4K_PAGES=y
266# CONFIG_PPC_16K_PAGES is not set 273# CONFIG_PPC_16K_PAGES is not set
@@ -349,6 +356,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
349# CONFIG_NETFILTER is not set 356# CONFIG_NETFILTER is not set
350# CONFIG_IP_DCCP is not set 357# CONFIG_IP_DCCP is not set
351# CONFIG_IP_SCTP is not set 358# CONFIG_IP_SCTP is not set
359# CONFIG_RDS is not set
352# CONFIG_TIPC is not set 360# CONFIG_TIPC is not set
353# CONFIG_ATM is not set 361# CONFIG_ATM is not set
354# CONFIG_BRIDGE is not set 362# CONFIG_BRIDGE is not set
@@ -378,6 +386,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
378# CONFIG_AF_RXRPC is not set 386# CONFIG_AF_RXRPC is not set
379CONFIG_WIRELESS=y 387CONFIG_WIRELESS=y
380# CONFIG_CFG80211 is not set 388# CONFIG_CFG80211 is not set
389CONFIG_CFG80211_DEFAULT_PS_VALUE=0
381CONFIG_WIRELESS_OLD_REGULATORY=y 390CONFIG_WIRELESS_OLD_REGULATORY=y
382# CONFIG_WIRELESS_EXT is not set 391# CONFIG_WIRELESS_EXT is not set
383# CONFIG_LIB80211 is not set 392# CONFIG_LIB80211 is not set
@@ -385,7 +394,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
385# 394#
386# CFG80211 needs to be enabled for MAC80211 395# CFG80211 needs to be enabled for MAC80211
387# 396#
388CONFIG_MAC80211_DEFAULT_PS_VALUE=0
389# CONFIG_WIMAX is not set 397# CONFIG_WIMAX is not set
390# CONFIG_RFKILL is not set 398# CONFIG_RFKILL is not set
391# CONFIG_NET_9P is not set 399# CONFIG_NET_9P is not set
@@ -398,6 +406,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
398# Generic Driver Options 406# Generic Driver Options
399# 407#
400CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 408CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
409# CONFIG_DEVTMPFS is not set
401CONFIG_STANDALONE=y 410CONFIG_STANDALONE=y
402CONFIG_PREVENT_FIRMWARE_BUILD=y 411CONFIG_PREVENT_FIRMWARE_BUILD=y
403# CONFIG_FW_LOADER is not set 412# CONFIG_FW_LOADER is not set
@@ -483,15 +492,14 @@ CONFIG_MII=y
483# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 492# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
484# CONFIG_B44 is not set 493# CONFIG_B44 is not set
485# CONFIG_KS8842 is not set 494# CONFIG_KS8842 is not set
495# CONFIG_KS8851_MLL is not set
496# CONFIG_XILINX_EMACLITE is not set
486CONFIG_NETDEV_1000=y 497CONFIG_NETDEV_1000=y
487CONFIG_FSL_PQ_MDIO=y 498CONFIG_FSL_PQ_MDIO=y
488CONFIG_GIANFAR=y 499CONFIG_GIANFAR=y
489# CONFIG_MV643XX_ETH is not set 500# CONFIG_MV643XX_ETH is not set
490CONFIG_NETDEV_10000=y 501CONFIG_NETDEV_10000=y
491 502CONFIG_WLAN=y
492#
493# Wireless LAN
494#
495# CONFIG_WLAN_PRE80211 is not set 503# CONFIG_WLAN_PRE80211 is not set
496# CONFIG_WLAN_80211 is not set 504# CONFIG_WLAN_80211 is not set
497 505
@@ -588,6 +596,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
588# CONFIG_POWER_SUPPLY is not set 596# CONFIG_POWER_SUPPLY is not set
589CONFIG_HWMON=y 597CONFIG_HWMON=y
590# CONFIG_HWMON_VID is not set 598# CONFIG_HWMON_VID is not set
599# CONFIG_HWMON_DEBUG_CHIP is not set
600
601#
602# Native drivers
603#
591# CONFIG_SENSORS_F71805F is not set 604# CONFIG_SENSORS_F71805F is not set
592# CONFIG_SENSORS_F71882FG is not set 605# CONFIG_SENSORS_F71882FG is not set
593# CONFIG_SENSORS_IT87 is not set 606# CONFIG_SENSORS_IT87 is not set
@@ -598,9 +611,7 @@ CONFIG_HWMON=y
598# CONFIG_SENSORS_VT1211 is not set 611# CONFIG_SENSORS_VT1211 is not set
599# CONFIG_SENSORS_W83627HF is not set 612# CONFIG_SENSORS_W83627HF is not set
600# CONFIG_SENSORS_W83627EHF is not set 613# CONFIG_SENSORS_W83627EHF is not set
601# CONFIG_HWMON_DEBUG_CHIP is not set
602# CONFIG_THERMAL is not set 614# CONFIG_THERMAL is not set
603# CONFIG_THERMAL_HWMON is not set
604# CONFIG_WATCHDOG is not set 615# CONFIG_WATCHDOG is not set
605CONFIG_SSB_POSSIBLE=y 616CONFIG_SSB_POSSIBLE=y
606 617
@@ -634,7 +645,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
634# CONFIG_SOUND is not set 645# CONFIG_SOUND is not set
635CONFIG_HID_SUPPORT=y 646CONFIG_HID_SUPPORT=y
636CONFIG_HID=y 647CONFIG_HID=y
637# CONFIG_HID_DEBUG is not set
638# CONFIG_HIDRAW is not set 648# CONFIG_HIDRAW is not set
639# CONFIG_HID_PID is not set 649# CONFIG_HID_PID is not set
640 650
@@ -696,6 +706,7 @@ CONFIG_FS_MBCACHE=y
696# CONFIG_GFS2_FS is not set 706# CONFIG_GFS2_FS is not set
697# CONFIG_OCFS2_FS is not set 707# CONFIG_OCFS2_FS is not set
698# CONFIG_BTRFS_FS is not set 708# CONFIG_BTRFS_FS is not set
709# CONFIG_NILFS2_FS is not set
699CONFIG_FILE_LOCKING=y 710CONFIG_FILE_LOCKING=y
700CONFIG_FSNOTIFY=y 711CONFIG_FSNOTIFY=y
701CONFIG_DNOTIFY=y 712CONFIG_DNOTIFY=y
@@ -754,7 +765,6 @@ CONFIG_MISC_FILESYSTEMS=y
754# CONFIG_ROMFS_FS is not set 765# CONFIG_ROMFS_FS is not set
755# CONFIG_SYSV_FS is not set 766# CONFIG_SYSV_FS is not set
756# CONFIG_UFS_FS is not set 767# CONFIG_UFS_FS is not set
757# CONFIG_NILFS2_FS is not set
758CONFIG_NETWORK_FILESYSTEMS=y 768CONFIG_NETWORK_FILESYSTEMS=y
759CONFIG_NFS_FS=y 769CONFIG_NFS_FS=y
760# CONFIG_NFS_V3 is not set 770# CONFIG_NFS_V3 is not set
@@ -822,6 +832,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
822CONFIG_ENABLE_MUST_CHECK=y 832CONFIG_ENABLE_MUST_CHECK=y
823CONFIG_FRAME_WARN=1024 833CONFIG_FRAME_WARN=1024
824# CONFIG_MAGIC_SYSRQ is not set 834# CONFIG_MAGIC_SYSRQ is not set
835# CONFIG_STRIP_ASM_SYMS is not set
825# CONFIG_UNUSED_SYMBOLS is not set 836# CONFIG_UNUSED_SYMBOLS is not set
826# CONFIG_DEBUG_FS is not set 837# CONFIG_DEBUG_FS is not set
827# CONFIG_HEADERS_CHECK is not set 838# CONFIG_HEADERS_CHECK is not set
@@ -839,6 +850,7 @@ CONFIG_SCHED_DEBUG=y
839# CONFIG_DEBUG_OBJECTS is not set 850# CONFIG_DEBUG_OBJECTS is not set
840# CONFIG_SLUB_DEBUG_ON is not set 851# CONFIG_SLUB_DEBUG_ON is not set
841# CONFIG_SLUB_STATS is not set 852# CONFIG_SLUB_STATS is not set
853# CONFIG_DEBUG_KMEMLEAK is not set
842# CONFIG_DEBUG_RT_MUTEXES is not set 854# CONFIG_DEBUG_RT_MUTEXES is not set
843# CONFIG_RT_MUTEX_TESTER is not set 855# CONFIG_RT_MUTEX_TESTER is not set
844# CONFIG_DEBUG_SPINLOCK is not set 856# CONFIG_DEBUG_SPINLOCK is not set
@@ -857,10 +869,12 @@ CONFIG_DEBUG_MUTEXES=y
857# CONFIG_DEBUG_LIST is not set 869# CONFIG_DEBUG_LIST is not set
858# CONFIG_DEBUG_SG is not set 870# CONFIG_DEBUG_SG is not set
859# CONFIG_DEBUG_NOTIFIERS is not set 871# CONFIG_DEBUG_NOTIFIERS is not set
872# CONFIG_DEBUG_CREDENTIALS is not set
860# CONFIG_RCU_TORTURE_TEST is not set 873# CONFIG_RCU_TORTURE_TEST is not set
861# CONFIG_RCU_CPU_STALL_DETECTOR is not set 874# CONFIG_RCU_CPU_STALL_DETECTOR is not set
862# CONFIG_BACKTRACE_SELF_TEST is not set 875# CONFIG_BACKTRACE_SELF_TEST is not set
863# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 876# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
877# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
864# CONFIG_FAULT_INJECTION is not set 878# CONFIG_FAULT_INJECTION is not set
865# CONFIG_LATENCYTOP is not set 879# CONFIG_LATENCYTOP is not set
866CONFIG_SYSCTL_SYSCALL_CHECK=y 880CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -883,10 +897,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
883# CONFIG_KMEMTRACE is not set 897# CONFIG_KMEMTRACE is not set
884# CONFIG_WORKQUEUE_TRACER is not set 898# CONFIG_WORKQUEUE_TRACER is not set
885# CONFIG_BLK_DEV_IO_TRACE is not set 899# CONFIG_BLK_DEV_IO_TRACE is not set
900# CONFIG_DMA_API_DEBUG is not set
886# CONFIG_SAMPLES is not set 901# CONFIG_SAMPLES is not set
887CONFIG_HAVE_ARCH_KGDB=y 902CONFIG_HAVE_ARCH_KGDB=y
888# CONFIG_KGDB is not set 903# CONFIG_KGDB is not set
889# CONFIG_KMEMCHECK is not set
890# CONFIG_PPC_DISABLE_WERROR is not set 904# CONFIG_PPC_DISABLE_WERROR is not set
891CONFIG_PPC_WERROR=y 905CONFIG_PPC_WERROR=y
892CONFIG_PRINT_STACK_DEPTH=64 906CONFIG_PRINT_STACK_DEPTH=64
@@ -912,7 +926,6 @@ CONFIG_CRYPTO=y
912# 926#
913# Crypto core or helper 927# Crypto core or helper
914# 928#
915# CONFIG_CRYPTO_FIPS is not set
916# CONFIG_CRYPTO_MANAGER is not set 929# CONFIG_CRYPTO_MANAGER is not set
917# CONFIG_CRYPTO_MANAGER2 is not set 930# CONFIG_CRYPTO_MANAGER2 is not set
918# CONFIG_CRYPTO_GF128MUL is not set 931# CONFIG_CRYPTO_GF128MUL is not set
@@ -943,11 +956,13 @@ CONFIG_CRYPTO=y
943# 956#
944# CONFIG_CRYPTO_HMAC is not set 957# CONFIG_CRYPTO_HMAC is not set
945# CONFIG_CRYPTO_XCBC is not set 958# CONFIG_CRYPTO_XCBC is not set
959# CONFIG_CRYPTO_VMAC is not set
946 960
947# 961#
948# Digest 962# Digest
949# 963#
950# CONFIG_CRYPTO_CRC32C is not set 964# CONFIG_CRYPTO_CRC32C is not set
965# CONFIG_CRYPTO_GHASH is not set
951# CONFIG_CRYPTO_MD4 is not set 966# CONFIG_CRYPTO_MD4 is not set
952# CONFIG_CRYPTO_MD5 is not set 967# CONFIG_CRYPTO_MD5 is not set
953# CONFIG_CRYPTO_MICHAEL_MIC is not set 968# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/85xx/mpc8560_ads_defconfig b/arch/powerpc/configs/85xx/mpc8560_ads_defconfig
index 5c8ce6978825..8d9f0a4b5205 100644
--- a/arch/powerpc/configs/85xx/mpc8560_ads_defconfig
+++ b/arch/powerpc/configs/85xx/mpc8560_ads_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:16 2009 4# Thu Nov 5 08:20:34 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_MMU_NOHASH_32=y
25CONFIG_PPC_BOOK3E_MMU=y 26CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set 27# CONFIG_PPC_MM_SLICES is not set
27# CONFIG_SMP is not set 28# CONFIG_SMP is not set
@@ -36,6 +37,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 37CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -85,11 +87,12 @@ CONFIG_SYSVIPC_SYSCTL=y
85# 87#
86# RCU Subsystem 88# RCU Subsystem
87# 89#
88CONFIG_CLASSIC_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_PREEMPT_RCU is not set 92# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set
91# CONFIG_TREE_RCU_TRACE is not set 95# CONFIG_TREE_RCU_TRACE is not set
92# CONFIG_PREEMPT_RCU_TRACE is not set
93# CONFIG_IKCONFIG is not set 96# CONFIG_IKCONFIG is not set
94CONFIG_LOG_BUF_SHIFT=14 97CONFIG_LOG_BUF_SHIFT=14
95CONFIG_GROUP_SCHED=y 98CONFIG_GROUP_SCHED=y
@@ -127,29 +130,30 @@ CONFIG_TIMERFD=y
127CONFIG_EVENTFD=y 130CONFIG_EVENTFD=y
128CONFIG_SHMEM=y 131CONFIG_SHMEM=y
129CONFIG_AIO=y 132CONFIG_AIO=y
130CONFIG_HAVE_PERF_COUNTERS=y 133CONFIG_HAVE_PERF_EVENTS=y
131 134
132# 135#
133# Performance Counters 136# Kernel Performance Events And Counters
134# 137#
138# CONFIG_PERF_EVENTS is not set
135# CONFIG_PERF_COUNTERS is not set 139# CONFIG_PERF_COUNTERS is not set
136CONFIG_VM_EVENT_COUNTERS=y 140CONFIG_VM_EVENT_COUNTERS=y
137CONFIG_PCI_QUIRKS=y 141CONFIG_PCI_QUIRKS=y
138CONFIG_SLUB_DEBUG=y 142CONFIG_SLUB_DEBUG=y
139# CONFIG_STRIP_ASM_SYMS is not set
140CONFIG_COMPAT_BRK=y 143CONFIG_COMPAT_BRK=y
141# CONFIG_SLAB is not set 144# CONFIG_SLAB is not set
142CONFIG_SLUB=y 145CONFIG_SLUB=y
143# CONFIG_SLOB is not set 146# CONFIG_SLOB is not set
144# CONFIG_PROFILING is not set 147# CONFIG_PROFILING is not set
145# CONFIG_MARKERS is not set
146CONFIG_HAVE_OPROFILE=y 148CONFIG_HAVE_OPROFILE=y
147CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 149CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
148CONFIG_HAVE_IOREMAP_PROT=y 150CONFIG_HAVE_IOREMAP_PROT=y
149CONFIG_HAVE_KPROBES=y 151CONFIG_HAVE_KPROBES=y
150CONFIG_HAVE_KRETPROBES=y 152CONFIG_HAVE_KRETPROBES=y
151CONFIG_HAVE_ARCH_TRACEHOOK=y 153CONFIG_HAVE_ARCH_TRACEHOOK=y
154CONFIG_HAVE_DMA_ATTRS=y
152CONFIG_HAVE_CLK=y 155CONFIG_HAVE_CLK=y
156CONFIG_HAVE_DMA_API_DEBUG=y
153 157
154# 158#
155# GCOV-based kernel profiling 159# GCOV-based kernel profiling
@@ -192,6 +196,7 @@ CONFIG_MPC8560_ADS=y
192# CONFIG_MPC85xx_MDS is not set 196# CONFIG_MPC85xx_MDS is not set
193# CONFIG_MPC8536_DS is not set 197# CONFIG_MPC8536_DS is not set
194# CONFIG_MPC85xx_DS is not set 198# CONFIG_MPC85xx_DS is not set
199# CONFIG_MPC85xx_RDB is not set
195# CONFIG_SOCRATES is not set 200# CONFIG_SOCRATES is not set
196# CONFIG_KSI8560 is not set 201# CONFIG_KSI8560 is not set
197# CONFIG_XES_MPC85xx is not set 202# CONFIG_XES_MPC85xx is not set
@@ -247,6 +252,7 @@ CONFIG_MATH_EMULATION=y
247CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 252CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
248CONFIG_ARCH_HAS_WALK_MEMORY=y 253CONFIG_ARCH_HAS_WALK_MEMORY=y
249CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 254CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
255CONFIG_MAX_ACTIVE_REGIONS=32
250CONFIG_ARCH_FLATMEM_ENABLE=y 256CONFIG_ARCH_FLATMEM_ENABLE=y
251CONFIG_ARCH_POPULATES_NODE_MAP=y 257CONFIG_ARCH_POPULATES_NODE_MAP=y
252CONFIG_SELECT_MEMORY_MODEL=y 258CONFIG_SELECT_MEMORY_MODEL=y
@@ -264,6 +270,7 @@ CONFIG_BOUNCE=y
264CONFIG_VIRT_TO_BUS=y 270CONFIG_VIRT_TO_BUS=y
265CONFIG_HAVE_MLOCK=y 271CONFIG_HAVE_MLOCK=y
266CONFIG_HAVE_MLOCKED_PAGE_BIT=y 272CONFIG_HAVE_MLOCKED_PAGE_BIT=y
273# CONFIG_KSM is not set
267CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 274CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
268CONFIG_PPC_4K_PAGES=y 275CONFIG_PPC_4K_PAGES=y
269# CONFIG_PPC_16K_PAGES is not set 276# CONFIG_PPC_16K_PAGES is not set
@@ -361,6 +368,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
361# CONFIG_NETFILTER is not set 368# CONFIG_NETFILTER is not set
362# CONFIG_IP_DCCP is not set 369# CONFIG_IP_DCCP is not set
363# CONFIG_IP_SCTP is not set 370# CONFIG_IP_SCTP is not set
371# CONFIG_RDS is not set
364# CONFIG_TIPC is not set 372# CONFIG_TIPC is not set
365# CONFIG_ATM is not set 373# CONFIG_ATM is not set
366# CONFIG_BRIDGE is not set 374# CONFIG_BRIDGE is not set
@@ -390,6 +398,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
390# CONFIG_AF_RXRPC is not set 398# CONFIG_AF_RXRPC is not set
391CONFIG_WIRELESS=y 399CONFIG_WIRELESS=y
392# CONFIG_CFG80211 is not set 400# CONFIG_CFG80211 is not set
401CONFIG_CFG80211_DEFAULT_PS_VALUE=0
393CONFIG_WIRELESS_OLD_REGULATORY=y 402CONFIG_WIRELESS_OLD_REGULATORY=y
394# CONFIG_WIRELESS_EXT is not set 403# CONFIG_WIRELESS_EXT is not set
395# CONFIG_LIB80211 is not set 404# CONFIG_LIB80211 is not set
@@ -397,7 +406,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
397# 406#
398# CFG80211 needs to be enabled for MAC80211 407# CFG80211 needs to be enabled for MAC80211
399# 408#
400CONFIG_MAC80211_DEFAULT_PS_VALUE=0
401# CONFIG_WIMAX is not set 409# CONFIG_WIMAX is not set
402# CONFIG_RFKILL is not set 410# CONFIG_RFKILL is not set
403# CONFIG_NET_9P is not set 411# CONFIG_NET_9P is not set
@@ -410,6 +418,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
410# Generic Driver Options 418# Generic Driver Options
411# 419#
412CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 420CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
421# CONFIG_DEVTMPFS is not set
413CONFIG_STANDALONE=y 422CONFIG_STANDALONE=y
414CONFIG_PREVENT_FIRMWARE_BUILD=y 423CONFIG_PREVENT_FIRMWARE_BUILD=y
415# CONFIG_FW_LOADER is not set 424# CONFIG_FW_LOADER is not set
@@ -530,7 +539,9 @@ CONFIG_MII=y
530# CONFIG_NET_PCI is not set 539# CONFIG_NET_PCI is not set
531# CONFIG_B44 is not set 540# CONFIG_B44 is not set
532# CONFIG_KS8842 is not set 541# CONFIG_KS8842 is not set
542# CONFIG_KS8851_MLL is not set
533# CONFIG_ATL2 is not set 543# CONFIG_ATL2 is not set
544# CONFIG_XILINX_EMACLITE is not set
534CONFIG_FS_ENET=y 545CONFIG_FS_ENET=y
535# CONFIG_FS_ENET_HAS_SCC is not set 546# CONFIG_FS_ENET_HAS_SCC is not set
536CONFIG_FS_ENET_HAS_FCC=y 547CONFIG_FS_ENET_HAS_FCC=y
@@ -582,10 +593,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
582# CONFIG_SFC is not set 593# CONFIG_SFC is not set
583# CONFIG_BE2NET is not set 594# CONFIG_BE2NET is not set
584# CONFIG_TR is not set 595# CONFIG_TR is not set
585 596CONFIG_WLAN=y
586#
587# Wireless LAN
588#
589# CONFIG_WLAN_PRE80211 is not set 597# CONFIG_WLAN_PRE80211 is not set
590# CONFIG_WLAN_80211 is not set 598# CONFIG_WLAN_80211 is not set
591 599
@@ -698,14 +706,24 @@ CONFIG_GPIOLIB=y
698# PCI GPIO expanders: 706# PCI GPIO expanders:
699# 707#
700# CONFIG_GPIO_BT8XX is not set 708# CONFIG_GPIO_BT8XX is not set
709# CONFIG_GPIO_LANGWELL is not set
701 710
702# 711#
703# SPI GPIO expanders: 712# SPI GPIO expanders:
704# 713#
714
715#
716# AC97 GPIO expanders:
717#
705# CONFIG_W1 is not set 718# CONFIG_W1 is not set
706# CONFIG_POWER_SUPPLY is not set 719# CONFIG_POWER_SUPPLY is not set
707CONFIG_HWMON=y 720CONFIG_HWMON=y
708# CONFIG_HWMON_VID is not set 721# CONFIG_HWMON_VID is not set
722# CONFIG_HWMON_DEBUG_CHIP is not set
723
724#
725# Native drivers
726#
709# CONFIG_SENSORS_I5K_AMB is not set 727# CONFIG_SENSORS_I5K_AMB is not set
710# CONFIG_SENSORS_F71805F is not set 728# CONFIG_SENSORS_F71805F is not set
711# CONFIG_SENSORS_F71882FG is not set 729# CONFIG_SENSORS_F71882FG is not set
@@ -721,9 +739,7 @@ CONFIG_HWMON=y
721# CONFIG_SENSORS_VT8231 is not set 739# CONFIG_SENSORS_VT8231 is not set
722# CONFIG_SENSORS_W83627HF is not set 740# CONFIG_SENSORS_W83627HF is not set
723# CONFIG_SENSORS_W83627EHF is not set 741# CONFIG_SENSORS_W83627EHF is not set
724# CONFIG_HWMON_DEBUG_CHIP is not set
725# CONFIG_THERMAL is not set 742# CONFIG_THERMAL is not set
726# CONFIG_THERMAL_HWMON is not set
727# CONFIG_WATCHDOG is not set 743# CONFIG_WATCHDOG is not set
728CONFIG_SSB_POSSIBLE=y 744CONFIG_SSB_POSSIBLE=y
729 745
@@ -746,6 +762,7 @@ CONFIG_SSB_POSSIBLE=y
746# Graphics support 762# Graphics support
747# 763#
748# CONFIG_AGP is not set 764# CONFIG_AGP is not set
765CONFIG_VGA_ARB=y
749# CONFIG_DRM is not set 766# CONFIG_DRM is not set
750# CONFIG_VGASTATE is not set 767# CONFIG_VGASTATE is not set
751CONFIG_VIDEO_OUTPUT_CONTROL=y 768CONFIG_VIDEO_OUTPUT_CONTROL=y
@@ -759,7 +776,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
759# CONFIG_SOUND is not set 776# CONFIG_SOUND is not set
760CONFIG_HID_SUPPORT=y 777CONFIG_HID_SUPPORT=y
761CONFIG_HID=y 778CONFIG_HID=y
762# CONFIG_HID_DEBUG is not set
763# CONFIG_HIDRAW is not set 779# CONFIG_HIDRAW is not set
764# CONFIG_HID_PID is not set 780# CONFIG_HID_PID is not set
765 781
@@ -824,6 +840,7 @@ CONFIG_FS_MBCACHE=y
824# CONFIG_GFS2_FS is not set 840# CONFIG_GFS2_FS is not set
825# CONFIG_OCFS2_FS is not set 841# CONFIG_OCFS2_FS is not set
826# CONFIG_BTRFS_FS is not set 842# CONFIG_BTRFS_FS is not set
843# CONFIG_NILFS2_FS is not set
827CONFIG_FILE_LOCKING=y 844CONFIG_FILE_LOCKING=y
828CONFIG_FSNOTIFY=y 845CONFIG_FSNOTIFY=y
829CONFIG_DNOTIFY=y 846CONFIG_DNOTIFY=y
@@ -882,7 +899,6 @@ CONFIG_MISC_FILESYSTEMS=y
882# CONFIG_ROMFS_FS is not set 899# CONFIG_ROMFS_FS is not set
883# CONFIG_SYSV_FS is not set 900# CONFIG_SYSV_FS is not set
884# CONFIG_UFS_FS is not set 901# CONFIG_UFS_FS is not set
885# CONFIG_NILFS2_FS is not set
886CONFIG_NETWORK_FILESYSTEMS=y 902CONFIG_NETWORK_FILESYSTEMS=y
887CONFIG_NFS_FS=y 903CONFIG_NFS_FS=y
888# CONFIG_NFS_V3 is not set 904# CONFIG_NFS_V3 is not set
@@ -950,6 +966,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
950CONFIG_ENABLE_MUST_CHECK=y 966CONFIG_ENABLE_MUST_CHECK=y
951CONFIG_FRAME_WARN=1024 967CONFIG_FRAME_WARN=1024
952# CONFIG_MAGIC_SYSRQ is not set 968# CONFIG_MAGIC_SYSRQ is not set
969# CONFIG_STRIP_ASM_SYMS is not set
953# CONFIG_UNUSED_SYMBOLS is not set 970# CONFIG_UNUSED_SYMBOLS is not set
954# CONFIG_DEBUG_FS is not set 971# CONFIG_DEBUG_FS is not set
955# CONFIG_HEADERS_CHECK is not set 972# CONFIG_HEADERS_CHECK is not set
@@ -967,6 +984,7 @@ CONFIG_SCHED_DEBUG=y
967# CONFIG_DEBUG_OBJECTS is not set 984# CONFIG_DEBUG_OBJECTS is not set
968# CONFIG_SLUB_DEBUG_ON is not set 985# CONFIG_SLUB_DEBUG_ON is not set
969# CONFIG_SLUB_STATS is not set 986# CONFIG_SLUB_STATS is not set
987# CONFIG_DEBUG_KMEMLEAK is not set
970# CONFIG_DEBUG_RT_MUTEXES is not set 988# CONFIG_DEBUG_RT_MUTEXES is not set
971# CONFIG_RT_MUTEX_TESTER is not set 989# CONFIG_RT_MUTEX_TESTER is not set
972# CONFIG_DEBUG_SPINLOCK is not set 990# CONFIG_DEBUG_SPINLOCK is not set
@@ -985,10 +1003,12 @@ CONFIG_DEBUG_MUTEXES=y
985# CONFIG_DEBUG_LIST is not set 1003# CONFIG_DEBUG_LIST is not set
986# CONFIG_DEBUG_SG is not set 1004# CONFIG_DEBUG_SG is not set
987# CONFIG_DEBUG_NOTIFIERS is not set 1005# CONFIG_DEBUG_NOTIFIERS is not set
1006# CONFIG_DEBUG_CREDENTIALS is not set
988# CONFIG_RCU_TORTURE_TEST is not set 1007# CONFIG_RCU_TORTURE_TEST is not set
989# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1008# CONFIG_RCU_CPU_STALL_DETECTOR is not set
990# CONFIG_BACKTRACE_SELF_TEST is not set 1009# CONFIG_BACKTRACE_SELF_TEST is not set
991# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1010# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1011# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
992# CONFIG_FAULT_INJECTION is not set 1012# CONFIG_FAULT_INJECTION is not set
993# CONFIG_LATENCYTOP is not set 1013# CONFIG_LATENCYTOP is not set
994CONFIG_SYSCTL_SYSCALL_CHECK=y 1014CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1011,10 +1031,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1011# CONFIG_KMEMTRACE is not set 1031# CONFIG_KMEMTRACE is not set
1012# CONFIG_WORKQUEUE_TRACER is not set 1032# CONFIG_WORKQUEUE_TRACER is not set
1013# CONFIG_BLK_DEV_IO_TRACE is not set 1033# CONFIG_BLK_DEV_IO_TRACE is not set
1034# CONFIG_DMA_API_DEBUG is not set
1014# CONFIG_SAMPLES is not set 1035# CONFIG_SAMPLES is not set
1015CONFIG_HAVE_ARCH_KGDB=y 1036CONFIG_HAVE_ARCH_KGDB=y
1016# CONFIG_KGDB is not set 1037# CONFIG_KGDB is not set
1017# CONFIG_KMEMCHECK is not set
1018# CONFIG_PPC_DISABLE_WERROR is not set 1038# CONFIG_PPC_DISABLE_WERROR is not set
1019CONFIG_PPC_WERROR=y 1039CONFIG_PPC_WERROR=y
1020CONFIG_PRINT_STACK_DEPTH=64 1040CONFIG_PRINT_STACK_DEPTH=64
@@ -1040,7 +1060,6 @@ CONFIG_CRYPTO=y
1040# 1060#
1041# Crypto core or helper 1061# Crypto core or helper
1042# 1062#
1043# CONFIG_CRYPTO_FIPS is not set
1044# CONFIG_CRYPTO_MANAGER is not set 1063# CONFIG_CRYPTO_MANAGER is not set
1045# CONFIG_CRYPTO_MANAGER2 is not set 1064# CONFIG_CRYPTO_MANAGER2 is not set
1046# CONFIG_CRYPTO_GF128MUL is not set 1065# CONFIG_CRYPTO_GF128MUL is not set
@@ -1071,11 +1090,13 @@ CONFIG_CRYPTO=y
1071# 1090#
1072# CONFIG_CRYPTO_HMAC is not set 1091# CONFIG_CRYPTO_HMAC is not set
1073# CONFIG_CRYPTO_XCBC is not set 1092# CONFIG_CRYPTO_XCBC is not set
1093# CONFIG_CRYPTO_VMAC is not set
1074 1094
1075# 1095#
1076# Digest 1096# Digest
1077# 1097#
1078# CONFIG_CRYPTO_CRC32C is not set 1098# CONFIG_CRYPTO_CRC32C is not set
1099# CONFIG_CRYPTO_GHASH is not set
1079# CONFIG_CRYPTO_MD4 is not set 1100# CONFIG_CRYPTO_MD4 is not set
1080# CONFIG_CRYPTO_MD5 is not set 1101# CONFIG_CRYPTO_MD5 is not set
1081# CONFIG_CRYPTO_MICHAEL_MIC is not set 1102# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/85xx/mpc85xx_cds_defconfig b/arch/powerpc/configs/85xx/mpc85xx_cds_defconfig
index 158e63e8607f..9b63e258dac6 100644
--- a/arch/powerpc/configs/85xx/mpc85xx_cds_defconfig
+++ b/arch/powerpc/configs/85xx/mpc85xx_cds_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:17 2009 4# Thu Nov 5 08:20:35 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_MMU_NOHASH_32=y
25CONFIG_PPC_BOOK3E_MMU=y 26CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set 27# CONFIG_PPC_MM_SLICES is not set
27# CONFIG_SMP is not set 28# CONFIG_SMP is not set
@@ -36,6 +37,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 37CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +86,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 86#
85# RCU Subsystem 87# RCU Subsystem
86# 88#
87CONFIG_CLASSIC_RCU=y 89CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 90# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 91# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 94# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 95# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 96CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 97CONFIG_GROUP_SCHED=y
@@ -126,28 +129,29 @@ CONFIG_TIMERFD=y
126CONFIG_EVENTFD=y 129CONFIG_EVENTFD=y
127CONFIG_SHMEM=y 130CONFIG_SHMEM=y
128CONFIG_AIO=y 131CONFIG_AIO=y
129CONFIG_HAVE_PERF_COUNTERS=y 132CONFIG_HAVE_PERF_EVENTS=y
130 133
131# 134#
132# Performance Counters 135# Kernel Performance Events And Counters
133# 136#
137# CONFIG_PERF_EVENTS is not set
134# CONFIG_PERF_COUNTERS is not set 138# CONFIG_PERF_COUNTERS is not set
135CONFIG_VM_EVENT_COUNTERS=y 139CONFIG_VM_EVENT_COUNTERS=y
136CONFIG_PCI_QUIRKS=y 140CONFIG_PCI_QUIRKS=y
137CONFIG_SLUB_DEBUG=y 141CONFIG_SLUB_DEBUG=y
138# CONFIG_STRIP_ASM_SYMS is not set
139CONFIG_COMPAT_BRK=y 142CONFIG_COMPAT_BRK=y
140# CONFIG_SLAB is not set 143# CONFIG_SLAB is not set
141CONFIG_SLUB=y 144CONFIG_SLUB=y
142# CONFIG_SLOB is not set 145# CONFIG_SLOB is not set
143# CONFIG_PROFILING is not set 146# CONFIG_PROFILING is not set
144# CONFIG_MARKERS is not set
145CONFIG_HAVE_OPROFILE=y 147CONFIG_HAVE_OPROFILE=y
146CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 148CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
147CONFIG_HAVE_IOREMAP_PROT=y 149CONFIG_HAVE_IOREMAP_PROT=y
148CONFIG_HAVE_KPROBES=y 150CONFIG_HAVE_KPROBES=y
149CONFIG_HAVE_KRETPROBES=y 151CONFIG_HAVE_KRETPROBES=y
150CONFIG_HAVE_ARCH_TRACEHOOK=y 152CONFIG_HAVE_ARCH_TRACEHOOK=y
153CONFIG_HAVE_DMA_ATTRS=y
154CONFIG_HAVE_DMA_API_DEBUG=y
151 155
152# 156#
153# GCOV-based kernel profiling 157# GCOV-based kernel profiling
@@ -190,6 +194,7 @@ CONFIG_MPC85xx_CDS=y
190# CONFIG_MPC85xx_MDS is not set 194# CONFIG_MPC85xx_MDS is not set
191# CONFIG_MPC8536_DS is not set 195# CONFIG_MPC8536_DS is not set
192# CONFIG_MPC85xx_DS is not set 196# CONFIG_MPC85xx_DS is not set
197# CONFIG_MPC85xx_RDB is not set
193# CONFIG_SOCRATES is not set 198# CONFIG_SOCRATES is not set
194# CONFIG_KSI8560 is not set 199# CONFIG_KSI8560 is not set
195# CONFIG_XES_MPC85xx is not set 200# CONFIG_XES_MPC85xx is not set
@@ -245,6 +250,7 @@ CONFIG_MATH_EMULATION=y
245CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 250CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
246CONFIG_ARCH_HAS_WALK_MEMORY=y 251CONFIG_ARCH_HAS_WALK_MEMORY=y
247CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 252CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
253CONFIG_MAX_ACTIVE_REGIONS=32
248CONFIG_ARCH_FLATMEM_ENABLE=y 254CONFIG_ARCH_FLATMEM_ENABLE=y
249CONFIG_ARCH_POPULATES_NODE_MAP=y 255CONFIG_ARCH_POPULATES_NODE_MAP=y
250CONFIG_SELECT_MEMORY_MODEL=y 256CONFIG_SELECT_MEMORY_MODEL=y
@@ -262,6 +268,7 @@ CONFIG_BOUNCE=y
262CONFIG_VIRT_TO_BUS=y 268CONFIG_VIRT_TO_BUS=y
263CONFIG_HAVE_MLOCK=y 269CONFIG_HAVE_MLOCK=y
264CONFIG_HAVE_MLOCKED_PAGE_BIT=y 270CONFIG_HAVE_MLOCKED_PAGE_BIT=y
271# CONFIG_KSM is not set
265CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 272CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
266CONFIG_PPC_4K_PAGES=y 273CONFIG_PPC_4K_PAGES=y
267# CONFIG_PPC_16K_PAGES is not set 274# CONFIG_PPC_16K_PAGES is not set
@@ -359,6 +366,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
359# CONFIG_NETFILTER is not set 366# CONFIG_NETFILTER is not set
360# CONFIG_IP_DCCP is not set 367# CONFIG_IP_DCCP is not set
361# CONFIG_IP_SCTP is not set 368# CONFIG_IP_SCTP is not set
369# CONFIG_RDS is not set
362# CONFIG_TIPC is not set 370# CONFIG_TIPC is not set
363# CONFIG_ATM is not set 371# CONFIG_ATM is not set
364# CONFIG_BRIDGE is not set 372# CONFIG_BRIDGE is not set
@@ -388,6 +396,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
388# CONFIG_AF_RXRPC is not set 396# CONFIG_AF_RXRPC is not set
389CONFIG_WIRELESS=y 397CONFIG_WIRELESS=y
390# CONFIG_CFG80211 is not set 398# CONFIG_CFG80211 is not set
399CONFIG_CFG80211_DEFAULT_PS_VALUE=0
391CONFIG_WIRELESS_OLD_REGULATORY=y 400CONFIG_WIRELESS_OLD_REGULATORY=y
392# CONFIG_WIRELESS_EXT is not set 401# CONFIG_WIRELESS_EXT is not set
393# CONFIG_LIB80211 is not set 402# CONFIG_LIB80211 is not set
@@ -395,7 +404,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
395# 404#
396# CFG80211 needs to be enabled for MAC80211 405# CFG80211 needs to be enabled for MAC80211
397# 406#
398CONFIG_MAC80211_DEFAULT_PS_VALUE=0
399# CONFIG_WIMAX is not set 407# CONFIG_WIMAX is not set
400# CONFIG_RFKILL is not set 408# CONFIG_RFKILL is not set
401# CONFIG_NET_9P is not set 409# CONFIG_NET_9P is not set
@@ -408,6 +416,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
408# Generic Driver Options 416# Generic Driver Options
409# 417#
410CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 418CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
419# CONFIG_DEVTMPFS is not set
411CONFIG_STANDALONE=y 420CONFIG_STANDALONE=y
412CONFIG_PREVENT_FIRMWARE_BUILD=y 421CONFIG_PREVENT_FIRMWARE_BUILD=y
413# CONFIG_FW_LOADER is not set 422# CONFIG_FW_LOADER is not set
@@ -582,7 +591,9 @@ CONFIG_MII=y
582# CONFIG_NET_PCI is not set 591# CONFIG_NET_PCI is not set
583# CONFIG_B44 is not set 592# CONFIG_B44 is not set
584# CONFIG_KS8842 is not set 593# CONFIG_KS8842 is not set
594# CONFIG_KS8851_MLL is not set
585# CONFIG_ATL2 is not set 595# CONFIG_ATL2 is not set
596# CONFIG_XILINX_EMACLITE is not set
586CONFIG_NETDEV_1000=y 597CONFIG_NETDEV_1000=y
587# CONFIG_ACENIC is not set 598# CONFIG_ACENIC is not set
588# CONFIG_DL2K is not set 599# CONFIG_DL2K is not set
@@ -630,10 +641,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
630# CONFIG_SFC is not set 641# CONFIG_SFC is not set
631# CONFIG_BE2NET is not set 642# CONFIG_BE2NET is not set
632# CONFIG_TR is not set 643# CONFIG_TR is not set
633 644CONFIG_WLAN=y
634#
635# Wireless LAN
636#
637# CONFIG_WLAN_PRE80211 is not set 645# CONFIG_WLAN_PRE80211 is not set
638# CONFIG_WLAN_80211 is not set 646# CONFIG_WLAN_80211 is not set
639 647
@@ -737,6 +745,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
737# CONFIG_POWER_SUPPLY is not set 745# CONFIG_POWER_SUPPLY is not set
738CONFIG_HWMON=y 746CONFIG_HWMON=y
739# CONFIG_HWMON_VID is not set 747# CONFIG_HWMON_VID is not set
748# CONFIG_HWMON_DEBUG_CHIP is not set
749
750#
751# Native drivers
752#
740# CONFIG_SENSORS_I5K_AMB is not set 753# CONFIG_SENSORS_I5K_AMB is not set
741# CONFIG_SENSORS_F71805F is not set 754# CONFIG_SENSORS_F71805F is not set
742# CONFIG_SENSORS_F71882FG is not set 755# CONFIG_SENSORS_F71882FG is not set
@@ -751,9 +764,7 @@ CONFIG_HWMON=y
751# CONFIG_SENSORS_VT8231 is not set 764# CONFIG_SENSORS_VT8231 is not set
752# CONFIG_SENSORS_W83627HF is not set 765# CONFIG_SENSORS_W83627HF is not set
753# CONFIG_SENSORS_W83627EHF is not set 766# CONFIG_SENSORS_W83627EHF is not set
754# CONFIG_HWMON_DEBUG_CHIP is not set
755# CONFIG_THERMAL is not set 767# CONFIG_THERMAL is not set
756# CONFIG_THERMAL_HWMON is not set
757# CONFIG_WATCHDOG is not set 768# CONFIG_WATCHDOG is not set
758CONFIG_SSB_POSSIBLE=y 769CONFIG_SSB_POSSIBLE=y
759 770
@@ -776,6 +787,7 @@ CONFIG_SSB_POSSIBLE=y
776# Graphics support 787# Graphics support
777# 788#
778# CONFIG_AGP is not set 789# CONFIG_AGP is not set
790CONFIG_VGA_ARB=y
779# CONFIG_DRM is not set 791# CONFIG_DRM is not set
780# CONFIG_VGASTATE is not set 792# CONFIG_VGASTATE is not set
781CONFIG_VIDEO_OUTPUT_CONTROL=y 793CONFIG_VIDEO_OUTPUT_CONTROL=y
@@ -789,7 +801,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
789# CONFIG_SOUND is not set 801# CONFIG_SOUND is not set
790CONFIG_HID_SUPPORT=y 802CONFIG_HID_SUPPORT=y
791CONFIG_HID=y 803CONFIG_HID=y
792# CONFIG_HID_DEBUG is not set
793# CONFIG_HIDRAW is not set 804# CONFIG_HIDRAW is not set
794# CONFIG_HID_PID is not set 805# CONFIG_HID_PID is not set
795 806
@@ -854,6 +865,7 @@ CONFIG_FS_MBCACHE=y
854# CONFIG_GFS2_FS is not set 865# CONFIG_GFS2_FS is not set
855# CONFIG_OCFS2_FS is not set 866# CONFIG_OCFS2_FS is not set
856# CONFIG_BTRFS_FS is not set 867# CONFIG_BTRFS_FS is not set
868# CONFIG_NILFS2_FS is not set
857CONFIG_FILE_LOCKING=y 869CONFIG_FILE_LOCKING=y
858CONFIG_FSNOTIFY=y 870CONFIG_FSNOTIFY=y
859CONFIG_DNOTIFY=y 871CONFIG_DNOTIFY=y
@@ -912,7 +924,6 @@ CONFIG_MISC_FILESYSTEMS=y
912# CONFIG_ROMFS_FS is not set 924# CONFIG_ROMFS_FS is not set
913# CONFIG_SYSV_FS is not set 925# CONFIG_SYSV_FS is not set
914# CONFIG_UFS_FS is not set 926# CONFIG_UFS_FS is not set
915# CONFIG_NILFS2_FS is not set
916CONFIG_NETWORK_FILESYSTEMS=y 927CONFIG_NETWORK_FILESYSTEMS=y
917CONFIG_NFS_FS=y 928CONFIG_NFS_FS=y
918# CONFIG_NFS_V3 is not set 929# CONFIG_NFS_V3 is not set
@@ -980,6 +991,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
980CONFIG_ENABLE_MUST_CHECK=y 991CONFIG_ENABLE_MUST_CHECK=y
981CONFIG_FRAME_WARN=1024 992CONFIG_FRAME_WARN=1024
982# CONFIG_MAGIC_SYSRQ is not set 993# CONFIG_MAGIC_SYSRQ is not set
994# CONFIG_STRIP_ASM_SYMS is not set
983# CONFIG_UNUSED_SYMBOLS is not set 995# CONFIG_UNUSED_SYMBOLS is not set
984# CONFIG_DEBUG_FS is not set 996# CONFIG_DEBUG_FS is not set
985# CONFIG_HEADERS_CHECK is not set 997# CONFIG_HEADERS_CHECK is not set
@@ -997,6 +1009,7 @@ CONFIG_SCHED_DEBUG=y
997# CONFIG_DEBUG_OBJECTS is not set 1009# CONFIG_DEBUG_OBJECTS is not set
998# CONFIG_SLUB_DEBUG_ON is not set 1010# CONFIG_SLUB_DEBUG_ON is not set
999# CONFIG_SLUB_STATS is not set 1011# CONFIG_SLUB_STATS is not set
1012# CONFIG_DEBUG_KMEMLEAK is not set
1000# CONFIG_DEBUG_RT_MUTEXES is not set 1013# CONFIG_DEBUG_RT_MUTEXES is not set
1001# CONFIG_RT_MUTEX_TESTER is not set 1014# CONFIG_RT_MUTEX_TESTER is not set
1002# CONFIG_DEBUG_SPINLOCK is not set 1015# CONFIG_DEBUG_SPINLOCK is not set
@@ -1015,10 +1028,12 @@ CONFIG_DEBUG_MUTEXES=y
1015# CONFIG_DEBUG_LIST is not set 1028# CONFIG_DEBUG_LIST is not set
1016# CONFIG_DEBUG_SG is not set 1029# CONFIG_DEBUG_SG is not set
1017# CONFIG_DEBUG_NOTIFIERS is not set 1030# CONFIG_DEBUG_NOTIFIERS is not set
1031# CONFIG_DEBUG_CREDENTIALS is not set
1018# CONFIG_RCU_TORTURE_TEST is not set 1032# CONFIG_RCU_TORTURE_TEST is not set
1019# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1033# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1020# CONFIG_BACKTRACE_SELF_TEST is not set 1034# CONFIG_BACKTRACE_SELF_TEST is not set
1021# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1035# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1036# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1022# CONFIG_FAULT_INJECTION is not set 1037# CONFIG_FAULT_INJECTION is not set
1023# CONFIG_LATENCYTOP is not set 1038# CONFIG_LATENCYTOP is not set
1024CONFIG_SYSCTL_SYSCALL_CHECK=y 1039CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1041,10 +1056,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1041# CONFIG_KMEMTRACE is not set 1056# CONFIG_KMEMTRACE is not set
1042# CONFIG_WORKQUEUE_TRACER is not set 1057# CONFIG_WORKQUEUE_TRACER is not set
1043# CONFIG_BLK_DEV_IO_TRACE is not set 1058# CONFIG_BLK_DEV_IO_TRACE is not set
1059# CONFIG_DMA_API_DEBUG is not set
1044# CONFIG_SAMPLES is not set 1060# CONFIG_SAMPLES is not set
1045CONFIG_HAVE_ARCH_KGDB=y 1061CONFIG_HAVE_ARCH_KGDB=y
1046# CONFIG_KGDB is not set 1062# CONFIG_KGDB is not set
1047# CONFIG_KMEMCHECK is not set
1048# CONFIG_PPC_DISABLE_WERROR is not set 1063# CONFIG_PPC_DISABLE_WERROR is not set
1049CONFIG_PPC_WERROR=y 1064CONFIG_PPC_WERROR=y
1050CONFIG_PRINT_STACK_DEPTH=64 1065CONFIG_PRINT_STACK_DEPTH=64
@@ -1070,7 +1085,6 @@ CONFIG_CRYPTO=y
1070# 1085#
1071# Crypto core or helper 1086# Crypto core or helper
1072# 1087#
1073# CONFIG_CRYPTO_FIPS is not set
1074# CONFIG_CRYPTO_MANAGER is not set 1088# CONFIG_CRYPTO_MANAGER is not set
1075# CONFIG_CRYPTO_MANAGER2 is not set 1089# CONFIG_CRYPTO_MANAGER2 is not set
1076# CONFIG_CRYPTO_GF128MUL is not set 1090# CONFIG_CRYPTO_GF128MUL is not set
@@ -1101,11 +1115,13 @@ CONFIG_CRYPTO=y
1101# 1115#
1102# CONFIG_CRYPTO_HMAC is not set 1116# CONFIG_CRYPTO_HMAC is not set
1103# CONFIG_CRYPTO_XCBC is not set 1117# CONFIG_CRYPTO_XCBC is not set
1118# CONFIG_CRYPTO_VMAC is not set
1104 1119
1105# 1120#
1106# Digest 1121# Digest
1107# 1122#
1108# CONFIG_CRYPTO_CRC32C is not set 1123# CONFIG_CRYPTO_CRC32C is not set
1124# CONFIG_CRYPTO_GHASH is not set
1109# CONFIG_CRYPTO_MD4 is not set 1125# CONFIG_CRYPTO_MD4 is not set
1110# CONFIG_CRYPTO_MD5 is not set 1126# CONFIG_CRYPTO_MD5 is not set
1111# CONFIG_CRYPTO_MICHAEL_MIC is not set 1127# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/85xx/sbc8548_defconfig b/arch/powerpc/configs/85xx/sbc8548_defconfig
index 2726fca1d694..1b2356830173 100644
--- a/arch/powerpc/configs/85xx/sbc8548_defconfig
+++ b/arch/powerpc/configs/85xx/sbc8548_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:18 2009 4# Thu Nov 5 08:20:36 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_MMU_NOHASH_32=y
25CONFIG_PPC_BOOK3E_MMU=y 26CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set 27# CONFIG_PPC_MM_SLICES is not set
27# CONFIG_SMP is not set 28# CONFIG_SMP is not set
@@ -36,6 +37,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 37CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +86,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 86#
85# RCU Subsystem 87# RCU Subsystem
86# 88#
87CONFIG_CLASSIC_RCU=y 89CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 90# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 91# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 94# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 95# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 96CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 97CONFIG_GROUP_SCHED=y
@@ -125,27 +128,28 @@ CONFIG_TIMERFD=y
125CONFIG_EVENTFD=y 128CONFIG_EVENTFD=y
126CONFIG_SHMEM=y 129CONFIG_SHMEM=y
127CONFIG_AIO=y 130CONFIG_AIO=y
128CONFIG_HAVE_PERF_COUNTERS=y 131CONFIG_HAVE_PERF_EVENTS=y
129 132
130# 133#
131# Performance Counters 134# Kernel Performance Events And Counters
132# 135#
136# CONFIG_PERF_EVENTS is not set
133# CONFIG_PERF_COUNTERS is not set 137# CONFIG_PERF_COUNTERS is not set
134CONFIG_VM_EVENT_COUNTERS=y 138CONFIG_VM_EVENT_COUNTERS=y
135CONFIG_PCI_QUIRKS=y 139CONFIG_PCI_QUIRKS=y
136# CONFIG_STRIP_ASM_SYMS is not set
137CONFIG_COMPAT_BRK=y 140CONFIG_COMPAT_BRK=y
138CONFIG_SLAB=y 141CONFIG_SLAB=y
139# CONFIG_SLUB is not set 142# CONFIG_SLUB is not set
140# CONFIG_SLOB is not set 143# CONFIG_SLOB is not set
141# CONFIG_PROFILING is not set 144# CONFIG_PROFILING is not set
142# CONFIG_MARKERS is not set
143CONFIG_HAVE_OPROFILE=y 145CONFIG_HAVE_OPROFILE=y
144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 146CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
145CONFIG_HAVE_IOREMAP_PROT=y 147CONFIG_HAVE_IOREMAP_PROT=y
146CONFIG_HAVE_KPROBES=y 148CONFIG_HAVE_KPROBES=y
147CONFIG_HAVE_KRETPROBES=y 149CONFIG_HAVE_KRETPROBES=y
148CONFIG_HAVE_ARCH_TRACEHOOK=y 150CONFIG_HAVE_ARCH_TRACEHOOK=y
151CONFIG_HAVE_DMA_ATTRS=y
152CONFIG_HAVE_DMA_API_DEBUG=y
149 153
150# 154#
151# GCOV-based kernel profiling 155# GCOV-based kernel profiling
@@ -188,6 +192,7 @@ CONFIG_MPC85xx=y
188# CONFIG_MPC85xx_MDS is not set 192# CONFIG_MPC85xx_MDS is not set
189# CONFIG_MPC8536_DS is not set 193# CONFIG_MPC8536_DS is not set
190# CONFIG_MPC85xx_DS is not set 194# CONFIG_MPC85xx_DS is not set
195# CONFIG_MPC85xx_RDB is not set
191# CONFIG_SOCRATES is not set 196# CONFIG_SOCRATES is not set
192# CONFIG_KSI8560 is not set 197# CONFIG_KSI8560 is not set
193# CONFIG_XES_MPC85xx is not set 198# CONFIG_XES_MPC85xx is not set
@@ -242,6 +247,7 @@ CONFIG_MATH_EMULATION=y
242CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 247CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
243CONFIG_ARCH_HAS_WALK_MEMORY=y 248CONFIG_ARCH_HAS_WALK_MEMORY=y
244CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 249CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
250CONFIG_MAX_ACTIVE_REGIONS=32
245CONFIG_ARCH_FLATMEM_ENABLE=y 251CONFIG_ARCH_FLATMEM_ENABLE=y
246CONFIG_ARCH_POPULATES_NODE_MAP=y 252CONFIG_ARCH_POPULATES_NODE_MAP=y
247CONFIG_SELECT_MEMORY_MODEL=y 253CONFIG_SELECT_MEMORY_MODEL=y
@@ -259,6 +265,7 @@ CONFIG_BOUNCE=y
259CONFIG_VIRT_TO_BUS=y 265CONFIG_VIRT_TO_BUS=y
260CONFIG_HAVE_MLOCK=y 266CONFIG_HAVE_MLOCK=y
261CONFIG_HAVE_MLOCKED_PAGE_BIT=y 267CONFIG_HAVE_MLOCKED_PAGE_BIT=y
268# CONFIG_KSM is not set
262CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 269CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
263CONFIG_PPC_4K_PAGES=y 270CONFIG_PPC_4K_PAGES=y
264# CONFIG_PPC_16K_PAGES is not set 271# CONFIG_PPC_16K_PAGES is not set
@@ -355,6 +362,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
355# CONFIG_NETFILTER is not set 362# CONFIG_NETFILTER is not set
356# CONFIG_IP_DCCP is not set 363# CONFIG_IP_DCCP is not set
357# CONFIG_IP_SCTP is not set 364# CONFIG_IP_SCTP is not set
365# CONFIG_RDS is not set
358# CONFIG_TIPC is not set 366# CONFIG_TIPC is not set
359# CONFIG_ATM is not set 367# CONFIG_ATM is not set
360# CONFIG_BRIDGE is not set 368# CONFIG_BRIDGE is not set
@@ -384,6 +392,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
384# CONFIG_AF_RXRPC is not set 392# CONFIG_AF_RXRPC is not set
385CONFIG_WIRELESS=y 393CONFIG_WIRELESS=y
386# CONFIG_CFG80211 is not set 394# CONFIG_CFG80211 is not set
395CONFIG_CFG80211_DEFAULT_PS_VALUE=0
387CONFIG_WIRELESS_OLD_REGULATORY=y 396CONFIG_WIRELESS_OLD_REGULATORY=y
388# CONFIG_WIRELESS_EXT is not set 397# CONFIG_WIRELESS_EXT is not set
389# CONFIG_LIB80211 is not set 398# CONFIG_LIB80211 is not set
@@ -391,7 +400,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
391# 400#
392# CFG80211 needs to be enabled for MAC80211 401# CFG80211 needs to be enabled for MAC80211
393# 402#
394CONFIG_MAC80211_DEFAULT_PS_VALUE=0
395# CONFIG_WIMAX is not set 403# CONFIG_WIMAX is not set
396# CONFIG_RFKILL is not set 404# CONFIG_RFKILL is not set
397# CONFIG_NET_9P is not set 405# CONFIG_NET_9P is not set
@@ -404,6 +412,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
404# Generic Driver Options 412# Generic Driver Options
405# 413#
406CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 414CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
415# CONFIG_DEVTMPFS is not set
407CONFIG_STANDALONE=y 416CONFIG_STANDALONE=y
408CONFIG_PREVENT_FIRMWARE_BUILD=y 417CONFIG_PREVENT_FIRMWARE_BUILD=y
409# CONFIG_FW_LOADER is not set 418# CONFIG_FW_LOADER is not set
@@ -521,7 +530,9 @@ CONFIG_MII=y
521# CONFIG_NET_PCI is not set 530# CONFIG_NET_PCI is not set
522# CONFIG_B44 is not set 531# CONFIG_B44 is not set
523# CONFIG_KS8842 is not set 532# CONFIG_KS8842 is not set
533# CONFIG_KS8851_MLL is not set
524# CONFIG_ATL2 is not set 534# CONFIG_ATL2 is not set
535# CONFIG_XILINX_EMACLITE is not set
525CONFIG_NETDEV_1000=y 536CONFIG_NETDEV_1000=y
526# CONFIG_ACENIC is not set 537# CONFIG_ACENIC is not set
527# CONFIG_DL2K is not set 538# CONFIG_DL2K is not set
@@ -569,10 +580,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
569# CONFIG_SFC is not set 580# CONFIG_SFC is not set
570# CONFIG_BE2NET is not set 581# CONFIG_BE2NET is not set
571# CONFIG_TR is not set 582# CONFIG_TR is not set
572 583CONFIG_WLAN=y
573#
574# Wireless LAN
575#
576# CONFIG_WLAN_PRE80211 is not set 584# CONFIG_WLAN_PRE80211 is not set
577# CONFIG_WLAN_80211 is not set 585# CONFIG_WLAN_80211 is not set
578 586
@@ -676,6 +684,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
676# CONFIG_POWER_SUPPLY is not set 684# CONFIG_POWER_SUPPLY is not set
677CONFIG_HWMON=y 685CONFIG_HWMON=y
678# CONFIG_HWMON_VID is not set 686# CONFIG_HWMON_VID is not set
687# CONFIG_HWMON_DEBUG_CHIP is not set
688
689#
690# Native drivers
691#
679# CONFIG_SENSORS_I5K_AMB is not set 692# CONFIG_SENSORS_I5K_AMB is not set
680# CONFIG_SENSORS_F71805F is not set 693# CONFIG_SENSORS_F71805F is not set
681# CONFIG_SENSORS_F71882FG is not set 694# CONFIG_SENSORS_F71882FG is not set
@@ -690,9 +703,7 @@ CONFIG_HWMON=y
690# CONFIG_SENSORS_VT8231 is not set 703# CONFIG_SENSORS_VT8231 is not set
691# CONFIG_SENSORS_W83627HF is not set 704# CONFIG_SENSORS_W83627HF is not set
692# CONFIG_SENSORS_W83627EHF is not set 705# CONFIG_SENSORS_W83627EHF is not set
693# CONFIG_HWMON_DEBUG_CHIP is not set
694# CONFIG_THERMAL is not set 706# CONFIG_THERMAL is not set
695# CONFIG_THERMAL_HWMON is not set
696# CONFIG_WATCHDOG is not set 707# CONFIG_WATCHDOG is not set
697CONFIG_SSB_POSSIBLE=y 708CONFIG_SSB_POSSIBLE=y
698 709
@@ -715,6 +726,7 @@ CONFIG_SSB_POSSIBLE=y
715# Graphics support 726# Graphics support
716# 727#
717# CONFIG_AGP is not set 728# CONFIG_AGP is not set
729CONFIG_VGA_ARB=y
718# CONFIG_DRM is not set 730# CONFIG_DRM is not set
719# CONFIG_VGASTATE is not set 731# CONFIG_VGASTATE is not set
720CONFIG_VIDEO_OUTPUT_CONTROL=y 732CONFIG_VIDEO_OUTPUT_CONTROL=y
@@ -758,6 +770,7 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
758# CONFIG_GFS2_FS is not set 770# CONFIG_GFS2_FS is not set
759# CONFIG_OCFS2_FS is not set 771# CONFIG_OCFS2_FS is not set
760# CONFIG_BTRFS_FS is not set 772# CONFIG_BTRFS_FS is not set
773# CONFIG_NILFS2_FS is not set
761CONFIG_FILE_LOCKING=y 774CONFIG_FILE_LOCKING=y
762CONFIG_FSNOTIFY=y 775CONFIG_FSNOTIFY=y
763CONFIG_DNOTIFY=y 776CONFIG_DNOTIFY=y
@@ -816,7 +829,6 @@ CONFIG_MISC_FILESYSTEMS=y
816# CONFIG_ROMFS_FS is not set 829# CONFIG_ROMFS_FS is not set
817# CONFIG_SYSV_FS is not set 830# CONFIG_SYSV_FS is not set
818# CONFIG_UFS_FS is not set 831# CONFIG_UFS_FS is not set
819# CONFIG_NILFS2_FS is not set
820CONFIG_NETWORK_FILESYSTEMS=y 832CONFIG_NETWORK_FILESYSTEMS=y
821CONFIG_NFS_FS=y 833CONFIG_NFS_FS=y
822# CONFIG_NFS_V3 is not set 834# CONFIG_NFS_V3 is not set
@@ -872,6 +884,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
872CONFIG_ENABLE_MUST_CHECK=y 884CONFIG_ENABLE_MUST_CHECK=y
873CONFIG_FRAME_WARN=1024 885CONFIG_FRAME_WARN=1024
874# CONFIG_MAGIC_SYSRQ is not set 886# CONFIG_MAGIC_SYSRQ is not set
887# CONFIG_STRIP_ASM_SYMS is not set
875# CONFIG_UNUSED_SYMBOLS is not set 888# CONFIG_UNUSED_SYMBOLS is not set
876# CONFIG_DEBUG_FS is not set 889# CONFIG_DEBUG_FS is not set
877# CONFIG_HEADERS_CHECK is not set 890# CONFIG_HEADERS_CHECK is not set
@@ -887,6 +900,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
887CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 900CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
888CONFIG_TRACING_SUPPORT=y 901CONFIG_TRACING_SUPPORT=y
889# CONFIG_FTRACE is not set 902# CONFIG_FTRACE is not set
903# CONFIG_DMA_API_DEBUG is not set
890# CONFIG_SAMPLES is not set 904# CONFIG_SAMPLES is not set
891CONFIG_HAVE_ARCH_KGDB=y 905CONFIG_HAVE_ARCH_KGDB=y
892# CONFIG_PPC_DISABLE_WERROR is not set 906# CONFIG_PPC_DISABLE_WERROR is not set
@@ -907,7 +921,6 @@ CONFIG_CRYPTO=y
907# 921#
908# Crypto core or helper 922# Crypto core or helper
909# 923#
910# CONFIG_CRYPTO_FIPS is not set
911# CONFIG_CRYPTO_MANAGER is not set 924# CONFIG_CRYPTO_MANAGER is not set
912# CONFIG_CRYPTO_MANAGER2 is not set 925# CONFIG_CRYPTO_MANAGER2 is not set
913# CONFIG_CRYPTO_GF128MUL is not set 926# CONFIG_CRYPTO_GF128MUL is not set
@@ -938,11 +951,13 @@ CONFIG_CRYPTO=y
938# 951#
939# CONFIG_CRYPTO_HMAC is not set 952# CONFIG_CRYPTO_HMAC is not set
940# CONFIG_CRYPTO_XCBC is not set 953# CONFIG_CRYPTO_XCBC is not set
954# CONFIG_CRYPTO_VMAC is not set
941 955
942# 956#
943# Digest 957# Digest
944# 958#
945# CONFIG_CRYPTO_CRC32C is not set 959# CONFIG_CRYPTO_CRC32C is not set
960# CONFIG_CRYPTO_GHASH is not set
946# CONFIG_CRYPTO_MD4 is not set 961# CONFIG_CRYPTO_MD4 is not set
947# CONFIG_CRYPTO_MD5 is not set 962# CONFIG_CRYPTO_MD5 is not set
948# CONFIG_CRYPTO_MICHAEL_MIC is not set 963# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/85xx/sbc8560_defconfig b/arch/powerpc/configs/85xx/sbc8560_defconfig
index b0c469823b02..959d0281431b 100644
--- a/arch/powerpc/configs/85xx/sbc8560_defconfig
+++ b/arch/powerpc/configs/85xx/sbc8560_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:19 2009 4# Thu Nov 5 08:20:37 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_MMU_NOHASH_32=y
25CONFIG_PPC_BOOK3E_MMU=y 26CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set 27# CONFIG_PPC_MM_SLICES is not set
27# CONFIG_SMP is not set 28# CONFIG_SMP is not set
@@ -36,6 +37,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 37CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +86,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 86#
85# RCU Subsystem 87# RCU Subsystem
86# 88#
87CONFIG_CLASSIC_RCU=y 89CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 90# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 91# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 94# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 95# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 96CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 97CONFIG_GROUP_SCHED=y
@@ -126,26 +129,27 @@ CONFIG_TIMERFD=y
126CONFIG_EVENTFD=y 129CONFIG_EVENTFD=y
127CONFIG_SHMEM=y 130CONFIG_SHMEM=y
128CONFIG_AIO=y 131CONFIG_AIO=y
129CONFIG_HAVE_PERF_COUNTERS=y 132CONFIG_HAVE_PERF_EVENTS=y
130 133
131# 134#
132# Performance Counters 135# Kernel Performance Events And Counters
133# 136#
137# CONFIG_PERF_EVENTS is not set
134# CONFIG_PERF_COUNTERS is not set 138# CONFIG_PERF_COUNTERS is not set
135CONFIG_VM_EVENT_COUNTERS=y 139CONFIG_VM_EVENT_COUNTERS=y
136# CONFIG_STRIP_ASM_SYMS is not set
137CONFIG_COMPAT_BRK=y 140CONFIG_COMPAT_BRK=y
138CONFIG_SLAB=y 141CONFIG_SLAB=y
139# CONFIG_SLUB is not set 142# CONFIG_SLUB is not set
140# CONFIG_SLOB is not set 143# CONFIG_SLOB is not set
141# CONFIG_PROFILING is not set 144# CONFIG_PROFILING is not set
142# CONFIG_MARKERS is not set
143CONFIG_HAVE_OPROFILE=y 145CONFIG_HAVE_OPROFILE=y
144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 146CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
145CONFIG_HAVE_IOREMAP_PROT=y 147CONFIG_HAVE_IOREMAP_PROT=y
146CONFIG_HAVE_KPROBES=y 148CONFIG_HAVE_KPROBES=y
147CONFIG_HAVE_KRETPROBES=y 149CONFIG_HAVE_KRETPROBES=y
148CONFIG_HAVE_ARCH_TRACEHOOK=y 150CONFIG_HAVE_ARCH_TRACEHOOK=y
151CONFIG_HAVE_DMA_ATTRS=y
152CONFIG_HAVE_DMA_API_DEBUG=y
149 153
150# 154#
151# GCOV-based kernel profiling 155# GCOV-based kernel profiling
@@ -188,6 +192,7 @@ CONFIG_MPC85xx=y
188# CONFIG_MPC85xx_MDS is not set 192# CONFIG_MPC85xx_MDS is not set
189# CONFIG_MPC8536_DS is not set 193# CONFIG_MPC8536_DS is not set
190# CONFIG_MPC85xx_DS is not set 194# CONFIG_MPC85xx_DS is not set
195# CONFIG_MPC85xx_RDB is not set
191# CONFIG_SOCRATES is not set 196# CONFIG_SOCRATES is not set
192# CONFIG_KSI8560 is not set 197# CONFIG_KSI8560 is not set
193# CONFIG_XES_MPC85xx is not set 198# CONFIG_XES_MPC85xx is not set
@@ -242,6 +247,7 @@ CONFIG_BINFMT_MISC=y
242CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 247CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
243CONFIG_ARCH_HAS_WALK_MEMORY=y 248CONFIG_ARCH_HAS_WALK_MEMORY=y
244CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 249CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
250CONFIG_MAX_ACTIVE_REGIONS=32
245CONFIG_ARCH_FLATMEM_ENABLE=y 251CONFIG_ARCH_FLATMEM_ENABLE=y
246CONFIG_ARCH_POPULATES_NODE_MAP=y 252CONFIG_ARCH_POPULATES_NODE_MAP=y
247CONFIG_SELECT_MEMORY_MODEL=y 253CONFIG_SELECT_MEMORY_MODEL=y
@@ -259,6 +265,7 @@ CONFIG_BOUNCE=y
259CONFIG_VIRT_TO_BUS=y 265CONFIG_VIRT_TO_BUS=y
260CONFIG_HAVE_MLOCK=y 266CONFIG_HAVE_MLOCK=y
261CONFIG_HAVE_MLOCKED_PAGE_BIT=y 267CONFIG_HAVE_MLOCKED_PAGE_BIT=y
268# CONFIG_KSM is not set
262CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 269CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
263CONFIG_PPC_4K_PAGES=y 270CONFIG_PPC_4K_PAGES=y
264# CONFIG_PPC_16K_PAGES is not set 271# CONFIG_PPC_16K_PAGES is not set
@@ -347,6 +354,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
347# CONFIG_NETFILTER is not set 354# CONFIG_NETFILTER is not set
348# CONFIG_IP_DCCP is not set 355# CONFIG_IP_DCCP is not set
349# CONFIG_IP_SCTP is not set 356# CONFIG_IP_SCTP is not set
357# CONFIG_RDS is not set
350# CONFIG_TIPC is not set 358# CONFIG_TIPC is not set
351# CONFIG_ATM is not set 359# CONFIG_ATM is not set
352# CONFIG_BRIDGE is not set 360# CONFIG_BRIDGE is not set
@@ -376,6 +384,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
376# CONFIG_AF_RXRPC is not set 384# CONFIG_AF_RXRPC is not set
377CONFIG_WIRELESS=y 385CONFIG_WIRELESS=y
378# CONFIG_CFG80211 is not set 386# CONFIG_CFG80211 is not set
387CONFIG_CFG80211_DEFAULT_PS_VALUE=0
379CONFIG_WIRELESS_OLD_REGULATORY=y 388CONFIG_WIRELESS_OLD_REGULATORY=y
380# CONFIG_WIRELESS_EXT is not set 389# CONFIG_WIRELESS_EXT is not set
381# CONFIG_LIB80211 is not set 390# CONFIG_LIB80211 is not set
@@ -383,7 +392,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
383# 392#
384# CFG80211 needs to be enabled for MAC80211 393# CFG80211 needs to be enabled for MAC80211
385# 394#
386CONFIG_MAC80211_DEFAULT_PS_VALUE=0
387# CONFIG_WIMAX is not set 395# CONFIG_WIMAX is not set
388# CONFIG_RFKILL is not set 396# CONFIG_RFKILL is not set
389# CONFIG_NET_9P is not set 397# CONFIG_NET_9P is not set
@@ -396,6 +404,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
396# Generic Driver Options 404# Generic Driver Options
397# 405#
398CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 406CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
407# CONFIG_DEVTMPFS is not set
399CONFIG_STANDALONE=y 408CONFIG_STANDALONE=y
400CONFIG_PREVENT_FIRMWARE_BUILD=y 409CONFIG_PREVENT_FIRMWARE_BUILD=y
401# CONFIG_FW_LOADER is not set 410# CONFIG_FW_LOADER is not set
@@ -481,15 +490,14 @@ CONFIG_MII=y
481# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 490# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
482# CONFIG_B44 is not set 491# CONFIG_B44 is not set
483# CONFIG_KS8842 is not set 492# CONFIG_KS8842 is not set
493# CONFIG_KS8851_MLL is not set
494# CONFIG_XILINX_EMACLITE is not set
484CONFIG_NETDEV_1000=y 495CONFIG_NETDEV_1000=y
485CONFIG_FSL_PQ_MDIO=y 496CONFIG_FSL_PQ_MDIO=y
486CONFIG_GIANFAR=y 497CONFIG_GIANFAR=y
487# CONFIG_MV643XX_ETH is not set 498# CONFIG_MV643XX_ETH is not set
488CONFIG_NETDEV_10000=y 499CONFIG_NETDEV_10000=y
489 500CONFIG_WLAN=y
490#
491# Wireless LAN
492#
493# CONFIG_WLAN_PRE80211 is not set 501# CONFIG_WLAN_PRE80211 is not set
494# CONFIG_WLAN_80211 is not set 502# CONFIG_WLAN_80211 is not set
495 503
@@ -584,6 +592,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
584# CONFIG_POWER_SUPPLY is not set 592# CONFIG_POWER_SUPPLY is not set
585CONFIG_HWMON=y 593CONFIG_HWMON=y
586# CONFIG_HWMON_VID is not set 594# CONFIG_HWMON_VID is not set
595# CONFIG_HWMON_DEBUG_CHIP is not set
596
597#
598# Native drivers
599#
587# CONFIG_SENSORS_F71805F is not set 600# CONFIG_SENSORS_F71805F is not set
588# CONFIG_SENSORS_F71882FG is not set 601# CONFIG_SENSORS_F71882FG is not set
589# CONFIG_SENSORS_IT87 is not set 602# CONFIG_SENSORS_IT87 is not set
@@ -594,9 +607,7 @@ CONFIG_HWMON=y
594# CONFIG_SENSORS_VT1211 is not set 607# CONFIG_SENSORS_VT1211 is not set
595# CONFIG_SENSORS_W83627HF is not set 608# CONFIG_SENSORS_W83627HF is not set
596# CONFIG_SENSORS_W83627EHF is not set 609# CONFIG_SENSORS_W83627EHF is not set
597# CONFIG_HWMON_DEBUG_CHIP is not set
598# CONFIG_THERMAL is not set 610# CONFIG_THERMAL is not set
599# CONFIG_THERMAL_HWMON is not set
600# CONFIG_WATCHDOG is not set 611# CONFIG_WATCHDOG is not set
601CONFIG_SSB_POSSIBLE=y 612CONFIG_SSB_POSSIBLE=y
602 613
@@ -630,7 +641,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
630# CONFIG_SOUND is not set 641# CONFIG_SOUND is not set
631CONFIG_HID_SUPPORT=y 642CONFIG_HID_SUPPORT=y
632CONFIG_HID=y 643CONFIG_HID=y
633# CONFIG_HID_DEBUG is not set
634# CONFIG_HIDRAW is not set 644# CONFIG_HIDRAW is not set
635# CONFIG_HID_PID is not set 645# CONFIG_HID_PID is not set
636 646
@@ -721,6 +731,7 @@ CONFIG_RTC_DRV_M48T59=y
721# CONFIG_GFS2_FS is not set 731# CONFIG_GFS2_FS is not set
722# CONFIG_OCFS2_FS is not set 732# CONFIG_OCFS2_FS is not set
723# CONFIG_BTRFS_FS is not set 733# CONFIG_BTRFS_FS is not set
734# CONFIG_NILFS2_FS is not set
724CONFIG_FILE_LOCKING=y 735CONFIG_FILE_LOCKING=y
725CONFIG_FSNOTIFY=y 736CONFIG_FSNOTIFY=y
726CONFIG_DNOTIFY=y 737CONFIG_DNOTIFY=y
@@ -779,7 +790,6 @@ CONFIG_MISC_FILESYSTEMS=y
779# CONFIG_ROMFS_FS is not set 790# CONFIG_ROMFS_FS is not set
780# CONFIG_SYSV_FS is not set 791# CONFIG_SYSV_FS is not set
781# CONFIG_UFS_FS is not set 792# CONFIG_UFS_FS is not set
782# CONFIG_NILFS2_FS is not set
783CONFIG_NETWORK_FILESYSTEMS=y 793CONFIG_NETWORK_FILESYSTEMS=y
784CONFIG_NFS_FS=y 794CONFIG_NFS_FS=y
785# CONFIG_NFS_V3 is not set 795# CONFIG_NFS_V3 is not set
@@ -847,6 +857,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
847CONFIG_ENABLE_MUST_CHECK=y 857CONFIG_ENABLE_MUST_CHECK=y
848CONFIG_FRAME_WARN=1024 858CONFIG_FRAME_WARN=1024
849CONFIG_MAGIC_SYSRQ=y 859CONFIG_MAGIC_SYSRQ=y
860# CONFIG_STRIP_ASM_SYMS is not set
850# CONFIG_UNUSED_SYMBOLS is not set 861# CONFIG_UNUSED_SYMBOLS is not set
851# CONFIG_DEBUG_FS is not set 862# CONFIG_DEBUG_FS is not set
852# CONFIG_HEADERS_CHECK is not set 863# CONFIG_HEADERS_CHECK is not set
@@ -863,6 +874,7 @@ CONFIG_SCHED_DEBUG=y
863# CONFIG_TIMER_STATS is not set 874# CONFIG_TIMER_STATS is not set
864# CONFIG_DEBUG_OBJECTS is not set 875# CONFIG_DEBUG_OBJECTS is not set
865# CONFIG_DEBUG_SLAB is not set 876# CONFIG_DEBUG_SLAB is not set
877# CONFIG_DEBUG_KMEMLEAK is not set
866# CONFIG_DEBUG_RT_MUTEXES is not set 878# CONFIG_DEBUG_RT_MUTEXES is not set
867# CONFIG_RT_MUTEX_TESTER is not set 879# CONFIG_RT_MUTEX_TESTER is not set
868# CONFIG_DEBUG_SPINLOCK is not set 880# CONFIG_DEBUG_SPINLOCK is not set
@@ -881,10 +893,12 @@ CONFIG_DEBUG_MUTEXES=y
881# CONFIG_DEBUG_LIST is not set 893# CONFIG_DEBUG_LIST is not set
882# CONFIG_DEBUG_SG is not set 894# CONFIG_DEBUG_SG is not set
883# CONFIG_DEBUG_NOTIFIERS is not set 895# CONFIG_DEBUG_NOTIFIERS is not set
896# CONFIG_DEBUG_CREDENTIALS is not set
884# CONFIG_RCU_TORTURE_TEST is not set 897# CONFIG_RCU_TORTURE_TEST is not set
885# CONFIG_RCU_CPU_STALL_DETECTOR is not set 898# CONFIG_RCU_CPU_STALL_DETECTOR is not set
886# CONFIG_BACKTRACE_SELF_TEST is not set 899# CONFIG_BACKTRACE_SELF_TEST is not set
887# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 900# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
901# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
888# CONFIG_FAULT_INJECTION is not set 902# CONFIG_FAULT_INJECTION is not set
889# CONFIG_LATENCYTOP is not set 903# CONFIG_LATENCYTOP is not set
890CONFIG_SYSCTL_SYSCALL_CHECK=y 904CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -907,10 +921,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
907# CONFIG_KMEMTRACE is not set 921# CONFIG_KMEMTRACE is not set
908# CONFIG_WORKQUEUE_TRACER is not set 922# CONFIG_WORKQUEUE_TRACER is not set
909# CONFIG_BLK_DEV_IO_TRACE is not set 923# CONFIG_BLK_DEV_IO_TRACE is not set
924# CONFIG_DMA_API_DEBUG is not set
910# CONFIG_SAMPLES is not set 925# CONFIG_SAMPLES is not set
911CONFIG_HAVE_ARCH_KGDB=y 926CONFIG_HAVE_ARCH_KGDB=y
912# CONFIG_KGDB is not set 927# CONFIG_KGDB is not set
913# CONFIG_KMEMCHECK is not set
914# CONFIG_PPC_DISABLE_WERROR is not set 928# CONFIG_PPC_DISABLE_WERROR is not set
915CONFIG_PPC_WERROR=y 929CONFIG_PPC_WERROR=y
916CONFIG_PRINT_STACK_DEPTH=64 930CONFIG_PRINT_STACK_DEPTH=64
@@ -947,7 +961,6 @@ CONFIG_CRYPTO=y
947# 961#
948# Crypto core or helper 962# Crypto core or helper
949# 963#
950# CONFIG_CRYPTO_FIPS is not set
951# CONFIG_CRYPTO_MANAGER is not set 964# CONFIG_CRYPTO_MANAGER is not set
952# CONFIG_CRYPTO_MANAGER2 is not set 965# CONFIG_CRYPTO_MANAGER2 is not set
953# CONFIG_CRYPTO_GF128MUL is not set 966# CONFIG_CRYPTO_GF128MUL is not set
@@ -978,11 +991,13 @@ CONFIG_CRYPTO=y
978# 991#
979# CONFIG_CRYPTO_HMAC is not set 992# CONFIG_CRYPTO_HMAC is not set
980# CONFIG_CRYPTO_XCBC is not set 993# CONFIG_CRYPTO_XCBC is not set
994# CONFIG_CRYPTO_VMAC is not set
981 995
982# 996#
983# Digest 997# Digest
984# 998#
985# CONFIG_CRYPTO_CRC32C is not set 999# CONFIG_CRYPTO_CRC32C is not set
1000# CONFIG_CRYPTO_GHASH is not set
986# CONFIG_CRYPTO_MD4 is not set 1001# CONFIG_CRYPTO_MD4 is not set
987# CONFIG_CRYPTO_MD5 is not set 1002# CONFIG_CRYPTO_MD5 is not set
988# CONFIG_CRYPTO_MICHAEL_MIC is not set 1003# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/85xx/socrates_defconfig b/arch/powerpc/configs/85xx/socrates_defconfig
index 04c85dada845..7f5ec35bf199 100644
--- a/arch/powerpc/configs/85xx/socrates_defconfig
+++ b/arch/powerpc/configs/85xx/socrates_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:19 2009 4# Thu Nov 5 08:20:37 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_MMU_NOHASH_32=y
25CONFIG_PPC_BOOK3E_MMU=y 26CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set 27# CONFIG_PPC_MM_SLICES is not set
27# CONFIG_SMP is not set 28# CONFIG_SMP is not set
@@ -36,6 +37,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 37CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +86,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 86#
85# RCU Subsystem 87# RCU Subsystem
86# 88#
87CONFIG_CLASSIC_RCU=y 89CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 90# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 91# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 94# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 95# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=16 96CONFIG_LOG_BUF_SHIFT=16
94CONFIG_GROUP_SCHED=y 97CONFIG_GROUP_SCHED=y
@@ -124,28 +127,29 @@ CONFIG_TIMERFD=y
124CONFIG_EVENTFD=y 127CONFIG_EVENTFD=y
125CONFIG_SHMEM=y 128CONFIG_SHMEM=y
126CONFIG_AIO=y 129CONFIG_AIO=y
127CONFIG_HAVE_PERF_COUNTERS=y 130CONFIG_HAVE_PERF_EVENTS=y
128 131
129# 132#
130# Performance Counters 133# Kernel Performance Events And Counters
131# 134#
135# CONFIG_PERF_EVENTS is not set
132# CONFIG_PERF_COUNTERS is not set 136# CONFIG_PERF_COUNTERS is not set
133CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
134CONFIG_PCI_QUIRKS=y 138CONFIG_PCI_QUIRKS=y
135CONFIG_SLUB_DEBUG=y 139CONFIG_SLUB_DEBUG=y
136# CONFIG_STRIP_ASM_SYMS is not set
137CONFIG_COMPAT_BRK=y 140CONFIG_COMPAT_BRK=y
138# CONFIG_SLAB is not set 141# CONFIG_SLAB is not set
139CONFIG_SLUB=y 142CONFIG_SLUB=y
140# CONFIG_SLOB is not set 143# CONFIG_SLOB is not set
141# CONFIG_PROFILING is not set 144# CONFIG_PROFILING is not set
142# CONFIG_MARKERS is not set
143CONFIG_HAVE_OPROFILE=y 145CONFIG_HAVE_OPROFILE=y
144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 146CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
145CONFIG_HAVE_IOREMAP_PROT=y 147CONFIG_HAVE_IOREMAP_PROT=y
146CONFIG_HAVE_KPROBES=y 148CONFIG_HAVE_KPROBES=y
147CONFIG_HAVE_KRETPROBES=y 149CONFIG_HAVE_KRETPROBES=y
148CONFIG_HAVE_ARCH_TRACEHOOK=y 150CONFIG_HAVE_ARCH_TRACEHOOK=y
151CONFIG_HAVE_DMA_ATTRS=y
152CONFIG_HAVE_DMA_API_DEBUG=y
149 153
150# 154#
151# GCOV-based kernel profiling 155# GCOV-based kernel profiling
@@ -193,6 +197,7 @@ CONFIG_MPC85xx=y
193# CONFIG_MPC85xx_MDS is not set 197# CONFIG_MPC85xx_MDS is not set
194# CONFIG_MPC8536_DS is not set 198# CONFIG_MPC8536_DS is not set
195# CONFIG_MPC85xx_DS is not set 199# CONFIG_MPC85xx_DS is not set
200# CONFIG_MPC85xx_RDB is not set
196CONFIG_SOCRATES=y 201CONFIG_SOCRATES=y
197# CONFIG_KSI8560 is not set 202# CONFIG_KSI8560 is not set
198# CONFIG_XES_MPC85xx is not set 203# CONFIG_XES_MPC85xx is not set
@@ -247,6 +252,7 @@ CONFIG_MATH_EMULATION=y
247CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 252CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
248CONFIG_ARCH_HAS_WALK_MEMORY=y 253CONFIG_ARCH_HAS_WALK_MEMORY=y
249CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 254CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
255CONFIG_MAX_ACTIVE_REGIONS=32
250CONFIG_ARCH_FLATMEM_ENABLE=y 256CONFIG_ARCH_FLATMEM_ENABLE=y
251CONFIG_ARCH_POPULATES_NODE_MAP=y 257CONFIG_ARCH_POPULATES_NODE_MAP=y
252CONFIG_SELECT_MEMORY_MODEL=y 258CONFIG_SELECT_MEMORY_MODEL=y
@@ -264,6 +270,7 @@ CONFIG_BOUNCE=y
264CONFIG_VIRT_TO_BUS=y 270CONFIG_VIRT_TO_BUS=y
265CONFIG_HAVE_MLOCK=y 271CONFIG_HAVE_MLOCK=y
266CONFIG_HAVE_MLOCKED_PAGE_BIT=y 272CONFIG_HAVE_MLOCKED_PAGE_BIT=y
273# CONFIG_KSM is not set
267CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 274CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
268CONFIG_PPC_4K_PAGES=y 275CONFIG_PPC_4K_PAGES=y
269# CONFIG_PPC_16K_PAGES is not set 276# CONFIG_PPC_16K_PAGES is not set
@@ -358,6 +365,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
358# CONFIG_NETFILTER is not set 365# CONFIG_NETFILTER is not set
359# CONFIG_IP_DCCP is not set 366# CONFIG_IP_DCCP is not set
360# CONFIG_IP_SCTP is not set 367# CONFIG_IP_SCTP is not set
368# CONFIG_RDS is not set
361# CONFIG_TIPC is not set 369# CONFIG_TIPC is not set
362# CONFIG_ATM is not set 370# CONFIG_ATM is not set
363# CONFIG_BRIDGE is not set 371# CONFIG_BRIDGE is not set
@@ -396,6 +404,7 @@ CONFIG_CAN_BCM=y
396# CONFIG_AF_RXRPC is not set 404# CONFIG_AF_RXRPC is not set
397CONFIG_WIRELESS=y 405CONFIG_WIRELESS=y
398# CONFIG_CFG80211 is not set 406# CONFIG_CFG80211 is not set
407CONFIG_CFG80211_DEFAULT_PS_VALUE=0
399# CONFIG_WIRELESS_OLD_REGULATORY is not set 408# CONFIG_WIRELESS_OLD_REGULATORY is not set
400# CONFIG_WIRELESS_EXT is not set 409# CONFIG_WIRELESS_EXT is not set
401# CONFIG_LIB80211 is not set 410# CONFIG_LIB80211 is not set
@@ -403,7 +412,6 @@ CONFIG_WIRELESS=y
403# 412#
404# CFG80211 needs to be enabled for MAC80211 413# CFG80211 needs to be enabled for MAC80211
405# 414#
406CONFIG_MAC80211_DEFAULT_PS_VALUE=0
407# CONFIG_WIMAX is not set 415# CONFIG_WIMAX is not set
408# CONFIG_RFKILL is not set 416# CONFIG_RFKILL is not set
409# CONFIG_NET_9P is not set 417# CONFIG_NET_9P is not set
@@ -421,9 +429,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
421# CONFIG_CONNECTOR is not set 429# CONFIG_CONNECTOR is not set
422CONFIG_MTD=y 430CONFIG_MTD=y
423# CONFIG_MTD_DEBUG is not set 431# CONFIG_MTD_DEBUG is not set
432# CONFIG_MTD_TESTS is not set
424CONFIG_MTD_CONCAT=y 433CONFIG_MTD_CONCAT=y
425CONFIG_MTD_PARTITIONS=y 434CONFIG_MTD_PARTITIONS=y
426# CONFIG_MTD_TESTS is not set
427# CONFIG_MTD_REDBOOT_PARTS is not set 435# CONFIG_MTD_REDBOOT_PARTS is not set
428CONFIG_MTD_CMDLINE_PARTS=y 436CONFIG_MTD_CMDLINE_PARTS=y
429CONFIG_MTD_OF_PARTS=y 437CONFIG_MTD_OF_PARTS=y
@@ -482,6 +490,7 @@ CONFIG_MTD_PHYSMAP_OF=y
482# CONFIG_MTD_PMC551 is not set 490# CONFIG_MTD_PMC551 is not set
483# CONFIG_MTD_DATAFLASH is not set 491# CONFIG_MTD_DATAFLASH is not set
484# CONFIG_MTD_M25P80 is not set 492# CONFIG_MTD_M25P80 is not set
493# CONFIG_MTD_SST25L is not set
485# CONFIG_MTD_SLRAM is not set 494# CONFIG_MTD_SLRAM is not set
486# CONFIG_MTD_PHRAM is not set 495# CONFIG_MTD_PHRAM is not set
487# CONFIG_MTD_MTDRAM is not set 496# CONFIG_MTD_MTDRAM is not set
@@ -668,7 +677,9 @@ CONFIG_MII=y
668# CONFIG_B44 is not set 677# CONFIG_B44 is not set
669# CONFIG_KS8842 is not set 678# CONFIG_KS8842 is not set
670# CONFIG_KS8851 is not set 679# CONFIG_KS8851 is not set
680# CONFIG_KS8851_MLL is not set
671# CONFIG_ATL2 is not set 681# CONFIG_ATL2 is not set
682# CONFIG_XILINX_EMACLITE is not set
672CONFIG_NETDEV_1000=y 683CONFIG_NETDEV_1000=y
673# CONFIG_ACENIC is not set 684# CONFIG_ACENIC is not set
674# CONFIG_DL2K is not set 685# CONFIG_DL2K is not set
@@ -698,10 +709,7 @@ CONFIG_GIANFAR=y
698# CONFIG_JME is not set 709# CONFIG_JME is not set
699# CONFIG_NETDEV_10000 is not set 710# CONFIG_NETDEV_10000 is not set
700# CONFIG_TR is not set 711# CONFIG_TR is not set
701 712CONFIG_WLAN=y
702#
703# Wireless LAN
704#
705# CONFIG_WLAN_PRE80211 is not set 713# CONFIG_WLAN_PRE80211 is not set
706# CONFIG_WLAN_80211 is not set 714# CONFIG_WLAN_80211 is not set
707 715
@@ -765,6 +773,7 @@ CONFIG_INPUT_TOUCHSCREEN=y
765# CONFIG_TOUCHSCREEN_GUNZE is not set 773# CONFIG_TOUCHSCREEN_GUNZE is not set
766# CONFIG_TOUCHSCREEN_ELO is not set 774# CONFIG_TOUCHSCREEN_ELO is not set
767# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set 775# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
776# CONFIG_TOUCHSCREEN_MCS5000 is not set
768# CONFIG_TOUCHSCREEN_MTOUCH is not set 777# CONFIG_TOUCHSCREEN_MTOUCH is not set
769# CONFIG_TOUCHSCREEN_INEXIO is not set 778# CONFIG_TOUCHSCREEN_INEXIO is not set
770# CONFIG_TOUCHSCREEN_MK712 is not set 779# CONFIG_TOUCHSCREEN_MK712 is not set
@@ -774,7 +783,6 @@ CONFIG_INPUT_TOUCHSCREEN=y
774# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set 783# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
775# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set 784# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
776# CONFIG_TOUCHSCREEN_TSC2007 is not set 785# CONFIG_TOUCHSCREEN_TSC2007 is not set
777# CONFIG_TOUCHSCREEN_W90X900 is not set
778# CONFIG_INPUT_MISC is not set 786# CONFIG_INPUT_MISC is not set
779 787
780# 788#
@@ -834,6 +842,7 @@ CONFIG_HW_RANDOM=y
834CONFIG_DEVPORT=y 842CONFIG_DEVPORT=y
835CONFIG_I2C=y 843CONFIG_I2C=y
836CONFIG_I2C_BOARDINFO=y 844CONFIG_I2C_BOARDINFO=y
845CONFIG_I2C_COMPAT=y
837CONFIG_I2C_CHARDEV=y 846CONFIG_I2C_CHARDEV=y
838CONFIG_I2C_HELPER_AUTO=y 847CONFIG_I2C_HELPER_AUTO=y
839 848
@@ -888,9 +897,6 @@ CONFIG_I2C_MPC=y
888# Miscellaneous I2C Chip support 897# Miscellaneous I2C Chip support
889# 898#
890# CONFIG_DS1682 is not set 899# CONFIG_DS1682 is not set
891# CONFIG_SENSORS_PCF8574 is not set
892# CONFIG_PCF8575 is not set
893# CONFIG_SENSORS_PCA9539 is not set
894# CONFIG_SENSORS_TSL2550 is not set 900# CONFIG_SENSORS_TSL2550 is not set
895# CONFIG_I2C_DEBUG_CORE is not set 901# CONFIG_I2C_DEBUG_CORE is not set
896# CONFIG_I2C_DEBUG_ALGO is not set 902# CONFIG_I2C_DEBUG_ALGO is not set
@@ -921,6 +927,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
921# CONFIG_POWER_SUPPLY is not set 927# CONFIG_POWER_SUPPLY is not set
922CONFIG_HWMON=y 928CONFIG_HWMON=y
923CONFIG_HWMON_VID=y 929CONFIG_HWMON_VID=y
930CONFIG_HWMON_DEBUG_CHIP=y
931
932#
933# Native drivers
934#
924# CONFIG_SENSORS_AD7414 is not set 935# CONFIG_SENSORS_AD7414 is not set
925# CONFIG_SENSORS_AD7418 is not set 936# CONFIG_SENSORS_AD7418 is not set
926# CONFIG_SENSORS_ADCXX is not set 937# CONFIG_SENSORS_ADCXX is not set
@@ -973,6 +984,7 @@ CONFIG_SENSORS_LM75=y
973# CONFIG_SENSORS_ADS7828 is not set 984# CONFIG_SENSORS_ADS7828 is not set
974# CONFIG_SENSORS_THMC50 is not set 985# CONFIG_SENSORS_THMC50 is not set
975# CONFIG_SENSORS_TMP401 is not set 986# CONFIG_SENSORS_TMP401 is not set
987# CONFIG_SENSORS_TMP421 is not set
976# CONFIG_SENSORS_VIA686A is not set 988# CONFIG_SENSORS_VIA686A is not set
977# CONFIG_SENSORS_VT1211 is not set 989# CONFIG_SENSORS_VT1211 is not set
978# CONFIG_SENSORS_VT8231 is not set 990# CONFIG_SENSORS_VT8231 is not set
@@ -985,9 +997,7 @@ CONFIG_SENSORS_W83781D=y
985# CONFIG_SENSORS_W83627HF is not set 997# CONFIG_SENSORS_W83627HF is not set
986# CONFIG_SENSORS_W83627EHF is not set 998# CONFIG_SENSORS_W83627EHF is not set
987# CONFIG_SENSORS_LIS3_SPI is not set 999# CONFIG_SENSORS_LIS3_SPI is not set
988CONFIG_HWMON_DEBUG_CHIP=y
989# CONFIG_THERMAL is not set 1000# CONFIG_THERMAL is not set
990# CONFIG_THERMAL_HWMON is not set
991# CONFIG_WATCHDOG is not set 1001# CONFIG_WATCHDOG is not set
992CONFIG_SSB_POSSIBLE=y 1002CONFIG_SSB_POSSIBLE=y
993 1003
@@ -1006,8 +1016,10 @@ CONFIG_SSB_POSSIBLE=y
1006# CONFIG_MFD_TMIO is not set 1016# CONFIG_MFD_TMIO is not set
1007# CONFIG_PMIC_DA903X is not set 1017# CONFIG_PMIC_DA903X is not set
1008# CONFIG_MFD_WM8400 is not set 1018# CONFIG_MFD_WM8400 is not set
1019# CONFIG_MFD_WM831X is not set
1009# CONFIG_MFD_WM8350_I2C is not set 1020# CONFIG_MFD_WM8350_I2C is not set
1010# CONFIG_MFD_PCF50633 is not set 1021# CONFIG_MFD_PCF50633 is not set
1022# CONFIG_MFD_MC13783 is not set
1011# CONFIG_AB3100_CORE is not set 1023# CONFIG_AB3100_CORE is not set
1012# CONFIG_EZX_PCAP is not set 1024# CONFIG_EZX_PCAP is not set
1013# CONFIG_REGULATOR is not set 1025# CONFIG_REGULATOR is not set
@@ -1017,6 +1029,7 @@ CONFIG_SSB_POSSIBLE=y
1017# Graphics support 1029# Graphics support
1018# 1030#
1019# CONFIG_AGP is not set 1031# CONFIG_AGP is not set
1032CONFIG_VGA_ARB=y
1020# CONFIG_DRM is not set 1033# CONFIG_DRM is not set
1021# CONFIG_VGASTATE is not set 1034# CONFIG_VGASTATE is not set
1022# CONFIG_VIDEO_OUTPUT_CONTROL is not set 1035# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -1112,7 +1125,6 @@ CONFIG_FONT_8x16=y
1112# CONFIG_SOUND is not set 1125# CONFIG_SOUND is not set
1113CONFIG_HID_SUPPORT=y 1126CONFIG_HID_SUPPORT=y
1114CONFIG_HID=y 1127CONFIG_HID=y
1115# CONFIG_HID_DEBUG is not set
1116# CONFIG_HIDRAW is not set 1128# CONFIG_HIDRAW is not set
1117 1129
1118# 1130#
@@ -1135,6 +1147,7 @@ CONFIG_USB_HID=y
1135# CONFIG_HID_EZKEY is not set 1147# CONFIG_HID_EZKEY is not set
1136# CONFIG_HID_KYE is not set 1148# CONFIG_HID_KYE is not set
1137# CONFIG_HID_GYRATION is not set 1149# CONFIG_HID_GYRATION is not set
1150# CONFIG_HID_TWINHAN is not set
1138# CONFIG_HID_KENSINGTON is not set 1151# CONFIG_HID_KENSINGTON is not set
1139# CONFIG_HID_LOGITECH is not set 1152# CONFIG_HID_LOGITECH is not set
1140# CONFIG_HID_MICROSOFT is not set 1153# CONFIG_HID_MICROSOFT is not set
@@ -1184,6 +1197,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1184# CONFIG_USB_OXU210HP_HCD is not set 1197# CONFIG_USB_OXU210HP_HCD is not set
1185# CONFIG_USB_ISP116X_HCD is not set 1198# CONFIG_USB_ISP116X_HCD is not set
1186# CONFIG_USB_ISP1760_HCD is not set 1199# CONFIG_USB_ISP1760_HCD is not set
1200# CONFIG_USB_ISP1362_HCD is not set
1187CONFIG_USB_OHCI_HCD=y 1201CONFIG_USB_OHCI_HCD=y
1188CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1202CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
1189# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 1203# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
@@ -1319,6 +1333,7 @@ CONFIG_RTC_INTF_DEV=y
1319# CONFIG_RTC_DRV_R9701 is not set 1333# CONFIG_RTC_DRV_R9701 is not set
1320# CONFIG_RTC_DRV_RS5C348 is not set 1334# CONFIG_RTC_DRV_RS5C348 is not set
1321# CONFIG_RTC_DRV_DS3234 is not set 1335# CONFIG_RTC_DRV_DS3234 is not set
1336# CONFIG_RTC_DRV_PCF2123 is not set
1322 1337
1323# 1338#
1324# Platform RTC drivers 1339# Platform RTC drivers
@@ -1369,6 +1384,7 @@ CONFIG_FS_MBCACHE=y
1369# CONFIG_GFS2_FS is not set 1384# CONFIG_GFS2_FS is not set
1370# CONFIG_OCFS2_FS is not set 1385# CONFIG_OCFS2_FS is not set
1371# CONFIG_BTRFS_FS is not set 1386# CONFIG_BTRFS_FS is not set
1387# CONFIG_NILFS2_FS is not set
1372CONFIG_FILE_LOCKING=y 1388CONFIG_FILE_LOCKING=y
1373CONFIG_FSNOTIFY=y 1389CONFIG_FSNOTIFY=y
1374CONFIG_DNOTIFY=y 1390CONFIG_DNOTIFY=y
@@ -1438,7 +1454,6 @@ CONFIG_CRAMFS=y
1438# CONFIG_ROMFS_FS is not set 1454# CONFIG_ROMFS_FS is not set
1439# CONFIG_SYSV_FS is not set 1455# CONFIG_SYSV_FS is not set
1440# CONFIG_UFS_FS is not set 1456# CONFIG_UFS_FS is not set
1441# CONFIG_NILFS2_FS is not set
1442CONFIG_NETWORK_FILESYSTEMS=y 1457CONFIG_NETWORK_FILESYSTEMS=y
1443CONFIG_NFS_FS=y 1458CONFIG_NFS_FS=y
1444CONFIG_NFS_V3=y 1459CONFIG_NFS_V3=y
@@ -1552,6 +1567,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1552CONFIG_ENABLE_MUST_CHECK=y 1567CONFIG_ENABLE_MUST_CHECK=y
1553CONFIG_FRAME_WARN=1024 1568CONFIG_FRAME_WARN=1024
1554# CONFIG_MAGIC_SYSRQ is not set 1569# CONFIG_MAGIC_SYSRQ is not set
1570# CONFIG_STRIP_ASM_SYMS is not set
1555# CONFIG_UNUSED_SYMBOLS is not set 1571# CONFIG_UNUSED_SYMBOLS is not set
1556# CONFIG_DEBUG_FS is not set 1572# CONFIG_DEBUG_FS is not set
1557# CONFIG_HEADERS_CHECK is not set 1573# CONFIG_HEADERS_CHECK is not set
@@ -1569,6 +1585,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1569CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1585CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1570CONFIG_TRACING_SUPPORT=y 1586CONFIG_TRACING_SUPPORT=y
1571# CONFIG_FTRACE is not set 1587# CONFIG_FTRACE is not set
1588# CONFIG_DMA_API_DEBUG is not set
1572# CONFIG_SAMPLES is not set 1589# CONFIG_SAMPLES is not set
1573CONFIG_HAVE_ARCH_KGDB=y 1590CONFIG_HAVE_ARCH_KGDB=y
1574# CONFIG_PPC_DISABLE_WERROR is not set 1591# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1589,7 +1606,6 @@ CONFIG_CRYPTO=y
1589# 1606#
1590# Crypto core or helper 1607# Crypto core or helper
1591# 1608#
1592# CONFIG_CRYPTO_FIPS is not set
1593# CONFIG_CRYPTO_MANAGER is not set 1609# CONFIG_CRYPTO_MANAGER is not set
1594# CONFIG_CRYPTO_MANAGER2 is not set 1610# CONFIG_CRYPTO_MANAGER2 is not set
1595# CONFIG_CRYPTO_GF128MUL is not set 1611# CONFIG_CRYPTO_GF128MUL is not set
@@ -1621,11 +1637,13 @@ CONFIG_CRYPTO=y
1621# 1637#
1622# CONFIG_CRYPTO_HMAC is not set 1638# CONFIG_CRYPTO_HMAC is not set
1623# CONFIG_CRYPTO_XCBC is not set 1639# CONFIG_CRYPTO_XCBC is not set
1640# CONFIG_CRYPTO_VMAC is not set
1624 1641
1625# 1642#
1626# Digest 1643# Digest
1627# 1644#
1628# CONFIG_CRYPTO_CRC32C is not set 1645# CONFIG_CRYPTO_CRC32C is not set
1646# CONFIG_CRYPTO_GHASH is not set
1629# CONFIG_CRYPTO_MD4 is not set 1647# CONFIG_CRYPTO_MD4 is not set
1630# CONFIG_CRYPTO_MD5 is not set 1648# CONFIG_CRYPTO_MD5 is not set
1631# CONFIG_CRYPTO_MICHAEL_MIC is not set 1649# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/85xx/stx_gp3_defconfig b/arch/powerpc/configs/85xx/stx_gp3_defconfig
index e7e81d6769fe..c8327e88a987 100644
--- a/arch/powerpc/configs/85xx/stx_gp3_defconfig
+++ b/arch/powerpc/configs/85xx/stx_gp3_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:20 2009 4# Thu Nov 5 08:20:38 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_MMU_NOHASH_32=y
25CONFIG_PPC_BOOK3E_MMU=y 26CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set 27# CONFIG_PPC_MM_SLICES is not set
27# CONFIG_SMP is not set 28# CONFIG_SMP is not set
@@ -36,6 +37,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 37CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -85,11 +87,12 @@ CONFIG_SYSVIPC_SYSCTL=y
85# 87#
86# RCU Subsystem 88# RCU Subsystem
87# 89#
88CONFIG_CLASSIC_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_PREEMPT_RCU is not set 92# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set
91# CONFIG_TREE_RCU_TRACE is not set 95# CONFIG_TREE_RCU_TRACE is not set
92# CONFIG_PREEMPT_RCU_TRACE is not set
93# CONFIG_IKCONFIG is not set 96# CONFIG_IKCONFIG is not set
94CONFIG_LOG_BUF_SHIFT=14 97CONFIG_LOG_BUF_SHIFT=14
95CONFIG_GROUP_SCHED=y 98CONFIG_GROUP_SCHED=y
@@ -127,22 +130,21 @@ CONFIG_TIMERFD=y
127CONFIG_EVENTFD=y 130CONFIG_EVENTFD=y
128CONFIG_SHMEM=y 131CONFIG_SHMEM=y
129CONFIG_AIO=y 132CONFIG_AIO=y
130CONFIG_HAVE_PERF_COUNTERS=y 133CONFIG_HAVE_PERF_EVENTS=y
131 134
132# 135#
133# Performance Counters 136# Kernel Performance Events And Counters
134# 137#
138# CONFIG_PERF_EVENTS is not set
135# CONFIG_PERF_COUNTERS is not set 139# CONFIG_PERF_COUNTERS is not set
136CONFIG_VM_EVENT_COUNTERS=y 140CONFIG_VM_EVENT_COUNTERS=y
137CONFIG_PCI_QUIRKS=y 141CONFIG_PCI_QUIRKS=y
138CONFIG_SLUB_DEBUG=y 142CONFIG_SLUB_DEBUG=y
139# CONFIG_STRIP_ASM_SYMS is not set
140CONFIG_COMPAT_BRK=y 143CONFIG_COMPAT_BRK=y
141# CONFIG_SLAB is not set 144# CONFIG_SLAB is not set
142CONFIG_SLUB=y 145CONFIG_SLUB=y
143# CONFIG_SLOB is not set 146# CONFIG_SLOB is not set
144# CONFIG_PROFILING is not set 147# CONFIG_PROFILING is not set
145# CONFIG_MARKERS is not set
146CONFIG_HAVE_OPROFILE=y 148CONFIG_HAVE_OPROFILE=y
147# CONFIG_KPROBES is not set 149# CONFIG_KPROBES is not set
148CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 150CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -150,7 +152,9 @@ CONFIG_HAVE_IOREMAP_PROT=y
150CONFIG_HAVE_KPROBES=y 152CONFIG_HAVE_KPROBES=y
151CONFIG_HAVE_KRETPROBES=y 153CONFIG_HAVE_KRETPROBES=y
152CONFIG_HAVE_ARCH_TRACEHOOK=y 154CONFIG_HAVE_ARCH_TRACEHOOK=y
155CONFIG_HAVE_DMA_ATTRS=y
153CONFIG_HAVE_CLK=y 156CONFIG_HAVE_CLK=y
157CONFIG_HAVE_DMA_API_DEBUG=y
154 158
155# 159#
156# GCOV-based kernel profiling 160# GCOV-based kernel profiling
@@ -197,6 +201,7 @@ CONFIG_MPC85xx=y
197# CONFIG_MPC85xx_MDS is not set 201# CONFIG_MPC85xx_MDS is not set
198# CONFIG_MPC8536_DS is not set 202# CONFIG_MPC8536_DS is not set
199# CONFIG_MPC85xx_DS is not set 203# CONFIG_MPC85xx_DS is not set
204# CONFIG_MPC85xx_RDB is not set
200# CONFIG_SOCRATES is not set 205# CONFIG_SOCRATES is not set
201# CONFIG_KSI8560 is not set 206# CONFIG_KSI8560 is not set
202# CONFIG_XES_MPC85xx is not set 207# CONFIG_XES_MPC85xx is not set
@@ -252,6 +257,7 @@ CONFIG_MATH_EMULATION=y
252CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 257CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
253CONFIG_ARCH_HAS_WALK_MEMORY=y 258CONFIG_ARCH_HAS_WALK_MEMORY=y
254CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
260CONFIG_MAX_ACTIVE_REGIONS=32
255CONFIG_ARCH_FLATMEM_ENABLE=y 261CONFIG_ARCH_FLATMEM_ENABLE=y
256CONFIG_ARCH_POPULATES_NODE_MAP=y 262CONFIG_ARCH_POPULATES_NODE_MAP=y
257CONFIG_SELECT_MEMORY_MODEL=y 263CONFIG_SELECT_MEMORY_MODEL=y
@@ -269,6 +275,7 @@ CONFIG_BOUNCE=y
269CONFIG_VIRT_TO_BUS=y 275CONFIG_VIRT_TO_BUS=y
270CONFIG_HAVE_MLOCK=y 276CONFIG_HAVE_MLOCK=y
271CONFIG_HAVE_MLOCKED_PAGE_BIT=y 277CONFIG_HAVE_MLOCKED_PAGE_BIT=y
278# CONFIG_KSM is not set
272CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 279CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
273CONFIG_PPC_4K_PAGES=y 280CONFIG_PPC_4K_PAGES=y
274# CONFIG_PPC_16K_PAGES is not set 281# CONFIG_PPC_16K_PAGES is not set
@@ -426,6 +433,7 @@ CONFIG_IP_NF_FILTER=m
426# CONFIG_IP_NF_ARPTABLES is not set 433# CONFIG_IP_NF_ARPTABLES is not set
427# CONFIG_IP_DCCP is not set 434# CONFIG_IP_DCCP is not set
428# CONFIG_IP_SCTP is not set 435# CONFIG_IP_SCTP is not set
436# CONFIG_RDS is not set
429# CONFIG_TIPC is not set 437# CONFIG_TIPC is not set
430# CONFIG_ATM is not set 438# CONFIG_ATM is not set
431# CONFIG_BRIDGE is not set 439# CONFIG_BRIDGE is not set
@@ -455,6 +463,7 @@ CONFIG_NET_PKTGEN=y
455# CONFIG_AF_RXRPC is not set 463# CONFIG_AF_RXRPC is not set
456CONFIG_WIRELESS=y 464CONFIG_WIRELESS=y
457# CONFIG_CFG80211 is not set 465# CONFIG_CFG80211 is not set
466CONFIG_CFG80211_DEFAULT_PS_VALUE=0
458CONFIG_WIRELESS_OLD_REGULATORY=y 467CONFIG_WIRELESS_OLD_REGULATORY=y
459# CONFIG_WIRELESS_EXT is not set 468# CONFIG_WIRELESS_EXT is not set
460# CONFIG_LIB80211 is not set 469# CONFIG_LIB80211 is not set
@@ -462,7 +471,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
462# 471#
463# CFG80211 needs to be enabled for MAC80211 472# CFG80211 needs to be enabled for MAC80211
464# 473#
465CONFIG_MAC80211_DEFAULT_PS_VALUE=0
466# CONFIG_WIMAX is not set 474# CONFIG_WIMAX is not set
467# CONFIG_RFKILL is not set 475# CONFIG_RFKILL is not set
468# CONFIG_NET_9P is not set 476# CONFIG_NET_9P is not set
@@ -475,6 +483,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
475# Generic Driver Options 483# Generic Driver Options
476# 484#
477CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 485CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
486# CONFIG_DEVTMPFS is not set
478CONFIG_STANDALONE=y 487CONFIG_STANDALONE=y
479CONFIG_PREVENT_FIRMWARE_BUILD=y 488CONFIG_PREVENT_FIRMWARE_BUILD=y
480# CONFIG_FW_LOADER is not set 489# CONFIG_FW_LOADER is not set
@@ -622,6 +631,7 @@ CONFIG_SCSI_LOWLEVEL=y
622# CONFIG_ISCSI_TCP is not set 631# CONFIG_ISCSI_TCP is not set
623# CONFIG_SCSI_CXGB3_ISCSI is not set 632# CONFIG_SCSI_CXGB3_ISCSI is not set
624# CONFIG_SCSI_BNX2_ISCSI is not set 633# CONFIG_SCSI_BNX2_ISCSI is not set
634# CONFIG_BE2ISCSI is not set
625# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 635# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
626# CONFIG_SCSI_3W_9XXX is not set 636# CONFIG_SCSI_3W_9XXX is not set
627# CONFIG_SCSI_ACARD is not set 637# CONFIG_SCSI_ACARD is not set
@@ -662,7 +672,9 @@ CONFIG_SCSI_LOWLEVEL=y
662# CONFIG_SCSI_DC390T is not set 672# CONFIG_SCSI_DC390T is not set
663# CONFIG_SCSI_NSP32 is not set 673# CONFIG_SCSI_NSP32 is not set
664# CONFIG_SCSI_DEBUG is not set 674# CONFIG_SCSI_DEBUG is not set
675# CONFIG_SCSI_PMCRAID is not set
665# CONFIG_SCSI_SRP is not set 676# CONFIG_SCSI_SRP is not set
677# CONFIG_SCSI_BFA_FC is not set
666# CONFIG_SCSI_DH is not set 678# CONFIG_SCSI_DH is not set
667# CONFIG_SCSI_OSD_INITIATOR is not set 679# CONFIG_SCSI_OSD_INITIATOR is not set
668# CONFIG_ATA is not set 680# CONFIG_ATA is not set
@@ -732,8 +744,10 @@ CONFIG_NET_ETHERNET=y
732# CONFIG_NET_PCI is not set 744# CONFIG_NET_PCI is not set
733# CONFIG_B44 is not set 745# CONFIG_B44 is not set
734# CONFIG_KS8842 is not set 746# CONFIG_KS8842 is not set
747# CONFIG_KS8851_MLL is not set
735# CONFIG_NET_POCKET is not set 748# CONFIG_NET_POCKET is not set
736# CONFIG_ATL2 is not set 749# CONFIG_ATL2 is not set
750# CONFIG_XILINX_EMACLITE is not set
737# CONFIG_FS_ENET is not set 751# CONFIG_FS_ENET is not set
738CONFIG_NETDEV_1000=y 752CONFIG_NETDEV_1000=y
739# CONFIG_ACENIC is not set 753# CONFIG_ACENIC is not set
@@ -782,10 +796,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
782# CONFIG_SFC is not set 796# CONFIG_SFC is not set
783# CONFIG_BE2NET is not set 797# CONFIG_BE2NET is not set
784# CONFIG_TR is not set 798# CONFIG_TR is not set
785 799CONFIG_WLAN=y
786#
787# Wireless LAN
788#
789# CONFIG_WLAN_PRE80211 is not set 800# CONFIG_WLAN_PRE80211 is not set
790# CONFIG_WLAN_80211 is not set 801# CONFIG_WLAN_80211 is not set
791 802
@@ -827,11 +838,15 @@ CONFIG_INPUT_EVDEV=m
827# Input Device Drivers 838# Input Device Drivers
828# 839#
829CONFIG_INPUT_KEYBOARD=y 840CONFIG_INPUT_KEYBOARD=y
841# CONFIG_KEYBOARD_ADP5588 is not set
830CONFIG_KEYBOARD_ATKBD=y 842CONFIG_KEYBOARD_ATKBD=y
843# CONFIG_QT2160 is not set
831# CONFIG_KEYBOARD_LKKBD is not set 844# CONFIG_KEYBOARD_LKKBD is not set
832# CONFIG_KEYBOARD_GPIO is not set 845# CONFIG_KEYBOARD_GPIO is not set
833# CONFIG_KEYBOARD_MATRIX is not set 846# CONFIG_KEYBOARD_MATRIX is not set
847# CONFIG_KEYBOARD_MAX7359 is not set
834# CONFIG_KEYBOARD_NEWTON is not set 848# CONFIG_KEYBOARD_NEWTON is not set
849# CONFIG_KEYBOARD_OPENCORES is not set
835# CONFIG_KEYBOARD_STOWAWAY is not set 850# CONFIG_KEYBOARD_STOWAWAY is not set
836# CONFIG_KEYBOARD_SUNKBD is not set 851# CONFIG_KEYBOARD_SUNKBD is not set
837# CONFIG_KEYBOARD_XTKBD is not set 852# CONFIG_KEYBOARD_XTKBD is not set
@@ -842,6 +857,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
842CONFIG_MOUSE_PS2_SYNAPTICS=y 857CONFIG_MOUSE_PS2_SYNAPTICS=y
843CONFIG_MOUSE_PS2_TRACKPOINT=y 858CONFIG_MOUSE_PS2_TRACKPOINT=y
844# CONFIG_MOUSE_PS2_ELANTECH is not set 859# CONFIG_MOUSE_PS2_ELANTECH is not set
860# CONFIG_MOUSE_PS2_SENTELIC is not set
845# CONFIG_MOUSE_PS2_TOUCHKIT is not set 861# CONFIG_MOUSE_PS2_TOUCHKIT is not set
846# CONFIG_MOUSE_SERIAL is not set 862# CONFIG_MOUSE_SERIAL is not set
847# CONFIG_MOUSE_APPLETOUCH is not set 863# CONFIG_MOUSE_APPLETOUCH is not set
@@ -909,6 +925,7 @@ CONFIG_HW_RANDOM=m
909CONFIG_DEVPORT=y 925CONFIG_DEVPORT=y
910CONFIG_I2C=m 926CONFIG_I2C=m
911CONFIG_I2C_BOARDINFO=y 927CONFIG_I2C_BOARDINFO=y
928CONFIG_I2C_COMPAT=y
912CONFIG_I2C_CHARDEV=m 929CONFIG_I2C_CHARDEV=m
913CONFIG_I2C_HELPER_AUTO=y 930CONFIG_I2C_HELPER_AUTO=y
914CONFIG_I2C_ALGOBIT=m 931CONFIG_I2C_ALGOBIT=m
@@ -967,9 +984,6 @@ CONFIG_I2C_ALGOBIT=m
967# Miscellaneous I2C Chip support 984# Miscellaneous I2C Chip support
968# 985#
969# CONFIG_DS1682 is not set 986# CONFIG_DS1682 is not set
970# CONFIG_SENSORS_PCF8574 is not set
971# CONFIG_PCF8575 is not set
972# CONFIG_SENSORS_PCA9539 is not set
973# CONFIG_SENSORS_TSL2550 is not set 987# CONFIG_SENSORS_TSL2550 is not set
974# CONFIG_I2C_DEBUG_CORE is not set 988# CONFIG_I2C_DEBUG_CORE is not set
975# CONFIG_I2C_DEBUG_ALGO is not set 989# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1003,14 +1017,24 @@ CONFIG_GPIOLIB=y
1003# PCI GPIO expanders: 1017# PCI GPIO expanders:
1004# 1018#
1005# CONFIG_GPIO_BT8XX is not set 1019# CONFIG_GPIO_BT8XX is not set
1020# CONFIG_GPIO_LANGWELL is not set
1006 1021
1007# 1022#
1008# SPI GPIO expanders: 1023# SPI GPIO expanders:
1009# 1024#
1025
1026#
1027# AC97 GPIO expanders:
1028#
1010# CONFIG_W1 is not set 1029# CONFIG_W1 is not set
1011# CONFIG_POWER_SUPPLY is not set 1030# CONFIG_POWER_SUPPLY is not set
1012CONFIG_HWMON=y 1031CONFIG_HWMON=y
1013# CONFIG_HWMON_VID is not set 1032# CONFIG_HWMON_VID is not set
1033# CONFIG_HWMON_DEBUG_CHIP is not set
1034
1035#
1036# Native drivers
1037#
1014# CONFIG_SENSORS_AD7414 is not set 1038# CONFIG_SENSORS_AD7414 is not set
1015# CONFIG_SENSORS_AD7418 is not set 1039# CONFIG_SENSORS_AD7418 is not set
1016# CONFIG_SENSORS_ADM1021 is not set 1040# CONFIG_SENSORS_ADM1021 is not set
@@ -1061,6 +1085,7 @@ CONFIG_HWMON=y
1061# CONFIG_SENSORS_ADS7828 is not set 1085# CONFIG_SENSORS_ADS7828 is not set
1062# CONFIG_SENSORS_THMC50 is not set 1086# CONFIG_SENSORS_THMC50 is not set
1063# CONFIG_SENSORS_TMP401 is not set 1087# CONFIG_SENSORS_TMP401 is not set
1088# CONFIG_SENSORS_TMP421 is not set
1064# CONFIG_SENSORS_VIA686A is not set 1089# CONFIG_SENSORS_VIA686A is not set
1065# CONFIG_SENSORS_VT1211 is not set 1090# CONFIG_SENSORS_VT1211 is not set
1066# CONFIG_SENSORS_VT8231 is not set 1091# CONFIG_SENSORS_VT8231 is not set
@@ -1072,9 +1097,7 @@ CONFIG_HWMON=y
1072# CONFIG_SENSORS_W83L786NG is not set 1097# CONFIG_SENSORS_W83L786NG is not set
1073# CONFIG_SENSORS_W83627HF is not set 1098# CONFIG_SENSORS_W83627HF is not set
1074# CONFIG_SENSORS_W83627EHF is not set 1099# CONFIG_SENSORS_W83627EHF is not set
1075# CONFIG_HWMON_DEBUG_CHIP is not set
1076# CONFIG_THERMAL is not set 1100# CONFIG_THERMAL is not set
1077# CONFIG_THERMAL_HWMON is not set
1078# CONFIG_WATCHDOG is not set 1101# CONFIG_WATCHDOG is not set
1079CONFIG_SSB_POSSIBLE=y 1102CONFIG_SSB_POSSIBLE=y
1080 1103
@@ -1092,6 +1115,7 @@ CONFIG_SSB_POSSIBLE=y
1092# CONFIG_TPS65010 is not set 1115# CONFIG_TPS65010 is not set
1093# CONFIG_MFD_TMIO is not set 1116# CONFIG_MFD_TMIO is not set
1094# CONFIG_MFD_WM8400 is not set 1117# CONFIG_MFD_WM8400 is not set
1118# CONFIG_MFD_WM831X is not set
1095# CONFIG_MFD_WM8350_I2C is not set 1119# CONFIG_MFD_WM8350_I2C is not set
1096# CONFIG_MFD_PCF50633 is not set 1120# CONFIG_MFD_PCF50633 is not set
1097# CONFIG_AB3100_CORE is not set 1121# CONFIG_AB3100_CORE is not set
@@ -1102,6 +1126,7 @@ CONFIG_SSB_POSSIBLE=y
1102# Graphics support 1126# Graphics support
1103# 1127#
1104CONFIG_AGP=m 1128CONFIG_AGP=m
1129CONFIG_VGA_ARB=y
1105CONFIG_DRM=m 1130CONFIG_DRM=m
1106# CONFIG_DRM_TDFX is not set 1131# CONFIG_DRM_TDFX is not set
1107# CONFIG_DRM_R128 is not set 1132# CONFIG_DRM_R128 is not set
@@ -1125,7 +1150,6 @@ CONFIG_SOUND=m
1125# CONFIG_SOUND_PRIME is not set 1150# CONFIG_SOUND_PRIME is not set
1126CONFIG_HID_SUPPORT=y 1151CONFIG_HID_SUPPORT=y
1127CONFIG_HID=y 1152CONFIG_HID=y
1128# CONFIG_HID_DEBUG is not set
1129# CONFIG_HIDRAW is not set 1153# CONFIG_HIDRAW is not set
1130# CONFIG_HID_PID is not set 1154# CONFIG_HID_PID is not set
1131 1155
@@ -1190,6 +1214,7 @@ CONFIG_FS_MBCACHE=y
1190# CONFIG_GFS2_FS is not set 1214# CONFIG_GFS2_FS is not set
1191# CONFIG_OCFS2_FS is not set 1215# CONFIG_OCFS2_FS is not set
1192# CONFIG_BTRFS_FS is not set 1216# CONFIG_BTRFS_FS is not set
1217# CONFIG_NILFS2_FS is not set
1193CONFIG_FILE_LOCKING=y 1218CONFIG_FILE_LOCKING=y
1194CONFIG_FSNOTIFY=y 1219CONFIG_FSNOTIFY=y
1195CONFIG_DNOTIFY=y 1220CONFIG_DNOTIFY=y
@@ -1254,7 +1279,6 @@ CONFIG_CRAMFS=m
1254# CONFIG_ROMFS_FS is not set 1279# CONFIG_ROMFS_FS is not set
1255# CONFIG_SYSV_FS is not set 1280# CONFIG_SYSV_FS is not set
1256# CONFIG_UFS_FS is not set 1281# CONFIG_UFS_FS is not set
1257# CONFIG_NILFS2_FS is not set
1258CONFIG_NETWORK_FILESYSTEMS=y 1282CONFIG_NETWORK_FILESYSTEMS=y
1259CONFIG_NFS_FS=y 1283CONFIG_NFS_FS=y
1260CONFIG_NFS_V3=y 1284CONFIG_NFS_V3=y
@@ -1352,6 +1376,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1352CONFIG_ENABLE_MUST_CHECK=y 1376CONFIG_ENABLE_MUST_CHECK=y
1353CONFIG_FRAME_WARN=1024 1377CONFIG_FRAME_WARN=1024
1354# CONFIG_MAGIC_SYSRQ is not set 1378# CONFIG_MAGIC_SYSRQ is not set
1379# CONFIG_STRIP_ASM_SYMS is not set
1355# CONFIG_UNUSED_SYMBOLS is not set 1380# CONFIG_UNUSED_SYMBOLS is not set
1356# CONFIG_DEBUG_FS is not set 1381# CONFIG_DEBUG_FS is not set
1357# CONFIG_HEADERS_CHECK is not set 1382# CONFIG_HEADERS_CHECK is not set
@@ -1369,6 +1394,7 @@ CONFIG_SCHED_DEBUG=y
1369# CONFIG_DEBUG_OBJECTS is not set 1394# CONFIG_DEBUG_OBJECTS is not set
1370# CONFIG_SLUB_DEBUG_ON is not set 1395# CONFIG_SLUB_DEBUG_ON is not set
1371# CONFIG_SLUB_STATS is not set 1396# CONFIG_SLUB_STATS is not set
1397# CONFIG_DEBUG_KMEMLEAK is not set
1372# CONFIG_DEBUG_RT_MUTEXES is not set 1398# CONFIG_DEBUG_RT_MUTEXES is not set
1373# CONFIG_RT_MUTEX_TESTER is not set 1399# CONFIG_RT_MUTEX_TESTER is not set
1374# CONFIG_DEBUG_SPINLOCK is not set 1400# CONFIG_DEBUG_SPINLOCK is not set
@@ -1388,10 +1414,12 @@ CONFIG_SCHED_DEBUG=y
1388# CONFIG_DEBUG_LIST is not set 1414# CONFIG_DEBUG_LIST is not set
1389# CONFIG_DEBUG_SG is not set 1415# CONFIG_DEBUG_SG is not set
1390# CONFIG_DEBUG_NOTIFIERS is not set 1416# CONFIG_DEBUG_NOTIFIERS is not set
1417# CONFIG_DEBUG_CREDENTIALS is not set
1391# CONFIG_RCU_TORTURE_TEST is not set 1418# CONFIG_RCU_TORTURE_TEST is not set
1392# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1419# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1393# CONFIG_BACKTRACE_SELF_TEST is not set 1420# CONFIG_BACKTRACE_SELF_TEST is not set
1394# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1421# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1422# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1395# CONFIG_FAULT_INJECTION is not set 1423# CONFIG_FAULT_INJECTION is not set
1396# CONFIG_LATENCYTOP is not set 1424# CONFIG_LATENCYTOP is not set
1397CONFIG_SYSCTL_SYSCALL_CHECK=y 1425CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1414,10 +1442,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1414# CONFIG_KMEMTRACE is not set 1442# CONFIG_KMEMTRACE is not set
1415# CONFIG_WORKQUEUE_TRACER is not set 1443# CONFIG_WORKQUEUE_TRACER is not set
1416# CONFIG_BLK_DEV_IO_TRACE is not set 1444# CONFIG_BLK_DEV_IO_TRACE is not set
1445# CONFIG_DMA_API_DEBUG is not set
1417# CONFIG_SAMPLES is not set 1446# CONFIG_SAMPLES is not set
1418CONFIG_HAVE_ARCH_KGDB=y 1447CONFIG_HAVE_ARCH_KGDB=y
1419# CONFIG_KGDB is not set 1448# CONFIG_KGDB is not set
1420# CONFIG_KMEMCHECK is not set
1421# CONFIG_PPC_DISABLE_WERROR is not set 1449# CONFIG_PPC_DISABLE_WERROR is not set
1422CONFIG_PPC_WERROR=y 1450CONFIG_PPC_WERROR=y
1423CONFIG_PRINT_STACK_DEPTH=64 1451CONFIG_PRINT_STACK_DEPTH=64
@@ -1443,7 +1471,6 @@ CONFIG_CRYPTO=y
1443# 1471#
1444# Crypto core or helper 1472# Crypto core or helper
1445# 1473#
1446# CONFIG_CRYPTO_FIPS is not set
1447# CONFIG_CRYPTO_MANAGER is not set 1474# CONFIG_CRYPTO_MANAGER is not set
1448# CONFIG_CRYPTO_MANAGER2 is not set 1475# CONFIG_CRYPTO_MANAGER2 is not set
1449# CONFIG_CRYPTO_GF128MUL is not set 1476# CONFIG_CRYPTO_GF128MUL is not set
@@ -1475,11 +1502,13 @@ CONFIG_CRYPTO=y
1475# 1502#
1476# CONFIG_CRYPTO_HMAC is not set 1503# CONFIG_CRYPTO_HMAC is not set
1477# CONFIG_CRYPTO_XCBC is not set 1504# CONFIG_CRYPTO_XCBC is not set
1505# CONFIG_CRYPTO_VMAC is not set
1478 1506
1479# 1507#
1480# Digest 1508# Digest
1481# 1509#
1482# CONFIG_CRYPTO_CRC32C is not set 1510# CONFIG_CRYPTO_CRC32C is not set
1511# CONFIG_CRYPTO_GHASH is not set
1483# CONFIG_CRYPTO_MD4 is not set 1512# CONFIG_CRYPTO_MD4 is not set
1484# CONFIG_CRYPTO_MD5 is not set 1513# CONFIG_CRYPTO_MD5 is not set
1485# CONFIG_CRYPTO_MICHAEL_MIC is not set 1514# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/85xx/tqm8540_defconfig b/arch/powerpc/configs/85xx/tqm8540_defconfig
index 2c407523aad2..82563703d5e3 100644
--- a/arch/powerpc/configs/85xx/tqm8540_defconfig
+++ b/arch/powerpc/configs/85xx/tqm8540_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:21 2009 4# Thu Nov 5 08:20:39 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_MMU_NOHASH_32=y
25CONFIG_PPC_BOOK3E_MMU=y 26CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set 27# CONFIG_PPC_MM_SLICES is not set
27# CONFIG_SMP is not set 28# CONFIG_SMP is not set
@@ -36,6 +37,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 37CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +86,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 86#
85# RCU Subsystem 87# RCU Subsystem
86# 88#
87CONFIG_CLASSIC_RCU=y 89CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 90# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 91# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 94# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 95# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 96CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 97CONFIG_GROUP_SCHED=y
@@ -124,28 +127,29 @@ CONFIG_TIMERFD=y
124CONFIG_EVENTFD=y 127CONFIG_EVENTFD=y
125CONFIG_SHMEM=y 128CONFIG_SHMEM=y
126CONFIG_AIO=y 129CONFIG_AIO=y
127CONFIG_HAVE_PERF_COUNTERS=y 130CONFIG_HAVE_PERF_EVENTS=y
128 131
129# 132#
130# Performance Counters 133# Kernel Performance Events And Counters
131# 134#
135# CONFIG_PERF_EVENTS is not set
132# CONFIG_PERF_COUNTERS is not set 136# CONFIG_PERF_COUNTERS is not set
133CONFIG_VM_EVENT_COUNTERS=y 137CONFIG_VM_EVENT_COUNTERS=y
134CONFIG_PCI_QUIRKS=y 138CONFIG_PCI_QUIRKS=y
135CONFIG_SLUB_DEBUG=y 139CONFIG_SLUB_DEBUG=y
136# CONFIG_STRIP_ASM_SYMS is not set
137CONFIG_COMPAT_BRK=y 140CONFIG_COMPAT_BRK=y
138# CONFIG_SLAB is not set 141# CONFIG_SLAB is not set
139CONFIG_SLUB=y 142CONFIG_SLUB=y
140# CONFIG_SLOB is not set 143# CONFIG_SLOB is not set
141# CONFIG_PROFILING is not set 144# CONFIG_PROFILING is not set
142# CONFIG_MARKERS is not set
143CONFIG_HAVE_OPROFILE=y 145CONFIG_HAVE_OPROFILE=y
144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 146CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
145CONFIG_HAVE_IOREMAP_PROT=y 147CONFIG_HAVE_IOREMAP_PROT=y
146CONFIG_HAVE_KPROBES=y 148CONFIG_HAVE_KPROBES=y
147CONFIG_HAVE_KRETPROBES=y 149CONFIG_HAVE_KRETPROBES=y
148CONFIG_HAVE_ARCH_TRACEHOOK=y 150CONFIG_HAVE_ARCH_TRACEHOOK=y
151CONFIG_HAVE_DMA_ATTRS=y
152CONFIG_HAVE_DMA_API_DEBUG=y
149 153
150# 154#
151# GCOV-based kernel profiling 155# GCOV-based kernel profiling
@@ -188,6 +192,7 @@ CONFIG_MPC85xx=y
188# CONFIG_MPC85xx_MDS is not set 192# CONFIG_MPC85xx_MDS is not set
189# CONFIG_MPC8536_DS is not set 193# CONFIG_MPC8536_DS is not set
190# CONFIG_MPC85xx_DS is not set 194# CONFIG_MPC85xx_DS is not set
195# CONFIG_MPC85xx_RDB is not set
191# CONFIG_SOCRATES is not set 196# CONFIG_SOCRATES is not set
192# CONFIG_KSI8560 is not set 197# CONFIG_KSI8560 is not set
193# CONFIG_XES_MPC85xx is not set 198# CONFIG_XES_MPC85xx is not set
@@ -243,6 +248,7 @@ CONFIG_MATH_EMULATION=y
243CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 248CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
244CONFIG_ARCH_HAS_WALK_MEMORY=y 249CONFIG_ARCH_HAS_WALK_MEMORY=y
245CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 250CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
251CONFIG_MAX_ACTIVE_REGIONS=32
246CONFIG_ARCH_FLATMEM_ENABLE=y 252CONFIG_ARCH_FLATMEM_ENABLE=y
247CONFIG_ARCH_POPULATES_NODE_MAP=y 253CONFIG_ARCH_POPULATES_NODE_MAP=y
248CONFIG_SELECT_MEMORY_MODEL=y 254CONFIG_SELECT_MEMORY_MODEL=y
@@ -260,6 +266,7 @@ CONFIG_BOUNCE=y
260CONFIG_VIRT_TO_BUS=y 266CONFIG_VIRT_TO_BUS=y
261CONFIG_HAVE_MLOCK=y 267CONFIG_HAVE_MLOCK=y
262CONFIG_HAVE_MLOCKED_PAGE_BIT=y 268CONFIG_HAVE_MLOCKED_PAGE_BIT=y
269# CONFIG_KSM is not set
263CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 270CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
264CONFIG_PPC_4K_PAGES=y 271CONFIG_PPC_4K_PAGES=y
265# CONFIG_PPC_16K_PAGES is not set 272# CONFIG_PPC_16K_PAGES is not set
@@ -354,6 +361,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
354# CONFIG_NETFILTER is not set 361# CONFIG_NETFILTER is not set
355# CONFIG_IP_DCCP is not set 362# CONFIG_IP_DCCP is not set
356# CONFIG_IP_SCTP is not set 363# CONFIG_IP_SCTP is not set
364# CONFIG_RDS is not set
357# CONFIG_TIPC is not set 365# CONFIG_TIPC is not set
358# CONFIG_ATM is not set 366# CONFIG_ATM is not set
359# CONFIG_BRIDGE is not set 367# CONFIG_BRIDGE is not set
@@ -383,6 +391,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
383# CONFIG_AF_RXRPC is not set 391# CONFIG_AF_RXRPC is not set
384CONFIG_WIRELESS=y 392CONFIG_WIRELESS=y
385# CONFIG_CFG80211 is not set 393# CONFIG_CFG80211 is not set
394CONFIG_CFG80211_DEFAULT_PS_VALUE=0
386CONFIG_WIRELESS_OLD_REGULATORY=y 395CONFIG_WIRELESS_OLD_REGULATORY=y
387# CONFIG_WIRELESS_EXT is not set 396# CONFIG_WIRELESS_EXT is not set
388# CONFIG_LIB80211 is not set 397# CONFIG_LIB80211 is not set
@@ -390,7 +399,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
390# 399#
391# CFG80211 needs to be enabled for MAC80211 400# CFG80211 needs to be enabled for MAC80211
392# 401#
393CONFIG_MAC80211_DEFAULT_PS_VALUE=0
394# CONFIG_WIMAX is not set 402# CONFIG_WIMAX is not set
395# CONFIG_RFKILL is not set 403# CONFIG_RFKILL is not set
396# CONFIG_NET_9P is not set 404# CONFIG_NET_9P is not set
@@ -677,9 +685,11 @@ CONFIG_E100=y
677# CONFIG_SUNDANCE is not set 685# CONFIG_SUNDANCE is not set
678# CONFIG_TLAN is not set 686# CONFIG_TLAN is not set
679# CONFIG_KS8842 is not set 687# CONFIG_KS8842 is not set
688# CONFIG_KS8851_MLL is not set
680# CONFIG_VIA_RHINE is not set 689# CONFIG_VIA_RHINE is not set
681# CONFIG_SC92031 is not set 690# CONFIG_SC92031 is not set
682# CONFIG_ATL2 is not set 691# CONFIG_ATL2 is not set
692# CONFIG_XILINX_EMACLITE is not set
683CONFIG_NETDEV_1000=y 693CONFIG_NETDEV_1000=y
684# CONFIG_ACENIC is not set 694# CONFIG_ACENIC is not set
685# CONFIG_DL2K is not set 695# CONFIG_DL2K is not set
@@ -727,10 +737,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
727# CONFIG_SFC is not set 737# CONFIG_SFC is not set
728# CONFIG_BE2NET is not set 738# CONFIG_BE2NET is not set
729# CONFIG_TR is not set 739# CONFIG_TR is not set
730 740CONFIG_WLAN=y
731#
732# Wireless LAN
733#
734# CONFIG_WLAN_PRE80211 is not set 741# CONFIG_WLAN_PRE80211 is not set
735# CONFIG_WLAN_80211 is not set 742# CONFIG_WLAN_80211 is not set
736 743
@@ -824,6 +831,7 @@ CONFIG_GEN_RTC=y
824CONFIG_DEVPORT=y 831CONFIG_DEVPORT=y
825CONFIG_I2C=y 832CONFIG_I2C=y
826CONFIG_I2C_BOARDINFO=y 833CONFIG_I2C_BOARDINFO=y
834CONFIG_I2C_COMPAT=y
827CONFIG_I2C_CHARDEV=y 835CONFIG_I2C_CHARDEV=y
828CONFIG_I2C_HELPER_AUTO=y 836CONFIG_I2C_HELPER_AUTO=y
829 837
@@ -876,9 +884,6 @@ CONFIG_I2C_MPC=y
876# Miscellaneous I2C Chip support 884# Miscellaneous I2C Chip support
877# 885#
878# CONFIG_DS1682 is not set 886# CONFIG_DS1682 is not set
879# CONFIG_SENSORS_PCF8574 is not set
880# CONFIG_PCF8575 is not set
881# CONFIG_SENSORS_PCA9539 is not set
882# CONFIG_SENSORS_TSL2550 is not set 887# CONFIG_SENSORS_TSL2550 is not set
883# CONFIG_I2C_DEBUG_CORE is not set 888# CONFIG_I2C_DEBUG_CORE is not set
884# CONFIG_I2C_DEBUG_ALGO is not set 889# CONFIG_I2C_DEBUG_ALGO is not set
@@ -896,6 +901,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
896# CONFIG_POWER_SUPPLY is not set 901# CONFIG_POWER_SUPPLY is not set
897CONFIG_HWMON=y 902CONFIG_HWMON=y
898# CONFIG_HWMON_VID is not set 903# CONFIG_HWMON_VID is not set
904CONFIG_HWMON_DEBUG_CHIP=y
905
906#
907# Native drivers
908#
899# CONFIG_SENSORS_AD7414 is not set 909# CONFIG_SENSORS_AD7414 is not set
900# CONFIG_SENSORS_AD7418 is not set 910# CONFIG_SENSORS_AD7418 is not set
901# CONFIG_SENSORS_ADM1021 is not set 911# CONFIG_SENSORS_ADM1021 is not set
@@ -945,6 +955,7 @@ CONFIG_SENSORS_LM75=y
945# CONFIG_SENSORS_ADS7828 is not set 955# CONFIG_SENSORS_ADS7828 is not set
946# CONFIG_SENSORS_THMC50 is not set 956# CONFIG_SENSORS_THMC50 is not set
947# CONFIG_SENSORS_TMP401 is not set 957# CONFIG_SENSORS_TMP401 is not set
958# CONFIG_SENSORS_TMP421 is not set
948# CONFIG_SENSORS_VIA686A is not set 959# CONFIG_SENSORS_VIA686A is not set
949# CONFIG_SENSORS_VT1211 is not set 960# CONFIG_SENSORS_VT1211 is not set
950# CONFIG_SENSORS_VT8231 is not set 961# CONFIG_SENSORS_VT8231 is not set
@@ -956,9 +967,7 @@ CONFIG_SENSORS_LM75=y
956# CONFIG_SENSORS_W83L786NG is not set 967# CONFIG_SENSORS_W83L786NG is not set
957# CONFIG_SENSORS_W83627HF is not set 968# CONFIG_SENSORS_W83627HF is not set
958# CONFIG_SENSORS_W83627EHF is not set 969# CONFIG_SENSORS_W83627EHF is not set
959CONFIG_HWMON_DEBUG_CHIP=y
960# CONFIG_THERMAL is not set 970# CONFIG_THERMAL is not set
961# CONFIG_THERMAL_HWMON is not set
962# CONFIG_WATCHDOG is not set 971# CONFIG_WATCHDOG is not set
963CONFIG_SSB_POSSIBLE=y 972CONFIG_SSB_POSSIBLE=y
964 973
@@ -977,6 +986,7 @@ CONFIG_SSB_POSSIBLE=y
977# CONFIG_MFD_TMIO is not set 986# CONFIG_MFD_TMIO is not set
978# CONFIG_PMIC_DA903X is not set 987# CONFIG_PMIC_DA903X is not set
979# CONFIG_MFD_WM8400 is not set 988# CONFIG_MFD_WM8400 is not set
989# CONFIG_MFD_WM831X is not set
980# CONFIG_MFD_WM8350_I2C is not set 990# CONFIG_MFD_WM8350_I2C is not set
981# CONFIG_MFD_PCF50633 is not set 991# CONFIG_MFD_PCF50633 is not set
982# CONFIG_AB3100_CORE is not set 992# CONFIG_AB3100_CORE is not set
@@ -987,6 +997,7 @@ CONFIG_SSB_POSSIBLE=y
987# Graphics support 997# Graphics support
988# 998#
989# CONFIG_AGP is not set 999# CONFIG_AGP is not set
1000CONFIG_VGA_ARB=y
990# CONFIG_DRM is not set 1001# CONFIG_DRM is not set
991# CONFIG_VGASTATE is not set 1002# CONFIG_VGASTATE is not set
992# CONFIG_VIDEO_OUTPUT_CONTROL is not set 1003# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -1000,7 +1011,6 @@ CONFIG_SSB_POSSIBLE=y
1000# CONFIG_SOUND is not set 1011# CONFIG_SOUND is not set
1001CONFIG_HID_SUPPORT=y 1012CONFIG_HID_SUPPORT=y
1002CONFIG_HID=y 1013CONFIG_HID=y
1003# CONFIG_HID_DEBUG is not set
1004# CONFIG_HIDRAW is not set 1014# CONFIG_HIDRAW is not set
1005# CONFIG_HID_PID is not set 1015# CONFIG_HID_PID is not set
1006 1016
@@ -1065,6 +1075,7 @@ CONFIG_FS_MBCACHE=y
1065# CONFIG_GFS2_FS is not set 1075# CONFIG_GFS2_FS is not set
1066# CONFIG_OCFS2_FS is not set 1076# CONFIG_OCFS2_FS is not set
1067# CONFIG_BTRFS_FS is not set 1077# CONFIG_BTRFS_FS is not set
1078# CONFIG_NILFS2_FS is not set
1068CONFIG_FILE_LOCKING=y 1079CONFIG_FILE_LOCKING=y
1069CONFIG_FSNOTIFY=y 1080CONFIG_FSNOTIFY=y
1070CONFIG_DNOTIFY=y 1081CONFIG_DNOTIFY=y
@@ -1134,7 +1145,6 @@ CONFIG_CRAMFS=y
1134# CONFIG_ROMFS_FS is not set 1145# CONFIG_ROMFS_FS is not set
1135# CONFIG_SYSV_FS is not set 1146# CONFIG_SYSV_FS is not set
1136# CONFIG_UFS_FS is not set 1147# CONFIG_UFS_FS is not set
1137# CONFIG_NILFS2_FS is not set
1138CONFIG_NETWORK_FILESYSTEMS=y 1148CONFIG_NETWORK_FILESYSTEMS=y
1139CONFIG_NFS_FS=y 1149CONFIG_NFS_FS=y
1140# CONFIG_NFS_V3 is not set 1150# CONFIG_NFS_V3 is not set
@@ -1203,6 +1213,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1203CONFIG_ENABLE_MUST_CHECK=y 1213CONFIG_ENABLE_MUST_CHECK=y
1204CONFIG_FRAME_WARN=1024 1214CONFIG_FRAME_WARN=1024
1205# CONFIG_MAGIC_SYSRQ is not set 1215# CONFIG_MAGIC_SYSRQ is not set
1216# CONFIG_STRIP_ASM_SYMS is not set
1206# CONFIG_UNUSED_SYMBOLS is not set 1217# CONFIG_UNUSED_SYMBOLS is not set
1207# CONFIG_DEBUG_FS is not set 1218# CONFIG_DEBUG_FS is not set
1208# CONFIG_HEADERS_CHECK is not set 1219# CONFIG_HEADERS_CHECK is not set
@@ -1220,6 +1231,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1220CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1231CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1221CONFIG_TRACING_SUPPORT=y 1232CONFIG_TRACING_SUPPORT=y
1222# CONFIG_FTRACE is not set 1233# CONFIG_FTRACE is not set
1234# CONFIG_DMA_API_DEBUG is not set
1223# CONFIG_SAMPLES is not set 1235# CONFIG_SAMPLES is not set
1224CONFIG_HAVE_ARCH_KGDB=y 1236CONFIG_HAVE_ARCH_KGDB=y
1225# CONFIG_PPC_DISABLE_WERROR is not set 1237# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1240,7 +1252,6 @@ CONFIG_CRYPTO=y
1240# 1252#
1241# Crypto core or helper 1253# Crypto core or helper
1242# 1254#
1243# CONFIG_CRYPTO_FIPS is not set
1244# CONFIG_CRYPTO_MANAGER is not set 1255# CONFIG_CRYPTO_MANAGER is not set
1245# CONFIG_CRYPTO_MANAGER2 is not set 1256# CONFIG_CRYPTO_MANAGER2 is not set
1246# CONFIG_CRYPTO_GF128MUL is not set 1257# CONFIG_CRYPTO_GF128MUL is not set
@@ -1271,11 +1282,13 @@ CONFIG_CRYPTO=y
1271# 1282#
1272# CONFIG_CRYPTO_HMAC is not set 1283# CONFIG_CRYPTO_HMAC is not set
1273# CONFIG_CRYPTO_XCBC is not set 1284# CONFIG_CRYPTO_XCBC is not set
1285# CONFIG_CRYPTO_VMAC is not set
1274 1286
1275# 1287#
1276# Digest 1288# Digest
1277# 1289#
1278# CONFIG_CRYPTO_CRC32C is not set 1290# CONFIG_CRYPTO_CRC32C is not set
1291# CONFIG_CRYPTO_GHASH is not set
1279# CONFIG_CRYPTO_MD4 is not set 1292# CONFIG_CRYPTO_MD4 is not set
1280# CONFIG_CRYPTO_MD5 is not set 1293# CONFIG_CRYPTO_MD5 is not set
1281# CONFIG_CRYPTO_MICHAEL_MIC is not set 1294# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/85xx/tqm8541_defconfig b/arch/powerpc/configs/85xx/tqm8541_defconfig
index 845731dc51c6..91d85d733827 100644
--- a/arch/powerpc/configs/85xx/tqm8541_defconfig
+++ b/arch/powerpc/configs/85xx/tqm8541_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:22 2009 4# Thu Nov 5 08:20:40 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_MMU_NOHASH_32=y
25CONFIG_PPC_BOOK3E_MMU=y 26CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set 27# CONFIG_PPC_MM_SLICES is not set
27# CONFIG_SMP is not set 28# CONFIG_SMP is not set
@@ -36,6 +37,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 37CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -85,11 +87,12 @@ CONFIG_SYSVIPC_SYSCTL=y
85# 87#
86# RCU Subsystem 88# RCU Subsystem
87# 89#
88CONFIG_CLASSIC_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_PREEMPT_RCU is not set 92# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set
91# CONFIG_TREE_RCU_TRACE is not set 95# CONFIG_TREE_RCU_TRACE is not set
92# CONFIG_PREEMPT_RCU_TRACE is not set
93# CONFIG_IKCONFIG is not set 96# CONFIG_IKCONFIG is not set
94CONFIG_LOG_BUF_SHIFT=14 97CONFIG_LOG_BUF_SHIFT=14
95CONFIG_GROUP_SCHED=y 98CONFIG_GROUP_SCHED=y
@@ -125,29 +128,30 @@ CONFIG_TIMERFD=y
125CONFIG_EVENTFD=y 128CONFIG_EVENTFD=y
126CONFIG_SHMEM=y 129CONFIG_SHMEM=y
127CONFIG_AIO=y 130CONFIG_AIO=y
128CONFIG_HAVE_PERF_COUNTERS=y 131CONFIG_HAVE_PERF_EVENTS=y
129 132
130# 133#
131# Performance Counters 134# Kernel Performance Events And Counters
132# 135#
136# CONFIG_PERF_EVENTS is not set
133# CONFIG_PERF_COUNTERS is not set 137# CONFIG_PERF_COUNTERS is not set
134CONFIG_VM_EVENT_COUNTERS=y 138CONFIG_VM_EVENT_COUNTERS=y
135CONFIG_PCI_QUIRKS=y 139CONFIG_PCI_QUIRKS=y
136CONFIG_SLUB_DEBUG=y 140CONFIG_SLUB_DEBUG=y
137# CONFIG_STRIP_ASM_SYMS is not set
138CONFIG_COMPAT_BRK=y 141CONFIG_COMPAT_BRK=y
139# CONFIG_SLAB is not set 142# CONFIG_SLAB is not set
140CONFIG_SLUB=y 143CONFIG_SLUB=y
141# CONFIG_SLOB is not set 144# CONFIG_SLOB is not set
142# CONFIG_PROFILING is not set 145# CONFIG_PROFILING is not set
143# CONFIG_MARKERS is not set
144CONFIG_HAVE_OPROFILE=y 146CONFIG_HAVE_OPROFILE=y
145CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 147CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
146CONFIG_HAVE_IOREMAP_PROT=y 148CONFIG_HAVE_IOREMAP_PROT=y
147CONFIG_HAVE_KPROBES=y 149CONFIG_HAVE_KPROBES=y
148CONFIG_HAVE_KRETPROBES=y 150CONFIG_HAVE_KRETPROBES=y
149CONFIG_HAVE_ARCH_TRACEHOOK=y 151CONFIG_HAVE_ARCH_TRACEHOOK=y
152CONFIG_HAVE_DMA_ATTRS=y
150CONFIG_HAVE_CLK=y 153CONFIG_HAVE_CLK=y
154CONFIG_HAVE_DMA_API_DEBUG=y
151 155
152# 156#
153# GCOV-based kernel profiling 157# GCOV-based kernel profiling
@@ -190,6 +194,7 @@ CONFIG_MPC85xx=y
190# CONFIG_MPC85xx_MDS is not set 194# CONFIG_MPC85xx_MDS is not set
191# CONFIG_MPC8536_DS is not set 195# CONFIG_MPC8536_DS is not set
192# CONFIG_MPC85xx_DS is not set 196# CONFIG_MPC85xx_DS is not set
197# CONFIG_MPC85xx_RDB is not set
193# CONFIG_SOCRATES is not set 198# CONFIG_SOCRATES is not set
194# CONFIG_KSI8560 is not set 199# CONFIG_KSI8560 is not set
195# CONFIG_XES_MPC85xx is not set 200# CONFIG_XES_MPC85xx is not set
@@ -246,6 +251,7 @@ CONFIG_MATH_EMULATION=y
246CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 251CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
247CONFIG_ARCH_HAS_WALK_MEMORY=y 252CONFIG_ARCH_HAS_WALK_MEMORY=y
248CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 253CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
254CONFIG_MAX_ACTIVE_REGIONS=32
249CONFIG_ARCH_FLATMEM_ENABLE=y 255CONFIG_ARCH_FLATMEM_ENABLE=y
250CONFIG_ARCH_POPULATES_NODE_MAP=y 256CONFIG_ARCH_POPULATES_NODE_MAP=y
251CONFIG_SELECT_MEMORY_MODEL=y 257CONFIG_SELECT_MEMORY_MODEL=y
@@ -263,6 +269,7 @@ CONFIG_BOUNCE=y
263CONFIG_VIRT_TO_BUS=y 269CONFIG_VIRT_TO_BUS=y
264CONFIG_HAVE_MLOCK=y 270CONFIG_HAVE_MLOCK=y
265CONFIG_HAVE_MLOCKED_PAGE_BIT=y 271CONFIG_HAVE_MLOCKED_PAGE_BIT=y
272# CONFIG_KSM is not set
266CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 273CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
267CONFIG_PPC_4K_PAGES=y 274CONFIG_PPC_4K_PAGES=y
268# CONFIG_PPC_16K_PAGES is not set 275# CONFIG_PPC_16K_PAGES is not set
@@ -357,6 +364,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
357# CONFIG_NETFILTER is not set 364# CONFIG_NETFILTER is not set
358# CONFIG_IP_DCCP is not set 365# CONFIG_IP_DCCP is not set
359# CONFIG_IP_SCTP is not set 366# CONFIG_IP_SCTP is not set
367# CONFIG_RDS is not set
360# CONFIG_TIPC is not set 368# CONFIG_TIPC is not set
361# CONFIG_ATM is not set 369# CONFIG_ATM is not set
362# CONFIG_BRIDGE is not set 370# CONFIG_BRIDGE is not set
@@ -386,6 +394,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
386# CONFIG_AF_RXRPC is not set 394# CONFIG_AF_RXRPC is not set
387CONFIG_WIRELESS=y 395CONFIG_WIRELESS=y
388# CONFIG_CFG80211 is not set 396# CONFIG_CFG80211 is not set
397CONFIG_CFG80211_DEFAULT_PS_VALUE=0
389CONFIG_WIRELESS_OLD_REGULATORY=y 398CONFIG_WIRELESS_OLD_REGULATORY=y
390# CONFIG_WIRELESS_EXT is not set 399# CONFIG_WIRELESS_EXT is not set
391# CONFIG_LIB80211 is not set 400# CONFIG_LIB80211 is not set
@@ -393,7 +402,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
393# 402#
394# CFG80211 needs to be enabled for MAC80211 403# CFG80211 needs to be enabled for MAC80211
395# 404#
396CONFIG_MAC80211_DEFAULT_PS_VALUE=0
397# CONFIG_WIMAX is not set 405# CONFIG_WIMAX is not set
398# CONFIG_RFKILL is not set 406# CONFIG_RFKILL is not set
399# CONFIG_NET_9P is not set 407# CONFIG_NET_9P is not set
@@ -681,9 +689,11 @@ CONFIG_E100=y
681# CONFIG_SUNDANCE is not set 689# CONFIG_SUNDANCE is not set
682# CONFIG_TLAN is not set 690# CONFIG_TLAN is not set
683# CONFIG_KS8842 is not set 691# CONFIG_KS8842 is not set
692# CONFIG_KS8851_MLL is not set
684# CONFIG_VIA_RHINE is not set 693# CONFIG_VIA_RHINE is not set
685# CONFIG_SC92031 is not set 694# CONFIG_SC92031 is not set
686# CONFIG_ATL2 is not set 695# CONFIG_ATL2 is not set
696# CONFIG_XILINX_EMACLITE is not set
687# CONFIG_FS_ENET is not set 697# CONFIG_FS_ENET is not set
688CONFIG_NETDEV_1000=y 698CONFIG_NETDEV_1000=y
689# CONFIG_ACENIC is not set 699# CONFIG_ACENIC is not set
@@ -732,10 +742,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
732# CONFIG_SFC is not set 742# CONFIG_SFC is not set
733# CONFIG_BE2NET is not set 743# CONFIG_BE2NET is not set
734# CONFIG_TR is not set 744# CONFIG_TR is not set
735 745CONFIG_WLAN=y
736#
737# Wireless LAN
738#
739# CONFIG_WLAN_PRE80211 is not set 746# CONFIG_WLAN_PRE80211 is not set
740# CONFIG_WLAN_80211 is not set 747# CONFIG_WLAN_80211 is not set
741 748
@@ -831,6 +838,7 @@ CONFIG_GEN_RTC=y
831CONFIG_DEVPORT=y 838CONFIG_DEVPORT=y
832CONFIG_I2C=y 839CONFIG_I2C=y
833CONFIG_I2C_BOARDINFO=y 840CONFIG_I2C_BOARDINFO=y
841CONFIG_I2C_COMPAT=y
834CONFIG_I2C_CHARDEV=y 842CONFIG_I2C_CHARDEV=y
835CONFIG_I2C_HELPER_AUTO=y 843CONFIG_I2C_HELPER_AUTO=y
836 844
@@ -886,9 +894,6 @@ CONFIG_I2C_MPC=y
886# Miscellaneous I2C Chip support 894# Miscellaneous I2C Chip support
887# 895#
888# CONFIG_DS1682 is not set 896# CONFIG_DS1682 is not set
889# CONFIG_SENSORS_PCF8574 is not set
890# CONFIG_PCF8575 is not set
891# CONFIG_SENSORS_PCA9539 is not set
892# CONFIG_SENSORS_TSL2550 is not set 897# CONFIG_SENSORS_TSL2550 is not set
893# CONFIG_I2C_DEBUG_CORE is not set 898# CONFIG_I2C_DEBUG_CORE is not set
894# CONFIG_I2C_DEBUG_ALGO is not set 899# CONFIG_I2C_DEBUG_ALGO is not set
@@ -921,14 +926,24 @@ CONFIG_GPIOLIB=y
921# PCI GPIO expanders: 926# PCI GPIO expanders:
922# 927#
923# CONFIG_GPIO_BT8XX is not set 928# CONFIG_GPIO_BT8XX is not set
929# CONFIG_GPIO_LANGWELL is not set
924 930
925# 931#
926# SPI GPIO expanders: 932# SPI GPIO expanders:
927# 933#
934
935#
936# AC97 GPIO expanders:
937#
928# CONFIG_W1 is not set 938# CONFIG_W1 is not set
929# CONFIG_POWER_SUPPLY is not set 939# CONFIG_POWER_SUPPLY is not set
930CONFIG_HWMON=y 940CONFIG_HWMON=y
931# CONFIG_HWMON_VID is not set 941# CONFIG_HWMON_VID is not set
942CONFIG_HWMON_DEBUG_CHIP=y
943
944#
945# Native drivers
946#
932# CONFIG_SENSORS_AD7414 is not set 947# CONFIG_SENSORS_AD7414 is not set
933# CONFIG_SENSORS_AD7418 is not set 948# CONFIG_SENSORS_AD7418 is not set
934# CONFIG_SENSORS_ADM1021 is not set 949# CONFIG_SENSORS_ADM1021 is not set
@@ -979,6 +994,7 @@ CONFIG_SENSORS_LM75=y
979# CONFIG_SENSORS_ADS7828 is not set 994# CONFIG_SENSORS_ADS7828 is not set
980# CONFIG_SENSORS_THMC50 is not set 995# CONFIG_SENSORS_THMC50 is not set
981# CONFIG_SENSORS_TMP401 is not set 996# CONFIG_SENSORS_TMP401 is not set
997# CONFIG_SENSORS_TMP421 is not set
982# CONFIG_SENSORS_VIA686A is not set 998# CONFIG_SENSORS_VIA686A is not set
983# CONFIG_SENSORS_VT1211 is not set 999# CONFIG_SENSORS_VT1211 is not set
984# CONFIG_SENSORS_VT8231 is not set 1000# CONFIG_SENSORS_VT8231 is not set
@@ -990,9 +1006,7 @@ CONFIG_SENSORS_LM75=y
990# CONFIG_SENSORS_W83L786NG is not set 1006# CONFIG_SENSORS_W83L786NG is not set
991# CONFIG_SENSORS_W83627HF is not set 1007# CONFIG_SENSORS_W83627HF is not set
992# CONFIG_SENSORS_W83627EHF is not set 1008# CONFIG_SENSORS_W83627EHF is not set
993CONFIG_HWMON_DEBUG_CHIP=y
994# CONFIG_THERMAL is not set 1009# CONFIG_THERMAL is not set
995# CONFIG_THERMAL_HWMON is not set
996# CONFIG_WATCHDOG is not set 1010# CONFIG_WATCHDOG is not set
997CONFIG_SSB_POSSIBLE=y 1011CONFIG_SSB_POSSIBLE=y
998 1012
@@ -1012,6 +1026,7 @@ CONFIG_SSB_POSSIBLE=y
1012# CONFIG_MFD_TMIO is not set 1026# CONFIG_MFD_TMIO is not set
1013# CONFIG_PMIC_DA903X is not set 1027# CONFIG_PMIC_DA903X is not set
1014# CONFIG_MFD_WM8400 is not set 1028# CONFIG_MFD_WM8400 is not set
1029# CONFIG_MFD_WM831X is not set
1015# CONFIG_MFD_WM8350_I2C is not set 1030# CONFIG_MFD_WM8350_I2C is not set
1016# CONFIG_MFD_PCF50633 is not set 1031# CONFIG_MFD_PCF50633 is not set
1017# CONFIG_AB3100_CORE is not set 1032# CONFIG_AB3100_CORE is not set
@@ -1022,6 +1037,7 @@ CONFIG_SSB_POSSIBLE=y
1022# Graphics support 1037# Graphics support
1023# 1038#
1024# CONFIG_AGP is not set 1039# CONFIG_AGP is not set
1040CONFIG_VGA_ARB=y
1025# CONFIG_DRM is not set 1041# CONFIG_DRM is not set
1026# CONFIG_VGASTATE is not set 1042# CONFIG_VGASTATE is not set
1027# CONFIG_VIDEO_OUTPUT_CONTROL is not set 1043# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -1035,7 +1051,6 @@ CONFIG_SSB_POSSIBLE=y
1035# CONFIG_SOUND is not set 1051# CONFIG_SOUND is not set
1036CONFIG_HID_SUPPORT=y 1052CONFIG_HID_SUPPORT=y
1037CONFIG_HID=y 1053CONFIG_HID=y
1038# CONFIG_HID_DEBUG is not set
1039# CONFIG_HIDRAW is not set 1054# CONFIG_HIDRAW is not set
1040# CONFIG_HID_PID is not set 1055# CONFIG_HID_PID is not set
1041 1056
@@ -1100,6 +1115,7 @@ CONFIG_FS_MBCACHE=y
1100# CONFIG_GFS2_FS is not set 1115# CONFIG_GFS2_FS is not set
1101# CONFIG_OCFS2_FS is not set 1116# CONFIG_OCFS2_FS is not set
1102# CONFIG_BTRFS_FS is not set 1117# CONFIG_BTRFS_FS is not set
1118# CONFIG_NILFS2_FS is not set
1103CONFIG_FILE_LOCKING=y 1119CONFIG_FILE_LOCKING=y
1104CONFIG_FSNOTIFY=y 1120CONFIG_FSNOTIFY=y
1105CONFIG_DNOTIFY=y 1121CONFIG_DNOTIFY=y
@@ -1169,7 +1185,6 @@ CONFIG_CRAMFS=y
1169# CONFIG_ROMFS_FS is not set 1185# CONFIG_ROMFS_FS is not set
1170# CONFIG_SYSV_FS is not set 1186# CONFIG_SYSV_FS is not set
1171# CONFIG_UFS_FS is not set 1187# CONFIG_UFS_FS is not set
1172# CONFIG_NILFS2_FS is not set
1173CONFIG_NETWORK_FILESYSTEMS=y 1188CONFIG_NETWORK_FILESYSTEMS=y
1174CONFIG_NFS_FS=y 1189CONFIG_NFS_FS=y
1175# CONFIG_NFS_V3 is not set 1190# CONFIG_NFS_V3 is not set
@@ -1238,6 +1253,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1238CONFIG_ENABLE_MUST_CHECK=y 1253CONFIG_ENABLE_MUST_CHECK=y
1239CONFIG_FRAME_WARN=1024 1254CONFIG_FRAME_WARN=1024
1240# CONFIG_MAGIC_SYSRQ is not set 1255# CONFIG_MAGIC_SYSRQ is not set
1256# CONFIG_STRIP_ASM_SYMS is not set
1241# CONFIG_UNUSED_SYMBOLS is not set 1257# CONFIG_UNUSED_SYMBOLS is not set
1242# CONFIG_DEBUG_FS is not set 1258# CONFIG_DEBUG_FS is not set
1243# CONFIG_HEADERS_CHECK is not set 1259# CONFIG_HEADERS_CHECK is not set
@@ -1255,6 +1271,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1255CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1271CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1256CONFIG_TRACING_SUPPORT=y 1272CONFIG_TRACING_SUPPORT=y
1257# CONFIG_FTRACE is not set 1273# CONFIG_FTRACE is not set
1274# CONFIG_DMA_API_DEBUG is not set
1258# CONFIG_SAMPLES is not set 1275# CONFIG_SAMPLES is not set
1259CONFIG_HAVE_ARCH_KGDB=y 1276CONFIG_HAVE_ARCH_KGDB=y
1260# CONFIG_PPC_DISABLE_WERROR is not set 1277# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1275,7 +1292,6 @@ CONFIG_CRYPTO=y
1275# 1292#
1276# Crypto core or helper 1293# Crypto core or helper
1277# 1294#
1278# CONFIG_CRYPTO_FIPS is not set
1279# CONFIG_CRYPTO_MANAGER is not set 1295# CONFIG_CRYPTO_MANAGER is not set
1280# CONFIG_CRYPTO_MANAGER2 is not set 1296# CONFIG_CRYPTO_MANAGER2 is not set
1281# CONFIG_CRYPTO_GF128MUL is not set 1297# CONFIG_CRYPTO_GF128MUL is not set
@@ -1306,11 +1322,13 @@ CONFIG_CRYPTO=y
1306# 1322#
1307# CONFIG_CRYPTO_HMAC is not set 1323# CONFIG_CRYPTO_HMAC is not set
1308# CONFIG_CRYPTO_XCBC is not set 1324# CONFIG_CRYPTO_XCBC is not set
1325# CONFIG_CRYPTO_VMAC is not set
1309 1326
1310# 1327#
1311# Digest 1328# Digest
1312# 1329#
1313# CONFIG_CRYPTO_CRC32C is not set 1330# CONFIG_CRYPTO_CRC32C is not set
1331# CONFIG_CRYPTO_GHASH is not set
1314# CONFIG_CRYPTO_MD4 is not set 1332# CONFIG_CRYPTO_MD4 is not set
1315# CONFIG_CRYPTO_MD5 is not set 1333# CONFIG_CRYPTO_MD5 is not set
1316# CONFIG_CRYPTO_MICHAEL_MIC is not set 1334# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/85xx/tqm8548_defconfig b/arch/powerpc/configs/85xx/tqm8548_defconfig
index 4f228a905274..debe268f43d1 100644
--- a/arch/powerpc/configs/85xx/tqm8548_defconfig
+++ b/arch/powerpc/configs/85xx/tqm8548_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:23 2009 4# Thu Nov 5 08:20:41 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_MMU_NOHASH_32=y
25CONFIG_PPC_BOOK3E_MMU=y 26CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set 27# CONFIG_PPC_MM_SLICES is not set
27# CONFIG_SMP is not set 28# CONFIG_SMP is not set
@@ -36,6 +37,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 37CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +86,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 86#
85# RCU Subsystem 87# RCU Subsystem
86# 88#
87CONFIG_CLASSIC_RCU=y 89CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 90# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 91# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 94# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92# CONFIG_IKCONFIG is not set 95# CONFIG_IKCONFIG is not set
93CONFIG_LOG_BUF_SHIFT=14 96CONFIG_LOG_BUF_SHIFT=14
94CONFIG_GROUP_SCHED=y 97CONFIG_GROUP_SCHED=y
@@ -126,22 +129,21 @@ CONFIG_TIMERFD=y
126CONFIG_EVENTFD=y 129CONFIG_EVENTFD=y
127CONFIG_SHMEM=y 130CONFIG_SHMEM=y
128CONFIG_AIO=y 131CONFIG_AIO=y
129CONFIG_HAVE_PERF_COUNTERS=y 132CONFIG_HAVE_PERF_EVENTS=y
130 133
131# 134#
132# Performance Counters 135# Kernel Performance Events And Counters
133# 136#
137# CONFIG_PERF_EVENTS is not set
134# CONFIG_PERF_COUNTERS is not set 138# CONFIG_PERF_COUNTERS is not set
135CONFIG_VM_EVENT_COUNTERS=y 139CONFIG_VM_EVENT_COUNTERS=y
136CONFIG_PCI_QUIRKS=y 140CONFIG_PCI_QUIRKS=y
137CONFIG_SLUB_DEBUG=y 141CONFIG_SLUB_DEBUG=y
138# CONFIG_STRIP_ASM_SYMS is not set
139CONFIG_COMPAT_BRK=y 142CONFIG_COMPAT_BRK=y
140# CONFIG_SLAB is not set 143# CONFIG_SLAB is not set
141CONFIG_SLUB=y 144CONFIG_SLUB=y
142# CONFIG_SLOB is not set 145# CONFIG_SLOB is not set
143# CONFIG_PROFILING is not set 146# CONFIG_PROFILING is not set
144# CONFIG_MARKERS is not set
145CONFIG_HAVE_OPROFILE=y 147CONFIG_HAVE_OPROFILE=y
146# CONFIG_KPROBES is not set 148# CONFIG_KPROBES is not set
147CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 149CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -149,6 +151,8 @@ CONFIG_HAVE_IOREMAP_PROT=y
149CONFIG_HAVE_KPROBES=y 151CONFIG_HAVE_KPROBES=y
150CONFIG_HAVE_KRETPROBES=y 152CONFIG_HAVE_KRETPROBES=y
151CONFIG_HAVE_ARCH_TRACEHOOK=y 153CONFIG_HAVE_ARCH_TRACEHOOK=y
154CONFIG_HAVE_DMA_ATTRS=y
155CONFIG_HAVE_DMA_API_DEBUG=y
152 156
153# 157#
154# GCOV-based kernel profiling 158# GCOV-based kernel profiling
@@ -196,6 +200,7 @@ CONFIG_MPC85xx=y
196# CONFIG_MPC85xx_MDS is not set 200# CONFIG_MPC85xx_MDS is not set
197# CONFIG_MPC8536_DS is not set 201# CONFIG_MPC8536_DS is not set
198# CONFIG_MPC85xx_DS is not set 202# CONFIG_MPC85xx_DS is not set
203# CONFIG_MPC85xx_RDB is not set
199# CONFIG_SOCRATES is not set 204# CONFIG_SOCRATES is not set
200# CONFIG_KSI8560 is not set 205# CONFIG_KSI8560 is not set
201# CONFIG_XES_MPC85xx is not set 206# CONFIG_XES_MPC85xx is not set
@@ -252,6 +257,7 @@ CONFIG_MATH_EMULATION=y
252CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 257CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
253CONFIG_ARCH_HAS_WALK_MEMORY=y 258CONFIG_ARCH_HAS_WALK_MEMORY=y
254CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
260CONFIG_MAX_ACTIVE_REGIONS=32
255CONFIG_ARCH_FLATMEM_ENABLE=y 261CONFIG_ARCH_FLATMEM_ENABLE=y
256CONFIG_ARCH_POPULATES_NODE_MAP=y 262CONFIG_ARCH_POPULATES_NODE_MAP=y
257CONFIG_SELECT_MEMORY_MODEL=y 263CONFIG_SELECT_MEMORY_MODEL=y
@@ -269,6 +275,7 @@ CONFIG_BOUNCE=y
269CONFIG_VIRT_TO_BUS=y 275CONFIG_VIRT_TO_BUS=y
270CONFIG_HAVE_MLOCK=y 276CONFIG_HAVE_MLOCK=y
271CONFIG_HAVE_MLOCKED_PAGE_BIT=y 277CONFIG_HAVE_MLOCKED_PAGE_BIT=y
278# CONFIG_KSM is not set
272CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 279CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
273CONFIG_PPC_4K_PAGES=y 280CONFIG_PPC_4K_PAGES=y
274# CONFIG_PPC_16K_PAGES is not set 281# CONFIG_PPC_16K_PAGES is not set
@@ -371,6 +378,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
371# CONFIG_NETFILTER is not set 378# CONFIG_NETFILTER is not set
372# CONFIG_IP_DCCP is not set 379# CONFIG_IP_DCCP is not set
373# CONFIG_IP_SCTP is not set 380# CONFIG_IP_SCTP is not set
381# CONFIG_RDS is not set
374# CONFIG_TIPC is not set 382# CONFIG_TIPC is not set
375# CONFIG_ATM is not set 383# CONFIG_ATM is not set
376# CONFIG_BRIDGE is not set 384# CONFIG_BRIDGE is not set
@@ -411,6 +419,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
411# Generic Driver Options 419# Generic Driver Options
412# 420#
413CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 421CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
422# CONFIG_DEVTMPFS is not set
414CONFIG_STANDALONE=y 423CONFIG_STANDALONE=y
415CONFIG_PREVENT_FIRMWARE_BUILD=y 424CONFIG_PREVENT_FIRMWARE_BUILD=y
416# CONFIG_FW_LOADER is not set 425# CONFIG_FW_LOADER is not set
@@ -420,9 +429,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
420# CONFIG_CONNECTOR is not set 429# CONFIG_CONNECTOR is not set
421CONFIG_MTD=y 430CONFIG_MTD=y
422# CONFIG_MTD_DEBUG is not set 431# CONFIG_MTD_DEBUG is not set
432# CONFIG_MTD_TESTS is not set
423# CONFIG_MTD_CONCAT is not set 433# CONFIG_MTD_CONCAT is not set
424CONFIG_MTD_PARTITIONS=y 434CONFIG_MTD_PARTITIONS=y
425# CONFIG_MTD_TESTS is not set
426# CONFIG_MTD_REDBOOT_PARTS is not set 435# CONFIG_MTD_REDBOOT_PARTS is not set
427# CONFIG_MTD_CMDLINE_PARTS is not set 436# CONFIG_MTD_CMDLINE_PARTS is not set
428CONFIG_MTD_OF_PARTS=y 437CONFIG_MTD_OF_PARTS=y
@@ -630,7 +639,9 @@ CONFIG_MII=y
630# CONFIG_NET_PCI is not set 639# CONFIG_NET_PCI is not set
631# CONFIG_B44 is not set 640# CONFIG_B44 is not set
632# CONFIG_KS8842 is not set 641# CONFIG_KS8842 is not set
642# CONFIG_KS8851_MLL is not set
633# CONFIG_ATL2 is not set 643# CONFIG_ATL2 is not set
644# CONFIG_XILINX_EMACLITE is not set
634CONFIG_NETDEV_1000=y 645CONFIG_NETDEV_1000=y
635# CONFIG_ACENIC is not set 646# CONFIG_ACENIC is not set
636# CONFIG_DL2K is not set 647# CONFIG_DL2K is not set
@@ -678,10 +689,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
678# CONFIG_SFC is not set 689# CONFIG_SFC is not set
679# CONFIG_BE2NET is not set 690# CONFIG_BE2NET is not set
680# CONFIG_TR is not set 691# CONFIG_TR is not set
681 692CONFIG_WLAN=y
682#
683# Wireless LAN
684#
685# CONFIG_WLAN_PRE80211 is not set 693# CONFIG_WLAN_PRE80211 is not set
686# CONFIG_WLAN_80211 is not set 694# CONFIG_WLAN_80211 is not set
687 695
@@ -772,6 +780,7 @@ CONFIG_LEGACY_PTY_COUNT=256
772CONFIG_DEVPORT=y 780CONFIG_DEVPORT=y
773CONFIG_I2C=y 781CONFIG_I2C=y
774CONFIG_I2C_BOARDINFO=y 782CONFIG_I2C_BOARDINFO=y
783CONFIG_I2C_COMPAT=y
775CONFIG_I2C_CHARDEV=y 784CONFIG_I2C_CHARDEV=y
776CONFIG_I2C_HELPER_AUTO=y 785CONFIG_I2C_HELPER_AUTO=y
777 786
@@ -825,9 +834,6 @@ CONFIG_I2C_MPC=y
825# Miscellaneous I2C Chip support 834# Miscellaneous I2C Chip support
826# 835#
827# CONFIG_DS1682 is not set 836# CONFIG_DS1682 is not set
828# CONFIG_SENSORS_PCF8574 is not set
829# CONFIG_PCF8575 is not set
830# CONFIG_SENSORS_PCA9539 is not set
831# CONFIG_SENSORS_TSL2550 is not set 837# CONFIG_SENSORS_TSL2550 is not set
832# CONFIG_I2C_DEBUG_CORE is not set 838# CONFIG_I2C_DEBUG_CORE is not set
833# CONFIG_I2C_DEBUG_ALGO is not set 839# CONFIG_I2C_DEBUG_ALGO is not set
@@ -845,6 +851,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
845# CONFIG_POWER_SUPPLY is not set 851# CONFIG_POWER_SUPPLY is not set
846CONFIG_HWMON=y 852CONFIG_HWMON=y
847# CONFIG_HWMON_VID is not set 853# CONFIG_HWMON_VID is not set
854# CONFIG_HWMON_DEBUG_CHIP is not set
855
856#
857# Native drivers
858#
848# CONFIG_SENSORS_AD7414 is not set 859# CONFIG_SENSORS_AD7414 is not set
849# CONFIG_SENSORS_AD7418 is not set 860# CONFIG_SENSORS_AD7418 is not set
850# CONFIG_SENSORS_ADM1021 is not set 861# CONFIG_SENSORS_ADM1021 is not set
@@ -894,6 +905,7 @@ CONFIG_SENSORS_LM75=y
894# CONFIG_SENSORS_ADS7828 is not set 905# CONFIG_SENSORS_ADS7828 is not set
895# CONFIG_SENSORS_THMC50 is not set 906# CONFIG_SENSORS_THMC50 is not set
896# CONFIG_SENSORS_TMP401 is not set 907# CONFIG_SENSORS_TMP401 is not set
908# CONFIG_SENSORS_TMP421 is not set
897# CONFIG_SENSORS_VIA686A is not set 909# CONFIG_SENSORS_VIA686A is not set
898# CONFIG_SENSORS_VT1211 is not set 910# CONFIG_SENSORS_VT1211 is not set
899# CONFIG_SENSORS_VT8231 is not set 911# CONFIG_SENSORS_VT8231 is not set
@@ -905,9 +917,7 @@ CONFIG_SENSORS_LM75=y
905# CONFIG_SENSORS_W83L786NG is not set 917# CONFIG_SENSORS_W83L786NG is not set
906# CONFIG_SENSORS_W83627HF is not set 918# CONFIG_SENSORS_W83627HF is not set
907# CONFIG_SENSORS_W83627EHF is not set 919# CONFIG_SENSORS_W83627EHF is not set
908# CONFIG_HWMON_DEBUG_CHIP is not set
909# CONFIG_THERMAL is not set 920# CONFIG_THERMAL is not set
910# CONFIG_THERMAL_HWMON is not set
911# CONFIG_WATCHDOG is not set 921# CONFIG_WATCHDOG is not set
912CONFIG_SSB_POSSIBLE=y 922CONFIG_SSB_POSSIBLE=y
913 923
@@ -926,6 +936,7 @@ CONFIG_SSB_POSSIBLE=y
926# CONFIG_MFD_TMIO is not set 936# CONFIG_MFD_TMIO is not set
927# CONFIG_PMIC_DA903X is not set 937# CONFIG_PMIC_DA903X is not set
928# CONFIG_MFD_WM8400 is not set 938# CONFIG_MFD_WM8400 is not set
939# CONFIG_MFD_WM831X is not set
929# CONFIG_MFD_WM8350_I2C is not set 940# CONFIG_MFD_WM8350_I2C is not set
930# CONFIG_MFD_PCF50633 is not set 941# CONFIG_MFD_PCF50633 is not set
931# CONFIG_AB3100_CORE is not set 942# CONFIG_AB3100_CORE is not set
@@ -936,6 +947,7 @@ CONFIG_SSB_POSSIBLE=y
936# Graphics support 947# Graphics support
937# 948#
938# CONFIG_AGP is not set 949# CONFIG_AGP is not set
950CONFIG_VGA_ARB=y
939# CONFIG_DRM is not set 951# CONFIG_DRM is not set
940# CONFIG_VGASTATE is not set 952# CONFIG_VGASTATE is not set
941CONFIG_VIDEO_OUTPUT_CONTROL=y 953CONFIG_VIDEO_OUTPUT_CONTROL=y
@@ -949,7 +961,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
949# CONFIG_SOUND is not set 961# CONFIG_SOUND is not set
950CONFIG_HID_SUPPORT=y 962CONFIG_HID_SUPPORT=y
951CONFIG_HID=y 963CONFIG_HID=y
952# CONFIG_HID_DEBUG is not set
953# CONFIG_HIDRAW is not set 964# CONFIG_HIDRAW is not set
954# CONFIG_HID_PID is not set 965# CONFIG_HID_PID is not set
955 966
@@ -1042,6 +1053,7 @@ CONFIG_RTC_DRV_DS1307=y
1042# CONFIG_GFS2_FS is not set 1053# CONFIG_GFS2_FS is not set
1043# CONFIG_OCFS2_FS is not set 1054# CONFIG_OCFS2_FS is not set
1044# CONFIG_BTRFS_FS is not set 1055# CONFIG_BTRFS_FS is not set
1056# CONFIG_NILFS2_FS is not set
1045CONFIG_FILE_LOCKING=y 1057CONFIG_FILE_LOCKING=y
1046CONFIG_FSNOTIFY=y 1058CONFIG_FSNOTIFY=y
1047CONFIG_DNOTIFY=y 1059CONFIG_DNOTIFY=y
@@ -1111,7 +1123,6 @@ CONFIG_JFFS2_RTIME=y
1111# CONFIG_ROMFS_FS is not set 1123# CONFIG_ROMFS_FS is not set
1112# CONFIG_SYSV_FS is not set 1124# CONFIG_SYSV_FS is not set
1113# CONFIG_UFS_FS is not set 1125# CONFIG_UFS_FS is not set
1114# CONFIG_NILFS2_FS is not set
1115CONFIG_NETWORK_FILESYSTEMS=y 1126CONFIG_NETWORK_FILESYSTEMS=y
1116CONFIG_NFS_FS=y 1127CONFIG_NFS_FS=y
1117# CONFIG_NFS_V3 is not set 1128# CONFIG_NFS_V3 is not set
@@ -1180,6 +1191,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1180CONFIG_ENABLE_MUST_CHECK=y 1191CONFIG_ENABLE_MUST_CHECK=y
1181CONFIG_FRAME_WARN=1024 1192CONFIG_FRAME_WARN=1024
1182# CONFIG_MAGIC_SYSRQ is not set 1193# CONFIG_MAGIC_SYSRQ is not set
1194# CONFIG_STRIP_ASM_SYMS is not set
1183# CONFIG_UNUSED_SYMBOLS is not set 1195# CONFIG_UNUSED_SYMBOLS is not set
1184# CONFIG_DEBUG_FS is not set 1196# CONFIG_DEBUG_FS is not set
1185# CONFIG_HEADERS_CHECK is not set 1197# CONFIG_HEADERS_CHECK is not set
@@ -1197,6 +1209,7 @@ CONFIG_SCHED_DEBUG=y
1197# CONFIG_DEBUG_OBJECTS is not set 1209# CONFIG_DEBUG_OBJECTS is not set
1198# CONFIG_SLUB_DEBUG_ON is not set 1210# CONFIG_SLUB_DEBUG_ON is not set
1199# CONFIG_SLUB_STATS is not set 1211# CONFIG_SLUB_STATS is not set
1212# CONFIG_DEBUG_KMEMLEAK is not set
1200# CONFIG_DEBUG_RT_MUTEXES is not set 1213# CONFIG_DEBUG_RT_MUTEXES is not set
1201# CONFIG_RT_MUTEX_TESTER is not set 1214# CONFIG_RT_MUTEX_TESTER is not set
1202# CONFIG_DEBUG_SPINLOCK is not set 1215# CONFIG_DEBUG_SPINLOCK is not set
@@ -1216,10 +1229,12 @@ CONFIG_DEBUG_MUTEXES=y
1216# CONFIG_DEBUG_LIST is not set 1229# CONFIG_DEBUG_LIST is not set
1217# CONFIG_DEBUG_SG is not set 1230# CONFIG_DEBUG_SG is not set
1218# CONFIG_DEBUG_NOTIFIERS is not set 1231# CONFIG_DEBUG_NOTIFIERS is not set
1232# CONFIG_DEBUG_CREDENTIALS is not set
1219# CONFIG_RCU_TORTURE_TEST is not set 1233# CONFIG_RCU_TORTURE_TEST is not set
1220# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1234# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1221# CONFIG_BACKTRACE_SELF_TEST is not set 1235# CONFIG_BACKTRACE_SELF_TEST is not set
1222# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1236# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1237# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1223# CONFIG_FAULT_INJECTION is not set 1238# CONFIG_FAULT_INJECTION is not set
1224# CONFIG_LATENCYTOP is not set 1239# CONFIG_LATENCYTOP is not set
1225CONFIG_SYSCTL_SYSCALL_CHECK=y 1240CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1242,10 +1257,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1242# CONFIG_KMEMTRACE is not set 1257# CONFIG_KMEMTRACE is not set
1243# CONFIG_WORKQUEUE_TRACER is not set 1258# CONFIG_WORKQUEUE_TRACER is not set
1244# CONFIG_BLK_DEV_IO_TRACE is not set 1259# CONFIG_BLK_DEV_IO_TRACE is not set
1260# CONFIG_DMA_API_DEBUG is not set
1245# CONFIG_SAMPLES is not set 1261# CONFIG_SAMPLES is not set
1246CONFIG_HAVE_ARCH_KGDB=y 1262CONFIG_HAVE_ARCH_KGDB=y
1247# CONFIG_KGDB is not set 1263# CONFIG_KGDB is not set
1248# CONFIG_KMEMCHECK is not set
1249# CONFIG_PPC_DISABLE_WERROR is not set 1264# CONFIG_PPC_DISABLE_WERROR is not set
1250CONFIG_PPC_WERROR=y 1265CONFIG_PPC_WERROR=y
1251CONFIG_PRINT_STACK_DEPTH=64 1266CONFIG_PRINT_STACK_DEPTH=64
@@ -1271,7 +1286,6 @@ CONFIG_CRYPTO=y
1271# 1286#
1272# Crypto core or helper 1287# Crypto core or helper
1273# 1288#
1274# CONFIG_CRYPTO_FIPS is not set
1275# CONFIG_CRYPTO_MANAGER is not set 1289# CONFIG_CRYPTO_MANAGER is not set
1276# CONFIG_CRYPTO_MANAGER2 is not set 1290# CONFIG_CRYPTO_MANAGER2 is not set
1277# CONFIG_CRYPTO_GF128MUL is not set 1291# CONFIG_CRYPTO_GF128MUL is not set
@@ -1303,11 +1317,13 @@ CONFIG_CRYPTO=y
1303# 1317#
1304# CONFIG_CRYPTO_HMAC is not set 1318# CONFIG_CRYPTO_HMAC is not set
1305# CONFIG_CRYPTO_XCBC is not set 1319# CONFIG_CRYPTO_XCBC is not set
1320# CONFIG_CRYPTO_VMAC is not set
1306 1321
1307# 1322#
1308# Digest 1323# Digest
1309# 1324#
1310# CONFIG_CRYPTO_CRC32C is not set 1325# CONFIG_CRYPTO_CRC32C is not set
1326# CONFIG_CRYPTO_GHASH is not set
1311# CONFIG_CRYPTO_MD4 is not set 1327# CONFIG_CRYPTO_MD4 is not set
1312# CONFIG_CRYPTO_MD5 is not set 1328# CONFIG_CRYPTO_MD5 is not set
1313# CONFIG_CRYPTO_MICHAEL_MIC is not set 1329# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/85xx/tqm8555_defconfig b/arch/powerpc/configs/85xx/tqm8555_defconfig
index 9196724bebc7..74515501f5b7 100644
--- a/arch/powerpc/configs/85xx/tqm8555_defconfig
+++ b/arch/powerpc/configs/85xx/tqm8555_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:24 2009 4# Thu Nov 5 08:20:42 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_MMU_NOHASH_32=y
25CONFIG_PPC_BOOK3E_MMU=y 26CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set 27# CONFIG_PPC_MM_SLICES is not set
27# CONFIG_SMP is not set 28# CONFIG_SMP is not set
@@ -36,6 +37,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 37CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -85,11 +87,12 @@ CONFIG_SYSVIPC_SYSCTL=y
85# 87#
86# RCU Subsystem 88# RCU Subsystem
87# 89#
88CONFIG_CLASSIC_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_PREEMPT_RCU is not set 92# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set
91# CONFIG_TREE_RCU_TRACE is not set 95# CONFIG_TREE_RCU_TRACE is not set
92# CONFIG_PREEMPT_RCU_TRACE is not set
93# CONFIG_IKCONFIG is not set 96# CONFIG_IKCONFIG is not set
94CONFIG_LOG_BUF_SHIFT=14 97CONFIG_LOG_BUF_SHIFT=14
95CONFIG_GROUP_SCHED=y 98CONFIG_GROUP_SCHED=y
@@ -125,29 +128,30 @@ CONFIG_TIMERFD=y
125CONFIG_EVENTFD=y 128CONFIG_EVENTFD=y
126CONFIG_SHMEM=y 129CONFIG_SHMEM=y
127CONFIG_AIO=y 130CONFIG_AIO=y
128CONFIG_HAVE_PERF_COUNTERS=y 131CONFIG_HAVE_PERF_EVENTS=y
129 132
130# 133#
131# Performance Counters 134# Kernel Performance Events And Counters
132# 135#
136# CONFIG_PERF_EVENTS is not set
133# CONFIG_PERF_COUNTERS is not set 137# CONFIG_PERF_COUNTERS is not set
134CONFIG_VM_EVENT_COUNTERS=y 138CONFIG_VM_EVENT_COUNTERS=y
135CONFIG_PCI_QUIRKS=y 139CONFIG_PCI_QUIRKS=y
136CONFIG_SLUB_DEBUG=y 140CONFIG_SLUB_DEBUG=y
137# CONFIG_STRIP_ASM_SYMS is not set
138CONFIG_COMPAT_BRK=y 141CONFIG_COMPAT_BRK=y
139# CONFIG_SLAB is not set 142# CONFIG_SLAB is not set
140CONFIG_SLUB=y 143CONFIG_SLUB=y
141# CONFIG_SLOB is not set 144# CONFIG_SLOB is not set
142# CONFIG_PROFILING is not set 145# CONFIG_PROFILING is not set
143# CONFIG_MARKERS is not set
144CONFIG_HAVE_OPROFILE=y 146CONFIG_HAVE_OPROFILE=y
145CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 147CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
146CONFIG_HAVE_IOREMAP_PROT=y 148CONFIG_HAVE_IOREMAP_PROT=y
147CONFIG_HAVE_KPROBES=y 149CONFIG_HAVE_KPROBES=y
148CONFIG_HAVE_KRETPROBES=y 150CONFIG_HAVE_KRETPROBES=y
149CONFIG_HAVE_ARCH_TRACEHOOK=y 151CONFIG_HAVE_ARCH_TRACEHOOK=y
152CONFIG_HAVE_DMA_ATTRS=y
150CONFIG_HAVE_CLK=y 153CONFIG_HAVE_CLK=y
154CONFIG_HAVE_DMA_API_DEBUG=y
151 155
152# 156#
153# GCOV-based kernel profiling 157# GCOV-based kernel profiling
@@ -190,6 +194,7 @@ CONFIG_MPC85xx=y
190# CONFIG_MPC85xx_MDS is not set 194# CONFIG_MPC85xx_MDS is not set
191# CONFIG_MPC8536_DS is not set 195# CONFIG_MPC8536_DS is not set
192# CONFIG_MPC85xx_DS is not set 196# CONFIG_MPC85xx_DS is not set
197# CONFIG_MPC85xx_RDB is not set
193# CONFIG_SOCRATES is not set 198# CONFIG_SOCRATES is not set
194# CONFIG_KSI8560 is not set 199# CONFIG_KSI8560 is not set
195# CONFIG_XES_MPC85xx is not set 200# CONFIG_XES_MPC85xx is not set
@@ -246,6 +251,7 @@ CONFIG_MATH_EMULATION=y
246CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 251CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
247CONFIG_ARCH_HAS_WALK_MEMORY=y 252CONFIG_ARCH_HAS_WALK_MEMORY=y
248CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 253CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
254CONFIG_MAX_ACTIVE_REGIONS=32
249CONFIG_ARCH_FLATMEM_ENABLE=y 255CONFIG_ARCH_FLATMEM_ENABLE=y
250CONFIG_ARCH_POPULATES_NODE_MAP=y 256CONFIG_ARCH_POPULATES_NODE_MAP=y
251CONFIG_SELECT_MEMORY_MODEL=y 257CONFIG_SELECT_MEMORY_MODEL=y
@@ -263,6 +269,7 @@ CONFIG_BOUNCE=y
263CONFIG_VIRT_TO_BUS=y 269CONFIG_VIRT_TO_BUS=y
264CONFIG_HAVE_MLOCK=y 270CONFIG_HAVE_MLOCK=y
265CONFIG_HAVE_MLOCKED_PAGE_BIT=y 271CONFIG_HAVE_MLOCKED_PAGE_BIT=y
272# CONFIG_KSM is not set
266CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 273CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
267CONFIG_PPC_4K_PAGES=y 274CONFIG_PPC_4K_PAGES=y
268# CONFIG_PPC_16K_PAGES is not set 275# CONFIG_PPC_16K_PAGES is not set
@@ -357,6 +364,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
357# CONFIG_NETFILTER is not set 364# CONFIG_NETFILTER is not set
358# CONFIG_IP_DCCP is not set 365# CONFIG_IP_DCCP is not set
359# CONFIG_IP_SCTP is not set 366# CONFIG_IP_SCTP is not set
367# CONFIG_RDS is not set
360# CONFIG_TIPC is not set 368# CONFIG_TIPC is not set
361# CONFIG_ATM is not set 369# CONFIG_ATM is not set
362# CONFIG_BRIDGE is not set 370# CONFIG_BRIDGE is not set
@@ -386,6 +394,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
386# CONFIG_AF_RXRPC is not set 394# CONFIG_AF_RXRPC is not set
387CONFIG_WIRELESS=y 395CONFIG_WIRELESS=y
388# CONFIG_CFG80211 is not set 396# CONFIG_CFG80211 is not set
397CONFIG_CFG80211_DEFAULT_PS_VALUE=0
389CONFIG_WIRELESS_OLD_REGULATORY=y 398CONFIG_WIRELESS_OLD_REGULATORY=y
390# CONFIG_WIRELESS_EXT is not set 399# CONFIG_WIRELESS_EXT is not set
391# CONFIG_LIB80211 is not set 400# CONFIG_LIB80211 is not set
@@ -393,7 +402,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
393# 402#
394# CFG80211 needs to be enabled for MAC80211 403# CFG80211 needs to be enabled for MAC80211
395# 404#
396CONFIG_MAC80211_DEFAULT_PS_VALUE=0
397# CONFIG_WIMAX is not set 405# CONFIG_WIMAX is not set
398# CONFIG_RFKILL is not set 406# CONFIG_RFKILL is not set
399# CONFIG_NET_9P is not set 407# CONFIG_NET_9P is not set
@@ -681,9 +689,11 @@ CONFIG_E100=y
681# CONFIG_SUNDANCE is not set 689# CONFIG_SUNDANCE is not set
682# CONFIG_TLAN is not set 690# CONFIG_TLAN is not set
683# CONFIG_KS8842 is not set 691# CONFIG_KS8842 is not set
692# CONFIG_KS8851_MLL is not set
684# CONFIG_VIA_RHINE is not set 693# CONFIG_VIA_RHINE is not set
685# CONFIG_SC92031 is not set 694# CONFIG_SC92031 is not set
686# CONFIG_ATL2 is not set 695# CONFIG_ATL2 is not set
696# CONFIG_XILINX_EMACLITE is not set
687# CONFIG_FS_ENET is not set 697# CONFIG_FS_ENET is not set
688CONFIG_NETDEV_1000=y 698CONFIG_NETDEV_1000=y
689# CONFIG_ACENIC is not set 699# CONFIG_ACENIC is not set
@@ -732,10 +742,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
732# CONFIG_SFC is not set 742# CONFIG_SFC is not set
733# CONFIG_BE2NET is not set 743# CONFIG_BE2NET is not set
734# CONFIG_TR is not set 744# CONFIG_TR is not set
735 745CONFIG_WLAN=y
736#
737# Wireless LAN
738#
739# CONFIG_WLAN_PRE80211 is not set 746# CONFIG_WLAN_PRE80211 is not set
740# CONFIG_WLAN_80211 is not set 747# CONFIG_WLAN_80211 is not set
741 748
@@ -831,6 +838,7 @@ CONFIG_GEN_RTC=y
831CONFIG_DEVPORT=y 838CONFIG_DEVPORT=y
832CONFIG_I2C=y 839CONFIG_I2C=y
833CONFIG_I2C_BOARDINFO=y 840CONFIG_I2C_BOARDINFO=y
841CONFIG_I2C_COMPAT=y
834CONFIG_I2C_CHARDEV=y 842CONFIG_I2C_CHARDEV=y
835CONFIG_I2C_HELPER_AUTO=y 843CONFIG_I2C_HELPER_AUTO=y
836 844
@@ -886,9 +894,6 @@ CONFIG_I2C_MPC=y
886# Miscellaneous I2C Chip support 894# Miscellaneous I2C Chip support
887# 895#
888# CONFIG_DS1682 is not set 896# CONFIG_DS1682 is not set
889# CONFIG_SENSORS_PCF8574 is not set
890# CONFIG_PCF8575 is not set
891# CONFIG_SENSORS_PCA9539 is not set
892# CONFIG_SENSORS_TSL2550 is not set 897# CONFIG_SENSORS_TSL2550 is not set
893# CONFIG_I2C_DEBUG_CORE is not set 898# CONFIG_I2C_DEBUG_CORE is not set
894# CONFIG_I2C_DEBUG_ALGO is not set 899# CONFIG_I2C_DEBUG_ALGO is not set
@@ -921,14 +926,24 @@ CONFIG_GPIOLIB=y
921# PCI GPIO expanders: 926# PCI GPIO expanders:
922# 927#
923# CONFIG_GPIO_BT8XX is not set 928# CONFIG_GPIO_BT8XX is not set
929# CONFIG_GPIO_LANGWELL is not set
924 930
925# 931#
926# SPI GPIO expanders: 932# SPI GPIO expanders:
927# 933#
934
935#
936# AC97 GPIO expanders:
937#
928# CONFIG_W1 is not set 938# CONFIG_W1 is not set
929# CONFIG_POWER_SUPPLY is not set 939# CONFIG_POWER_SUPPLY is not set
930CONFIG_HWMON=y 940CONFIG_HWMON=y
931# CONFIG_HWMON_VID is not set 941# CONFIG_HWMON_VID is not set
942CONFIG_HWMON_DEBUG_CHIP=y
943
944#
945# Native drivers
946#
932# CONFIG_SENSORS_AD7414 is not set 947# CONFIG_SENSORS_AD7414 is not set
933# CONFIG_SENSORS_AD7418 is not set 948# CONFIG_SENSORS_AD7418 is not set
934# CONFIG_SENSORS_ADM1021 is not set 949# CONFIG_SENSORS_ADM1021 is not set
@@ -979,6 +994,7 @@ CONFIG_SENSORS_LM75=y
979# CONFIG_SENSORS_ADS7828 is not set 994# CONFIG_SENSORS_ADS7828 is not set
980# CONFIG_SENSORS_THMC50 is not set 995# CONFIG_SENSORS_THMC50 is not set
981# CONFIG_SENSORS_TMP401 is not set 996# CONFIG_SENSORS_TMP401 is not set
997# CONFIG_SENSORS_TMP421 is not set
982# CONFIG_SENSORS_VIA686A is not set 998# CONFIG_SENSORS_VIA686A is not set
983# CONFIG_SENSORS_VT1211 is not set 999# CONFIG_SENSORS_VT1211 is not set
984# CONFIG_SENSORS_VT8231 is not set 1000# CONFIG_SENSORS_VT8231 is not set
@@ -990,9 +1006,7 @@ CONFIG_SENSORS_LM75=y
990# CONFIG_SENSORS_W83L786NG is not set 1006# CONFIG_SENSORS_W83L786NG is not set
991# CONFIG_SENSORS_W83627HF is not set 1007# CONFIG_SENSORS_W83627HF is not set
992# CONFIG_SENSORS_W83627EHF is not set 1008# CONFIG_SENSORS_W83627EHF is not set
993CONFIG_HWMON_DEBUG_CHIP=y
994# CONFIG_THERMAL is not set 1009# CONFIG_THERMAL is not set
995# CONFIG_THERMAL_HWMON is not set
996# CONFIG_WATCHDOG is not set 1010# CONFIG_WATCHDOG is not set
997CONFIG_SSB_POSSIBLE=y 1011CONFIG_SSB_POSSIBLE=y
998 1012
@@ -1012,6 +1026,7 @@ CONFIG_SSB_POSSIBLE=y
1012# CONFIG_MFD_TMIO is not set 1026# CONFIG_MFD_TMIO is not set
1013# CONFIG_PMIC_DA903X is not set 1027# CONFIG_PMIC_DA903X is not set
1014# CONFIG_MFD_WM8400 is not set 1028# CONFIG_MFD_WM8400 is not set
1029# CONFIG_MFD_WM831X is not set
1015# CONFIG_MFD_WM8350_I2C is not set 1030# CONFIG_MFD_WM8350_I2C is not set
1016# CONFIG_MFD_PCF50633 is not set 1031# CONFIG_MFD_PCF50633 is not set
1017# CONFIG_AB3100_CORE is not set 1032# CONFIG_AB3100_CORE is not set
@@ -1022,6 +1037,7 @@ CONFIG_SSB_POSSIBLE=y
1022# Graphics support 1037# Graphics support
1023# 1038#
1024# CONFIG_AGP is not set 1039# CONFIG_AGP is not set
1040CONFIG_VGA_ARB=y
1025# CONFIG_DRM is not set 1041# CONFIG_DRM is not set
1026# CONFIG_VGASTATE is not set 1042# CONFIG_VGASTATE is not set
1027# CONFIG_VIDEO_OUTPUT_CONTROL is not set 1043# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -1035,7 +1051,6 @@ CONFIG_SSB_POSSIBLE=y
1035# CONFIG_SOUND is not set 1051# CONFIG_SOUND is not set
1036CONFIG_HID_SUPPORT=y 1052CONFIG_HID_SUPPORT=y
1037CONFIG_HID=y 1053CONFIG_HID=y
1038# CONFIG_HID_DEBUG is not set
1039# CONFIG_HIDRAW is not set 1054# CONFIG_HIDRAW is not set
1040# CONFIG_HID_PID is not set 1055# CONFIG_HID_PID is not set
1041 1056
@@ -1100,6 +1115,7 @@ CONFIG_FS_MBCACHE=y
1100# CONFIG_GFS2_FS is not set 1115# CONFIG_GFS2_FS is not set
1101# CONFIG_OCFS2_FS is not set 1116# CONFIG_OCFS2_FS is not set
1102# CONFIG_BTRFS_FS is not set 1117# CONFIG_BTRFS_FS is not set
1118# CONFIG_NILFS2_FS is not set
1103CONFIG_FILE_LOCKING=y 1119CONFIG_FILE_LOCKING=y
1104CONFIG_FSNOTIFY=y 1120CONFIG_FSNOTIFY=y
1105CONFIG_DNOTIFY=y 1121CONFIG_DNOTIFY=y
@@ -1169,7 +1185,6 @@ CONFIG_CRAMFS=y
1169# CONFIG_ROMFS_FS is not set 1185# CONFIG_ROMFS_FS is not set
1170# CONFIG_SYSV_FS is not set 1186# CONFIG_SYSV_FS is not set
1171# CONFIG_UFS_FS is not set 1187# CONFIG_UFS_FS is not set
1172# CONFIG_NILFS2_FS is not set
1173CONFIG_NETWORK_FILESYSTEMS=y 1188CONFIG_NETWORK_FILESYSTEMS=y
1174CONFIG_NFS_FS=y 1189CONFIG_NFS_FS=y
1175# CONFIG_NFS_V3 is not set 1190# CONFIG_NFS_V3 is not set
@@ -1238,6 +1253,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1238CONFIG_ENABLE_MUST_CHECK=y 1253CONFIG_ENABLE_MUST_CHECK=y
1239CONFIG_FRAME_WARN=1024 1254CONFIG_FRAME_WARN=1024
1240# CONFIG_MAGIC_SYSRQ is not set 1255# CONFIG_MAGIC_SYSRQ is not set
1256# CONFIG_STRIP_ASM_SYMS is not set
1241# CONFIG_UNUSED_SYMBOLS is not set 1257# CONFIG_UNUSED_SYMBOLS is not set
1242# CONFIG_DEBUG_FS is not set 1258# CONFIG_DEBUG_FS is not set
1243# CONFIG_HEADERS_CHECK is not set 1259# CONFIG_HEADERS_CHECK is not set
@@ -1255,6 +1271,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1255CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1271CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1256CONFIG_TRACING_SUPPORT=y 1272CONFIG_TRACING_SUPPORT=y
1257# CONFIG_FTRACE is not set 1273# CONFIG_FTRACE is not set
1274# CONFIG_DMA_API_DEBUG is not set
1258# CONFIG_SAMPLES is not set 1275# CONFIG_SAMPLES is not set
1259CONFIG_HAVE_ARCH_KGDB=y 1276CONFIG_HAVE_ARCH_KGDB=y
1260# CONFIG_PPC_DISABLE_WERROR is not set 1277# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1275,7 +1292,6 @@ CONFIG_CRYPTO=y
1275# 1292#
1276# Crypto core or helper 1293# Crypto core or helper
1277# 1294#
1278# CONFIG_CRYPTO_FIPS is not set
1279# CONFIG_CRYPTO_MANAGER is not set 1295# CONFIG_CRYPTO_MANAGER is not set
1280# CONFIG_CRYPTO_MANAGER2 is not set 1296# CONFIG_CRYPTO_MANAGER2 is not set
1281# CONFIG_CRYPTO_GF128MUL is not set 1297# CONFIG_CRYPTO_GF128MUL is not set
@@ -1306,11 +1322,13 @@ CONFIG_CRYPTO=y
1306# 1322#
1307# CONFIG_CRYPTO_HMAC is not set 1323# CONFIG_CRYPTO_HMAC is not set
1308# CONFIG_CRYPTO_XCBC is not set 1324# CONFIG_CRYPTO_XCBC is not set
1325# CONFIG_CRYPTO_VMAC is not set
1309 1326
1310# 1327#
1311# Digest 1328# Digest
1312# 1329#
1313# CONFIG_CRYPTO_CRC32C is not set 1330# CONFIG_CRYPTO_CRC32C is not set
1331# CONFIG_CRYPTO_GHASH is not set
1314# CONFIG_CRYPTO_MD4 is not set 1332# CONFIG_CRYPTO_MD4 is not set
1315# CONFIG_CRYPTO_MD5 is not set 1333# CONFIG_CRYPTO_MD5 is not set
1316# CONFIG_CRYPTO_MICHAEL_MIC is not set 1334# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/85xx/tqm8560_defconfig b/arch/powerpc/configs/85xx/tqm8560_defconfig
index 2e49a6e9faf2..631d92b4d4e6 100644
--- a/arch/powerpc/configs/85xx/tqm8560_defconfig
+++ b/arch/powerpc/configs/85xx/tqm8560_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:25 2009 4# Thu Nov 5 08:20:43 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_MMU_NOHASH_32=y
25CONFIG_PPC_BOOK3E_MMU=y 26CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set 27# CONFIG_PPC_MM_SLICES is not set
27# CONFIG_SMP is not set 28# CONFIG_SMP is not set
@@ -36,6 +37,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 37CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -85,11 +87,12 @@ CONFIG_SYSVIPC_SYSCTL=y
85# 87#
86# RCU Subsystem 88# RCU Subsystem
87# 89#
88CONFIG_CLASSIC_RCU=y 90CONFIG_TREE_RCU=y
89# CONFIG_TREE_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_PREEMPT_RCU is not set 92# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set
91# CONFIG_TREE_RCU_TRACE is not set 95# CONFIG_TREE_RCU_TRACE is not set
92# CONFIG_PREEMPT_RCU_TRACE is not set
93# CONFIG_IKCONFIG is not set 96# CONFIG_IKCONFIG is not set
94CONFIG_LOG_BUF_SHIFT=14 97CONFIG_LOG_BUF_SHIFT=14
95CONFIG_GROUP_SCHED=y 98CONFIG_GROUP_SCHED=y
@@ -125,29 +128,30 @@ CONFIG_TIMERFD=y
125CONFIG_EVENTFD=y 128CONFIG_EVENTFD=y
126CONFIG_SHMEM=y 129CONFIG_SHMEM=y
127CONFIG_AIO=y 130CONFIG_AIO=y
128CONFIG_HAVE_PERF_COUNTERS=y 131CONFIG_HAVE_PERF_EVENTS=y
129 132
130# 133#
131# Performance Counters 134# Kernel Performance Events And Counters
132# 135#
136# CONFIG_PERF_EVENTS is not set
133# CONFIG_PERF_COUNTERS is not set 137# CONFIG_PERF_COUNTERS is not set
134CONFIG_VM_EVENT_COUNTERS=y 138CONFIG_VM_EVENT_COUNTERS=y
135CONFIG_PCI_QUIRKS=y 139CONFIG_PCI_QUIRKS=y
136CONFIG_SLUB_DEBUG=y 140CONFIG_SLUB_DEBUG=y
137# CONFIG_STRIP_ASM_SYMS is not set
138CONFIG_COMPAT_BRK=y 141CONFIG_COMPAT_BRK=y
139# CONFIG_SLAB is not set 142# CONFIG_SLAB is not set
140CONFIG_SLUB=y 143CONFIG_SLUB=y
141# CONFIG_SLOB is not set 144# CONFIG_SLOB is not set
142# CONFIG_PROFILING is not set 145# CONFIG_PROFILING is not set
143# CONFIG_MARKERS is not set
144CONFIG_HAVE_OPROFILE=y 146CONFIG_HAVE_OPROFILE=y
145CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 147CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
146CONFIG_HAVE_IOREMAP_PROT=y 148CONFIG_HAVE_IOREMAP_PROT=y
147CONFIG_HAVE_KPROBES=y 149CONFIG_HAVE_KPROBES=y
148CONFIG_HAVE_KRETPROBES=y 150CONFIG_HAVE_KRETPROBES=y
149CONFIG_HAVE_ARCH_TRACEHOOK=y 151CONFIG_HAVE_ARCH_TRACEHOOK=y
152CONFIG_HAVE_DMA_ATTRS=y
150CONFIG_HAVE_CLK=y 153CONFIG_HAVE_CLK=y
154CONFIG_HAVE_DMA_API_DEBUG=y
151 155
152# 156#
153# GCOV-based kernel profiling 157# GCOV-based kernel profiling
@@ -190,6 +194,7 @@ CONFIG_MPC85xx=y
190# CONFIG_MPC85xx_MDS is not set 194# CONFIG_MPC85xx_MDS is not set
191# CONFIG_MPC8536_DS is not set 195# CONFIG_MPC8536_DS is not set
192# CONFIG_MPC85xx_DS is not set 196# CONFIG_MPC85xx_DS is not set
197# CONFIG_MPC85xx_RDB is not set
193# CONFIG_SOCRATES is not set 198# CONFIG_SOCRATES is not set
194# CONFIG_KSI8560 is not set 199# CONFIG_KSI8560 is not set
195# CONFIG_XES_MPC85xx is not set 200# CONFIG_XES_MPC85xx is not set
@@ -246,6 +251,7 @@ CONFIG_MATH_EMULATION=y
246CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 251CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
247CONFIG_ARCH_HAS_WALK_MEMORY=y 252CONFIG_ARCH_HAS_WALK_MEMORY=y
248CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 253CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
254CONFIG_MAX_ACTIVE_REGIONS=32
249CONFIG_ARCH_FLATMEM_ENABLE=y 255CONFIG_ARCH_FLATMEM_ENABLE=y
250CONFIG_ARCH_POPULATES_NODE_MAP=y 256CONFIG_ARCH_POPULATES_NODE_MAP=y
251CONFIG_SELECT_MEMORY_MODEL=y 257CONFIG_SELECT_MEMORY_MODEL=y
@@ -263,6 +269,7 @@ CONFIG_BOUNCE=y
263CONFIG_VIRT_TO_BUS=y 269CONFIG_VIRT_TO_BUS=y
264CONFIG_HAVE_MLOCK=y 270CONFIG_HAVE_MLOCK=y
265CONFIG_HAVE_MLOCKED_PAGE_BIT=y 271CONFIG_HAVE_MLOCKED_PAGE_BIT=y
272# CONFIG_KSM is not set
266CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 273CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
267CONFIG_PPC_4K_PAGES=y 274CONFIG_PPC_4K_PAGES=y
268# CONFIG_PPC_16K_PAGES is not set 275# CONFIG_PPC_16K_PAGES is not set
@@ -357,6 +364,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
357# CONFIG_NETFILTER is not set 364# CONFIG_NETFILTER is not set
358# CONFIG_IP_DCCP is not set 365# CONFIG_IP_DCCP is not set
359# CONFIG_IP_SCTP is not set 366# CONFIG_IP_SCTP is not set
367# CONFIG_RDS is not set
360# CONFIG_TIPC is not set 368# CONFIG_TIPC is not set
361# CONFIG_ATM is not set 369# CONFIG_ATM is not set
362# CONFIG_BRIDGE is not set 370# CONFIG_BRIDGE is not set
@@ -386,6 +394,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
386# CONFIG_AF_RXRPC is not set 394# CONFIG_AF_RXRPC is not set
387CONFIG_WIRELESS=y 395CONFIG_WIRELESS=y
388# CONFIG_CFG80211 is not set 396# CONFIG_CFG80211 is not set
397CONFIG_CFG80211_DEFAULT_PS_VALUE=0
389CONFIG_WIRELESS_OLD_REGULATORY=y 398CONFIG_WIRELESS_OLD_REGULATORY=y
390# CONFIG_WIRELESS_EXT is not set 399# CONFIG_WIRELESS_EXT is not set
391# CONFIG_LIB80211 is not set 400# CONFIG_LIB80211 is not set
@@ -393,7 +402,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
393# 402#
394# CFG80211 needs to be enabled for MAC80211 403# CFG80211 needs to be enabled for MAC80211
395# 404#
396CONFIG_MAC80211_DEFAULT_PS_VALUE=0
397# CONFIG_WIMAX is not set 405# CONFIG_WIMAX is not set
398# CONFIG_RFKILL is not set 406# CONFIG_RFKILL is not set
399# CONFIG_NET_9P is not set 407# CONFIG_NET_9P is not set
@@ -681,9 +689,11 @@ CONFIG_E100=y
681# CONFIG_SUNDANCE is not set 689# CONFIG_SUNDANCE is not set
682# CONFIG_TLAN is not set 690# CONFIG_TLAN is not set
683# CONFIG_KS8842 is not set 691# CONFIG_KS8842 is not set
692# CONFIG_KS8851_MLL is not set
684# CONFIG_VIA_RHINE is not set 693# CONFIG_VIA_RHINE is not set
685# CONFIG_SC92031 is not set 694# CONFIG_SC92031 is not set
686# CONFIG_ATL2 is not set 695# CONFIG_ATL2 is not set
696# CONFIG_XILINX_EMACLITE is not set
687# CONFIG_FS_ENET is not set 697# CONFIG_FS_ENET is not set
688CONFIG_NETDEV_1000=y 698CONFIG_NETDEV_1000=y
689# CONFIG_ACENIC is not set 699# CONFIG_ACENIC is not set
@@ -732,10 +742,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
732# CONFIG_SFC is not set 742# CONFIG_SFC is not set
733# CONFIG_BE2NET is not set 743# CONFIG_BE2NET is not set
734# CONFIG_TR is not set 744# CONFIG_TR is not set
735 745CONFIG_WLAN=y
736#
737# Wireless LAN
738#
739# CONFIG_WLAN_PRE80211 is not set 746# CONFIG_WLAN_PRE80211 is not set
740# CONFIG_WLAN_80211 is not set 747# CONFIG_WLAN_80211 is not set
741 748
@@ -831,6 +838,7 @@ CONFIG_GEN_RTC=y
831CONFIG_DEVPORT=y 838CONFIG_DEVPORT=y
832CONFIG_I2C=y 839CONFIG_I2C=y
833CONFIG_I2C_BOARDINFO=y 840CONFIG_I2C_BOARDINFO=y
841CONFIG_I2C_COMPAT=y
834CONFIG_I2C_CHARDEV=y 842CONFIG_I2C_CHARDEV=y
835CONFIG_I2C_HELPER_AUTO=y 843CONFIG_I2C_HELPER_AUTO=y
836 844
@@ -886,9 +894,6 @@ CONFIG_I2C_MPC=y
886# Miscellaneous I2C Chip support 894# Miscellaneous I2C Chip support
887# 895#
888# CONFIG_DS1682 is not set 896# CONFIG_DS1682 is not set
889# CONFIG_SENSORS_PCF8574 is not set
890# CONFIG_PCF8575 is not set
891# CONFIG_SENSORS_PCA9539 is not set
892# CONFIG_SENSORS_TSL2550 is not set 897# CONFIG_SENSORS_TSL2550 is not set
893# CONFIG_I2C_DEBUG_CORE is not set 898# CONFIG_I2C_DEBUG_CORE is not set
894# CONFIG_I2C_DEBUG_ALGO is not set 899# CONFIG_I2C_DEBUG_ALGO is not set
@@ -921,14 +926,24 @@ CONFIG_GPIOLIB=y
921# PCI GPIO expanders: 926# PCI GPIO expanders:
922# 927#
923# CONFIG_GPIO_BT8XX is not set 928# CONFIG_GPIO_BT8XX is not set
929# CONFIG_GPIO_LANGWELL is not set
924 930
925# 931#
926# SPI GPIO expanders: 932# SPI GPIO expanders:
927# 933#
934
935#
936# AC97 GPIO expanders:
937#
928# CONFIG_W1 is not set 938# CONFIG_W1 is not set
929# CONFIG_POWER_SUPPLY is not set 939# CONFIG_POWER_SUPPLY is not set
930CONFIG_HWMON=y 940CONFIG_HWMON=y
931# CONFIG_HWMON_VID is not set 941# CONFIG_HWMON_VID is not set
942CONFIG_HWMON_DEBUG_CHIP=y
943
944#
945# Native drivers
946#
932# CONFIG_SENSORS_AD7414 is not set 947# CONFIG_SENSORS_AD7414 is not set
933# CONFIG_SENSORS_AD7418 is not set 948# CONFIG_SENSORS_AD7418 is not set
934# CONFIG_SENSORS_ADM1021 is not set 949# CONFIG_SENSORS_ADM1021 is not set
@@ -979,6 +994,7 @@ CONFIG_SENSORS_LM75=y
979# CONFIG_SENSORS_ADS7828 is not set 994# CONFIG_SENSORS_ADS7828 is not set
980# CONFIG_SENSORS_THMC50 is not set 995# CONFIG_SENSORS_THMC50 is not set
981# CONFIG_SENSORS_TMP401 is not set 996# CONFIG_SENSORS_TMP401 is not set
997# CONFIG_SENSORS_TMP421 is not set
982# CONFIG_SENSORS_VIA686A is not set 998# CONFIG_SENSORS_VIA686A is not set
983# CONFIG_SENSORS_VT1211 is not set 999# CONFIG_SENSORS_VT1211 is not set
984# CONFIG_SENSORS_VT8231 is not set 1000# CONFIG_SENSORS_VT8231 is not set
@@ -990,9 +1006,7 @@ CONFIG_SENSORS_LM75=y
990# CONFIG_SENSORS_W83L786NG is not set 1006# CONFIG_SENSORS_W83L786NG is not set
991# CONFIG_SENSORS_W83627HF is not set 1007# CONFIG_SENSORS_W83627HF is not set
992# CONFIG_SENSORS_W83627EHF is not set 1008# CONFIG_SENSORS_W83627EHF is not set
993CONFIG_HWMON_DEBUG_CHIP=y
994# CONFIG_THERMAL is not set 1009# CONFIG_THERMAL is not set
995# CONFIG_THERMAL_HWMON is not set
996# CONFIG_WATCHDOG is not set 1010# CONFIG_WATCHDOG is not set
997CONFIG_SSB_POSSIBLE=y 1011CONFIG_SSB_POSSIBLE=y
998 1012
@@ -1012,6 +1026,7 @@ CONFIG_SSB_POSSIBLE=y
1012# CONFIG_MFD_TMIO is not set 1026# CONFIG_MFD_TMIO is not set
1013# CONFIG_PMIC_DA903X is not set 1027# CONFIG_PMIC_DA903X is not set
1014# CONFIG_MFD_WM8400 is not set 1028# CONFIG_MFD_WM8400 is not set
1029# CONFIG_MFD_WM831X is not set
1015# CONFIG_MFD_WM8350_I2C is not set 1030# CONFIG_MFD_WM8350_I2C is not set
1016# CONFIG_MFD_PCF50633 is not set 1031# CONFIG_MFD_PCF50633 is not set
1017# CONFIG_AB3100_CORE is not set 1032# CONFIG_AB3100_CORE is not set
@@ -1022,6 +1037,7 @@ CONFIG_SSB_POSSIBLE=y
1022# Graphics support 1037# Graphics support
1023# 1038#
1024# CONFIG_AGP is not set 1039# CONFIG_AGP is not set
1040CONFIG_VGA_ARB=y
1025# CONFIG_DRM is not set 1041# CONFIG_DRM is not set
1026# CONFIG_VGASTATE is not set 1042# CONFIG_VGASTATE is not set
1027# CONFIG_VIDEO_OUTPUT_CONTROL is not set 1043# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -1035,7 +1051,6 @@ CONFIG_SSB_POSSIBLE=y
1035# CONFIG_SOUND is not set 1051# CONFIG_SOUND is not set
1036CONFIG_HID_SUPPORT=y 1052CONFIG_HID_SUPPORT=y
1037CONFIG_HID=y 1053CONFIG_HID=y
1038# CONFIG_HID_DEBUG is not set
1039# CONFIG_HIDRAW is not set 1054# CONFIG_HIDRAW is not set
1040# CONFIG_HID_PID is not set 1055# CONFIG_HID_PID is not set
1041 1056
@@ -1100,6 +1115,7 @@ CONFIG_FS_MBCACHE=y
1100# CONFIG_GFS2_FS is not set 1115# CONFIG_GFS2_FS is not set
1101# CONFIG_OCFS2_FS is not set 1116# CONFIG_OCFS2_FS is not set
1102# CONFIG_BTRFS_FS is not set 1117# CONFIG_BTRFS_FS is not set
1118# CONFIG_NILFS2_FS is not set
1103CONFIG_FILE_LOCKING=y 1119CONFIG_FILE_LOCKING=y
1104CONFIG_FSNOTIFY=y 1120CONFIG_FSNOTIFY=y
1105CONFIG_DNOTIFY=y 1121CONFIG_DNOTIFY=y
@@ -1169,7 +1185,6 @@ CONFIG_CRAMFS=y
1169# CONFIG_ROMFS_FS is not set 1185# CONFIG_ROMFS_FS is not set
1170# CONFIG_SYSV_FS is not set 1186# CONFIG_SYSV_FS is not set
1171# CONFIG_UFS_FS is not set 1187# CONFIG_UFS_FS is not set
1172# CONFIG_NILFS2_FS is not set
1173CONFIG_NETWORK_FILESYSTEMS=y 1188CONFIG_NETWORK_FILESYSTEMS=y
1174CONFIG_NFS_FS=y 1189CONFIG_NFS_FS=y
1175# CONFIG_NFS_V3 is not set 1190# CONFIG_NFS_V3 is not set
@@ -1238,6 +1253,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1238CONFIG_ENABLE_MUST_CHECK=y 1253CONFIG_ENABLE_MUST_CHECK=y
1239CONFIG_FRAME_WARN=1024 1254CONFIG_FRAME_WARN=1024
1240# CONFIG_MAGIC_SYSRQ is not set 1255# CONFIG_MAGIC_SYSRQ is not set
1256# CONFIG_STRIP_ASM_SYMS is not set
1241# CONFIG_UNUSED_SYMBOLS is not set 1257# CONFIG_UNUSED_SYMBOLS is not set
1242# CONFIG_DEBUG_FS is not set 1258# CONFIG_DEBUG_FS is not set
1243# CONFIG_HEADERS_CHECK is not set 1259# CONFIG_HEADERS_CHECK is not set
@@ -1255,6 +1271,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1255CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1271CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1256CONFIG_TRACING_SUPPORT=y 1272CONFIG_TRACING_SUPPORT=y
1257# CONFIG_FTRACE is not set 1273# CONFIG_FTRACE is not set
1274# CONFIG_DMA_API_DEBUG is not set
1258# CONFIG_SAMPLES is not set 1275# CONFIG_SAMPLES is not set
1259CONFIG_HAVE_ARCH_KGDB=y 1276CONFIG_HAVE_ARCH_KGDB=y
1260# CONFIG_PPC_DISABLE_WERROR is not set 1277# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1275,7 +1292,6 @@ CONFIG_CRYPTO=y
1275# 1292#
1276# Crypto core or helper 1293# Crypto core or helper
1277# 1294#
1278# CONFIG_CRYPTO_FIPS is not set
1279# CONFIG_CRYPTO_MANAGER is not set 1295# CONFIG_CRYPTO_MANAGER is not set
1280# CONFIG_CRYPTO_MANAGER2 is not set 1296# CONFIG_CRYPTO_MANAGER2 is not set
1281# CONFIG_CRYPTO_GF128MUL is not set 1297# CONFIG_CRYPTO_GF128MUL is not set
@@ -1306,11 +1322,13 @@ CONFIG_CRYPTO=y
1306# 1322#
1307# CONFIG_CRYPTO_HMAC is not set 1323# CONFIG_CRYPTO_HMAC is not set
1308# CONFIG_CRYPTO_XCBC is not set 1324# CONFIG_CRYPTO_XCBC is not set
1325# CONFIG_CRYPTO_VMAC is not set
1309 1326
1310# 1327#
1311# Digest 1328# Digest
1312# 1329#
1313# CONFIG_CRYPTO_CRC32C is not set 1330# CONFIG_CRYPTO_CRC32C is not set
1331# CONFIG_CRYPTO_GHASH is not set
1314# CONFIG_CRYPTO_MD4 is not set 1332# CONFIG_CRYPTO_MD4 is not set
1315# CONFIG_CRYPTO_MD5 is not set 1333# CONFIG_CRYPTO_MD5 is not set
1316# CONFIG_CRYPTO_MICHAEL_MIC is not set 1334# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/85xx/xes_mpc85xx_defconfig b/arch/powerpc/configs/85xx/xes_mpc85xx_defconfig
index 1025da2bf069..52acbac0c4fe 100644
--- a/arch/powerpc/configs/85xx/xes_mpc85xx_defconfig
+++ b/arch/powerpc/configs/85xx/xes_mpc85xx_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:25 2009 4# Thu Nov 5 08:20:44 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_MMU_NOHASH_32=y
25CONFIG_PPC_BOOK3E_MMU=y 26CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set 27# CONFIG_PPC_MM_SLICES is not set
27CONFIG_SMP=y 28CONFIG_SMP=y
@@ -37,6 +38,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
37CONFIG_GENERIC_HARDIRQS=y 38CONFIG_GENERIC_HARDIRQS=y
38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 39CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 40# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
41# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
40CONFIG_IRQ_PER_CPU=y 42CONFIG_IRQ_PER_CPU=y
41CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
42CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -89,11 +91,12 @@ CONFIG_AUDIT=y
89# 91#
90# RCU Subsystem 92# RCU Subsystem
91# 93#
92CONFIG_CLASSIC_RCU=y 94CONFIG_TREE_RCU=y
93# CONFIG_TREE_RCU is not set 95# CONFIG_TREE_PREEMPT_RCU is not set
94# CONFIG_PREEMPT_RCU is not set 96# CONFIG_RCU_TRACE is not set
97CONFIG_RCU_FANOUT=32
98# CONFIG_RCU_FANOUT_EXACT is not set
95# CONFIG_TREE_RCU_TRACE is not set 99# CONFIG_TREE_RCU_TRACE is not set
96# CONFIG_PREEMPT_RCU_TRACE is not set
97CONFIG_IKCONFIG=y 100CONFIG_IKCONFIG=y
98CONFIG_IKCONFIG_PROC=y 101CONFIG_IKCONFIG_PROC=y
99CONFIG_LOG_BUF_SHIFT=14 102CONFIG_LOG_BUF_SHIFT=14
@@ -128,22 +131,21 @@ CONFIG_TIMERFD=y
128CONFIG_EVENTFD=y 131CONFIG_EVENTFD=y
129CONFIG_SHMEM=y 132CONFIG_SHMEM=y
130CONFIG_AIO=y 133CONFIG_AIO=y
131CONFIG_HAVE_PERF_COUNTERS=y 134CONFIG_HAVE_PERF_EVENTS=y
132 135
133# 136#
134# Performance Counters 137# Kernel Performance Events And Counters
135# 138#
139# CONFIG_PERF_EVENTS is not set
136# CONFIG_PERF_COUNTERS is not set 140# CONFIG_PERF_COUNTERS is not set
137CONFIG_VM_EVENT_COUNTERS=y 141CONFIG_VM_EVENT_COUNTERS=y
138CONFIG_PCI_QUIRKS=y 142CONFIG_PCI_QUIRKS=y
139CONFIG_SLUB_DEBUG=y 143CONFIG_SLUB_DEBUG=y
140# CONFIG_STRIP_ASM_SYMS is not set
141CONFIG_COMPAT_BRK=y 144CONFIG_COMPAT_BRK=y
142# CONFIG_SLAB is not set 145# CONFIG_SLAB is not set
143CONFIG_SLUB=y 146CONFIG_SLUB=y
144# CONFIG_SLOB is not set 147# CONFIG_SLOB is not set
145# CONFIG_PROFILING is not set 148# CONFIG_PROFILING is not set
146# CONFIG_MARKERS is not set
147CONFIG_HAVE_OPROFILE=y 149CONFIG_HAVE_OPROFILE=y
148# CONFIG_KPROBES is not set 150# CONFIG_KPROBES is not set
149CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 151CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -151,7 +153,9 @@ CONFIG_HAVE_IOREMAP_PROT=y
151CONFIG_HAVE_KPROBES=y 153CONFIG_HAVE_KPROBES=y
152CONFIG_HAVE_KRETPROBES=y 154CONFIG_HAVE_KRETPROBES=y
153CONFIG_HAVE_ARCH_TRACEHOOK=y 155CONFIG_HAVE_ARCH_TRACEHOOK=y
156CONFIG_HAVE_DMA_ATTRS=y
154CONFIG_USE_GENERIC_SMP_HELPERS=y 157CONFIG_USE_GENERIC_SMP_HELPERS=y
158CONFIG_HAVE_DMA_API_DEBUG=y
155 159
156# 160#
157# GCOV-based kernel profiling 161# GCOV-based kernel profiling
@@ -201,6 +205,7 @@ CONFIG_MPC85xx=y
201# CONFIG_MPC85xx_MDS is not set 205# CONFIG_MPC85xx_MDS is not set
202# CONFIG_MPC8536_DS is not set 206# CONFIG_MPC8536_DS is not set
203# CONFIG_MPC85xx_DS is not set 207# CONFIG_MPC85xx_DS is not set
208# CONFIG_MPC85xx_RDB is not set
204# CONFIG_SOCRATES is not set 209# CONFIG_SOCRATES is not set
205# CONFIG_KSI8560 is not set 210# CONFIG_KSI8560 is not set
206CONFIG_XES_MPC85xx=y 211CONFIG_XES_MPC85xx=y
@@ -256,6 +261,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
256CONFIG_ARCH_HAS_WALK_MEMORY=y 261CONFIG_ARCH_HAS_WALK_MEMORY=y
257CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 262CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
258# CONFIG_IRQ_ALL_CPUS is not set 263# CONFIG_IRQ_ALL_CPUS is not set
264CONFIG_MAX_ACTIVE_REGIONS=32
259CONFIG_ARCH_FLATMEM_ENABLE=y 265CONFIG_ARCH_FLATMEM_ENABLE=y
260CONFIG_ARCH_POPULATES_NODE_MAP=y 266CONFIG_ARCH_POPULATES_NODE_MAP=y
261CONFIG_SELECT_MEMORY_MODEL=y 267CONFIG_SELECT_MEMORY_MODEL=y
@@ -273,6 +279,7 @@ CONFIG_BOUNCE=y
273CONFIG_VIRT_TO_BUS=y 279CONFIG_VIRT_TO_BUS=y
274CONFIG_HAVE_MLOCK=y 280CONFIG_HAVE_MLOCK=y
275CONFIG_HAVE_MLOCKED_PAGE_BIT=y 281CONFIG_HAVE_MLOCKED_PAGE_BIT=y
282# CONFIG_KSM is not set
276CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 283CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
277CONFIG_PPC_4K_PAGES=y 284CONFIG_PPC_4K_PAGES=y
278# CONFIG_PPC_16K_PAGES is not set 285# CONFIG_PPC_16K_PAGES is not set
@@ -405,6 +412,7 @@ CONFIG_IPV6_NDISC_NODETYPE=y
405# CONFIG_NETFILTER is not set 412# CONFIG_NETFILTER is not set
406# CONFIG_IP_DCCP is not set 413# CONFIG_IP_DCCP is not set
407# CONFIG_IP_SCTP is not set 414# CONFIG_IP_SCTP is not set
415# CONFIG_RDS is not set
408# CONFIG_TIPC is not set 416# CONFIG_TIPC is not set
409# CONFIG_ATM is not set 417# CONFIG_ATM is not set
410# CONFIG_BRIDGE is not set 418# CONFIG_BRIDGE is not set
@@ -446,6 +454,7 @@ CONFIG_FIB_RULES=y
446# Generic Driver Options 454# Generic Driver Options
447# 455#
448CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 456CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
457# CONFIG_DEVTMPFS is not set
449CONFIG_STANDALONE=y 458CONFIG_STANDALONE=y
450CONFIG_PREVENT_FIRMWARE_BUILD=y 459CONFIG_PREVENT_FIRMWARE_BUILD=y
451CONFIG_FW_LOADER=y 460CONFIG_FW_LOADER=y
@@ -457,9 +466,9 @@ CONFIG_EXTRA_FIRMWARE=""
457# CONFIG_CONNECTOR is not set 466# CONFIG_CONNECTOR is not set
458CONFIG_MTD=y 467CONFIG_MTD=y
459# CONFIG_MTD_DEBUG is not set 468# CONFIG_MTD_DEBUG is not set
469# CONFIG_MTD_TESTS is not set
460# CONFIG_MTD_CONCAT is not set 470# CONFIG_MTD_CONCAT is not set
461CONFIG_MTD_PARTITIONS=y 471CONFIG_MTD_PARTITIONS=y
462# CONFIG_MTD_TESTS is not set
463CONFIG_MTD_REDBOOT_PARTS=y 472CONFIG_MTD_REDBOOT_PARTS=y
464CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 473CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
465# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set 474# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
@@ -635,6 +644,7 @@ CONFIG_SCSI_WAIT_SCAN=m
635CONFIG_SCSI_LOWLEVEL=y 644CONFIG_SCSI_LOWLEVEL=y
636# CONFIG_ISCSI_TCP is not set 645# CONFIG_ISCSI_TCP is not set
637# CONFIG_SCSI_BNX2_ISCSI is not set 646# CONFIG_SCSI_BNX2_ISCSI is not set
647# CONFIG_BE2ISCSI is not set
638# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 648# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
639# CONFIG_SCSI_3W_9XXX is not set 649# CONFIG_SCSI_3W_9XXX is not set
640# CONFIG_SCSI_ACARD is not set 650# CONFIG_SCSI_ACARD is not set
@@ -674,11 +684,14 @@ CONFIG_SCSI_LOWLEVEL=y
674# CONFIG_SCSI_DC390T is not set 684# CONFIG_SCSI_DC390T is not set
675# CONFIG_SCSI_NSP32 is not set 685# CONFIG_SCSI_NSP32 is not set
676# CONFIG_SCSI_DEBUG is not set 686# CONFIG_SCSI_DEBUG is not set
687# CONFIG_SCSI_PMCRAID is not set
677# CONFIG_SCSI_SRP is not set 688# CONFIG_SCSI_SRP is not set
689# CONFIG_SCSI_BFA_FC is not set
678# CONFIG_SCSI_DH is not set 690# CONFIG_SCSI_DH is not set
679# CONFIG_SCSI_OSD_INITIATOR is not set 691# CONFIG_SCSI_OSD_INITIATOR is not set
680CONFIG_ATA=y 692CONFIG_ATA=y
681# CONFIG_ATA_NONSTANDARD is not set 693# CONFIG_ATA_NONSTANDARD is not set
694CONFIG_ATA_VERBOSE_ERROR=y
682CONFIG_SATA_PMP=y 695CONFIG_SATA_PMP=y
683CONFIG_SATA_AHCI=y 696CONFIG_SATA_AHCI=y
684# CONFIG_SATA_SIL24 is not set 697# CONFIG_SATA_SIL24 is not set
@@ -701,6 +714,7 @@ CONFIG_ATA_SFF=y
701CONFIG_PATA_ALI=y 714CONFIG_PATA_ALI=y
702# CONFIG_PATA_AMD is not set 715# CONFIG_PATA_AMD is not set
703# CONFIG_PATA_ARTOP is not set 716# CONFIG_PATA_ARTOP is not set
717# CONFIG_PATA_ATP867X is not set
704# CONFIG_PATA_ATIIXP is not set 718# CONFIG_PATA_ATIIXP is not set
705# CONFIG_PATA_CMD640_PCI is not set 719# CONFIG_PATA_CMD640_PCI is not set
706# CONFIG_PATA_CMD64X is not set 720# CONFIG_PATA_CMD64X is not set
@@ -728,6 +742,7 @@ CONFIG_PATA_ALI=y
728# CONFIG_PATA_OPTIDMA is not set 742# CONFIG_PATA_OPTIDMA is not set
729# CONFIG_PATA_PDC_OLD is not set 743# CONFIG_PATA_PDC_OLD is not set
730# CONFIG_PATA_RADISYS is not set 744# CONFIG_PATA_RADISYS is not set
745# CONFIG_PATA_RDC is not set
731# CONFIG_PATA_RZ1000 is not set 746# CONFIG_PATA_RZ1000 is not set
732# CONFIG_PATA_SC1200 is not set 747# CONFIG_PATA_SC1200 is not set
733# CONFIG_PATA_SERVERWORKS is not set 748# CONFIG_PATA_SERVERWORKS is not set
@@ -804,7 +819,9 @@ CONFIG_MII=y
804# CONFIG_NET_PCI is not set 819# CONFIG_NET_PCI is not set
805# CONFIG_B44 is not set 820# CONFIG_B44 is not set
806# CONFIG_KS8842 is not set 821# CONFIG_KS8842 is not set
822# CONFIG_KS8851_MLL is not set
807# CONFIG_ATL2 is not set 823# CONFIG_ATL2 is not set
824# CONFIG_XILINX_EMACLITE is not set
808CONFIG_NETDEV_1000=y 825CONFIG_NETDEV_1000=y
809# CONFIG_ACENIC is not set 826# CONFIG_ACENIC is not set
810# CONFIG_DL2K is not set 827# CONFIG_DL2K is not set
@@ -834,10 +851,7 @@ CONFIG_GIANFAR=y
834# CONFIG_JME is not set 851# CONFIG_JME is not set
835# CONFIG_NETDEV_10000 is not set 852# CONFIG_NETDEV_10000 is not set
836# CONFIG_TR is not set 853# CONFIG_TR is not set
837 854CONFIG_WLAN=y
838#
839# Wireless LAN
840#
841# CONFIG_WLAN_PRE80211 is not set 855# CONFIG_WLAN_PRE80211 is not set
842# CONFIG_WLAN_80211 is not set 856# CONFIG_WLAN_80211 is not set
843 857
@@ -951,6 +965,7 @@ CONFIG_NVRAM=y
951CONFIG_DEVPORT=y 965CONFIG_DEVPORT=y
952CONFIG_I2C=y 966CONFIG_I2C=y
953CONFIG_I2C_BOARDINFO=y 967CONFIG_I2C_BOARDINFO=y
968CONFIG_I2C_COMPAT=y
954CONFIG_I2C_CHARDEV=y 969CONFIG_I2C_CHARDEV=y
955CONFIG_I2C_HELPER_AUTO=y 970CONFIG_I2C_HELPER_AUTO=y
956 971
@@ -1006,8 +1021,6 @@ CONFIG_I2C_MPC=y
1006# Miscellaneous I2C Chip support 1021# Miscellaneous I2C Chip support
1007# 1022#
1008# CONFIG_DS1682 is not set 1023# CONFIG_DS1682 is not set
1009# CONFIG_SENSORS_PCF8574 is not set
1010# CONFIG_PCF8575 is not set
1011# CONFIG_SENSORS_TSL2550 is not set 1024# CONFIG_SENSORS_TSL2550 is not set
1012# CONFIG_I2C_DEBUG_CORE is not set 1025# CONFIG_I2C_DEBUG_CORE is not set
1013# CONFIG_I2C_DEBUG_ALGO is not set 1026# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1041,14 +1054,24 @@ CONFIG_GPIO_PCA953X=y
1041# PCI GPIO expanders: 1054# PCI GPIO expanders:
1042# 1055#
1043# CONFIG_GPIO_BT8XX is not set 1056# CONFIG_GPIO_BT8XX is not set
1057# CONFIG_GPIO_LANGWELL is not set
1044 1058
1045# 1059#
1046# SPI GPIO expanders: 1060# SPI GPIO expanders:
1047# 1061#
1062
1063#
1064# AC97 GPIO expanders:
1065#
1048# CONFIG_W1 is not set 1066# CONFIG_W1 is not set
1049# CONFIG_POWER_SUPPLY is not set 1067# CONFIG_POWER_SUPPLY is not set
1050CONFIG_HWMON=y 1068CONFIG_HWMON=y
1051# CONFIG_HWMON_VID is not set 1069# CONFIG_HWMON_VID is not set
1070# CONFIG_HWMON_DEBUG_CHIP is not set
1071
1072#
1073# Native drivers
1074#
1052# CONFIG_SENSORS_AD7414 is not set 1075# CONFIG_SENSORS_AD7414 is not set
1053# CONFIG_SENSORS_AD7418 is not set 1076# CONFIG_SENSORS_AD7418 is not set
1054# CONFIG_SENSORS_ADM1021 is not set 1077# CONFIG_SENSORS_ADM1021 is not set
@@ -1099,6 +1122,7 @@ CONFIG_SENSORS_LM90=y
1099# CONFIG_SENSORS_ADS7828 is not set 1122# CONFIG_SENSORS_ADS7828 is not set
1100# CONFIG_SENSORS_THMC50 is not set 1123# CONFIG_SENSORS_THMC50 is not set
1101# CONFIG_SENSORS_TMP401 is not set 1124# CONFIG_SENSORS_TMP401 is not set
1125# CONFIG_SENSORS_TMP421 is not set
1102# CONFIG_SENSORS_VIA686A is not set 1126# CONFIG_SENSORS_VIA686A is not set
1103# CONFIG_SENSORS_VT1211 is not set 1127# CONFIG_SENSORS_VT1211 is not set
1104# CONFIG_SENSORS_VT8231 is not set 1128# CONFIG_SENSORS_VT8231 is not set
@@ -1110,9 +1134,7 @@ CONFIG_SENSORS_LM90=y
1110# CONFIG_SENSORS_W83L786NG is not set 1134# CONFIG_SENSORS_W83L786NG is not set
1111# CONFIG_SENSORS_W83627HF is not set 1135# CONFIG_SENSORS_W83627HF is not set
1112# CONFIG_SENSORS_W83627EHF is not set 1136# CONFIG_SENSORS_W83627EHF is not set
1113# CONFIG_HWMON_DEBUG_CHIP is not set
1114# CONFIG_THERMAL is not set 1137# CONFIG_THERMAL is not set
1115# CONFIG_THERMAL_HWMON is not set
1116CONFIG_WATCHDOG=y 1138CONFIG_WATCHDOG=y
1117# CONFIG_WATCHDOG_NOWAYOUT is not set 1139# CONFIG_WATCHDOG_NOWAYOUT is not set
1118 1140
@@ -1151,6 +1173,7 @@ CONFIG_SSB_POSSIBLE=y
1151# CONFIG_MFD_TMIO is not set 1173# CONFIG_MFD_TMIO is not set
1152# CONFIG_PMIC_DA903X is not set 1174# CONFIG_PMIC_DA903X is not set
1153# CONFIG_MFD_WM8400 is not set 1175# CONFIG_MFD_WM8400 is not set
1176# CONFIG_MFD_WM831X is not set
1154# CONFIG_MFD_WM8350_I2C is not set 1177# CONFIG_MFD_WM8350_I2C is not set
1155# CONFIG_MFD_PCF50633 is not set 1178# CONFIG_MFD_PCF50633 is not set
1156# CONFIG_AB3100_CORE is not set 1179# CONFIG_AB3100_CORE is not set
@@ -1161,6 +1184,7 @@ CONFIG_SSB_POSSIBLE=y
1161# Graphics support 1184# Graphics support
1162# 1185#
1163# CONFIG_AGP is not set 1186# CONFIG_AGP is not set
1187CONFIG_VGA_ARB=y
1164# CONFIG_DRM is not set 1188# CONFIG_DRM is not set
1165# CONFIG_VGASTATE is not set 1189# CONFIG_VGASTATE is not set
1166CONFIG_VIDEO_OUTPUT_CONTROL=y 1190CONFIG_VIDEO_OUTPUT_CONTROL=y
@@ -1181,7 +1205,6 @@ CONFIG_DUMMY_CONSOLE=y
1181# CONFIG_SOUND is not set 1205# CONFIG_SOUND is not set
1182CONFIG_HID_SUPPORT=y 1206CONFIG_HID_SUPPORT=y
1183CONFIG_HID=y 1207CONFIG_HID=y
1184# CONFIG_HID_DEBUG is not set
1185# CONFIG_HIDRAW is not set 1208# CONFIG_HIDRAW is not set
1186 1209
1187# 1210#
@@ -1204,6 +1227,7 @@ CONFIG_USB_HID=y
1204# CONFIG_HID_EZKEY is not set 1227# CONFIG_HID_EZKEY is not set
1205# CONFIG_HID_KYE is not set 1228# CONFIG_HID_KYE is not set
1206# CONFIG_HID_GYRATION is not set 1229# CONFIG_HID_GYRATION is not set
1230# CONFIG_HID_TWINHAN is not set
1207# CONFIG_HID_KENSINGTON is not set 1231# CONFIG_HID_KENSINGTON is not set
1208# CONFIG_HID_LOGITECH is not set 1232# CONFIG_HID_LOGITECH is not set
1209# CONFIG_HID_MICROSOFT is not set 1233# CONFIG_HID_MICROSOFT is not set
@@ -1249,6 +1273,7 @@ CONFIG_USB_MON=y
1249# CONFIG_USB_OXU210HP_HCD is not set 1273# CONFIG_USB_OXU210HP_HCD is not set
1250# CONFIG_USB_ISP116X_HCD is not set 1274# CONFIG_USB_ISP116X_HCD is not set
1251CONFIG_USB_ISP1760_HCD=y 1275CONFIG_USB_ISP1760_HCD=y
1276# CONFIG_USB_ISP1362_HCD is not set
1252# CONFIG_USB_OHCI_HCD is not set 1277# CONFIG_USB_OHCI_HCD is not set
1253# CONFIG_USB_UHCI_HCD is not set 1278# CONFIG_USB_UHCI_HCD is not set
1254# CONFIG_USB_SL811_HCD is not set 1279# CONFIG_USB_SL811_HCD is not set
@@ -1466,6 +1491,7 @@ CONFIG_FS_MBCACHE=y
1466# CONFIG_GFS2_FS is not set 1491# CONFIG_GFS2_FS is not set
1467# CONFIG_OCFS2_FS is not set 1492# CONFIG_OCFS2_FS is not set
1468# CONFIG_BTRFS_FS is not set 1493# CONFIG_BTRFS_FS is not set
1494# CONFIG_NILFS2_FS is not set
1469CONFIG_FILE_LOCKING=y 1495CONFIG_FILE_LOCKING=y
1470CONFIG_FSNOTIFY=y 1496CONFIG_FSNOTIFY=y
1471CONFIG_DNOTIFY=y 1497CONFIG_DNOTIFY=y
@@ -1541,7 +1567,6 @@ CONFIG_JFFS2_RTIME=y
1541# CONFIG_ROMFS_FS is not set 1567# CONFIG_ROMFS_FS is not set
1542# CONFIG_SYSV_FS is not set 1568# CONFIG_SYSV_FS is not set
1543# CONFIG_UFS_FS is not set 1569# CONFIG_UFS_FS is not set
1544# CONFIG_NILFS2_FS is not set
1545CONFIG_NETWORK_FILESYSTEMS=y 1570CONFIG_NETWORK_FILESYSTEMS=y
1546CONFIG_NFS_FS=y 1571CONFIG_NFS_FS=y
1547CONFIG_NFS_V3=y 1572CONFIG_NFS_V3=y
@@ -1658,6 +1683,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1658CONFIG_ENABLE_MUST_CHECK=y 1683CONFIG_ENABLE_MUST_CHECK=y
1659CONFIG_FRAME_WARN=1024 1684CONFIG_FRAME_WARN=1024
1660# CONFIG_MAGIC_SYSRQ is not set 1685# CONFIG_MAGIC_SYSRQ is not set
1686# CONFIG_STRIP_ASM_SYMS is not set
1661# CONFIG_UNUSED_SYMBOLS is not set 1687# CONFIG_UNUSED_SYMBOLS is not set
1662# CONFIG_DEBUG_FS is not set 1688# CONFIG_DEBUG_FS is not set
1663# CONFIG_HEADERS_CHECK is not set 1689# CONFIG_HEADERS_CHECK is not set
@@ -1675,6 +1701,7 @@ CONFIG_SCHED_DEBUG=y
1675# CONFIG_DEBUG_OBJECTS is not set 1701# CONFIG_DEBUG_OBJECTS is not set
1676# CONFIG_SLUB_DEBUG_ON is not set 1702# CONFIG_SLUB_DEBUG_ON is not set
1677# CONFIG_SLUB_STATS is not set 1703# CONFIG_SLUB_STATS is not set
1704# CONFIG_DEBUG_KMEMLEAK is not set
1678# CONFIG_DEBUG_RT_MUTEXES is not set 1705# CONFIG_DEBUG_RT_MUTEXES is not set
1679# CONFIG_RT_MUTEX_TESTER is not set 1706# CONFIG_RT_MUTEX_TESTER is not set
1680# CONFIG_DEBUG_SPINLOCK is not set 1707# CONFIG_DEBUG_SPINLOCK is not set
@@ -1694,10 +1721,12 @@ CONFIG_SCHED_DEBUG=y
1694# CONFIG_DEBUG_LIST is not set 1721# CONFIG_DEBUG_LIST is not set
1695# CONFIG_DEBUG_SG is not set 1722# CONFIG_DEBUG_SG is not set
1696# CONFIG_DEBUG_NOTIFIERS is not set 1723# CONFIG_DEBUG_NOTIFIERS is not set
1724# CONFIG_DEBUG_CREDENTIALS is not set
1697# CONFIG_RCU_TORTURE_TEST is not set 1725# CONFIG_RCU_TORTURE_TEST is not set
1698# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1726# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1699# CONFIG_BACKTRACE_SELF_TEST is not set 1727# CONFIG_BACKTRACE_SELF_TEST is not set
1700# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1728# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1729# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1701# CONFIG_FAULT_INJECTION is not set 1730# CONFIG_FAULT_INJECTION is not set
1702# CONFIG_LATENCYTOP is not set 1731# CONFIG_LATENCYTOP is not set
1703# CONFIG_SYSCTL_SYSCALL_CHECK is not set 1732# CONFIG_SYSCTL_SYSCALL_CHECK is not set
@@ -1720,10 +1749,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1720# CONFIG_KMEMTRACE is not set 1749# CONFIG_KMEMTRACE is not set
1721# CONFIG_WORKQUEUE_TRACER is not set 1750# CONFIG_WORKQUEUE_TRACER is not set
1722# CONFIG_BLK_DEV_IO_TRACE is not set 1751# CONFIG_BLK_DEV_IO_TRACE is not set
1752# CONFIG_DMA_API_DEBUG is not set
1723# CONFIG_SAMPLES is not set 1753# CONFIG_SAMPLES is not set
1724CONFIG_HAVE_ARCH_KGDB=y 1754CONFIG_HAVE_ARCH_KGDB=y
1725# CONFIG_KGDB is not set 1755# CONFIG_KGDB is not set
1726# CONFIG_KMEMCHECK is not set
1727# CONFIG_PPC_DISABLE_WERROR is not set 1756# CONFIG_PPC_DISABLE_WERROR is not set
1728CONFIG_PPC_WERROR=y 1757CONFIG_PPC_WERROR=y
1729CONFIG_PRINT_STACK_DEPTH=64 1758CONFIG_PRINT_STACK_DEPTH=64
@@ -1749,7 +1778,6 @@ CONFIG_CRYPTO=y
1749# 1778#
1750# Crypto core or helper 1779# Crypto core or helper
1751# 1780#
1752# CONFIG_CRYPTO_FIPS is not set
1753CONFIG_CRYPTO_ALGAPI=y 1781CONFIG_CRYPTO_ALGAPI=y
1754CONFIG_CRYPTO_ALGAPI2=y 1782CONFIG_CRYPTO_ALGAPI2=y
1755CONFIG_CRYPTO_AEAD2=y 1783CONFIG_CRYPTO_AEAD2=y
@@ -1790,11 +1818,13 @@ CONFIG_CRYPTO_WORKQUEUE=y
1790# 1818#
1791CONFIG_CRYPTO_HMAC=y 1819CONFIG_CRYPTO_HMAC=y
1792# CONFIG_CRYPTO_XCBC is not set 1820# CONFIG_CRYPTO_XCBC is not set
1821# CONFIG_CRYPTO_VMAC is not set
1793 1822
1794# 1823#
1795# Digest 1824# Digest
1796# 1825#
1797# CONFIG_CRYPTO_CRC32C is not set 1826# CONFIG_CRYPTO_CRC32C is not set
1827# CONFIG_CRYPTO_GHASH is not set
1798# CONFIG_CRYPTO_MD4 is not set 1828# CONFIG_CRYPTO_MD4 is not set
1799CONFIG_CRYPTO_MD5=y 1829CONFIG_CRYPTO_MD5=y
1800# CONFIG_CRYPTO_MICHAEL_MIC is not set 1830# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/86xx/gef_ppc9a_defconfig b/arch/powerpc/configs/86xx/gef_ppc9a_defconfig
index 527ad1a5e802..28980738776c 100644
--- a/arch/powerpc/configs/86xx/gef_ppc9a_defconfig
+++ b/arch/powerpc/configs/86xx/gef_ppc9a_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:31 2009 4# Thu Nov 5 08:20:49 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 36CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
39# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 40CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -88,11 +89,12 @@ CONFIG_BSD_PROCESS_ACCT_V3=y
88# 89#
89# RCU Subsystem 90# RCU Subsystem
90# 91#
91CONFIG_CLASSIC_RCU=y 92CONFIG_TREE_RCU=y
92# CONFIG_TREE_RCU is not set 93# CONFIG_TREE_PREEMPT_RCU is not set
93# CONFIG_PREEMPT_RCU is not set 94# CONFIG_RCU_TRACE is not set
95CONFIG_RCU_FANOUT=32
96# CONFIG_RCU_FANOUT_EXACT is not set
94# CONFIG_TREE_RCU_TRACE is not set 97# CONFIG_TREE_RCU_TRACE is not set
95# CONFIG_PREEMPT_RCU_TRACE is not set
96CONFIG_IKCONFIG=y 98CONFIG_IKCONFIG=y
97CONFIG_IKCONFIG_PROC=y 99CONFIG_IKCONFIG_PROC=y
98CONFIG_LOG_BUF_SHIFT=14 100CONFIG_LOG_BUF_SHIFT=14
@@ -130,21 +132,20 @@ CONFIG_TIMERFD=y
130CONFIG_EVENTFD=y 132CONFIG_EVENTFD=y
131CONFIG_SHMEM=y 133CONFIG_SHMEM=y
132CONFIG_AIO=y 134CONFIG_AIO=y
133CONFIG_HAVE_PERF_COUNTERS=y 135CONFIG_HAVE_PERF_EVENTS=y
134 136
135# 137#
136# Performance Counters 138# Kernel Performance Events And Counters
137# 139#
140# CONFIG_PERF_EVENTS is not set
138# CONFIG_PERF_COUNTERS is not set 141# CONFIG_PERF_COUNTERS is not set
139CONFIG_VM_EVENT_COUNTERS=y 142CONFIG_VM_EVENT_COUNTERS=y
140CONFIG_PCI_QUIRKS=y 143CONFIG_PCI_QUIRKS=y
141# CONFIG_STRIP_ASM_SYMS is not set
142CONFIG_COMPAT_BRK=y 144CONFIG_COMPAT_BRK=y
143CONFIG_SLAB=y 145CONFIG_SLAB=y
144# CONFIG_SLUB is not set 146# CONFIG_SLUB is not set
145# CONFIG_SLOB is not set 147# CONFIG_SLOB is not set
146# CONFIG_PROFILING is not set 148# CONFIG_PROFILING is not set
147# CONFIG_MARKERS is not set
148CONFIG_HAVE_OPROFILE=y 149CONFIG_HAVE_OPROFILE=y
149# CONFIG_KPROBES is not set 150# CONFIG_KPROBES is not set
150CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 151CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -152,12 +153,14 @@ CONFIG_HAVE_IOREMAP_PROT=y
152CONFIG_HAVE_KPROBES=y 153CONFIG_HAVE_KPROBES=y
153CONFIG_HAVE_KRETPROBES=y 154CONFIG_HAVE_KRETPROBES=y
154CONFIG_HAVE_ARCH_TRACEHOOK=y 155CONFIG_HAVE_ARCH_TRACEHOOK=y
156CONFIG_HAVE_DMA_ATTRS=y
155CONFIG_USE_GENERIC_SMP_HELPERS=y 157CONFIG_USE_GENERIC_SMP_HELPERS=y
158CONFIG_HAVE_DMA_API_DEBUG=y
156 159
157# 160#
158# GCOV-based kernel profiling 161# GCOV-based kernel profiling
159# 162#
160# CONFIG_SLOW_WORK is not set 163CONFIG_SLOW_WORK=y
161# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 164# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
162CONFIG_SLABINFO=y 165CONFIG_SLABINFO=y
163CONFIG_RT_MUTEXES=y 166CONFIG_RT_MUTEXES=y
@@ -256,6 +259,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
256# CONFIG_KEXEC is not set 259# CONFIG_KEXEC is not set
257# CONFIG_CRASH_DUMP is not set 260# CONFIG_CRASH_DUMP is not set
258CONFIG_IRQ_ALL_CPUS=y 261CONFIG_IRQ_ALL_CPUS=y
262CONFIG_MAX_ACTIVE_REGIONS=32
259CONFIG_ARCH_FLATMEM_ENABLE=y 263CONFIG_ARCH_FLATMEM_ENABLE=y
260CONFIG_ARCH_POPULATES_NODE_MAP=y 264CONFIG_ARCH_POPULATES_NODE_MAP=y
261CONFIG_SELECT_MEMORY_MODEL=y 265CONFIG_SELECT_MEMORY_MODEL=y
@@ -273,6 +277,7 @@ CONFIG_BOUNCE=y
273CONFIG_VIRT_TO_BUS=y 277CONFIG_VIRT_TO_BUS=y
274CONFIG_HAVE_MLOCK=y 278CONFIG_HAVE_MLOCK=y
275CONFIG_HAVE_MLOCKED_PAGE_BIT=y 279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set
276CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
277CONFIG_PPC_4K_PAGES=y 282CONFIG_PPC_4K_PAGES=y
278# CONFIG_PPC_16K_PAGES is not set 283# CONFIG_PPC_16K_PAGES is not set
@@ -417,6 +422,7 @@ CONFIG_IPV6_TUNNEL=m
417# CONFIG_NETFILTER is not set 422# CONFIG_NETFILTER is not set
418# CONFIG_IP_DCCP is not set 423# CONFIG_IP_DCCP is not set
419# CONFIG_IP_SCTP is not set 424# CONFIG_IP_SCTP is not set
425# CONFIG_RDS is not set
420# CONFIG_TIPC is not set 426# CONFIG_TIPC is not set
421# CONFIG_ATM is not set 427# CONFIG_ATM is not set
422# CONFIG_BRIDGE is not set 428# CONFIG_BRIDGE is not set
@@ -458,6 +464,7 @@ CONFIG_FIB_RULES=y
458# Generic Driver Options 464# Generic Driver Options
459# 465#
460CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 466CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
467# CONFIG_DEVTMPFS is not set
461CONFIG_STANDALONE=y 468CONFIG_STANDALONE=y
462CONFIG_PREVENT_FIRMWARE_BUILD=y 469CONFIG_PREVENT_FIRMWARE_BUILD=y
463CONFIG_FW_LOADER=y 470CONFIG_FW_LOADER=y
@@ -467,9 +474,9 @@ CONFIG_EXTRA_FIRMWARE=""
467# CONFIG_CONNECTOR is not set 474# CONFIG_CONNECTOR is not set
468CONFIG_MTD=y 475CONFIG_MTD=y
469# CONFIG_MTD_DEBUG is not set 476# CONFIG_MTD_DEBUG is not set
477# CONFIG_MTD_TESTS is not set
470CONFIG_MTD_CONCAT=y 478CONFIG_MTD_CONCAT=y
471CONFIG_MTD_PARTITIONS=y 479CONFIG_MTD_PARTITIONS=y
472# CONFIG_MTD_TESTS is not set
473# CONFIG_MTD_REDBOOT_PARTS is not set 480# CONFIG_MTD_REDBOOT_PARTS is not set
474# CONFIG_MTD_CMDLINE_PARTS is not set 481# CONFIG_MTD_CMDLINE_PARTS is not set
475CONFIG_MTD_OF_PARTS=y 482CONFIG_MTD_OF_PARTS=y
@@ -680,6 +687,7 @@ CONFIG_SCSI_WAIT_SCAN=m
680CONFIG_SCSI_LOWLEVEL=y 687CONFIG_SCSI_LOWLEVEL=y
681# CONFIG_ISCSI_TCP is not set 688# CONFIG_ISCSI_TCP is not set
682# CONFIG_SCSI_BNX2_ISCSI is not set 689# CONFIG_SCSI_BNX2_ISCSI is not set
690# CONFIG_BE2ISCSI is not set
683# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 691# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
684# CONFIG_SCSI_3W_9XXX is not set 692# CONFIG_SCSI_3W_9XXX is not set
685# CONFIG_SCSI_ACARD is not set 693# CONFIG_SCSI_ACARD is not set
@@ -719,12 +727,15 @@ CONFIG_SCSI_LOWLEVEL=y
719# CONFIG_SCSI_DC390T is not set 727# CONFIG_SCSI_DC390T is not set
720# CONFIG_SCSI_NSP32 is not set 728# CONFIG_SCSI_NSP32 is not set
721# CONFIG_SCSI_DEBUG is not set 729# CONFIG_SCSI_DEBUG is not set
730# CONFIG_SCSI_PMCRAID is not set
722# CONFIG_SCSI_SRP is not set 731# CONFIG_SCSI_SRP is not set
732# CONFIG_SCSI_BFA_FC is not set
723# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 733# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
724# CONFIG_SCSI_DH is not set 734# CONFIG_SCSI_DH is not set
725# CONFIG_SCSI_OSD_INITIATOR is not set 735# CONFIG_SCSI_OSD_INITIATOR is not set
726CONFIG_ATA=y 736CONFIG_ATA=y
727# CONFIG_ATA_NONSTANDARD is not set 737# CONFIG_ATA_NONSTANDARD is not set
738CONFIG_ATA_VERBOSE_ERROR=y
728CONFIG_SATA_PMP=y 739CONFIG_SATA_PMP=y
729# CONFIG_SATA_AHCI is not set 740# CONFIG_SATA_AHCI is not set
730# CONFIG_SATA_SIL24 is not set 741# CONFIG_SATA_SIL24 is not set
@@ -747,6 +758,7 @@ CONFIG_SATA_SIL=y
747# CONFIG_PATA_ALI is not set 758# CONFIG_PATA_ALI is not set
748# CONFIG_PATA_AMD is not set 759# CONFIG_PATA_AMD is not set
749# CONFIG_PATA_ARTOP is not set 760# CONFIG_PATA_ARTOP is not set
761# CONFIG_PATA_ATP867X is not set
750# CONFIG_PATA_ATIIXP is not set 762# CONFIG_PATA_ATIIXP is not set
751# CONFIG_PATA_CMD640_PCI is not set 763# CONFIG_PATA_CMD640_PCI is not set
752# CONFIG_PATA_CMD64X is not set 764# CONFIG_PATA_CMD64X is not set
@@ -775,6 +787,7 @@ CONFIG_SATA_SIL=y
775# CONFIG_PATA_PCMCIA is not set 787# CONFIG_PATA_PCMCIA is not set
776# CONFIG_PATA_PDC_OLD is not set 788# CONFIG_PATA_PDC_OLD is not set
777# CONFIG_PATA_RADISYS is not set 789# CONFIG_PATA_RADISYS is not set
790# CONFIG_PATA_RDC is not set
778# CONFIG_PATA_RZ1000 is not set 791# CONFIG_PATA_RZ1000 is not set
779# CONFIG_PATA_SC1200 is not set 792# CONFIG_PATA_SC1200 is not set
780# CONFIG_PATA_SERVERWORKS is not set 793# CONFIG_PATA_SERVERWORKS is not set
@@ -851,7 +864,9 @@ CONFIG_MII=y
851# CONFIG_NET_PCI is not set 864# CONFIG_NET_PCI is not set
852# CONFIG_B44 is not set 865# CONFIG_B44 is not set
853# CONFIG_KS8842 is not set 866# CONFIG_KS8842 is not set
867# CONFIG_KS8851_MLL is not set
854# CONFIG_ATL2 is not set 868# CONFIG_ATL2 is not set
869# CONFIG_XILINX_EMACLITE is not set
855CONFIG_NETDEV_1000=y 870CONFIG_NETDEV_1000=y
856# CONFIG_ACENIC is not set 871# CONFIG_ACENIC is not set
857# CONFIG_DL2K is not set 872# CONFIG_DL2K is not set
@@ -881,10 +896,7 @@ CONFIG_GIANFAR=y
881# CONFIG_JME is not set 896# CONFIG_JME is not set
882# CONFIG_NETDEV_10000 is not set 897# CONFIG_NETDEV_10000 is not set
883# CONFIG_TR is not set 898# CONFIG_TR is not set
884 899CONFIG_WLAN=y
885#
886# Wireless LAN
887#
888# CONFIG_WLAN_PRE80211 is not set 900# CONFIG_WLAN_PRE80211 is not set
889# CONFIG_WLAN_80211 is not set 901# CONFIG_WLAN_80211 is not set
890 902
@@ -1016,6 +1028,7 @@ CONFIG_NVRAM=y
1016CONFIG_DEVPORT=y 1028CONFIG_DEVPORT=y
1017CONFIG_I2C=y 1029CONFIG_I2C=y
1018CONFIG_I2C_BOARDINFO=y 1030CONFIG_I2C_BOARDINFO=y
1031CONFIG_I2C_COMPAT=y
1019CONFIG_I2C_CHARDEV=y 1032CONFIG_I2C_CHARDEV=y
1020CONFIG_I2C_HELPER_AUTO=y 1033CONFIG_I2C_HELPER_AUTO=y
1021 1034
@@ -1071,9 +1084,6 @@ CONFIG_I2C_MPC=y
1071# Miscellaneous I2C Chip support 1084# Miscellaneous I2C Chip support
1072# 1085#
1073CONFIG_DS1682=y 1086CONFIG_DS1682=y
1074# CONFIG_SENSORS_PCF8574 is not set
1075# CONFIG_PCF8575 is not set
1076# CONFIG_SENSORS_PCA9539 is not set
1077# CONFIG_SENSORS_TSL2550 is not set 1087# CONFIG_SENSORS_TSL2550 is not set
1078# CONFIG_I2C_DEBUG_CORE is not set 1088# CONFIG_I2C_DEBUG_CORE is not set
1079# CONFIG_I2C_DEBUG_ALGO is not set 1089# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1106,14 +1116,24 @@ CONFIG_GPIO_SYSFS=y
1106# PCI GPIO expanders: 1116# PCI GPIO expanders:
1107# 1117#
1108# CONFIG_GPIO_BT8XX is not set 1118# CONFIG_GPIO_BT8XX is not set
1119# CONFIG_GPIO_LANGWELL is not set
1109 1120
1110# 1121#
1111# SPI GPIO expanders: 1122# SPI GPIO expanders:
1112# 1123#
1124
1125#
1126# AC97 GPIO expanders:
1127#
1113# CONFIG_W1 is not set 1128# CONFIG_W1 is not set
1114# CONFIG_POWER_SUPPLY is not set 1129# CONFIG_POWER_SUPPLY is not set
1115CONFIG_HWMON=y 1130CONFIG_HWMON=y
1116# CONFIG_HWMON_VID is not set 1131# CONFIG_HWMON_VID is not set
1132# CONFIG_HWMON_DEBUG_CHIP is not set
1133
1134#
1135# Native drivers
1136#
1117# CONFIG_SENSORS_AD7414 is not set 1137# CONFIG_SENSORS_AD7414 is not set
1118# CONFIG_SENSORS_AD7418 is not set 1138# CONFIG_SENSORS_AD7418 is not set
1119# CONFIG_SENSORS_ADM1021 is not set 1139# CONFIG_SENSORS_ADM1021 is not set
@@ -1164,6 +1184,7 @@ CONFIG_SENSORS_LM92=y
1164# CONFIG_SENSORS_ADS7828 is not set 1184# CONFIG_SENSORS_ADS7828 is not set
1165# CONFIG_SENSORS_THMC50 is not set 1185# CONFIG_SENSORS_THMC50 is not set
1166# CONFIG_SENSORS_TMP401 is not set 1186# CONFIG_SENSORS_TMP401 is not set
1187# CONFIG_SENSORS_TMP421 is not set
1167# CONFIG_SENSORS_VIA686A is not set 1188# CONFIG_SENSORS_VIA686A is not set
1168# CONFIG_SENSORS_VT1211 is not set 1189# CONFIG_SENSORS_VT1211 is not set
1169# CONFIG_SENSORS_VT8231 is not set 1190# CONFIG_SENSORS_VT8231 is not set
@@ -1175,9 +1196,7 @@ CONFIG_SENSORS_LM92=y
1175# CONFIG_SENSORS_W83L786NG is not set 1196# CONFIG_SENSORS_W83L786NG is not set
1176# CONFIG_SENSORS_W83627HF is not set 1197# CONFIG_SENSORS_W83627HF is not set
1177# CONFIG_SENSORS_W83627EHF is not set 1198# CONFIG_SENSORS_W83627EHF is not set
1178# CONFIG_HWMON_DEBUG_CHIP is not set
1179# CONFIG_THERMAL is not set 1199# CONFIG_THERMAL is not set
1180# CONFIG_THERMAL_HWMON is not set
1181CONFIG_WATCHDOG=y 1200CONFIG_WATCHDOG=y
1182# CONFIG_WATCHDOG_NOWAYOUT is not set 1201# CONFIG_WATCHDOG_NOWAYOUT is not set
1183 1202
@@ -1217,6 +1236,7 @@ CONFIG_SSB_POSSIBLE=y
1217# CONFIG_MFD_TMIO is not set 1236# CONFIG_MFD_TMIO is not set
1218# CONFIG_PMIC_DA903X is not set 1237# CONFIG_PMIC_DA903X is not set
1219# CONFIG_MFD_WM8400 is not set 1238# CONFIG_MFD_WM8400 is not set
1239# CONFIG_MFD_WM831X is not set
1220# CONFIG_MFD_WM8350_I2C is not set 1240# CONFIG_MFD_WM8350_I2C is not set
1221# CONFIG_MFD_PCF50633 is not set 1241# CONFIG_MFD_PCF50633 is not set
1222# CONFIG_AB3100_CORE is not set 1242# CONFIG_AB3100_CORE is not set
@@ -1227,6 +1247,7 @@ CONFIG_SSB_POSSIBLE=y
1227# Graphics support 1247# Graphics support
1228# 1248#
1229# CONFIG_AGP is not set 1249# CONFIG_AGP is not set
1250CONFIG_VGA_ARB=y
1230# CONFIG_DRM is not set 1251# CONFIG_DRM is not set
1231# CONFIG_VGASTATE is not set 1252# CONFIG_VGASTATE is not set
1232CONFIG_VIDEO_OUTPUT_CONTROL=m 1253CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -1247,7 +1268,6 @@ CONFIG_DUMMY_CONSOLE=y
1247# CONFIG_SOUND is not set 1268# CONFIG_SOUND is not set
1248CONFIG_HID_SUPPORT=y 1269CONFIG_HID_SUPPORT=y
1249CONFIG_HID=y 1270CONFIG_HID=y
1250# CONFIG_HID_DEBUG is not set
1251# CONFIG_HIDRAW is not set 1271# CONFIG_HIDRAW is not set
1252 1272
1253# 1273#
@@ -1270,6 +1290,7 @@ CONFIG_HID_CYPRESS=y
1270CONFIG_HID_EZKEY=y 1290CONFIG_HID_EZKEY=y
1271# CONFIG_HID_KYE is not set 1291# CONFIG_HID_KYE is not set
1272CONFIG_HID_GYRATION=y 1292CONFIG_HID_GYRATION=y
1293# CONFIG_HID_TWINHAN is not set
1273# CONFIG_HID_KENSINGTON is not set 1294# CONFIG_HID_KENSINGTON is not set
1274CONFIG_HID_LOGITECH=y 1295CONFIG_HID_LOGITECH=y
1275# CONFIG_LOGITECH_FF is not set 1296# CONFIG_LOGITECH_FF is not set
@@ -1322,6 +1343,7 @@ CONFIG_USB_EHCI_HCD=y
1322# CONFIG_USB_OXU210HP_HCD is not set 1343# CONFIG_USB_OXU210HP_HCD is not set
1323# CONFIG_USB_ISP116X_HCD is not set 1344# CONFIG_USB_ISP116X_HCD is not set
1324# CONFIG_USB_ISP1760_HCD is not set 1345# CONFIG_USB_ISP1760_HCD is not set
1346# CONFIG_USB_ISP1362_HCD is not set
1325CONFIG_USB_OHCI_HCD=y 1347CONFIG_USB_OHCI_HCD=y
1326# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set 1348# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set
1327# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 1349# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
@@ -1397,6 +1419,7 @@ CONFIG_USB_STORAGE=y
1397# CONFIG_USB_LD is not set 1419# CONFIG_USB_LD is not set
1398# CONFIG_USB_TRANCEVIBRATOR is not set 1420# CONFIG_USB_TRANCEVIBRATOR is not set
1399# CONFIG_USB_IOWARRIOR is not set 1421# CONFIG_USB_IOWARRIOR is not set
1422# CONFIG_USB_TEST is not set
1400# CONFIG_USB_ISIGHTFW is not set 1423# CONFIG_USB_ISIGHTFW is not set
1401# CONFIG_USB_VST is not set 1424# CONFIG_USB_VST is not set
1402# CONFIG_USB_GADGET is not set 1425# CONFIG_USB_GADGET is not set
@@ -1501,6 +1524,7 @@ CONFIG_FS_POSIX_ACL=y
1501# CONFIG_GFS2_FS is not set 1524# CONFIG_GFS2_FS is not set
1502# CONFIG_OCFS2_FS is not set 1525# CONFIG_OCFS2_FS is not set
1503# CONFIG_BTRFS_FS is not set 1526# CONFIG_BTRFS_FS is not set
1527# CONFIG_NILFS2_FS is not set
1504CONFIG_FILE_LOCKING=y 1528CONFIG_FILE_LOCKING=y
1505CONFIG_FSNOTIFY=y 1529CONFIG_FSNOTIFY=y
1506CONFIG_DNOTIFY=y 1530CONFIG_DNOTIFY=y
@@ -1576,7 +1600,6 @@ CONFIG_JFFS2_RTIME=y
1576# CONFIG_ROMFS_FS is not set 1600# CONFIG_ROMFS_FS is not set
1577# CONFIG_SYSV_FS is not set 1601# CONFIG_SYSV_FS is not set
1578# CONFIG_UFS_FS is not set 1602# CONFIG_UFS_FS is not set
1579# CONFIG_NILFS2_FS is not set
1580CONFIG_NETWORK_FILESYSTEMS=y 1603CONFIG_NETWORK_FILESYSTEMS=y
1581CONFIG_NFS_FS=y 1604CONFIG_NFS_FS=y
1582CONFIG_NFS_V3=y 1605CONFIG_NFS_V3=y
@@ -1682,6 +1705,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1682CONFIG_ENABLE_MUST_CHECK=y 1705CONFIG_ENABLE_MUST_CHECK=y
1683CONFIG_FRAME_WARN=1024 1706CONFIG_FRAME_WARN=1024
1684CONFIG_MAGIC_SYSRQ=y 1707CONFIG_MAGIC_SYSRQ=y
1708# CONFIG_STRIP_ASM_SYMS is not set
1685# CONFIG_UNUSED_SYMBOLS is not set 1709# CONFIG_UNUSED_SYMBOLS is not set
1686# CONFIG_DEBUG_FS is not set 1710# CONFIG_DEBUG_FS is not set
1687# CONFIG_HEADERS_CHECK is not set 1711# CONFIG_HEADERS_CHECK is not set
@@ -1697,6 +1721,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1697CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1721CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1698CONFIG_TRACING_SUPPORT=y 1722CONFIG_TRACING_SUPPORT=y
1699# CONFIG_FTRACE is not set 1723# CONFIG_FTRACE is not set
1724# CONFIG_DMA_API_DEBUG is not set
1700# CONFIG_SAMPLES is not set 1725# CONFIG_SAMPLES is not set
1701CONFIG_HAVE_ARCH_KGDB=y 1726CONFIG_HAVE_ARCH_KGDB=y
1702# CONFIG_PPC_DISABLE_WERROR is not set 1727# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1718,7 +1743,6 @@ CONFIG_CRYPTO=y
1718# 1743#
1719# Crypto core or helper 1744# Crypto core or helper
1720# 1745#
1721# CONFIG_CRYPTO_FIPS is not set
1722CONFIG_CRYPTO_ALGAPI=y 1746CONFIG_CRYPTO_ALGAPI=y
1723CONFIG_CRYPTO_ALGAPI2=y 1747CONFIG_CRYPTO_ALGAPI2=y
1724CONFIG_CRYPTO_AEAD=m 1748CONFIG_CRYPTO_AEAD=m
@@ -1761,11 +1785,13 @@ CONFIG_CRYPTO_CBC=y
1761# 1785#
1762CONFIG_CRYPTO_HMAC=m 1786CONFIG_CRYPTO_HMAC=m
1763# CONFIG_CRYPTO_XCBC is not set 1787# CONFIG_CRYPTO_XCBC is not set
1788# CONFIG_CRYPTO_VMAC is not set
1764 1789
1765# 1790#
1766# Digest 1791# Digest
1767# 1792#
1768CONFIG_CRYPTO_CRC32C=y 1793CONFIG_CRYPTO_CRC32C=y
1794# CONFIG_CRYPTO_GHASH is not set
1769# CONFIG_CRYPTO_MD4 is not set 1795# CONFIG_CRYPTO_MD4 is not set
1770CONFIG_CRYPTO_MD5=y 1796CONFIG_CRYPTO_MD5=y
1771# CONFIG_CRYPTO_MICHAEL_MIC is not set 1797# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/86xx/gef_sbc310_defconfig b/arch/powerpc/configs/86xx/gef_sbc310_defconfig
index cd338d493bed..e199d1cacbaf 100644
--- a/arch/powerpc/configs/86xx/gef_sbc310_defconfig
+++ b/arch/powerpc/configs/86xx/gef_sbc310_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:29 2009 4# Thu Nov 5 08:20:47 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 36CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
39# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 40CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -88,11 +89,12 @@ CONFIG_BSD_PROCESS_ACCT_V3=y
88# 89#
89# RCU Subsystem 90# RCU Subsystem
90# 91#
91CONFIG_CLASSIC_RCU=y 92CONFIG_TREE_RCU=y
92# CONFIG_TREE_RCU is not set 93# CONFIG_TREE_PREEMPT_RCU is not set
93# CONFIG_PREEMPT_RCU is not set 94# CONFIG_RCU_TRACE is not set
95CONFIG_RCU_FANOUT=32
96# CONFIG_RCU_FANOUT_EXACT is not set
94# CONFIG_TREE_RCU_TRACE is not set 97# CONFIG_TREE_RCU_TRACE is not set
95# CONFIG_PREEMPT_RCU_TRACE is not set
96CONFIG_IKCONFIG=y 98CONFIG_IKCONFIG=y
97CONFIG_IKCONFIG_PROC=y 99CONFIG_IKCONFIG_PROC=y
98CONFIG_LOG_BUF_SHIFT=14 100CONFIG_LOG_BUF_SHIFT=14
@@ -130,21 +132,20 @@ CONFIG_TIMERFD=y
130CONFIG_EVENTFD=y 132CONFIG_EVENTFD=y
131CONFIG_SHMEM=y 133CONFIG_SHMEM=y
132CONFIG_AIO=y 134CONFIG_AIO=y
133CONFIG_HAVE_PERF_COUNTERS=y 135CONFIG_HAVE_PERF_EVENTS=y
134 136
135# 137#
136# Performance Counters 138# Kernel Performance Events And Counters
137# 139#
140# CONFIG_PERF_EVENTS is not set
138# CONFIG_PERF_COUNTERS is not set 141# CONFIG_PERF_COUNTERS is not set
139CONFIG_VM_EVENT_COUNTERS=y 142CONFIG_VM_EVENT_COUNTERS=y
140CONFIG_PCI_QUIRKS=y 143CONFIG_PCI_QUIRKS=y
141# CONFIG_STRIP_ASM_SYMS is not set
142CONFIG_COMPAT_BRK=y 144CONFIG_COMPAT_BRK=y
143CONFIG_SLAB=y 145CONFIG_SLAB=y
144# CONFIG_SLUB is not set 146# CONFIG_SLUB is not set
145# CONFIG_SLOB is not set 147# CONFIG_SLOB is not set
146# CONFIG_PROFILING is not set 148# CONFIG_PROFILING is not set
147# CONFIG_MARKERS is not set
148CONFIG_HAVE_OPROFILE=y 149CONFIG_HAVE_OPROFILE=y
149# CONFIG_KPROBES is not set 150# CONFIG_KPROBES is not set
150CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 151CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -152,12 +153,14 @@ CONFIG_HAVE_IOREMAP_PROT=y
152CONFIG_HAVE_KPROBES=y 153CONFIG_HAVE_KPROBES=y
153CONFIG_HAVE_KRETPROBES=y 154CONFIG_HAVE_KRETPROBES=y
154CONFIG_HAVE_ARCH_TRACEHOOK=y 155CONFIG_HAVE_ARCH_TRACEHOOK=y
156CONFIG_HAVE_DMA_ATTRS=y
155CONFIG_USE_GENERIC_SMP_HELPERS=y 157CONFIG_USE_GENERIC_SMP_HELPERS=y
158CONFIG_HAVE_DMA_API_DEBUG=y
156 159
157# 160#
158# GCOV-based kernel profiling 161# GCOV-based kernel profiling
159# 162#
160# CONFIG_SLOW_WORK is not set 163CONFIG_SLOW_WORK=y
161# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 164# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
162CONFIG_SLABINFO=y 165CONFIG_SLABINFO=y
163CONFIG_RT_MUTEXES=y 166CONFIG_RT_MUTEXES=y
@@ -256,6 +259,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
256# CONFIG_KEXEC is not set 259# CONFIG_KEXEC is not set
257# CONFIG_CRASH_DUMP is not set 260# CONFIG_CRASH_DUMP is not set
258CONFIG_IRQ_ALL_CPUS=y 261CONFIG_IRQ_ALL_CPUS=y
262CONFIG_MAX_ACTIVE_REGIONS=32
259CONFIG_ARCH_FLATMEM_ENABLE=y 263CONFIG_ARCH_FLATMEM_ENABLE=y
260CONFIG_ARCH_POPULATES_NODE_MAP=y 264CONFIG_ARCH_POPULATES_NODE_MAP=y
261CONFIG_SELECT_MEMORY_MODEL=y 265CONFIG_SELECT_MEMORY_MODEL=y
@@ -273,6 +277,7 @@ CONFIG_BOUNCE=y
273CONFIG_VIRT_TO_BUS=y 277CONFIG_VIRT_TO_BUS=y
274CONFIG_HAVE_MLOCK=y 278CONFIG_HAVE_MLOCK=y
275CONFIG_HAVE_MLOCKED_PAGE_BIT=y 279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set
276CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
277CONFIG_PPC_4K_PAGES=y 282CONFIG_PPC_4K_PAGES=y
278# CONFIG_PPC_16K_PAGES is not set 283# CONFIG_PPC_16K_PAGES is not set
@@ -417,6 +422,7 @@ CONFIG_IPV6_TUNNEL=m
417# CONFIG_NETFILTER is not set 422# CONFIG_NETFILTER is not set
418# CONFIG_IP_DCCP is not set 423# CONFIG_IP_DCCP is not set
419# CONFIG_IP_SCTP is not set 424# CONFIG_IP_SCTP is not set
425# CONFIG_RDS is not set
420# CONFIG_TIPC is not set 426# CONFIG_TIPC is not set
421# CONFIG_ATM is not set 427# CONFIG_ATM is not set
422# CONFIG_BRIDGE is not set 428# CONFIG_BRIDGE is not set
@@ -458,6 +464,7 @@ CONFIG_FIB_RULES=y
458# Generic Driver Options 464# Generic Driver Options
459# 465#
460CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 466CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
467# CONFIG_DEVTMPFS is not set
461CONFIG_STANDALONE=y 468CONFIG_STANDALONE=y
462CONFIG_PREVENT_FIRMWARE_BUILD=y 469CONFIG_PREVENT_FIRMWARE_BUILD=y
463CONFIG_FW_LOADER=y 470CONFIG_FW_LOADER=y
@@ -467,9 +474,9 @@ CONFIG_EXTRA_FIRMWARE=""
467# CONFIG_CONNECTOR is not set 474# CONFIG_CONNECTOR is not set
468CONFIG_MTD=y 475CONFIG_MTD=y
469# CONFIG_MTD_DEBUG is not set 476# CONFIG_MTD_DEBUG is not set
477# CONFIG_MTD_TESTS is not set
470CONFIG_MTD_CONCAT=y 478CONFIG_MTD_CONCAT=y
471CONFIG_MTD_PARTITIONS=y 479CONFIG_MTD_PARTITIONS=y
472# CONFIG_MTD_TESTS is not set
473# CONFIG_MTD_REDBOOT_PARTS is not set 480# CONFIG_MTD_REDBOOT_PARTS is not set
474# CONFIG_MTD_CMDLINE_PARTS is not set 481# CONFIG_MTD_CMDLINE_PARTS is not set
475CONFIG_MTD_OF_PARTS=y 482CONFIG_MTD_OF_PARTS=y
@@ -680,6 +687,7 @@ CONFIG_SCSI_WAIT_SCAN=m
680CONFIG_SCSI_LOWLEVEL=y 687CONFIG_SCSI_LOWLEVEL=y
681# CONFIG_ISCSI_TCP is not set 688# CONFIG_ISCSI_TCP is not set
682# CONFIG_SCSI_BNX2_ISCSI is not set 689# CONFIG_SCSI_BNX2_ISCSI is not set
690# CONFIG_BE2ISCSI is not set
683# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 691# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
684# CONFIG_SCSI_3W_9XXX is not set 692# CONFIG_SCSI_3W_9XXX is not set
685# CONFIG_SCSI_ACARD is not set 693# CONFIG_SCSI_ACARD is not set
@@ -719,12 +727,15 @@ CONFIG_SCSI_LOWLEVEL=y
719# CONFIG_SCSI_DC390T is not set 727# CONFIG_SCSI_DC390T is not set
720# CONFIG_SCSI_NSP32 is not set 728# CONFIG_SCSI_NSP32 is not set
721# CONFIG_SCSI_DEBUG is not set 729# CONFIG_SCSI_DEBUG is not set
730# CONFIG_SCSI_PMCRAID is not set
722# CONFIG_SCSI_SRP is not set 731# CONFIG_SCSI_SRP is not set
732# CONFIG_SCSI_BFA_FC is not set
723# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 733# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
724# CONFIG_SCSI_DH is not set 734# CONFIG_SCSI_DH is not set
725# CONFIG_SCSI_OSD_INITIATOR is not set 735# CONFIG_SCSI_OSD_INITIATOR is not set
726CONFIG_ATA=y 736CONFIG_ATA=y
727# CONFIG_ATA_NONSTANDARD is not set 737# CONFIG_ATA_NONSTANDARD is not set
738CONFIG_ATA_VERBOSE_ERROR=y
728CONFIG_SATA_PMP=y 739CONFIG_SATA_PMP=y
729# CONFIG_SATA_AHCI is not set 740# CONFIG_SATA_AHCI is not set
730CONFIG_SATA_SIL24=y 741CONFIG_SATA_SIL24=y
@@ -796,7 +807,9 @@ CONFIG_MII=y
796# CONFIG_NET_PCI is not set 807# CONFIG_NET_PCI is not set
797# CONFIG_B44 is not set 808# CONFIG_B44 is not set
798# CONFIG_KS8842 is not set 809# CONFIG_KS8842 is not set
810# CONFIG_KS8851_MLL is not set
799# CONFIG_ATL2 is not set 811# CONFIG_ATL2 is not set
812# CONFIG_XILINX_EMACLITE is not set
800CONFIG_NETDEV_1000=y 813CONFIG_NETDEV_1000=y
801# CONFIG_ACENIC is not set 814# CONFIG_ACENIC is not set
802# CONFIG_DL2K is not set 815# CONFIG_DL2K is not set
@@ -826,10 +839,7 @@ CONFIG_GIANFAR=y
826# CONFIG_JME is not set 839# CONFIG_JME is not set
827# CONFIG_NETDEV_10000 is not set 840# CONFIG_NETDEV_10000 is not set
828# CONFIG_TR is not set 841# CONFIG_TR is not set
829 842CONFIG_WLAN=y
830#
831# Wireless LAN
832#
833# CONFIG_WLAN_PRE80211 is not set 843# CONFIG_WLAN_PRE80211 is not set
834# CONFIG_WLAN_80211 is not set 844# CONFIG_WLAN_80211 is not set
835 845
@@ -961,6 +971,7 @@ CONFIG_NVRAM=y
961CONFIG_DEVPORT=y 971CONFIG_DEVPORT=y
962CONFIG_I2C=y 972CONFIG_I2C=y
963CONFIG_I2C_BOARDINFO=y 973CONFIG_I2C_BOARDINFO=y
974CONFIG_I2C_COMPAT=y
964CONFIG_I2C_CHARDEV=y 975CONFIG_I2C_CHARDEV=y
965CONFIG_I2C_HELPER_AUTO=y 976CONFIG_I2C_HELPER_AUTO=y
966 977
@@ -1016,9 +1027,6 @@ CONFIG_I2C_MPC=y
1016# Miscellaneous I2C Chip support 1027# Miscellaneous I2C Chip support
1017# 1028#
1018CONFIG_DS1682=y 1029CONFIG_DS1682=y
1019# CONFIG_SENSORS_PCF8574 is not set
1020# CONFIG_PCF8575 is not set
1021# CONFIG_SENSORS_PCA9539 is not set
1022# CONFIG_SENSORS_TSL2550 is not set 1030# CONFIG_SENSORS_TSL2550 is not set
1023# CONFIG_I2C_DEBUG_CORE is not set 1031# CONFIG_I2C_DEBUG_CORE is not set
1024# CONFIG_I2C_DEBUG_ALGO is not set 1032# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1051,14 +1059,24 @@ CONFIG_GPIO_SYSFS=y
1051# PCI GPIO expanders: 1059# PCI GPIO expanders:
1052# 1060#
1053# CONFIG_GPIO_BT8XX is not set 1061# CONFIG_GPIO_BT8XX is not set
1062# CONFIG_GPIO_LANGWELL is not set
1054 1063
1055# 1064#
1056# SPI GPIO expanders: 1065# SPI GPIO expanders:
1057# 1066#
1067
1068#
1069# AC97 GPIO expanders:
1070#
1058# CONFIG_W1 is not set 1071# CONFIG_W1 is not set
1059# CONFIG_POWER_SUPPLY is not set 1072# CONFIG_POWER_SUPPLY is not set
1060CONFIG_HWMON=y 1073CONFIG_HWMON=y
1061# CONFIG_HWMON_VID is not set 1074# CONFIG_HWMON_VID is not set
1075# CONFIG_HWMON_DEBUG_CHIP is not set
1076
1077#
1078# Native drivers
1079#
1062# CONFIG_SENSORS_AD7414 is not set 1080# CONFIG_SENSORS_AD7414 is not set
1063# CONFIG_SENSORS_AD7418 is not set 1081# CONFIG_SENSORS_AD7418 is not set
1064# CONFIG_SENSORS_ADM1021 is not set 1082# CONFIG_SENSORS_ADM1021 is not set
@@ -1109,6 +1127,7 @@ CONFIG_SENSORS_LM92=y
1109# CONFIG_SENSORS_ADS7828 is not set 1127# CONFIG_SENSORS_ADS7828 is not set
1110# CONFIG_SENSORS_THMC50 is not set 1128# CONFIG_SENSORS_THMC50 is not set
1111# CONFIG_SENSORS_TMP401 is not set 1129# CONFIG_SENSORS_TMP401 is not set
1130# CONFIG_SENSORS_TMP421 is not set
1112# CONFIG_SENSORS_VIA686A is not set 1131# CONFIG_SENSORS_VIA686A is not set
1113# CONFIG_SENSORS_VT1211 is not set 1132# CONFIG_SENSORS_VT1211 is not set
1114# CONFIG_SENSORS_VT8231 is not set 1133# CONFIG_SENSORS_VT8231 is not set
@@ -1120,9 +1139,7 @@ CONFIG_SENSORS_LM92=y
1120# CONFIG_SENSORS_W83L786NG is not set 1139# CONFIG_SENSORS_W83L786NG is not set
1121# CONFIG_SENSORS_W83627HF is not set 1140# CONFIG_SENSORS_W83627HF is not set
1122# CONFIG_SENSORS_W83627EHF is not set 1141# CONFIG_SENSORS_W83627EHF is not set
1123# CONFIG_HWMON_DEBUG_CHIP is not set
1124# CONFIG_THERMAL is not set 1142# CONFIG_THERMAL is not set
1125# CONFIG_THERMAL_HWMON is not set
1126CONFIG_WATCHDOG=y 1143CONFIG_WATCHDOG=y
1127# CONFIG_WATCHDOG_NOWAYOUT is not set 1144# CONFIG_WATCHDOG_NOWAYOUT is not set
1128 1145
@@ -1162,6 +1179,7 @@ CONFIG_SSB_POSSIBLE=y
1162# CONFIG_MFD_TMIO is not set 1179# CONFIG_MFD_TMIO is not set
1163# CONFIG_PMIC_DA903X is not set 1180# CONFIG_PMIC_DA903X is not set
1164# CONFIG_MFD_WM8400 is not set 1181# CONFIG_MFD_WM8400 is not set
1182# CONFIG_MFD_WM831X is not set
1165# CONFIG_MFD_WM8350_I2C is not set 1183# CONFIG_MFD_WM8350_I2C is not set
1166# CONFIG_MFD_PCF50633 is not set 1184# CONFIG_MFD_PCF50633 is not set
1167# CONFIG_AB3100_CORE is not set 1185# CONFIG_AB3100_CORE is not set
@@ -1172,6 +1190,7 @@ CONFIG_SSB_POSSIBLE=y
1172# Graphics support 1190# Graphics support
1173# 1191#
1174# CONFIG_AGP is not set 1192# CONFIG_AGP is not set
1193CONFIG_VGA_ARB=y
1175# CONFIG_DRM is not set 1194# CONFIG_DRM is not set
1176# CONFIG_VGASTATE is not set 1195# CONFIG_VGASTATE is not set
1177CONFIG_VIDEO_OUTPUT_CONTROL=m 1196CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -1192,7 +1211,6 @@ CONFIG_DUMMY_CONSOLE=y
1192# CONFIG_SOUND is not set 1211# CONFIG_SOUND is not set
1193CONFIG_HID_SUPPORT=y 1212CONFIG_HID_SUPPORT=y
1194CONFIG_HID=y 1213CONFIG_HID=y
1195# CONFIG_HID_DEBUG is not set
1196# CONFIG_HIDRAW is not set 1214# CONFIG_HIDRAW is not set
1197 1215
1198# 1216#
@@ -1215,6 +1233,7 @@ CONFIG_HID_CYPRESS=y
1215CONFIG_HID_EZKEY=y 1233CONFIG_HID_EZKEY=y
1216# CONFIG_HID_KYE is not set 1234# CONFIG_HID_KYE is not set
1217CONFIG_HID_GYRATION=y 1235CONFIG_HID_GYRATION=y
1236# CONFIG_HID_TWINHAN is not set
1218# CONFIG_HID_KENSINGTON is not set 1237# CONFIG_HID_KENSINGTON is not set
1219CONFIG_HID_LOGITECH=y 1238CONFIG_HID_LOGITECH=y
1220# CONFIG_LOGITECH_FF is not set 1239# CONFIG_LOGITECH_FF is not set
@@ -1267,6 +1286,7 @@ CONFIG_USB_EHCI_HCD=y
1267# CONFIG_USB_OXU210HP_HCD is not set 1286# CONFIG_USB_OXU210HP_HCD is not set
1268# CONFIG_USB_ISP116X_HCD is not set 1287# CONFIG_USB_ISP116X_HCD is not set
1269# CONFIG_USB_ISP1760_HCD is not set 1288# CONFIG_USB_ISP1760_HCD is not set
1289# CONFIG_USB_ISP1362_HCD is not set
1270CONFIG_USB_OHCI_HCD=y 1290CONFIG_USB_OHCI_HCD=y
1271# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set 1291# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set
1272# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 1292# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
@@ -1342,6 +1362,7 @@ CONFIG_USB_STORAGE=y
1342# CONFIG_USB_LD is not set 1362# CONFIG_USB_LD is not set
1343# CONFIG_USB_TRANCEVIBRATOR is not set 1363# CONFIG_USB_TRANCEVIBRATOR is not set
1344# CONFIG_USB_IOWARRIOR is not set 1364# CONFIG_USB_IOWARRIOR is not set
1365# CONFIG_USB_TEST is not set
1345# CONFIG_USB_ISIGHTFW is not set 1366# CONFIG_USB_ISIGHTFW is not set
1346# CONFIG_USB_VST is not set 1367# CONFIG_USB_VST is not set
1347# CONFIG_USB_GADGET is not set 1368# CONFIG_USB_GADGET is not set
@@ -1446,6 +1467,7 @@ CONFIG_FS_POSIX_ACL=y
1446# CONFIG_GFS2_FS is not set 1467# CONFIG_GFS2_FS is not set
1447# CONFIG_OCFS2_FS is not set 1468# CONFIG_OCFS2_FS is not set
1448# CONFIG_BTRFS_FS is not set 1469# CONFIG_BTRFS_FS is not set
1470# CONFIG_NILFS2_FS is not set
1449CONFIG_FILE_LOCKING=y 1471CONFIG_FILE_LOCKING=y
1450CONFIG_FSNOTIFY=y 1472CONFIG_FSNOTIFY=y
1451CONFIG_DNOTIFY=y 1473CONFIG_DNOTIFY=y
@@ -1521,7 +1543,6 @@ CONFIG_JFFS2_RTIME=y
1521# CONFIG_ROMFS_FS is not set 1543# CONFIG_ROMFS_FS is not set
1522# CONFIG_SYSV_FS is not set 1544# CONFIG_SYSV_FS is not set
1523# CONFIG_UFS_FS is not set 1545# CONFIG_UFS_FS is not set
1524# CONFIG_NILFS2_FS is not set
1525CONFIG_NETWORK_FILESYSTEMS=y 1546CONFIG_NETWORK_FILESYSTEMS=y
1526CONFIG_NFS_FS=y 1547CONFIG_NFS_FS=y
1527CONFIG_NFS_V3=y 1548CONFIG_NFS_V3=y
@@ -1627,6 +1648,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1627CONFIG_ENABLE_MUST_CHECK=y 1648CONFIG_ENABLE_MUST_CHECK=y
1628CONFIG_FRAME_WARN=1024 1649CONFIG_FRAME_WARN=1024
1629CONFIG_MAGIC_SYSRQ=y 1650CONFIG_MAGIC_SYSRQ=y
1651# CONFIG_STRIP_ASM_SYMS is not set
1630# CONFIG_UNUSED_SYMBOLS is not set 1652# CONFIG_UNUSED_SYMBOLS is not set
1631# CONFIG_DEBUG_FS is not set 1653# CONFIG_DEBUG_FS is not set
1632# CONFIG_HEADERS_CHECK is not set 1654# CONFIG_HEADERS_CHECK is not set
@@ -1642,6 +1664,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1642CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1664CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1643CONFIG_TRACING_SUPPORT=y 1665CONFIG_TRACING_SUPPORT=y
1644# CONFIG_FTRACE is not set 1666# CONFIG_FTRACE is not set
1667# CONFIG_DMA_API_DEBUG is not set
1645# CONFIG_SAMPLES is not set 1668# CONFIG_SAMPLES is not set
1646CONFIG_HAVE_ARCH_KGDB=y 1669CONFIG_HAVE_ARCH_KGDB=y
1647# CONFIG_PPC_DISABLE_WERROR is not set 1670# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1663,7 +1686,6 @@ CONFIG_CRYPTO=y
1663# 1686#
1664# Crypto core or helper 1687# Crypto core or helper
1665# 1688#
1666# CONFIG_CRYPTO_FIPS is not set
1667CONFIG_CRYPTO_ALGAPI=y 1689CONFIG_CRYPTO_ALGAPI=y
1668CONFIG_CRYPTO_ALGAPI2=y 1690CONFIG_CRYPTO_ALGAPI2=y
1669CONFIG_CRYPTO_AEAD=m 1691CONFIG_CRYPTO_AEAD=m
@@ -1706,11 +1728,13 @@ CONFIG_CRYPTO_CBC=y
1706# 1728#
1707CONFIG_CRYPTO_HMAC=m 1729CONFIG_CRYPTO_HMAC=m
1708# CONFIG_CRYPTO_XCBC is not set 1730# CONFIG_CRYPTO_XCBC is not set
1731# CONFIG_CRYPTO_VMAC is not set
1709 1732
1710# 1733#
1711# Digest 1734# Digest
1712# 1735#
1713CONFIG_CRYPTO_CRC32C=y 1736CONFIG_CRYPTO_CRC32C=y
1737# CONFIG_CRYPTO_GHASH is not set
1714# CONFIG_CRYPTO_MD4 is not set 1738# CONFIG_CRYPTO_MD4 is not set
1715CONFIG_CRYPTO_MD5=y 1739CONFIG_CRYPTO_MD5=y
1716# CONFIG_CRYPTO_MICHAEL_MIC is not set 1740# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/86xx/gef_sbc610_defconfig b/arch/powerpc/configs/86xx/gef_sbc610_defconfig
index ba47883f4aa0..3b0fbfb28efd 100644
--- a/arch/powerpc/configs/86xx/gef_sbc610_defconfig
+++ b/arch/powerpc/configs/86xx/gef_sbc610_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:30 2009 4# Thu Nov 5 08:20:48 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 36CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
39# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 40CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -88,11 +89,12 @@ CONFIG_BSD_PROCESS_ACCT_V3=y
88# 89#
89# RCU Subsystem 90# RCU Subsystem
90# 91#
91CONFIG_CLASSIC_RCU=y 92CONFIG_TREE_RCU=y
92# CONFIG_TREE_RCU is not set 93# CONFIG_TREE_PREEMPT_RCU is not set
93# CONFIG_PREEMPT_RCU is not set 94# CONFIG_RCU_TRACE is not set
95CONFIG_RCU_FANOUT=32
96# CONFIG_RCU_FANOUT_EXACT is not set
94# CONFIG_TREE_RCU_TRACE is not set 97# CONFIG_TREE_RCU_TRACE is not set
95# CONFIG_PREEMPT_RCU_TRACE is not set
96CONFIG_IKCONFIG=y 98CONFIG_IKCONFIG=y
97CONFIG_IKCONFIG_PROC=y 99CONFIG_IKCONFIG_PROC=y
98CONFIG_LOG_BUF_SHIFT=14 100CONFIG_LOG_BUF_SHIFT=14
@@ -131,21 +133,20 @@ CONFIG_TIMERFD=y
131CONFIG_EVENTFD=y 133CONFIG_EVENTFD=y
132CONFIG_SHMEM=y 134CONFIG_SHMEM=y
133CONFIG_AIO=y 135CONFIG_AIO=y
134CONFIG_HAVE_PERF_COUNTERS=y 136CONFIG_HAVE_PERF_EVENTS=y
135 137
136# 138#
137# Performance Counters 139# Kernel Performance Events And Counters
138# 140#
141# CONFIG_PERF_EVENTS is not set
139# CONFIG_PERF_COUNTERS is not set 142# CONFIG_PERF_COUNTERS is not set
140CONFIG_VM_EVENT_COUNTERS=y 143CONFIG_VM_EVENT_COUNTERS=y
141CONFIG_PCI_QUIRKS=y 144CONFIG_PCI_QUIRKS=y
142# CONFIG_STRIP_ASM_SYMS is not set
143CONFIG_COMPAT_BRK=y 145CONFIG_COMPAT_BRK=y
144CONFIG_SLAB=y 146CONFIG_SLAB=y
145# CONFIG_SLUB is not set 147# CONFIG_SLUB is not set
146# CONFIG_SLOB is not set 148# CONFIG_SLOB is not set
147# CONFIG_PROFILING is not set 149# CONFIG_PROFILING is not set
148# CONFIG_MARKERS is not set
149CONFIG_HAVE_OPROFILE=y 150CONFIG_HAVE_OPROFILE=y
150# CONFIG_KPROBES is not set 151# CONFIG_KPROBES is not set
151CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 152CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -153,12 +154,14 @@ CONFIG_HAVE_IOREMAP_PROT=y
153CONFIG_HAVE_KPROBES=y 154CONFIG_HAVE_KPROBES=y
154CONFIG_HAVE_KRETPROBES=y 155CONFIG_HAVE_KRETPROBES=y
155CONFIG_HAVE_ARCH_TRACEHOOK=y 156CONFIG_HAVE_ARCH_TRACEHOOK=y
157CONFIG_HAVE_DMA_ATTRS=y
156CONFIG_USE_GENERIC_SMP_HELPERS=y 158CONFIG_USE_GENERIC_SMP_HELPERS=y
159CONFIG_HAVE_DMA_API_DEBUG=y
157 160
158# 161#
159# GCOV-based kernel profiling 162# GCOV-based kernel profiling
160# 163#
161# CONFIG_SLOW_WORK is not set 164CONFIG_SLOW_WORK=y
162# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 165# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
163CONFIG_SLABINFO=y 166CONFIG_SLABINFO=y
164CONFIG_RT_MUTEXES=y 167CONFIG_RT_MUTEXES=y
@@ -257,6 +260,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
257# CONFIG_KEXEC is not set 260# CONFIG_KEXEC is not set
258# CONFIG_CRASH_DUMP is not set 261# CONFIG_CRASH_DUMP is not set
259CONFIG_IRQ_ALL_CPUS=y 262CONFIG_IRQ_ALL_CPUS=y
263CONFIG_MAX_ACTIVE_REGIONS=32
260CONFIG_ARCH_FLATMEM_ENABLE=y 264CONFIG_ARCH_FLATMEM_ENABLE=y
261CONFIG_ARCH_POPULATES_NODE_MAP=y 265CONFIG_ARCH_POPULATES_NODE_MAP=y
262CONFIG_SELECT_MEMORY_MODEL=y 266CONFIG_SELECT_MEMORY_MODEL=y
@@ -274,6 +278,7 @@ CONFIG_BOUNCE=y
274CONFIG_VIRT_TO_BUS=y 278CONFIG_VIRT_TO_BUS=y
275CONFIG_HAVE_MLOCK=y 279CONFIG_HAVE_MLOCK=y
276CONFIG_HAVE_MLOCKED_PAGE_BIT=y 280CONFIG_HAVE_MLOCKED_PAGE_BIT=y
281# CONFIG_KSM is not set
277CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 282CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
278CONFIG_PPC_4K_PAGES=y 283CONFIG_PPC_4K_PAGES=y
279# CONFIG_PPC_16K_PAGES is not set 284# CONFIG_PPC_16K_PAGES is not set
@@ -503,6 +508,7 @@ CONFIG_IP_SCTP=m
503# CONFIG_SCTP_HMAC_NONE is not set 508# CONFIG_SCTP_HMAC_NONE is not set
504# CONFIG_SCTP_HMAC_SHA1 is not set 509# CONFIG_SCTP_HMAC_SHA1 is not set
505CONFIG_SCTP_HMAC_MD5=y 510CONFIG_SCTP_HMAC_MD5=y
511# CONFIG_RDS is not set
506CONFIG_TIPC=m 512CONFIG_TIPC=m
507# CONFIG_TIPC_ADVANCED is not set 513# CONFIG_TIPC_ADVANCED is not set
508# CONFIG_TIPC_DEBUG is not set 514# CONFIG_TIPC_DEBUG is not set
@@ -582,6 +588,7 @@ CONFIG_NET_PKTGEN=m
582CONFIG_FIB_RULES=y 588CONFIG_FIB_RULES=y
583CONFIG_WIRELESS=y 589CONFIG_WIRELESS=y
584# CONFIG_CFG80211 is not set 590# CONFIG_CFG80211 is not set
591CONFIG_CFG80211_DEFAULT_PS_VALUE=0
585CONFIG_WIRELESS_OLD_REGULATORY=y 592CONFIG_WIRELESS_OLD_REGULATORY=y
586# CONFIG_WIRELESS_EXT is not set 593# CONFIG_WIRELESS_EXT is not set
587# CONFIG_LIB80211 is not set 594# CONFIG_LIB80211 is not set
@@ -589,7 +596,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
589# 596#
590# CFG80211 needs to be enabled for MAC80211 597# CFG80211 needs to be enabled for MAC80211
591# 598#
592CONFIG_MAC80211_DEFAULT_PS_VALUE=0
593# CONFIG_WIMAX is not set 599# CONFIG_WIMAX is not set
594# CONFIG_RFKILL is not set 600# CONFIG_RFKILL is not set
595# CONFIG_NET_9P is not set 601# CONFIG_NET_9P is not set
@@ -602,6 +608,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
602# Generic Driver Options 608# Generic Driver Options
603# 609#
604CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 610CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
611# CONFIG_DEVTMPFS is not set
605CONFIG_STANDALONE=y 612CONFIG_STANDALONE=y
606CONFIG_PREVENT_FIRMWARE_BUILD=y 613CONFIG_PREVENT_FIRMWARE_BUILD=y
607# CONFIG_FW_LOADER is not set 614# CONFIG_FW_LOADER is not set
@@ -611,9 +618,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
611# CONFIG_CONNECTOR is not set 618# CONFIG_CONNECTOR is not set
612CONFIG_MTD=y 619CONFIG_MTD=y
613# CONFIG_MTD_DEBUG is not set 620# CONFIG_MTD_DEBUG is not set
621# CONFIG_MTD_TESTS is not set
614CONFIG_MTD_CONCAT=y 622CONFIG_MTD_CONCAT=y
615CONFIG_MTD_PARTITIONS=y 623CONFIG_MTD_PARTITIONS=y
616# CONFIG_MTD_TESTS is not set
617# CONFIG_MTD_REDBOOT_PARTS is not set 624# CONFIG_MTD_REDBOOT_PARTS is not set
618# CONFIG_MTD_CMDLINE_PARTS is not set 625# CONFIG_MTD_CMDLINE_PARTS is not set
619# CONFIG_MTD_OF_PARTS is not set 626# CONFIG_MTD_OF_PARTS is not set
@@ -780,6 +787,7 @@ CONFIG_SCSI_WAIT_SCAN=m
780CONFIG_SCSI_LOWLEVEL=y 787CONFIG_SCSI_LOWLEVEL=y
781# CONFIG_ISCSI_TCP is not set 788# CONFIG_ISCSI_TCP is not set
782# CONFIG_SCSI_BNX2_ISCSI is not set 789# CONFIG_SCSI_BNX2_ISCSI is not set
790# CONFIG_BE2ISCSI is not set
783# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 791# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
784# CONFIG_SCSI_3W_9XXX is not set 792# CONFIG_SCSI_3W_9XXX is not set
785# CONFIG_SCSI_ACARD is not set 793# CONFIG_SCSI_ACARD is not set
@@ -819,11 +827,14 @@ CONFIG_SCSI_LOWLEVEL=y
819# CONFIG_SCSI_DC390T is not set 827# CONFIG_SCSI_DC390T is not set
820# CONFIG_SCSI_NSP32 is not set 828# CONFIG_SCSI_NSP32 is not set
821# CONFIG_SCSI_DEBUG is not set 829# CONFIG_SCSI_DEBUG is not set
830# CONFIG_SCSI_PMCRAID is not set
822# CONFIG_SCSI_SRP is not set 831# CONFIG_SCSI_SRP is not set
832# CONFIG_SCSI_BFA_FC is not set
823# CONFIG_SCSI_DH is not set 833# CONFIG_SCSI_DH is not set
824# CONFIG_SCSI_OSD_INITIATOR is not set 834# CONFIG_SCSI_OSD_INITIATOR is not set
825CONFIG_ATA=y 835CONFIG_ATA=y
826# CONFIG_ATA_NONSTANDARD is not set 836# CONFIG_ATA_NONSTANDARD is not set
837CONFIG_ATA_VERBOSE_ERROR=y
827CONFIG_SATA_PMP=y 838CONFIG_SATA_PMP=y
828# CONFIG_SATA_AHCI is not set 839# CONFIG_SATA_AHCI is not set
829# CONFIG_SATA_SIL24 is not set 840# CONFIG_SATA_SIL24 is not set
@@ -846,6 +857,7 @@ CONFIG_SATA_SIL=y
846# CONFIG_PATA_ALI is not set 857# CONFIG_PATA_ALI is not set
847# CONFIG_PATA_AMD is not set 858# CONFIG_PATA_AMD is not set
848# CONFIG_PATA_ARTOP is not set 859# CONFIG_PATA_ARTOP is not set
860# CONFIG_PATA_ATP867X is not set
849# CONFIG_PATA_ATIIXP is not set 861# CONFIG_PATA_ATIIXP is not set
850# CONFIG_PATA_CMD640_PCI is not set 862# CONFIG_PATA_CMD640_PCI is not set
851# CONFIG_PATA_CMD64X is not set 863# CONFIG_PATA_CMD64X is not set
@@ -873,6 +885,7 @@ CONFIG_SATA_SIL=y
873# CONFIG_PATA_OPTIDMA is not set 885# CONFIG_PATA_OPTIDMA is not set
874# CONFIG_PATA_PDC_OLD is not set 886# CONFIG_PATA_PDC_OLD is not set
875# CONFIG_PATA_RADISYS is not set 887# CONFIG_PATA_RADISYS is not set
888# CONFIG_PATA_RDC is not set
876# CONFIG_PATA_RZ1000 is not set 889# CONFIG_PATA_RZ1000 is not set
877# CONFIG_PATA_SC1200 is not set 890# CONFIG_PATA_SC1200 is not set
878# CONFIG_PATA_SERVERWORKS is not set 891# CONFIG_PATA_SERVERWORKS is not set
@@ -949,7 +962,9 @@ CONFIG_MII=y
949# CONFIG_NET_PCI is not set 962# CONFIG_NET_PCI is not set
950# CONFIG_B44 is not set 963# CONFIG_B44 is not set
951# CONFIG_KS8842 is not set 964# CONFIG_KS8842 is not set
965# CONFIG_KS8851_MLL is not set
952# CONFIG_ATL2 is not set 966# CONFIG_ATL2 is not set
967# CONFIG_XILINX_EMACLITE is not set
953CONFIG_NETDEV_1000=y 968CONFIG_NETDEV_1000=y
954# CONFIG_ACENIC is not set 969# CONFIG_ACENIC is not set
955# CONFIG_DL2K is not set 970# CONFIG_DL2K is not set
@@ -979,10 +994,7 @@ CONFIG_GIANFAR=y
979# CONFIG_JME is not set 994# CONFIG_JME is not set
980# CONFIG_NETDEV_10000 is not set 995# CONFIG_NETDEV_10000 is not set
981# CONFIG_TR is not set 996# CONFIG_TR is not set
982 997CONFIG_WLAN=y
983#
984# Wireless LAN
985#
986# CONFIG_WLAN_PRE80211 is not set 998# CONFIG_WLAN_PRE80211 is not set
987# CONFIG_WLAN_80211 is not set 999# CONFIG_WLAN_80211 is not set
988 1000
@@ -1120,6 +1132,7 @@ CONFIG_HW_RANDOM=y
1120CONFIG_DEVPORT=y 1132CONFIG_DEVPORT=y
1121CONFIG_I2C=y 1133CONFIG_I2C=y
1122CONFIG_I2C_BOARDINFO=y 1134CONFIG_I2C_BOARDINFO=y
1135CONFIG_I2C_COMPAT=y
1123CONFIG_I2C_CHARDEV=y 1136CONFIG_I2C_CHARDEV=y
1124CONFIG_I2C_HELPER_AUTO=y 1137CONFIG_I2C_HELPER_AUTO=y
1125 1138
@@ -1175,9 +1188,6 @@ CONFIG_I2C_MPC=y
1175# Miscellaneous I2C Chip support 1188# Miscellaneous I2C Chip support
1176# 1189#
1177CONFIG_DS1682=y 1190CONFIG_DS1682=y
1178# CONFIG_SENSORS_PCF8574 is not set
1179# CONFIG_PCF8575 is not set
1180# CONFIG_SENSORS_PCA9539 is not set
1181# CONFIG_SENSORS_TSL2550 is not set 1191# CONFIG_SENSORS_TSL2550 is not set
1182# CONFIG_I2C_DEBUG_CORE is not set 1192# CONFIG_I2C_DEBUG_CORE is not set
1183# CONFIG_I2C_DEBUG_ALGO is not set 1193# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1211,14 +1221,24 @@ CONFIG_GPIOLIB=y
1211# PCI GPIO expanders: 1221# PCI GPIO expanders:
1212# 1222#
1213# CONFIG_GPIO_BT8XX is not set 1223# CONFIG_GPIO_BT8XX is not set
1224# CONFIG_GPIO_LANGWELL is not set
1214 1225
1215# 1226#
1216# SPI GPIO expanders: 1227# SPI GPIO expanders:
1217# 1228#
1229
1230#
1231# AC97 GPIO expanders:
1232#
1218# CONFIG_W1 is not set 1233# CONFIG_W1 is not set
1219# CONFIG_POWER_SUPPLY is not set 1234# CONFIG_POWER_SUPPLY is not set
1220CONFIG_HWMON=y 1235CONFIG_HWMON=y
1221# CONFIG_HWMON_VID is not set 1236# CONFIG_HWMON_VID is not set
1237# CONFIG_HWMON_DEBUG_CHIP is not set
1238
1239#
1240# Native drivers
1241#
1222# CONFIG_SENSORS_AD7414 is not set 1242# CONFIG_SENSORS_AD7414 is not set
1223# CONFIG_SENSORS_AD7418 is not set 1243# CONFIG_SENSORS_AD7418 is not set
1224# CONFIG_SENSORS_ADM1021 is not set 1244# CONFIG_SENSORS_ADM1021 is not set
@@ -1269,6 +1289,7 @@ CONFIG_SENSORS_LM92=y
1269# CONFIG_SENSORS_ADS7828 is not set 1289# CONFIG_SENSORS_ADS7828 is not set
1270# CONFIG_SENSORS_THMC50 is not set 1290# CONFIG_SENSORS_THMC50 is not set
1271# CONFIG_SENSORS_TMP401 is not set 1291# CONFIG_SENSORS_TMP401 is not set
1292# CONFIG_SENSORS_TMP421 is not set
1272# CONFIG_SENSORS_VIA686A is not set 1293# CONFIG_SENSORS_VIA686A is not set
1273# CONFIG_SENSORS_VT1211 is not set 1294# CONFIG_SENSORS_VT1211 is not set
1274# CONFIG_SENSORS_VT8231 is not set 1295# CONFIG_SENSORS_VT8231 is not set
@@ -1280,9 +1301,7 @@ CONFIG_SENSORS_LM92=y
1280# CONFIG_SENSORS_W83L786NG is not set 1301# CONFIG_SENSORS_W83L786NG is not set
1281# CONFIG_SENSORS_W83627HF is not set 1302# CONFIG_SENSORS_W83627HF is not set
1282# CONFIG_SENSORS_W83627EHF is not set 1303# CONFIG_SENSORS_W83627EHF is not set
1283# CONFIG_HWMON_DEBUG_CHIP is not set
1284# CONFIG_THERMAL is not set 1304# CONFIG_THERMAL is not set
1285# CONFIG_THERMAL_HWMON is not set
1286CONFIG_WATCHDOG=y 1305CONFIG_WATCHDOG=y
1287# CONFIG_WATCHDOG_NOWAYOUT is not set 1306# CONFIG_WATCHDOG_NOWAYOUT is not set
1288 1307
@@ -1322,6 +1341,7 @@ CONFIG_SSB_POSSIBLE=y
1322# CONFIG_MFD_TMIO is not set 1341# CONFIG_MFD_TMIO is not set
1323# CONFIG_PMIC_DA903X is not set 1342# CONFIG_PMIC_DA903X is not set
1324# CONFIG_MFD_WM8400 is not set 1343# CONFIG_MFD_WM8400 is not set
1344# CONFIG_MFD_WM831X is not set
1325# CONFIG_MFD_WM8350_I2C is not set 1345# CONFIG_MFD_WM8350_I2C is not set
1326# CONFIG_MFD_PCF50633 is not set 1346# CONFIG_MFD_PCF50633 is not set
1327# CONFIG_AB3100_CORE is not set 1347# CONFIG_AB3100_CORE is not set
@@ -1332,6 +1352,7 @@ CONFIG_SSB_POSSIBLE=y
1332# Graphics support 1352# Graphics support
1333# 1353#
1334# CONFIG_AGP is not set 1354# CONFIG_AGP is not set
1355CONFIG_VGA_ARB=y
1335# CONFIG_DRM is not set 1356# CONFIG_DRM is not set
1336# CONFIG_VGASTATE is not set 1357# CONFIG_VGASTATE is not set
1337CONFIG_VIDEO_OUTPUT_CONTROL=m 1358CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -1352,7 +1373,6 @@ CONFIG_DUMMY_CONSOLE=y
1352# CONFIG_SOUND is not set 1373# CONFIG_SOUND is not set
1353CONFIG_HID_SUPPORT=y 1374CONFIG_HID_SUPPORT=y
1354CONFIG_HID=y 1375CONFIG_HID=y
1355# CONFIG_HID_DEBUG is not set
1356# CONFIG_HIDRAW is not set 1376# CONFIG_HIDRAW is not set
1357 1377
1358# 1378#
@@ -1375,6 +1395,7 @@ CONFIG_HID_CYPRESS=y
1375CONFIG_HID_EZKEY=y 1395CONFIG_HID_EZKEY=y
1376# CONFIG_HID_KYE is not set 1396# CONFIG_HID_KYE is not set
1377CONFIG_HID_GYRATION=y 1397CONFIG_HID_GYRATION=y
1398# CONFIG_HID_TWINHAN is not set
1378# CONFIG_HID_KENSINGTON is not set 1399# CONFIG_HID_KENSINGTON is not set
1379CONFIG_HID_LOGITECH=y 1400CONFIG_HID_LOGITECH=y
1380# CONFIG_LOGITECH_FF is not set 1401# CONFIG_LOGITECH_FF is not set
@@ -1427,6 +1448,7 @@ CONFIG_USB_EHCI_HCD=y
1427# CONFIG_USB_OXU210HP_HCD is not set 1448# CONFIG_USB_OXU210HP_HCD is not set
1428# CONFIG_USB_ISP116X_HCD is not set 1449# CONFIG_USB_ISP116X_HCD is not set
1429# CONFIG_USB_ISP1760_HCD is not set 1450# CONFIG_USB_ISP1760_HCD is not set
1451# CONFIG_USB_ISP1362_HCD is not set
1430CONFIG_USB_OHCI_HCD=y 1452CONFIG_USB_OHCI_HCD=y
1431# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set 1453# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set
1432# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 1454# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
@@ -1502,6 +1524,7 @@ CONFIG_USB_STORAGE=y
1502# CONFIG_USB_LD is not set 1524# CONFIG_USB_LD is not set
1503# CONFIG_USB_TRANCEVIBRATOR is not set 1525# CONFIG_USB_TRANCEVIBRATOR is not set
1504# CONFIG_USB_IOWARRIOR is not set 1526# CONFIG_USB_IOWARRIOR is not set
1527# CONFIG_USB_TEST is not set
1505# CONFIG_USB_ISIGHTFW is not set 1528# CONFIG_USB_ISIGHTFW is not set
1506# CONFIG_USB_VST is not set 1529# CONFIG_USB_VST is not set
1507# CONFIG_USB_ATM is not set 1530# CONFIG_USB_ATM is not set
@@ -1607,6 +1630,7 @@ CONFIG_FS_POSIX_ACL=y
1607# CONFIG_GFS2_FS is not set 1630# CONFIG_GFS2_FS is not set
1608# CONFIG_OCFS2_FS is not set 1631# CONFIG_OCFS2_FS is not set
1609# CONFIG_BTRFS_FS is not set 1632# CONFIG_BTRFS_FS is not set
1633# CONFIG_NILFS2_FS is not set
1610CONFIG_FILE_LOCKING=y 1634CONFIG_FILE_LOCKING=y
1611CONFIG_FSNOTIFY=y 1635CONFIG_FSNOTIFY=y
1612CONFIG_DNOTIFY=y 1636CONFIG_DNOTIFY=y
@@ -1669,7 +1693,6 @@ CONFIG_MISC_FILESYSTEMS=y
1669# CONFIG_ROMFS_FS is not set 1693# CONFIG_ROMFS_FS is not set
1670# CONFIG_SYSV_FS is not set 1694# CONFIG_SYSV_FS is not set
1671# CONFIG_UFS_FS is not set 1695# CONFIG_UFS_FS is not set
1672# CONFIG_NILFS2_FS is not set
1673CONFIG_NETWORK_FILESYSTEMS=y 1696CONFIG_NETWORK_FILESYSTEMS=y
1674CONFIG_NFS_FS=y 1697CONFIG_NFS_FS=y
1675CONFIG_NFS_V3=y 1698CONFIG_NFS_V3=y
@@ -1775,6 +1798,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1775CONFIG_ENABLE_MUST_CHECK=y 1798CONFIG_ENABLE_MUST_CHECK=y
1776CONFIG_FRAME_WARN=1024 1799CONFIG_FRAME_WARN=1024
1777CONFIG_MAGIC_SYSRQ=y 1800CONFIG_MAGIC_SYSRQ=y
1801# CONFIG_STRIP_ASM_SYMS is not set
1778# CONFIG_UNUSED_SYMBOLS is not set 1802# CONFIG_UNUSED_SYMBOLS is not set
1779# CONFIG_DEBUG_FS is not set 1803# CONFIG_DEBUG_FS is not set
1780# CONFIG_HEADERS_CHECK is not set 1804# CONFIG_HEADERS_CHECK is not set
@@ -1791,6 +1815,7 @@ CONFIG_SCHED_DEBUG=y
1791# CONFIG_TIMER_STATS is not set 1815# CONFIG_TIMER_STATS is not set
1792# CONFIG_DEBUG_OBJECTS is not set 1816# CONFIG_DEBUG_OBJECTS is not set
1793# CONFIG_DEBUG_SLAB is not set 1817# CONFIG_DEBUG_SLAB is not set
1818# CONFIG_DEBUG_KMEMLEAK is not set
1794CONFIG_DEBUG_PREEMPT=y 1819CONFIG_DEBUG_PREEMPT=y
1795# CONFIG_DEBUG_RT_MUTEXES is not set 1820# CONFIG_DEBUG_RT_MUTEXES is not set
1796# CONFIG_RT_MUTEX_TESTER is not set 1821# CONFIG_RT_MUTEX_TESTER is not set
@@ -1810,10 +1835,12 @@ CONFIG_DEBUG_INFO=y
1810# CONFIG_DEBUG_LIST is not set 1835# CONFIG_DEBUG_LIST is not set
1811# CONFIG_DEBUG_SG is not set 1836# CONFIG_DEBUG_SG is not set
1812# CONFIG_DEBUG_NOTIFIERS is not set 1837# CONFIG_DEBUG_NOTIFIERS is not set
1838# CONFIG_DEBUG_CREDENTIALS is not set
1813# CONFIG_RCU_TORTURE_TEST is not set 1839# CONFIG_RCU_TORTURE_TEST is not set
1814# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1840# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1815# CONFIG_BACKTRACE_SELF_TEST is not set 1841# CONFIG_BACKTRACE_SELF_TEST is not set
1816# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1842# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1843# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1817# CONFIG_FAULT_INJECTION is not set 1844# CONFIG_FAULT_INJECTION is not set
1818# CONFIG_LATENCYTOP is not set 1845# CONFIG_LATENCYTOP is not set
1819CONFIG_SYSCTL_SYSCALL_CHECK=y 1846CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1837,10 +1864,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1837# CONFIG_KMEMTRACE is not set 1864# CONFIG_KMEMTRACE is not set
1838# CONFIG_WORKQUEUE_TRACER is not set 1865# CONFIG_WORKQUEUE_TRACER is not set
1839# CONFIG_BLK_DEV_IO_TRACE is not set 1866# CONFIG_BLK_DEV_IO_TRACE is not set
1867# CONFIG_DMA_API_DEBUG is not set
1840# CONFIG_SAMPLES is not set 1868# CONFIG_SAMPLES is not set
1841CONFIG_HAVE_ARCH_KGDB=y 1869CONFIG_HAVE_ARCH_KGDB=y
1842# CONFIG_KGDB is not set 1870# CONFIG_KGDB is not set
1843# CONFIG_KMEMCHECK is not set
1844# CONFIG_PPC_DISABLE_WERROR is not set 1871# CONFIG_PPC_DISABLE_WERROR is not set
1845CONFIG_PPC_WERROR=y 1872CONFIG_PPC_WERROR=y
1846CONFIG_PRINT_STACK_DEPTH=64 1873CONFIG_PRINT_STACK_DEPTH=64
@@ -1872,7 +1899,6 @@ CONFIG_CRYPTO=y
1872# 1899#
1873# Crypto core or helper 1900# Crypto core or helper
1874# 1901#
1875# CONFIG_CRYPTO_FIPS is not set
1876CONFIG_CRYPTO_ALGAPI=y 1902CONFIG_CRYPTO_ALGAPI=y
1877CONFIG_CRYPTO_ALGAPI2=y 1903CONFIG_CRYPTO_ALGAPI2=y
1878CONFIG_CRYPTO_AEAD=m 1904CONFIG_CRYPTO_AEAD=m
@@ -1915,11 +1941,13 @@ CONFIG_CRYPTO_PCBC=m
1915# 1941#
1916CONFIG_CRYPTO_HMAC=y 1942CONFIG_CRYPTO_HMAC=y
1917# CONFIG_CRYPTO_XCBC is not set 1943# CONFIG_CRYPTO_XCBC is not set
1944# CONFIG_CRYPTO_VMAC is not set
1918 1945
1919# 1946#
1920# Digest 1947# Digest
1921# 1948#
1922CONFIG_CRYPTO_CRC32C=m 1949CONFIG_CRYPTO_CRC32C=m
1950# CONFIG_CRYPTO_GHASH is not set
1923CONFIG_CRYPTO_MD4=m 1951CONFIG_CRYPTO_MD4=m
1924CONFIG_CRYPTO_MD5=y 1952CONFIG_CRYPTO_MD5=y
1925CONFIG_CRYPTO_MICHAEL_MIC=m 1953CONFIG_CRYPTO_MICHAEL_MIC=m
diff --git a/arch/powerpc/configs/86xx/mpc8610_hpcd_defconfig b/arch/powerpc/configs/86xx/mpc8610_hpcd_defconfig
index a61f183f7186..de4d52504fe4 100644
--- a/arch/powerpc/configs/86xx/mpc8610_hpcd_defconfig
+++ b/arch/powerpc/configs/86xx/mpc8610_hpcd_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:27 2009 4# Thu Nov 5 08:20:45 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -35,6 +35,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y 35CONFIG_GENERIC_HARDIRQS=y
36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -83,11 +84,12 @@ CONFIG_SYSVIPC_SYSCTL=y
83# 84#
84# RCU Subsystem 85# RCU Subsystem
85# 86#
86CONFIG_CLASSIC_RCU=y 87CONFIG_TREE_RCU=y
87# CONFIG_TREE_RCU is not set 88# CONFIG_TREE_PREEMPT_RCU is not set
88# CONFIG_PREEMPT_RCU is not set 89# CONFIG_RCU_TRACE is not set
90CONFIG_RCU_FANOUT=32
91# CONFIG_RCU_FANOUT_EXACT is not set
89# CONFIG_TREE_RCU_TRACE is not set 92# CONFIG_TREE_RCU_TRACE is not set
90# CONFIG_PREEMPT_RCU_TRACE is not set
91CONFIG_IKCONFIG=y 93CONFIG_IKCONFIG=y
92CONFIG_IKCONFIG_PROC=y 94CONFIG_IKCONFIG_PROC=y
93CONFIG_LOG_BUF_SHIFT=14 95CONFIG_LOG_BUF_SHIFT=14
@@ -126,22 +128,21 @@ CONFIG_TIMERFD=y
126CONFIG_EVENTFD=y 128CONFIG_EVENTFD=y
127CONFIG_SHMEM=y 129CONFIG_SHMEM=y
128CONFIG_AIO=y 130CONFIG_AIO=y
129CONFIG_HAVE_PERF_COUNTERS=y 131CONFIG_HAVE_PERF_EVENTS=y
130 132
131# 133#
132# Performance Counters 134# Kernel Performance Events And Counters
133# 135#
136# CONFIG_PERF_EVENTS is not set
134# CONFIG_PERF_COUNTERS is not set 137# CONFIG_PERF_COUNTERS is not set
135CONFIG_VM_EVENT_COUNTERS=y 138CONFIG_VM_EVENT_COUNTERS=y
136CONFIG_PCI_QUIRKS=y 139CONFIG_PCI_QUIRKS=y
137CONFIG_SLUB_DEBUG=y 140CONFIG_SLUB_DEBUG=y
138# CONFIG_STRIP_ASM_SYMS is not set
139CONFIG_COMPAT_BRK=y 141CONFIG_COMPAT_BRK=y
140# CONFIG_SLAB is not set 142# CONFIG_SLAB is not set
141CONFIG_SLUB=y 143CONFIG_SLUB=y
142# CONFIG_SLOB is not set 144# CONFIG_SLOB is not set
143# CONFIG_PROFILING is not set 145# CONFIG_PROFILING is not set
144# CONFIG_MARKERS is not set
145CONFIG_HAVE_OPROFILE=y 146CONFIG_HAVE_OPROFILE=y
146# CONFIG_KPROBES is not set 147# CONFIG_KPROBES is not set
147CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 148CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -149,6 +150,8 @@ CONFIG_HAVE_IOREMAP_PROT=y
149CONFIG_HAVE_KPROBES=y 150CONFIG_HAVE_KPROBES=y
150CONFIG_HAVE_KRETPROBES=y 151CONFIG_HAVE_KRETPROBES=y
151CONFIG_HAVE_ARCH_TRACEHOOK=y 152CONFIG_HAVE_ARCH_TRACEHOOK=y
153CONFIG_HAVE_DMA_ATTRS=y
154CONFIG_HAVE_DMA_API_DEBUG=y
152 155
153# 156#
154# GCOV-based kernel profiling 157# GCOV-based kernel profiling
@@ -251,6 +254,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
251CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 254CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
252# CONFIG_KEXEC is not set 255# CONFIG_KEXEC is not set
253# CONFIG_CRASH_DUMP is not set 256# CONFIG_CRASH_DUMP is not set
257CONFIG_MAX_ACTIVE_REGIONS=32
254CONFIG_ARCH_FLATMEM_ENABLE=y 258CONFIG_ARCH_FLATMEM_ENABLE=y
255CONFIG_ARCH_POPULATES_NODE_MAP=y 259CONFIG_ARCH_POPULATES_NODE_MAP=y
256CONFIG_SELECT_MEMORY_MODEL=y 260CONFIG_SELECT_MEMORY_MODEL=y
@@ -268,6 +272,7 @@ CONFIG_BOUNCE=y
268CONFIG_VIRT_TO_BUS=y 272CONFIG_VIRT_TO_BUS=y
269CONFIG_HAVE_MLOCK=y 273CONFIG_HAVE_MLOCK=y
270CONFIG_HAVE_MLOCKED_PAGE_BIT=y 274CONFIG_HAVE_MLOCKED_PAGE_BIT=y
275# CONFIG_KSM is not set
271CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 276CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
272CONFIG_PPC_4K_PAGES=y 277CONFIG_PPC_4K_PAGES=y
273# CONFIG_PPC_16K_PAGES is not set 278# CONFIG_PPC_16K_PAGES is not set
@@ -385,6 +390,7 @@ CONFIG_IPV6_NDISC_NODETYPE=y
385# CONFIG_NETFILTER is not set 390# CONFIG_NETFILTER is not set
386# CONFIG_IP_DCCP is not set 391# CONFIG_IP_DCCP is not set
387# CONFIG_IP_SCTP is not set 392# CONFIG_IP_SCTP is not set
393# CONFIG_RDS is not set
388# CONFIG_TIPC is not set 394# CONFIG_TIPC is not set
389# CONFIG_ATM is not set 395# CONFIG_ATM is not set
390# CONFIG_BRIDGE is not set 396# CONFIG_BRIDGE is not set
@@ -414,6 +420,7 @@ CONFIG_IPV6_NDISC_NODETYPE=y
414# CONFIG_AF_RXRPC is not set 420# CONFIG_AF_RXRPC is not set
415CONFIG_WIRELESS=y 421CONFIG_WIRELESS=y
416# CONFIG_CFG80211 is not set 422# CONFIG_CFG80211 is not set
423CONFIG_CFG80211_DEFAULT_PS_VALUE=0
417CONFIG_WIRELESS_OLD_REGULATORY=y 424CONFIG_WIRELESS_OLD_REGULATORY=y
418# CONFIG_WIRELESS_EXT is not set 425# CONFIG_WIRELESS_EXT is not set
419# CONFIG_LIB80211 is not set 426# CONFIG_LIB80211 is not set
@@ -421,7 +428,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
421# 428#
422# CFG80211 needs to be enabled for MAC80211 429# CFG80211 needs to be enabled for MAC80211
423# 430#
424CONFIG_MAC80211_DEFAULT_PS_VALUE=0
425# CONFIG_WIMAX is not set 431# CONFIG_WIMAX is not set
426# CONFIG_RFKILL is not set 432# CONFIG_RFKILL is not set
427# CONFIG_NET_9P is not set 433# CONFIG_NET_9P is not set
@@ -434,6 +440,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
434# Generic Driver Options 440# Generic Driver Options
435# 441#
436CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 442CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
443# CONFIG_DEVTMPFS is not set
437CONFIG_STANDALONE=y 444CONFIG_STANDALONE=y
438CONFIG_PREVENT_FIRMWARE_BUILD=y 445CONFIG_PREVENT_FIRMWARE_BUILD=y
439CONFIG_FW_LOADER=y 446CONFIG_FW_LOADER=y
@@ -445,9 +452,9 @@ CONFIG_EXTRA_FIRMWARE=""
445# CONFIG_CONNECTOR is not set 452# CONFIG_CONNECTOR is not set
446CONFIG_MTD=y 453CONFIG_MTD=y
447# CONFIG_MTD_DEBUG is not set 454# CONFIG_MTD_DEBUG is not set
455# CONFIG_MTD_TESTS is not set
448# CONFIG_MTD_CONCAT is not set 456# CONFIG_MTD_CONCAT is not set
449CONFIG_MTD_PARTITIONS=y 457CONFIG_MTD_PARTITIONS=y
450# CONFIG_MTD_TESTS is not set
451# CONFIG_MTD_REDBOOT_PARTS is not set 458# CONFIG_MTD_REDBOOT_PARTS is not set
452CONFIG_MTD_CMDLINE_PARTS=y 459CONFIG_MTD_CMDLINE_PARTS=y
453# CONFIG_MTD_OF_PARTS is not set 460# CONFIG_MTD_OF_PARTS is not set
@@ -662,6 +669,7 @@ CONFIG_SCSI_WAIT_SCAN=m
662CONFIG_SCSI_LOWLEVEL=y 669CONFIG_SCSI_LOWLEVEL=y
663# CONFIG_ISCSI_TCP is not set 670# CONFIG_ISCSI_TCP is not set
664# CONFIG_SCSI_BNX2_ISCSI is not set 671# CONFIG_SCSI_BNX2_ISCSI is not set
672# CONFIG_BE2ISCSI is not set
665# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 673# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
666# CONFIG_SCSI_3W_9XXX is not set 674# CONFIG_SCSI_3W_9XXX is not set
667# CONFIG_SCSI_ACARD is not set 675# CONFIG_SCSI_ACARD is not set
@@ -701,11 +709,14 @@ CONFIG_SCSI_LOWLEVEL=y
701# CONFIG_SCSI_DC390T is not set 709# CONFIG_SCSI_DC390T is not set
702# CONFIG_SCSI_NSP32 is not set 710# CONFIG_SCSI_NSP32 is not set
703# CONFIG_SCSI_DEBUG is not set 711# CONFIG_SCSI_DEBUG is not set
712# CONFIG_SCSI_PMCRAID is not set
704# CONFIG_SCSI_SRP is not set 713# CONFIG_SCSI_SRP is not set
714# CONFIG_SCSI_BFA_FC is not set
705# CONFIG_SCSI_DH is not set 715# CONFIG_SCSI_DH is not set
706# CONFIG_SCSI_OSD_INITIATOR is not set 716# CONFIG_SCSI_OSD_INITIATOR is not set
707CONFIG_ATA=y 717CONFIG_ATA=y
708# CONFIG_ATA_NONSTANDARD is not set 718# CONFIG_ATA_NONSTANDARD is not set
719CONFIG_ATA_VERBOSE_ERROR=y
709CONFIG_SATA_PMP=y 720CONFIG_SATA_PMP=y
710CONFIG_SATA_AHCI=y 721CONFIG_SATA_AHCI=y
711# CONFIG_SATA_SIL24 is not set 722# CONFIG_SATA_SIL24 is not set
@@ -728,6 +739,7 @@ CONFIG_ATA_SFF=y
728CONFIG_PATA_ALI=y 739CONFIG_PATA_ALI=y
729# CONFIG_PATA_AMD is not set 740# CONFIG_PATA_AMD is not set
730# CONFIG_PATA_ARTOP is not set 741# CONFIG_PATA_ARTOP is not set
742# CONFIG_PATA_ATP867X is not set
731# CONFIG_PATA_ATIIXP is not set 743# CONFIG_PATA_ATIIXP is not set
732# CONFIG_PATA_CMD640_PCI is not set 744# CONFIG_PATA_CMD640_PCI is not set
733# CONFIG_PATA_CMD64X is not set 745# CONFIG_PATA_CMD64X is not set
@@ -755,6 +767,7 @@ CONFIG_PATA_ALI=y
755# CONFIG_PATA_OPTIDMA is not set 767# CONFIG_PATA_OPTIDMA is not set
756# CONFIG_PATA_PDC_OLD is not set 768# CONFIG_PATA_PDC_OLD is not set
757# CONFIG_PATA_RADISYS is not set 769# CONFIG_PATA_RADISYS is not set
770# CONFIG_PATA_RDC is not set
758# CONFIG_PATA_RZ1000 is not set 771# CONFIG_PATA_RZ1000 is not set
759# CONFIG_PATA_SC1200 is not set 772# CONFIG_PATA_SC1200 is not set
760# CONFIG_PATA_SERVERWORKS is not set 773# CONFIG_PATA_SERVERWORKS is not set
@@ -818,14 +831,13 @@ CONFIG_ULI526X=y
818# CONFIG_NET_PCI is not set 831# CONFIG_NET_PCI is not set
819# CONFIG_B44 is not set 832# CONFIG_B44 is not set
820# CONFIG_KS8842 is not set 833# CONFIG_KS8842 is not set
834# CONFIG_KS8851_MLL is not set
821# CONFIG_ATL2 is not set 835# CONFIG_ATL2 is not set
836# CONFIG_XILINX_EMACLITE is not set
822# CONFIG_NETDEV_1000 is not set 837# CONFIG_NETDEV_1000 is not set
823# CONFIG_NETDEV_10000 is not set 838# CONFIG_NETDEV_10000 is not set
824# CONFIG_TR is not set 839# CONFIG_TR is not set
825 840CONFIG_WLAN=y
826#
827# Wireless LAN
828#
829# CONFIG_WLAN_PRE80211 is not set 841# CONFIG_WLAN_PRE80211 is not set
830# CONFIG_WLAN_80211 is not set 842# CONFIG_WLAN_80211 is not set
831 843
@@ -929,6 +941,7 @@ CONFIG_UNIX98_PTYS=y
929CONFIG_DEVPORT=y 941CONFIG_DEVPORT=y
930CONFIG_I2C=y 942CONFIG_I2C=y
931CONFIG_I2C_BOARDINFO=y 943CONFIG_I2C_BOARDINFO=y
944CONFIG_I2C_COMPAT=y
932# CONFIG_I2C_CHARDEV is not set 945# CONFIG_I2C_CHARDEV is not set
933CONFIG_I2C_HELPER_AUTO=y 946CONFIG_I2C_HELPER_AUTO=y
934 947
@@ -982,9 +995,6 @@ CONFIG_I2C_MPC=y
982# Miscellaneous I2C Chip support 995# Miscellaneous I2C Chip support
983# 996#
984# CONFIG_DS1682 is not set 997# CONFIG_DS1682 is not set
985# CONFIG_SENSORS_PCF8574 is not set
986# CONFIG_PCF8575 is not set
987# CONFIG_SENSORS_PCA9539 is not set
988# CONFIG_SENSORS_TSL2550 is not set 998# CONFIG_SENSORS_TSL2550 is not set
989# CONFIG_I2C_DEBUG_CORE is not set 999# CONFIG_I2C_DEBUG_CORE is not set
990# CONFIG_I2C_DEBUG_ALGO is not set 1000# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1002,7 +1012,6 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
1002# CONFIG_POWER_SUPPLY is not set 1012# CONFIG_POWER_SUPPLY is not set
1003# CONFIG_HWMON is not set 1013# CONFIG_HWMON is not set
1004# CONFIG_THERMAL is not set 1014# CONFIG_THERMAL is not set
1005# CONFIG_THERMAL_HWMON is not set
1006# CONFIG_WATCHDOG is not set 1015# CONFIG_WATCHDOG is not set
1007CONFIG_SSB_POSSIBLE=y 1016CONFIG_SSB_POSSIBLE=y
1008 1017
@@ -1021,6 +1030,7 @@ CONFIG_SSB_POSSIBLE=y
1021# CONFIG_MFD_TMIO is not set 1030# CONFIG_MFD_TMIO is not set
1022# CONFIG_PMIC_DA903X is not set 1031# CONFIG_PMIC_DA903X is not set
1023# CONFIG_MFD_WM8400 is not set 1032# CONFIG_MFD_WM8400 is not set
1033# CONFIG_MFD_WM831X is not set
1024# CONFIG_MFD_WM8350_I2C is not set 1034# CONFIG_MFD_WM8350_I2C is not set
1025# CONFIG_MFD_PCF50633 is not set 1035# CONFIG_MFD_PCF50633 is not set
1026# CONFIG_AB3100_CORE is not set 1036# CONFIG_AB3100_CORE is not set
@@ -1031,6 +1041,7 @@ CONFIG_SSB_POSSIBLE=y
1031# Graphics support 1041# Graphics support
1032# 1042#
1033# CONFIG_AGP is not set 1043# CONFIG_AGP is not set
1044CONFIG_VGA_ARB=y
1034# CONFIG_DRM is not set 1045# CONFIG_DRM is not set
1035# CONFIG_VGASTATE is not set 1046# CONFIG_VGASTATE is not set
1036CONFIG_VIDEO_OUTPUT_CONTROL=y 1047CONFIG_VIDEO_OUTPUT_CONTROL=y
@@ -1107,6 +1118,7 @@ CONFIG_DUMMY_CONSOLE=y
1107# CONFIG_LOGO is not set 1118# CONFIG_LOGO is not set
1108CONFIG_SOUND=y 1119CONFIG_SOUND=y
1109CONFIG_SOUND_OSS_CORE=y 1120CONFIG_SOUND_OSS_CORE=y
1121CONFIG_SOUND_OSS_CORE_PRECLAIM=y
1110CONFIG_SND=y 1122CONFIG_SND=y
1111CONFIG_SND_TIMER=y 1123CONFIG_SND_TIMER=y
1112CONFIG_SND_PCM=y 1124CONFIG_SND_PCM=y
@@ -1209,7 +1221,6 @@ CONFIG_SND_SOC_CS4270_VD33_ERRATA=y
1209# CONFIG_SOUND_PRIME is not set 1221# CONFIG_SOUND_PRIME is not set
1210CONFIG_HID_SUPPORT=y 1222CONFIG_HID_SUPPORT=y
1211CONFIG_HID=y 1223CONFIG_HID=y
1212# CONFIG_HID_DEBUG is not set
1213# CONFIG_HIDRAW is not set 1224# CONFIG_HIDRAW is not set
1214# CONFIG_HID_PID is not set 1225# CONFIG_HID_PID is not set
1215 1226
@@ -1329,6 +1340,7 @@ CONFIG_FS_MBCACHE=y
1329# CONFIG_GFS2_FS is not set 1340# CONFIG_GFS2_FS is not set
1330# CONFIG_OCFS2_FS is not set 1341# CONFIG_OCFS2_FS is not set
1331# CONFIG_BTRFS_FS is not set 1342# CONFIG_BTRFS_FS is not set
1343# CONFIG_NILFS2_FS is not set
1332CONFIG_FILE_LOCKING=y 1344CONFIG_FILE_LOCKING=y
1333CONFIG_FSNOTIFY=y 1345CONFIG_FSNOTIFY=y
1334# CONFIG_DNOTIFY is not set 1346# CONFIG_DNOTIFY is not set
@@ -1388,7 +1400,6 @@ CONFIG_MISC_FILESYSTEMS=y
1388# CONFIG_ROMFS_FS is not set 1400# CONFIG_ROMFS_FS is not set
1389# CONFIG_SYSV_FS is not set 1401# CONFIG_SYSV_FS is not set
1390# CONFIG_UFS_FS is not set 1402# CONFIG_UFS_FS is not set
1391# CONFIG_NILFS2_FS is not set
1392CONFIG_NETWORK_FILESYSTEMS=y 1403CONFIG_NETWORK_FILESYSTEMS=y
1393CONFIG_NFS_FS=y 1404CONFIG_NFS_FS=y
1394CONFIG_NFS_V3=y 1405CONFIG_NFS_V3=y
@@ -1505,6 +1516,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1505CONFIG_ENABLE_MUST_CHECK=y 1516CONFIG_ENABLE_MUST_CHECK=y
1506CONFIG_FRAME_WARN=1024 1517CONFIG_FRAME_WARN=1024
1507# CONFIG_MAGIC_SYSRQ is not set 1518# CONFIG_MAGIC_SYSRQ is not set
1519# CONFIG_STRIP_ASM_SYMS is not set
1508# CONFIG_UNUSED_SYMBOLS is not set 1520# CONFIG_UNUSED_SYMBOLS is not set
1509# CONFIG_DEBUG_FS is not set 1521# CONFIG_DEBUG_FS is not set
1510# CONFIG_HEADERS_CHECK is not set 1522# CONFIG_HEADERS_CHECK is not set
@@ -1522,6 +1534,7 @@ CONFIG_SCHED_DEBUG=y
1522# CONFIG_DEBUG_OBJECTS is not set 1534# CONFIG_DEBUG_OBJECTS is not set
1523# CONFIG_SLUB_DEBUG_ON is not set 1535# CONFIG_SLUB_DEBUG_ON is not set
1524# CONFIG_SLUB_STATS is not set 1536# CONFIG_SLUB_STATS is not set
1537# CONFIG_DEBUG_KMEMLEAK is not set
1525# CONFIG_DEBUG_RT_MUTEXES is not set 1538# CONFIG_DEBUG_RT_MUTEXES is not set
1526# CONFIG_RT_MUTEX_TESTER is not set 1539# CONFIG_RT_MUTEX_TESTER is not set
1527# CONFIG_DEBUG_SPINLOCK is not set 1540# CONFIG_DEBUG_SPINLOCK is not set
@@ -1541,10 +1554,12 @@ CONFIG_DEBUG_INFO=y
1541# CONFIG_DEBUG_LIST is not set 1554# CONFIG_DEBUG_LIST is not set
1542# CONFIG_DEBUG_SG is not set 1555# CONFIG_DEBUG_SG is not set
1543# CONFIG_DEBUG_NOTIFIERS is not set 1556# CONFIG_DEBUG_NOTIFIERS is not set
1557# CONFIG_DEBUG_CREDENTIALS is not set
1544# CONFIG_RCU_TORTURE_TEST is not set 1558# CONFIG_RCU_TORTURE_TEST is not set
1545# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1559# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1546# CONFIG_BACKTRACE_SELF_TEST is not set 1560# CONFIG_BACKTRACE_SELF_TEST is not set
1547# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1561# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1562# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1548# CONFIG_FAULT_INJECTION is not set 1563# CONFIG_FAULT_INJECTION is not set
1549# CONFIG_LATENCYTOP is not set 1564# CONFIG_LATENCYTOP is not set
1550CONFIG_SYSCTL_SYSCALL_CHECK=y 1565CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1567,10 +1582,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1567# CONFIG_KMEMTRACE is not set 1582# CONFIG_KMEMTRACE is not set
1568# CONFIG_WORKQUEUE_TRACER is not set 1583# CONFIG_WORKQUEUE_TRACER is not set
1569# CONFIG_BLK_DEV_IO_TRACE is not set 1584# CONFIG_BLK_DEV_IO_TRACE is not set
1585# CONFIG_DMA_API_DEBUG is not set
1570# CONFIG_SAMPLES is not set 1586# CONFIG_SAMPLES is not set
1571CONFIG_HAVE_ARCH_KGDB=y 1587CONFIG_HAVE_ARCH_KGDB=y
1572# CONFIG_KGDB is not set 1588# CONFIG_KGDB is not set
1573# CONFIG_KMEMCHECK is not set
1574# CONFIG_PPC_DISABLE_WERROR is not set 1589# CONFIG_PPC_DISABLE_WERROR is not set
1575CONFIG_PPC_WERROR=y 1590CONFIG_PPC_WERROR=y
1576CONFIG_PRINT_STACK_DEPTH=64 1591CONFIG_PRINT_STACK_DEPTH=64
@@ -1597,7 +1612,6 @@ CONFIG_CRYPTO=y
1597# 1612#
1598# Crypto core or helper 1613# Crypto core or helper
1599# 1614#
1600# CONFIG_CRYPTO_FIPS is not set
1601# CONFIG_CRYPTO_MANAGER is not set 1615# CONFIG_CRYPTO_MANAGER is not set
1602# CONFIG_CRYPTO_MANAGER2 is not set 1616# CONFIG_CRYPTO_MANAGER2 is not set
1603# CONFIG_CRYPTO_GF128MUL is not set 1617# CONFIG_CRYPTO_GF128MUL is not set
@@ -1629,11 +1643,13 @@ CONFIG_CRYPTO=y
1629# 1643#
1630# CONFIG_CRYPTO_HMAC is not set 1644# CONFIG_CRYPTO_HMAC is not set
1631# CONFIG_CRYPTO_XCBC is not set 1645# CONFIG_CRYPTO_XCBC is not set
1646# CONFIG_CRYPTO_VMAC is not set
1632 1647
1633# 1648#
1634# Digest 1649# Digest
1635# 1650#
1636# CONFIG_CRYPTO_CRC32C is not set 1651# CONFIG_CRYPTO_CRC32C is not set
1652# CONFIG_CRYPTO_GHASH is not set
1637# CONFIG_CRYPTO_MD4 is not set 1653# CONFIG_CRYPTO_MD4 is not set
1638# CONFIG_CRYPTO_MD5 is not set 1654# CONFIG_CRYPTO_MD5 is not set
1639# CONFIG_CRYPTO_MICHAEL_MIC is not set 1655# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/86xx/mpc8641_hpcn_defconfig b/arch/powerpc/configs/86xx/mpc8641_hpcn_defconfig
index 7016ce732605..754a79ba74a9 100644
--- a/arch/powerpc/configs/86xx/mpc8641_hpcn_defconfig
+++ b/arch/powerpc/configs/86xx/mpc8641_hpcn_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:28 2009 4# Thu Nov 5 08:20:46 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 36CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
39# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 40CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -87,11 +88,12 @@ CONFIG_AUDIT=y
87# 88#
88# RCU Subsystem 89# RCU Subsystem
89# 90#
90CONFIG_CLASSIC_RCU=y 91CONFIG_TREE_RCU=y
91# CONFIG_TREE_RCU is not set 92# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_PREEMPT_RCU is not set 93# CONFIG_RCU_TRACE is not set
94CONFIG_RCU_FANOUT=32
95# CONFIG_RCU_FANOUT_EXACT is not set
93# CONFIG_TREE_RCU_TRACE is not set 96# CONFIG_TREE_RCU_TRACE is not set
94# CONFIG_PREEMPT_RCU_TRACE is not set
95CONFIG_IKCONFIG=y 97CONFIG_IKCONFIG=y
96CONFIG_IKCONFIG_PROC=y 98CONFIG_IKCONFIG_PROC=y
97CONFIG_LOG_BUF_SHIFT=14 99CONFIG_LOG_BUF_SHIFT=14
@@ -130,22 +132,21 @@ CONFIG_TIMERFD=y
130CONFIG_EVENTFD=y 132CONFIG_EVENTFD=y
131CONFIG_SHMEM=y 133CONFIG_SHMEM=y
132CONFIG_AIO=y 134CONFIG_AIO=y
133CONFIG_HAVE_PERF_COUNTERS=y 135CONFIG_HAVE_PERF_EVENTS=y
134 136
135# 137#
136# Performance Counters 138# Kernel Performance Events And Counters
137# 139#
140# CONFIG_PERF_EVENTS is not set
138# CONFIG_PERF_COUNTERS is not set 141# CONFIG_PERF_COUNTERS is not set
139CONFIG_VM_EVENT_COUNTERS=y 142CONFIG_VM_EVENT_COUNTERS=y
140CONFIG_PCI_QUIRKS=y 143CONFIG_PCI_QUIRKS=y
141CONFIG_SLUB_DEBUG=y 144CONFIG_SLUB_DEBUG=y
142# CONFIG_STRIP_ASM_SYMS is not set
143CONFIG_COMPAT_BRK=y 145CONFIG_COMPAT_BRK=y
144# CONFIG_SLAB is not set 146# CONFIG_SLAB is not set
145CONFIG_SLUB=y 147CONFIG_SLUB=y
146# CONFIG_SLOB is not set 148# CONFIG_SLOB is not set
147# CONFIG_PROFILING is not set 149# CONFIG_PROFILING is not set
148# CONFIG_MARKERS is not set
149CONFIG_HAVE_OPROFILE=y 150CONFIG_HAVE_OPROFILE=y
150# CONFIG_KPROBES is not set 151# CONFIG_KPROBES is not set
151CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 152CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -153,7 +154,9 @@ CONFIG_HAVE_IOREMAP_PROT=y
153CONFIG_HAVE_KPROBES=y 154CONFIG_HAVE_KPROBES=y
154CONFIG_HAVE_KRETPROBES=y 155CONFIG_HAVE_KRETPROBES=y
155CONFIG_HAVE_ARCH_TRACEHOOK=y 156CONFIG_HAVE_ARCH_TRACEHOOK=y
157CONFIG_HAVE_DMA_ATTRS=y
156CONFIG_USE_GENERIC_SMP_HELPERS=y 158CONFIG_USE_GENERIC_SMP_HELPERS=y
159CONFIG_HAVE_DMA_API_DEBUG=y
157 160
158# 161#
159# GCOV-based kernel profiling 162# GCOV-based kernel profiling
@@ -251,13 +254,13 @@ CONFIG_BINFMT_ELF=y
251CONFIG_BINFMT_MISC=m 254CONFIG_BINFMT_MISC=m
252CONFIG_IOMMU_HELPER=y 255CONFIG_IOMMU_HELPER=y
253CONFIG_SWIOTLB=y 256CONFIG_SWIOTLB=y
254CONFIG_PPC_NEED_DMA_SYNC_OPS=y
255CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 257CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
256CONFIG_ARCH_HAS_WALK_MEMORY=y 258CONFIG_ARCH_HAS_WALK_MEMORY=y
257CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
258# CONFIG_KEXEC is not set 260# CONFIG_KEXEC is not set
259# CONFIG_CRASH_DUMP is not set 261# CONFIG_CRASH_DUMP is not set
260# CONFIG_IRQ_ALL_CPUS is not set 262# CONFIG_IRQ_ALL_CPUS is not set
263CONFIG_MAX_ACTIVE_REGIONS=32
261CONFIG_ARCH_FLATMEM_ENABLE=y 264CONFIG_ARCH_FLATMEM_ENABLE=y
262CONFIG_ARCH_POPULATES_NODE_MAP=y 265CONFIG_ARCH_POPULATES_NODE_MAP=y
263CONFIG_SELECT_MEMORY_MODEL=y 266CONFIG_SELECT_MEMORY_MODEL=y
@@ -275,6 +278,7 @@ CONFIG_BOUNCE=y
275CONFIG_VIRT_TO_BUS=y 278CONFIG_VIRT_TO_BUS=y
276CONFIG_HAVE_MLOCK=y 279CONFIG_HAVE_MLOCK=y
277CONFIG_HAVE_MLOCKED_PAGE_BIT=y 280CONFIG_HAVE_MLOCKED_PAGE_BIT=y
281# CONFIG_KSM is not set
278CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 282CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
279CONFIG_PPC_4K_PAGES=y 283CONFIG_PPC_4K_PAGES=y
280# CONFIG_PPC_16K_PAGES is not set 284# CONFIG_PPC_16K_PAGES is not set
@@ -404,6 +408,7 @@ CONFIG_IP_SCTP=m
404# CONFIG_SCTP_HMAC_NONE is not set 408# CONFIG_SCTP_HMAC_NONE is not set
405# CONFIG_SCTP_HMAC_SHA1 is not set 409# CONFIG_SCTP_HMAC_SHA1 is not set
406CONFIG_SCTP_HMAC_MD5=y 410CONFIG_SCTP_HMAC_MD5=y
411# CONFIG_RDS is not set
407# CONFIG_TIPC is not set 412# CONFIG_TIPC is not set
408# CONFIG_ATM is not set 413# CONFIG_ATM is not set
409# CONFIG_BRIDGE is not set 414# CONFIG_BRIDGE is not set
@@ -434,6 +439,7 @@ CONFIG_SCTP_HMAC_MD5=y
434CONFIG_FIB_RULES=y 439CONFIG_FIB_RULES=y
435CONFIG_WIRELESS=y 440CONFIG_WIRELESS=y
436# CONFIG_CFG80211 is not set 441# CONFIG_CFG80211 is not set
442CONFIG_CFG80211_DEFAULT_PS_VALUE=0
437CONFIG_WIRELESS_OLD_REGULATORY=y 443CONFIG_WIRELESS_OLD_REGULATORY=y
438# CONFIG_WIRELESS_EXT is not set 444# CONFIG_WIRELESS_EXT is not set
439# CONFIG_LIB80211 is not set 445# CONFIG_LIB80211 is not set
@@ -441,7 +447,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
441# 447#
442# CFG80211 needs to be enabled for MAC80211 448# CFG80211 needs to be enabled for MAC80211
443# 449#
444CONFIG_MAC80211_DEFAULT_PS_VALUE=0
445# CONFIG_WIMAX is not set 450# CONFIG_WIMAX is not set
446# CONFIG_RFKILL is not set 451# CONFIG_RFKILL is not set
447# CONFIG_NET_9P is not set 452# CONFIG_NET_9P is not set
@@ -454,6 +459,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
454# Generic Driver Options 459# Generic Driver Options
455# 460#
456CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 461CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
462# CONFIG_DEVTMPFS is not set
457CONFIG_STANDALONE=y 463CONFIG_STANDALONE=y
458CONFIG_PREVENT_FIRMWARE_BUILD=y 464CONFIG_PREVENT_FIRMWARE_BUILD=y
459CONFIG_FW_LOADER=y 465CONFIG_FW_LOADER=y
@@ -546,6 +552,7 @@ CONFIG_SCSI_LOWLEVEL=y
546# CONFIG_ISCSI_TCP is not set 552# CONFIG_ISCSI_TCP is not set
547# CONFIG_SCSI_CXGB3_ISCSI is not set 553# CONFIG_SCSI_CXGB3_ISCSI is not set
548# CONFIG_SCSI_BNX2_ISCSI is not set 554# CONFIG_SCSI_BNX2_ISCSI is not set
555# CONFIG_BE2ISCSI is not set
549# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 556# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
550# CONFIG_SCSI_3W_9XXX is not set 557# CONFIG_SCSI_3W_9XXX is not set
551# CONFIG_SCSI_ACARD is not set 558# CONFIG_SCSI_ACARD is not set
@@ -585,11 +592,14 @@ CONFIG_SCSI_LOWLEVEL=y
585# CONFIG_SCSI_DC390T is not set 592# CONFIG_SCSI_DC390T is not set
586# CONFIG_SCSI_NSP32 is not set 593# CONFIG_SCSI_NSP32 is not set
587# CONFIG_SCSI_DEBUG is not set 594# CONFIG_SCSI_DEBUG is not set
595# CONFIG_SCSI_PMCRAID is not set
588# CONFIG_SCSI_SRP is not set 596# CONFIG_SCSI_SRP is not set
597# CONFIG_SCSI_BFA_FC is not set
589# CONFIG_SCSI_DH is not set 598# CONFIG_SCSI_DH is not set
590# CONFIG_SCSI_OSD_INITIATOR is not set 599# CONFIG_SCSI_OSD_INITIATOR is not set
591CONFIG_ATA=y 600CONFIG_ATA=y
592# CONFIG_ATA_NONSTANDARD is not set 601# CONFIG_ATA_NONSTANDARD is not set
602CONFIG_ATA_VERBOSE_ERROR=y
593CONFIG_SATA_PMP=y 603CONFIG_SATA_PMP=y
594CONFIG_SATA_AHCI=y 604CONFIG_SATA_AHCI=y
595# CONFIG_SATA_SIL24 is not set 605# CONFIG_SATA_SIL24 is not set
@@ -612,6 +622,7 @@ CONFIG_ATA_SFF=y
612CONFIG_PATA_ALI=y 622CONFIG_PATA_ALI=y
613# CONFIG_PATA_AMD is not set 623# CONFIG_PATA_AMD is not set
614# CONFIG_PATA_ARTOP is not set 624# CONFIG_PATA_ARTOP is not set
625# CONFIG_PATA_ATP867X is not set
615# CONFIG_PATA_ATIIXP is not set 626# CONFIG_PATA_ATIIXP is not set
616# CONFIG_PATA_CMD640_PCI is not set 627# CONFIG_PATA_CMD640_PCI is not set
617# CONFIG_PATA_CMD64X is not set 628# CONFIG_PATA_CMD64X is not set
@@ -639,6 +650,7 @@ CONFIG_PATA_ALI=y
639# CONFIG_PATA_OPTIDMA is not set 650# CONFIG_PATA_OPTIDMA is not set
640# CONFIG_PATA_PDC_OLD is not set 651# CONFIG_PATA_PDC_OLD is not set
641# CONFIG_PATA_RADISYS is not set 652# CONFIG_PATA_RADISYS is not set
653# CONFIG_PATA_RDC is not set
642# CONFIG_PATA_RZ1000 is not set 654# CONFIG_PATA_RZ1000 is not set
643# CONFIG_PATA_SC1200 is not set 655# CONFIG_PATA_SC1200 is not set
644# CONFIG_PATA_SERVERWORKS is not set 656# CONFIG_PATA_SERVERWORKS is not set
@@ -715,7 +727,9 @@ CONFIG_MII=y
715# CONFIG_NET_PCI is not set 727# CONFIG_NET_PCI is not set
716# CONFIG_B44 is not set 728# CONFIG_B44 is not set
717# CONFIG_KS8842 is not set 729# CONFIG_KS8842 is not set
730# CONFIG_KS8851_MLL is not set
718# CONFIG_ATL2 is not set 731# CONFIG_ATL2 is not set
732# CONFIG_XILINX_EMACLITE is not set
719CONFIG_NETDEV_1000=y 733CONFIG_NETDEV_1000=y
720# CONFIG_ACENIC is not set 734# CONFIG_ACENIC is not set
721# CONFIG_DL2K is not set 735# CONFIG_DL2K is not set
@@ -763,10 +777,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
763# CONFIG_SFC is not set 777# CONFIG_SFC is not set
764# CONFIG_BE2NET is not set 778# CONFIG_BE2NET is not set
765# CONFIG_TR is not set 779# CONFIG_TR is not set
766 780CONFIG_WLAN=y
767#
768# Wireless LAN
769#
770# CONFIG_WLAN_PRE80211 is not set 781# CONFIG_WLAN_PRE80211 is not set
771# CONFIG_WLAN_80211 is not set 782# CONFIG_WLAN_80211 is not set
772 783
@@ -880,6 +891,7 @@ CONFIG_NVRAM=y
880CONFIG_DEVPORT=y 891CONFIG_DEVPORT=y
881CONFIG_I2C=y 892CONFIG_I2C=y
882CONFIG_I2C_BOARDINFO=y 893CONFIG_I2C_BOARDINFO=y
894CONFIG_I2C_COMPAT=y
883# CONFIG_I2C_CHARDEV is not set 895# CONFIG_I2C_CHARDEV is not set
884CONFIG_I2C_HELPER_AUTO=y 896CONFIG_I2C_HELPER_AUTO=y
885 897
@@ -934,9 +946,6 @@ CONFIG_I2C_MPC=y
934# Miscellaneous I2C Chip support 946# Miscellaneous I2C Chip support
935# 947#
936# CONFIG_DS1682 is not set 948# CONFIG_DS1682 is not set
937# CONFIG_SENSORS_PCF8574 is not set
938# CONFIG_PCF8575 is not set
939# CONFIG_SENSORS_PCA9539 is not set
940# CONFIG_SENSORS_TSL2550 is not set 949# CONFIG_SENSORS_TSL2550 is not set
941# CONFIG_I2C_DEBUG_CORE is not set 950# CONFIG_I2C_DEBUG_CORE is not set
942# CONFIG_I2C_DEBUG_ALGO is not set 951# CONFIG_I2C_DEBUG_ALGO is not set
@@ -954,7 +963,6 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
954# CONFIG_POWER_SUPPLY is not set 963# CONFIG_POWER_SUPPLY is not set
955# CONFIG_HWMON is not set 964# CONFIG_HWMON is not set
956# CONFIG_THERMAL is not set 965# CONFIG_THERMAL is not set
957# CONFIG_THERMAL_HWMON is not set
958# CONFIG_WATCHDOG is not set 966# CONFIG_WATCHDOG is not set
959CONFIG_SSB_POSSIBLE=y 967CONFIG_SSB_POSSIBLE=y
960 968
@@ -973,6 +981,7 @@ CONFIG_SSB_POSSIBLE=y
973# CONFIG_MFD_TMIO is not set 981# CONFIG_MFD_TMIO is not set
974# CONFIG_PMIC_DA903X is not set 982# CONFIG_PMIC_DA903X is not set
975# CONFIG_MFD_WM8400 is not set 983# CONFIG_MFD_WM8400 is not set
984# CONFIG_MFD_WM831X is not set
976# CONFIG_MFD_WM8350_I2C is not set 985# CONFIG_MFD_WM8350_I2C is not set
977# CONFIG_MFD_PCF50633 is not set 986# CONFIG_MFD_PCF50633 is not set
978# CONFIG_AB3100_CORE is not set 987# CONFIG_AB3100_CORE is not set
@@ -983,6 +992,7 @@ CONFIG_SSB_POSSIBLE=y
983# Graphics support 992# Graphics support
984# 993#
985# CONFIG_AGP is not set 994# CONFIG_AGP is not set
995CONFIG_VGA_ARB=y
986# CONFIG_DRM is not set 996# CONFIG_DRM is not set
987# CONFIG_VGASTATE is not set 997# CONFIG_VGASTATE is not set
988CONFIG_VIDEO_OUTPUT_CONTROL=y 998CONFIG_VIDEO_OUTPUT_CONTROL=y
@@ -1002,6 +1012,7 @@ CONFIG_VGA_CONSOLE=y
1002CONFIG_DUMMY_CONSOLE=y 1012CONFIG_DUMMY_CONSOLE=y
1003CONFIG_SOUND=y 1013CONFIG_SOUND=y
1004CONFIG_SOUND_OSS_CORE=y 1014CONFIG_SOUND_OSS_CORE=y
1015CONFIG_SOUND_OSS_CORE_PRECLAIM=y
1005CONFIG_SND=y 1016CONFIG_SND=y
1006CONFIG_SND_TIMER=y 1017CONFIG_SND_TIMER=y
1007CONFIG_SND_PCM=y 1018CONFIG_SND_PCM=y
@@ -1105,7 +1116,6 @@ CONFIG_SND_USB=y
1105CONFIG_AC97_BUS=y 1116CONFIG_AC97_BUS=y
1106CONFIG_HID_SUPPORT=y 1117CONFIG_HID_SUPPORT=y
1107CONFIG_HID=y 1118CONFIG_HID=y
1108# CONFIG_HID_DEBUG is not set
1109# CONFIG_HIDRAW is not set 1119# CONFIG_HIDRAW is not set
1110 1120
1111# 1121#
@@ -1128,6 +1138,7 @@ CONFIG_HID_CYPRESS=y
1128CONFIG_HID_EZKEY=y 1138CONFIG_HID_EZKEY=y
1129# CONFIG_HID_KYE is not set 1139# CONFIG_HID_KYE is not set
1130CONFIG_HID_GYRATION=y 1140CONFIG_HID_GYRATION=y
1141# CONFIG_HID_TWINHAN is not set
1131# CONFIG_HID_KENSINGTON is not set 1142# CONFIG_HID_KENSINGTON is not set
1132CONFIG_HID_LOGITECH=y 1143CONFIG_HID_LOGITECH=y
1133# CONFIG_LOGITECH_FF is not set 1144# CONFIG_LOGITECH_FF is not set
@@ -1180,6 +1191,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1180# CONFIG_USB_OXU210HP_HCD is not set 1191# CONFIG_USB_OXU210HP_HCD is not set
1181# CONFIG_USB_ISP116X_HCD is not set 1192# CONFIG_USB_ISP116X_HCD is not set
1182# CONFIG_USB_ISP1760_HCD is not set 1193# CONFIG_USB_ISP1760_HCD is not set
1194# CONFIG_USB_ISP1362_HCD is not set
1183CONFIG_USB_OHCI_HCD=y 1195CONFIG_USB_OHCI_HCD=y
1184CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1196CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
1185CONFIG_USB_OHCI_HCD_PPC_OF_LE=y 1197CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
@@ -1358,6 +1370,7 @@ CONFIG_FS_MBCACHE=y
1358# CONFIG_GFS2_FS is not set 1370# CONFIG_GFS2_FS is not set
1359# CONFIG_OCFS2_FS is not set 1371# CONFIG_OCFS2_FS is not set
1360# CONFIG_BTRFS_FS is not set 1372# CONFIG_BTRFS_FS is not set
1373# CONFIG_NILFS2_FS is not set
1361CONFIG_FILE_LOCKING=y 1374CONFIG_FILE_LOCKING=y
1362CONFIG_FSNOTIFY=y 1375CONFIG_FSNOTIFY=y
1363CONFIG_DNOTIFY=y 1376CONFIG_DNOTIFY=y
@@ -1428,7 +1441,6 @@ CONFIG_SYSV_FS=m
1428CONFIG_UFS_FS=m 1441CONFIG_UFS_FS=m
1429# CONFIG_UFS_FS_WRITE is not set 1442# CONFIG_UFS_FS_WRITE is not set
1430# CONFIG_UFS_DEBUG is not set 1443# CONFIG_UFS_DEBUG is not set
1431# CONFIG_NILFS2_FS is not set
1432CONFIG_NETWORK_FILESYSTEMS=y 1444CONFIG_NETWORK_FILESYSTEMS=y
1433CONFIG_NFS_FS=y 1445CONFIG_NFS_FS=y
1434CONFIG_NFS_V3=y 1446CONFIG_NFS_V3=y
@@ -1546,6 +1558,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1546CONFIG_ENABLE_MUST_CHECK=y 1558CONFIG_ENABLE_MUST_CHECK=y
1547CONFIG_FRAME_WARN=1024 1559CONFIG_FRAME_WARN=1024
1548# CONFIG_MAGIC_SYSRQ is not set 1560# CONFIG_MAGIC_SYSRQ is not set
1561# CONFIG_STRIP_ASM_SYMS is not set
1549# CONFIG_UNUSED_SYMBOLS is not set 1562# CONFIG_UNUSED_SYMBOLS is not set
1550# CONFIG_DEBUG_FS is not set 1563# CONFIG_DEBUG_FS is not set
1551# CONFIG_HEADERS_CHECK is not set 1564# CONFIG_HEADERS_CHECK is not set
@@ -1563,6 +1576,7 @@ CONFIG_SCHED_DEBUG=y
1563# CONFIG_DEBUG_OBJECTS is not set 1576# CONFIG_DEBUG_OBJECTS is not set
1564# CONFIG_SLUB_DEBUG_ON is not set 1577# CONFIG_SLUB_DEBUG_ON is not set
1565# CONFIG_SLUB_STATS is not set 1578# CONFIG_SLUB_STATS is not set
1579# CONFIG_DEBUG_KMEMLEAK is not set
1566# CONFIG_DEBUG_RT_MUTEXES is not set 1580# CONFIG_DEBUG_RT_MUTEXES is not set
1567# CONFIG_RT_MUTEX_TESTER is not set 1581# CONFIG_RT_MUTEX_TESTER is not set
1568# CONFIG_DEBUG_SPINLOCK is not set 1582# CONFIG_DEBUG_SPINLOCK is not set
@@ -1582,10 +1596,12 @@ CONFIG_DEBUG_INFO=y
1582# CONFIG_DEBUG_LIST is not set 1596# CONFIG_DEBUG_LIST is not set
1583# CONFIG_DEBUG_SG is not set 1597# CONFIG_DEBUG_SG is not set
1584# CONFIG_DEBUG_NOTIFIERS is not set 1598# CONFIG_DEBUG_NOTIFIERS is not set
1599# CONFIG_DEBUG_CREDENTIALS is not set
1585# CONFIG_RCU_TORTURE_TEST is not set 1600# CONFIG_RCU_TORTURE_TEST is not set
1586# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1601# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1587# CONFIG_BACKTRACE_SELF_TEST is not set 1602# CONFIG_BACKTRACE_SELF_TEST is not set
1588# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1603# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1604# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1589# CONFIG_FAULT_INJECTION is not set 1605# CONFIG_FAULT_INJECTION is not set
1590# CONFIG_LATENCYTOP is not set 1606# CONFIG_LATENCYTOP is not set
1591CONFIG_SYSCTL_SYSCALL_CHECK=y 1607CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1608,10 +1624,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1608# CONFIG_KMEMTRACE is not set 1624# CONFIG_KMEMTRACE is not set
1609# CONFIG_WORKQUEUE_TRACER is not set 1625# CONFIG_WORKQUEUE_TRACER is not set
1610# CONFIG_BLK_DEV_IO_TRACE is not set 1626# CONFIG_BLK_DEV_IO_TRACE is not set
1627# CONFIG_DMA_API_DEBUG is not set
1611# CONFIG_SAMPLES is not set 1628# CONFIG_SAMPLES is not set
1612CONFIG_HAVE_ARCH_KGDB=y 1629CONFIG_HAVE_ARCH_KGDB=y
1613# CONFIG_KGDB is not set 1630# CONFIG_KGDB is not set
1614# CONFIG_KMEMCHECK is not set
1615# CONFIG_PPC_DISABLE_WERROR is not set 1631# CONFIG_PPC_DISABLE_WERROR is not set
1616CONFIG_PPC_WERROR=y 1632CONFIG_PPC_WERROR=y
1617CONFIG_PRINT_STACK_DEPTH=64 1633CONFIG_PRINT_STACK_DEPTH=64
@@ -1638,7 +1654,6 @@ CONFIG_CRYPTO=y
1638# 1654#
1639# Crypto core or helper 1655# Crypto core or helper
1640# 1656#
1641# CONFIG_CRYPTO_FIPS is not set
1642CONFIG_CRYPTO_ALGAPI=y 1657CONFIG_CRYPTO_ALGAPI=y
1643CONFIG_CRYPTO_ALGAPI2=y 1658CONFIG_CRYPTO_ALGAPI2=y
1644CONFIG_CRYPTO_AEAD2=y 1659CONFIG_CRYPTO_AEAD2=y
@@ -1680,11 +1695,13 @@ CONFIG_CRYPTO_PCBC=m
1680# 1695#
1681CONFIG_CRYPTO_HMAC=y 1696CONFIG_CRYPTO_HMAC=y
1682# CONFIG_CRYPTO_XCBC is not set 1697# CONFIG_CRYPTO_XCBC is not set
1698# CONFIG_CRYPTO_VMAC is not set
1683 1699
1684# 1700#
1685# Digest 1701# Digest
1686# 1702#
1687CONFIG_CRYPTO_CRC32C=m 1703CONFIG_CRYPTO_CRC32C=m
1704# CONFIG_CRYPTO_GHASH is not set
1688# CONFIG_CRYPTO_MD4 is not set 1705# CONFIG_CRYPTO_MD4 is not set
1689CONFIG_CRYPTO_MD5=y 1706CONFIG_CRYPTO_MD5=y
1690# CONFIG_CRYPTO_MICHAEL_MIC is not set 1707# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/86xx/sbc8641d_defconfig b/arch/powerpc/configs/86xx/sbc8641d_defconfig
index f5ca2e0cd402..89991f157ae8 100644
--- a/arch/powerpc/configs/86xx/sbc8641d_defconfig
+++ b/arch/powerpc/configs/86xx/sbc8641d_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:26 2009 4# Thu Nov 5 08:20:45 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 36CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
39# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 40CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -87,11 +88,12 @@ CONFIG_BSD_PROCESS_ACCT_V3=y
87# 88#
88# RCU Subsystem 89# RCU Subsystem
89# 90#
90CONFIG_CLASSIC_RCU=y 91CONFIG_TREE_RCU=y
91# CONFIG_TREE_RCU is not set 92# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_PREEMPT_RCU is not set 93# CONFIG_RCU_TRACE is not set
94CONFIG_RCU_FANOUT=32
95# CONFIG_RCU_FANOUT_EXACT is not set
93# CONFIG_TREE_RCU_TRACE is not set 96# CONFIG_TREE_RCU_TRACE is not set
94# CONFIG_PREEMPT_RCU_TRACE is not set
95CONFIG_IKCONFIG=y 97CONFIG_IKCONFIG=y
96CONFIG_IKCONFIG_PROC=y 98CONFIG_IKCONFIG_PROC=y
97CONFIG_LOG_BUF_SHIFT=14 99CONFIG_LOG_BUF_SHIFT=14
@@ -130,21 +132,20 @@ CONFIG_TIMERFD=y
130CONFIG_EVENTFD=y 132CONFIG_EVENTFD=y
131CONFIG_SHMEM=y 133CONFIG_SHMEM=y
132CONFIG_AIO=y 134CONFIG_AIO=y
133CONFIG_HAVE_PERF_COUNTERS=y 135CONFIG_HAVE_PERF_EVENTS=y
134 136
135# 137#
136# Performance Counters 138# Kernel Performance Events And Counters
137# 139#
140# CONFIG_PERF_EVENTS is not set
138# CONFIG_PERF_COUNTERS is not set 141# CONFIG_PERF_COUNTERS is not set
139CONFIG_VM_EVENT_COUNTERS=y 142CONFIG_VM_EVENT_COUNTERS=y
140CONFIG_PCI_QUIRKS=y 143CONFIG_PCI_QUIRKS=y
141# CONFIG_STRIP_ASM_SYMS is not set
142CONFIG_COMPAT_BRK=y 144CONFIG_COMPAT_BRK=y
143CONFIG_SLAB=y 145CONFIG_SLAB=y
144# CONFIG_SLUB is not set 146# CONFIG_SLUB is not set
145# CONFIG_SLOB is not set 147# CONFIG_SLOB is not set
146# CONFIG_PROFILING is not set 148# CONFIG_PROFILING is not set
147# CONFIG_MARKERS is not set
148CONFIG_HAVE_OPROFILE=y 149CONFIG_HAVE_OPROFILE=y
149# CONFIG_KPROBES is not set 150# CONFIG_KPROBES is not set
150CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 151CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -152,13 +153,15 @@ CONFIG_HAVE_IOREMAP_PROT=y
152CONFIG_HAVE_KPROBES=y 153CONFIG_HAVE_KPROBES=y
153CONFIG_HAVE_KRETPROBES=y 154CONFIG_HAVE_KRETPROBES=y
154CONFIG_HAVE_ARCH_TRACEHOOK=y 155CONFIG_HAVE_ARCH_TRACEHOOK=y
156CONFIG_HAVE_DMA_ATTRS=y
155CONFIG_USE_GENERIC_SMP_HELPERS=y 157CONFIG_USE_GENERIC_SMP_HELPERS=y
158CONFIG_HAVE_DMA_API_DEBUG=y
156 159
157# 160#
158# GCOV-based kernel profiling 161# GCOV-based kernel profiling
159# 162#
160# CONFIG_GCOV_KERNEL is not set 163# CONFIG_GCOV_KERNEL is not set
161# CONFIG_SLOW_WORK is not set 164CONFIG_SLOW_WORK=y
162# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 165# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
163CONFIG_SLABINFO=y 166CONFIG_SLABINFO=y
164CONFIG_RT_MUTEXES=y 167CONFIG_RT_MUTEXES=y
@@ -257,6 +260,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
257# CONFIG_KEXEC is not set 260# CONFIG_KEXEC is not set
258# CONFIG_CRASH_DUMP is not set 261# CONFIG_CRASH_DUMP is not set
259CONFIG_IRQ_ALL_CPUS=y 262CONFIG_IRQ_ALL_CPUS=y
263CONFIG_MAX_ACTIVE_REGIONS=32
260CONFIG_ARCH_FLATMEM_ENABLE=y 264CONFIG_ARCH_FLATMEM_ENABLE=y
261CONFIG_ARCH_POPULATES_NODE_MAP=y 265CONFIG_ARCH_POPULATES_NODE_MAP=y
262CONFIG_SELECT_MEMORY_MODEL=y 266CONFIG_SELECT_MEMORY_MODEL=y
@@ -274,6 +278,7 @@ CONFIG_BOUNCE=y
274CONFIG_VIRT_TO_BUS=y 278CONFIG_VIRT_TO_BUS=y
275CONFIG_HAVE_MLOCK=y 279CONFIG_HAVE_MLOCK=y
276CONFIG_HAVE_MLOCKED_PAGE_BIT=y 280CONFIG_HAVE_MLOCKED_PAGE_BIT=y
281# CONFIG_KSM is not set
277CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 282CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
278CONFIG_PPC_4K_PAGES=y 283CONFIG_PPC_4K_PAGES=y
279# CONFIG_PPC_16K_PAGES is not set 284# CONFIG_PPC_16K_PAGES is not set
@@ -502,6 +507,7 @@ CONFIG_IP_SCTP=m
502# CONFIG_SCTP_HMAC_NONE is not set 507# CONFIG_SCTP_HMAC_NONE is not set
503# CONFIG_SCTP_HMAC_SHA1 is not set 508# CONFIG_SCTP_HMAC_SHA1 is not set
504CONFIG_SCTP_HMAC_MD5=y 509CONFIG_SCTP_HMAC_MD5=y
510# CONFIG_RDS is not set
505CONFIG_TIPC=m 511CONFIG_TIPC=m
506# CONFIG_TIPC_ADVANCED is not set 512# CONFIG_TIPC_ADVANCED is not set
507# CONFIG_TIPC_DEBUG is not set 513# CONFIG_TIPC_DEBUG is not set
@@ -581,6 +587,7 @@ CONFIG_NET_PKTGEN=m
581CONFIG_FIB_RULES=y 587CONFIG_FIB_RULES=y
582CONFIG_WIRELESS=y 588CONFIG_WIRELESS=y
583# CONFIG_CFG80211 is not set 589# CONFIG_CFG80211 is not set
590CONFIG_CFG80211_DEFAULT_PS_VALUE=0
584CONFIG_WIRELESS_OLD_REGULATORY=y 591CONFIG_WIRELESS_OLD_REGULATORY=y
585# CONFIG_WIRELESS_EXT is not set 592# CONFIG_WIRELESS_EXT is not set
586# CONFIG_LIB80211 is not set 593# CONFIG_LIB80211 is not set
@@ -588,7 +595,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
588# 595#
589# CFG80211 needs to be enabled for MAC80211 596# CFG80211 needs to be enabled for MAC80211
590# 597#
591CONFIG_MAC80211_DEFAULT_PS_VALUE=0
592# CONFIG_WIMAX is not set 598# CONFIG_WIMAX is not set
593# CONFIG_RFKILL is not set 599# CONFIG_RFKILL is not set
594# CONFIG_NET_9P is not set 600# CONFIG_NET_9P is not set
@@ -601,6 +607,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
601# Generic Driver Options 607# Generic Driver Options
602# 608#
603CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 609CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
610# CONFIG_DEVTMPFS is not set
604CONFIG_STANDALONE=y 611CONFIG_STANDALONE=y
605CONFIG_PREVENT_FIRMWARE_BUILD=y 612CONFIG_PREVENT_FIRMWARE_BUILD=y
606# CONFIG_FW_LOADER is not set 613# CONFIG_FW_LOADER is not set
@@ -610,9 +617,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
610# CONFIG_CONNECTOR is not set 617# CONFIG_CONNECTOR is not set
611CONFIG_MTD=y 618CONFIG_MTD=y
612# CONFIG_MTD_DEBUG is not set 619# CONFIG_MTD_DEBUG is not set
620# CONFIG_MTD_TESTS is not set
613CONFIG_MTD_CONCAT=y 621CONFIG_MTD_CONCAT=y
614CONFIG_MTD_PARTITIONS=y 622CONFIG_MTD_PARTITIONS=y
615# CONFIG_MTD_TESTS is not set
616# CONFIG_MTD_REDBOOT_PARTS is not set 623# CONFIG_MTD_REDBOOT_PARTS is not set
617# CONFIG_MTD_CMDLINE_PARTS is not set 624# CONFIG_MTD_CMDLINE_PARTS is not set
618# CONFIG_MTD_OF_PARTS is not set 625# CONFIG_MTD_OF_PARTS is not set
@@ -833,7 +840,9 @@ CONFIG_MII=y
833# CONFIG_NET_PCI is not set 840# CONFIG_NET_PCI is not set
834# CONFIG_B44 is not set 841# CONFIG_B44 is not set
835# CONFIG_KS8842 is not set 842# CONFIG_KS8842 is not set
843# CONFIG_KS8851_MLL is not set
836# CONFIG_ATL2 is not set 844# CONFIG_ATL2 is not set
845# CONFIG_XILINX_EMACLITE is not set
837CONFIG_NETDEV_1000=y 846CONFIG_NETDEV_1000=y
838# CONFIG_ACENIC is not set 847# CONFIG_ACENIC is not set
839# CONFIG_DL2K is not set 848# CONFIG_DL2K is not set
@@ -863,10 +872,7 @@ CONFIG_GIANFAR=y
863# CONFIG_JME is not set 872# CONFIG_JME is not set
864# CONFIG_NETDEV_10000 is not set 873# CONFIG_NETDEV_10000 is not set
865# CONFIG_TR is not set 874# CONFIG_TR is not set
866 875CONFIG_WLAN=y
867#
868# Wireless LAN
869#
870# CONFIG_WLAN_PRE80211 is not set 876# CONFIG_WLAN_PRE80211 is not set
871# CONFIG_WLAN_80211 is not set 877# CONFIG_WLAN_80211 is not set
872 878
@@ -996,6 +1002,7 @@ CONFIG_HW_RANDOM=m
996CONFIG_DEVPORT=y 1002CONFIG_DEVPORT=y
997CONFIG_I2C=y 1003CONFIG_I2C=y
998CONFIG_I2C_BOARDINFO=y 1004CONFIG_I2C_BOARDINFO=y
1005CONFIG_I2C_COMPAT=y
999CONFIG_I2C_CHARDEV=y 1006CONFIG_I2C_CHARDEV=y
1000CONFIG_I2C_HELPER_AUTO=y 1007CONFIG_I2C_HELPER_AUTO=y
1001 1008
@@ -1049,9 +1056,6 @@ CONFIG_I2C_MPC=y
1049# Miscellaneous I2C Chip support 1056# Miscellaneous I2C Chip support
1050# 1057#
1051# CONFIG_DS1682 is not set 1058# CONFIG_DS1682 is not set
1052# CONFIG_SENSORS_PCF8574 is not set
1053# CONFIG_PCF8575 is not set
1054# CONFIG_SENSORS_PCA9539 is not set
1055# CONFIG_SENSORS_TSL2550 is not set 1059# CONFIG_SENSORS_TSL2550 is not set
1056# CONFIG_I2C_DEBUG_CORE is not set 1060# CONFIG_I2C_DEBUG_CORE is not set
1057# CONFIG_I2C_DEBUG_ALGO is not set 1061# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1069,6 +1073,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
1069# CONFIG_POWER_SUPPLY is not set 1073# CONFIG_POWER_SUPPLY is not set
1070CONFIG_HWMON=y 1074CONFIG_HWMON=y
1071# CONFIG_HWMON_VID is not set 1075# CONFIG_HWMON_VID is not set
1076# CONFIG_HWMON_DEBUG_CHIP is not set
1077
1078#
1079# Native drivers
1080#
1072# CONFIG_SENSORS_AD7414 is not set 1081# CONFIG_SENSORS_AD7414 is not set
1073# CONFIG_SENSORS_AD7418 is not set 1082# CONFIG_SENSORS_AD7418 is not set
1074# CONFIG_SENSORS_ADM1021 is not set 1083# CONFIG_SENSORS_ADM1021 is not set
@@ -1118,6 +1127,7 @@ CONFIG_HWMON=y
1118# CONFIG_SENSORS_ADS7828 is not set 1127# CONFIG_SENSORS_ADS7828 is not set
1119# CONFIG_SENSORS_THMC50 is not set 1128# CONFIG_SENSORS_THMC50 is not set
1120# CONFIG_SENSORS_TMP401 is not set 1129# CONFIG_SENSORS_TMP401 is not set
1130# CONFIG_SENSORS_TMP421 is not set
1121# CONFIG_SENSORS_VIA686A is not set 1131# CONFIG_SENSORS_VIA686A is not set
1122# CONFIG_SENSORS_VT1211 is not set 1132# CONFIG_SENSORS_VT1211 is not set
1123# CONFIG_SENSORS_VT8231 is not set 1133# CONFIG_SENSORS_VT8231 is not set
@@ -1129,9 +1139,7 @@ CONFIG_HWMON=y
1129# CONFIG_SENSORS_W83L786NG is not set 1139# CONFIG_SENSORS_W83L786NG is not set
1130# CONFIG_SENSORS_W83627HF is not set 1140# CONFIG_SENSORS_W83627HF is not set
1131# CONFIG_SENSORS_W83627EHF is not set 1141# CONFIG_SENSORS_W83627EHF is not set
1132# CONFIG_HWMON_DEBUG_CHIP is not set
1133# CONFIG_THERMAL is not set 1142# CONFIG_THERMAL is not set
1134# CONFIG_THERMAL_HWMON is not set
1135CONFIG_WATCHDOG=y 1143CONFIG_WATCHDOG=y
1136# CONFIG_WATCHDOG_NOWAYOUT is not set 1144# CONFIG_WATCHDOG_NOWAYOUT is not set
1137 1145
@@ -1164,6 +1172,7 @@ CONFIG_SSB_POSSIBLE=y
1164# CONFIG_MFD_TMIO is not set 1172# CONFIG_MFD_TMIO is not set
1165# CONFIG_PMIC_DA903X is not set 1173# CONFIG_PMIC_DA903X is not set
1166# CONFIG_MFD_WM8400 is not set 1174# CONFIG_MFD_WM8400 is not set
1175# CONFIG_MFD_WM831X is not set
1167# CONFIG_MFD_WM8350_I2C is not set 1176# CONFIG_MFD_WM8350_I2C is not set
1168# CONFIG_MFD_PCF50633 is not set 1177# CONFIG_MFD_PCF50633 is not set
1169# CONFIG_AB3100_CORE is not set 1178# CONFIG_AB3100_CORE is not set
@@ -1174,6 +1183,7 @@ CONFIG_SSB_POSSIBLE=y
1174# Graphics support 1183# Graphics support
1175# 1184#
1176# CONFIG_AGP is not set 1185# CONFIG_AGP is not set
1186CONFIG_VGA_ARB=y
1177# CONFIG_DRM is not set 1187# CONFIG_DRM is not set
1178# CONFIG_VGASTATE is not set 1188# CONFIG_VGASTATE is not set
1179CONFIG_VIDEO_OUTPUT_CONTROL=m 1189CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -1194,7 +1204,6 @@ CONFIG_DUMMY_CONSOLE=y
1194# CONFIG_SOUND is not set 1204# CONFIG_SOUND is not set
1195CONFIG_HID_SUPPORT=y 1205CONFIG_HID_SUPPORT=y
1196CONFIG_HID=y 1206CONFIG_HID=y
1197# CONFIG_HID_DEBUG is not set
1198# CONFIG_HIDRAW is not set 1207# CONFIG_HIDRAW is not set
1199# CONFIG_HID_PID is not set 1208# CONFIG_HID_PID is not set
1200 1209
@@ -1274,6 +1283,7 @@ CONFIG_OCFS2_DEBUG_MASKLOG=y
1274# CONFIG_OCFS2_DEBUG_FS is not set 1283# CONFIG_OCFS2_DEBUG_FS is not set
1275# CONFIG_OCFS2_FS_POSIX_ACL is not set 1284# CONFIG_OCFS2_FS_POSIX_ACL is not set
1276# CONFIG_BTRFS_FS is not set 1285# CONFIG_BTRFS_FS is not set
1286# CONFIG_NILFS2_FS is not set
1277CONFIG_FILE_LOCKING=y 1287CONFIG_FILE_LOCKING=y
1278CONFIG_FSNOTIFY=y 1288CONFIG_FSNOTIFY=y
1279CONFIG_DNOTIFY=y 1289CONFIG_DNOTIFY=y
@@ -1343,7 +1353,6 @@ CONFIG_ROMFS_BACKED_BY_BLOCK=y
1343CONFIG_ROMFS_ON_BLOCK=y 1353CONFIG_ROMFS_ON_BLOCK=y
1344# CONFIG_SYSV_FS is not set 1354# CONFIG_SYSV_FS is not set
1345# CONFIG_UFS_FS is not set 1355# CONFIG_UFS_FS is not set
1346# CONFIG_NILFS2_FS is not set
1347CONFIG_NETWORK_FILESYSTEMS=y 1356CONFIG_NETWORK_FILESYSTEMS=y
1348CONFIG_NFS_FS=y 1357CONFIG_NFS_FS=y
1349CONFIG_NFS_V3=y 1358CONFIG_NFS_V3=y
@@ -1451,6 +1460,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1451CONFIG_ENABLE_MUST_CHECK=y 1460CONFIG_ENABLE_MUST_CHECK=y
1452CONFIG_FRAME_WARN=1024 1461CONFIG_FRAME_WARN=1024
1453CONFIG_MAGIC_SYSRQ=y 1462CONFIG_MAGIC_SYSRQ=y
1463# CONFIG_STRIP_ASM_SYMS is not set
1454# CONFIG_UNUSED_SYMBOLS is not set 1464# CONFIG_UNUSED_SYMBOLS is not set
1455CONFIG_DEBUG_FS=y 1465CONFIG_DEBUG_FS=y
1456# CONFIG_HEADERS_CHECK is not set 1466# CONFIG_HEADERS_CHECK is not set
@@ -1467,6 +1477,7 @@ CONFIG_SCHED_DEBUG=y
1467# CONFIG_TIMER_STATS is not set 1477# CONFIG_TIMER_STATS is not set
1468# CONFIG_DEBUG_OBJECTS is not set 1478# CONFIG_DEBUG_OBJECTS is not set
1469# CONFIG_DEBUG_SLAB is not set 1479# CONFIG_DEBUG_SLAB is not set
1480# CONFIG_DEBUG_KMEMLEAK is not set
1470CONFIG_DEBUG_PREEMPT=y 1481CONFIG_DEBUG_PREEMPT=y
1471# CONFIG_DEBUG_RT_MUTEXES is not set 1482# CONFIG_DEBUG_RT_MUTEXES is not set
1472# CONFIG_RT_MUTEX_TESTER is not set 1483# CONFIG_RT_MUTEX_TESTER is not set
@@ -1486,10 +1497,12 @@ CONFIG_DEBUG_INFO=y
1486# CONFIG_DEBUG_LIST is not set 1497# CONFIG_DEBUG_LIST is not set
1487# CONFIG_DEBUG_SG is not set 1498# CONFIG_DEBUG_SG is not set
1488# CONFIG_DEBUG_NOTIFIERS is not set 1499# CONFIG_DEBUG_NOTIFIERS is not set
1500# CONFIG_DEBUG_CREDENTIALS is not set
1489# CONFIG_RCU_TORTURE_TEST is not set 1501# CONFIG_RCU_TORTURE_TEST is not set
1490# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1502# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1491# CONFIG_BACKTRACE_SELF_TEST is not set 1503# CONFIG_BACKTRACE_SELF_TEST is not set
1492# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1504# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1505# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1493# CONFIG_FAULT_INJECTION is not set 1506# CONFIG_FAULT_INJECTION is not set
1494# CONFIG_LATENCYTOP is not set 1507# CONFIG_LATENCYTOP is not set
1495CONFIG_SYSCTL_SYSCALL_CHECK=y 1508CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1514,10 +1527,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1514# CONFIG_WORKQUEUE_TRACER is not set 1527# CONFIG_WORKQUEUE_TRACER is not set
1515# CONFIG_BLK_DEV_IO_TRACE is not set 1528# CONFIG_BLK_DEV_IO_TRACE is not set
1516# CONFIG_DYNAMIC_DEBUG is not set 1529# CONFIG_DYNAMIC_DEBUG is not set
1530# CONFIG_DMA_API_DEBUG is not set
1517# CONFIG_SAMPLES is not set 1531# CONFIG_SAMPLES is not set
1518CONFIG_HAVE_ARCH_KGDB=y 1532CONFIG_HAVE_ARCH_KGDB=y
1519# CONFIG_KGDB is not set 1533# CONFIG_KGDB is not set
1520# CONFIG_KMEMCHECK is not set
1521# CONFIG_PPC_DISABLE_WERROR is not set 1534# CONFIG_PPC_DISABLE_WERROR is not set
1522CONFIG_PPC_WERROR=y 1535CONFIG_PPC_WERROR=y
1523CONFIG_PRINT_STACK_DEPTH=64 1536CONFIG_PRINT_STACK_DEPTH=64
@@ -1550,7 +1563,6 @@ CONFIG_CRYPTO=y
1550# 1563#
1551# Crypto core or helper 1564# Crypto core or helper
1552# 1565#
1553# CONFIG_CRYPTO_FIPS is not set
1554CONFIG_CRYPTO_ALGAPI=y 1566CONFIG_CRYPTO_ALGAPI=y
1555CONFIG_CRYPTO_ALGAPI2=y 1567CONFIG_CRYPTO_ALGAPI2=y
1556CONFIG_CRYPTO_AEAD=m 1568CONFIG_CRYPTO_AEAD=m
@@ -1593,11 +1605,13 @@ CONFIG_CRYPTO_PCBC=m
1593# 1605#
1594CONFIG_CRYPTO_HMAC=y 1606CONFIG_CRYPTO_HMAC=y
1595# CONFIG_CRYPTO_XCBC is not set 1607# CONFIG_CRYPTO_XCBC is not set
1608# CONFIG_CRYPTO_VMAC is not set
1596 1609
1597# 1610#
1598# Digest 1611# Digest
1599# 1612#
1600CONFIG_CRYPTO_CRC32C=m 1613CONFIG_CRYPTO_CRC32C=m
1614# CONFIG_CRYPTO_GHASH is not set
1601CONFIG_CRYPTO_MD4=m 1615CONFIG_CRYPTO_MD4=m
1602CONFIG_CRYPTO_MD5=y 1616CONFIG_CRYPTO_MD5=y
1603CONFIG_CRYPTO_MICHAEL_MIC=m 1617CONFIG_CRYPTO_MICHAEL_MIC=m
diff --git a/arch/powerpc/configs/adder875_defconfig b/arch/powerpc/configs/adder875_defconfig
index aece6bb5f733..052cf134e018 100644
--- a/arch/powerpc/configs/adder875_defconfig
+++ b/arch/powerpc/configs/adder875_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:31:47 2009 4# Thu Nov 5 08:20:04 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,6 +16,7 @@ CONFIG_PPC_8xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_8xx=y 17CONFIG_8xx=y
18CONFIG_PPC_MMU_NOHASH=y 18CONFIG_PPC_MMU_NOHASH=y
19CONFIG_PPC_MMU_NOHASH_32=y
19# CONFIG_PPC_MM_SLICES is not set 20# CONFIG_PPC_MM_SLICES is not set
20CONFIG_NOT_COHERENT_CACHE=y 21CONFIG_NOT_COHERENT_CACHE=y
21CONFIG_PPC32=y 22CONFIG_PPC32=y
@@ -29,6 +30,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
29CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
30CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 31CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
31# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
32CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
33CONFIG_STACKTRACE_SUPPORT=y 35CONFIG_STACKTRACE_SUPPORT=y
34CONFIG_HAVE_LATENCYTOP_SUPPORT=y 36CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -78,11 +80,12 @@ CONFIG_SYSVIPC_SYSCTL=y
78# 80#
79# RCU Subsystem 81# RCU Subsystem
80# 82#
81CONFIG_CLASSIC_RCU=y 83CONFIG_TREE_RCU=y
82# CONFIG_TREE_RCU is not set 84# CONFIG_TREE_PREEMPT_RCU is not set
83# CONFIG_PREEMPT_RCU is not set 85# CONFIG_RCU_TRACE is not set
86CONFIG_RCU_FANOUT=32
87# CONFIG_RCU_FANOUT_EXACT is not set
84# CONFIG_TREE_RCU_TRACE is not set 88# CONFIG_TREE_RCU_TRACE is not set
85# CONFIG_PREEMPT_RCU_TRACE is not set
86# CONFIG_IKCONFIG is not set 89# CONFIG_IKCONFIG is not set
87CONFIG_LOG_BUF_SHIFT=14 90CONFIG_LOG_BUF_SHIFT=14
88CONFIG_GROUP_SCHED=y 91CONFIG_GROUP_SCHED=y
@@ -116,28 +119,29 @@ CONFIG_TIMERFD=y
116CONFIG_EVENTFD=y 119CONFIG_EVENTFD=y
117CONFIG_SHMEM=y 120CONFIG_SHMEM=y
118CONFIG_AIO=y 121CONFIG_AIO=y
119CONFIG_HAVE_PERF_COUNTERS=y 122CONFIG_HAVE_PERF_EVENTS=y
120 123
121# 124#
122# Performance Counters 125# Kernel Performance Events And Counters
123# 126#
127# CONFIG_PERF_EVENTS is not set
124# CONFIG_PERF_COUNTERS is not set 128# CONFIG_PERF_COUNTERS is not set
125# CONFIG_VM_EVENT_COUNTERS is not set 129# CONFIG_VM_EVENT_COUNTERS is not set
126CONFIG_SLUB_DEBUG=y 130CONFIG_SLUB_DEBUG=y
127# CONFIG_STRIP_ASM_SYMS is not set
128CONFIG_COMPAT_BRK=y 131CONFIG_COMPAT_BRK=y
129# CONFIG_SLAB is not set 132# CONFIG_SLAB is not set
130CONFIG_SLUB=y 133CONFIG_SLUB=y
131# CONFIG_SLOB is not set 134# CONFIG_SLOB is not set
132# CONFIG_PROFILING is not set 135# CONFIG_PROFILING is not set
133# CONFIG_MARKERS is not set
134CONFIG_HAVE_OPROFILE=y 136CONFIG_HAVE_OPROFILE=y
135CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 137CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
136CONFIG_HAVE_IOREMAP_PROT=y 138CONFIG_HAVE_IOREMAP_PROT=y
137CONFIG_HAVE_KPROBES=y 139CONFIG_HAVE_KPROBES=y
138CONFIG_HAVE_KRETPROBES=y 140CONFIG_HAVE_KRETPROBES=y
139CONFIG_HAVE_ARCH_TRACEHOOK=y 141CONFIG_HAVE_ARCH_TRACEHOOK=y
142CONFIG_HAVE_DMA_ATTRS=y
140CONFIG_HAVE_CLK=y 143CONFIG_HAVE_CLK=y
144CONFIG_HAVE_DMA_API_DEBUG=y
141 145
142# 146#
143# GCOV-based kernel profiling 147# GCOV-based kernel profiling
@@ -235,10 +239,10 @@ CONFIG_BINFMT_ELF=y
235# CONFIG_8XX_MINIMAL_FPEMU is not set 239# CONFIG_8XX_MINIMAL_FPEMU is not set
236# CONFIG_IOMMU_HELPER is not set 240# CONFIG_IOMMU_HELPER is not set
237# CONFIG_SWIOTLB is not set 241# CONFIG_SWIOTLB is not set
238CONFIG_PPC_NEED_DMA_SYNC_OPS=y
239CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 242CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
240CONFIG_ARCH_HAS_WALK_MEMORY=y 243CONFIG_ARCH_HAS_WALK_MEMORY=y
241CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 244CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
245CONFIG_MAX_ACTIVE_REGIONS=32
242CONFIG_ARCH_FLATMEM_ENABLE=y 246CONFIG_ARCH_FLATMEM_ENABLE=y
243CONFIG_ARCH_POPULATES_NODE_MAP=y 247CONFIG_ARCH_POPULATES_NODE_MAP=y
244CONFIG_SELECT_MEMORY_MODEL=y 248CONFIG_SELECT_MEMORY_MODEL=y
@@ -256,6 +260,7 @@ CONFIG_BOUNCE=y
256CONFIG_VIRT_TO_BUS=y 260CONFIG_VIRT_TO_BUS=y
257CONFIG_HAVE_MLOCK=y 261CONFIG_HAVE_MLOCK=y
258CONFIG_HAVE_MLOCKED_PAGE_BIT=y 262CONFIG_HAVE_MLOCKED_PAGE_BIT=y
263# CONFIG_KSM is not set
259CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 264CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
260CONFIG_PPC_4K_PAGES=y 265CONFIG_PPC_4K_PAGES=y
261# CONFIG_PPC_16K_PAGES is not set 266# CONFIG_PPC_16K_PAGES is not set
@@ -338,6 +343,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
338# CONFIG_NETFILTER is not set 343# CONFIG_NETFILTER is not set
339# CONFIG_IP_DCCP is not set 344# CONFIG_IP_DCCP is not set
340# CONFIG_IP_SCTP is not set 345# CONFIG_IP_SCTP is not set
346# CONFIG_RDS is not set
341# CONFIG_TIPC is not set 347# CONFIG_TIPC is not set
342# CONFIG_ATM is not set 348# CONFIG_ATM is not set
343# CONFIG_BRIDGE is not set 349# CONFIG_BRIDGE is not set
@@ -367,6 +373,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
367# CONFIG_AF_RXRPC is not set 373# CONFIG_AF_RXRPC is not set
368CONFIG_WIRELESS=y 374CONFIG_WIRELESS=y
369# CONFIG_CFG80211 is not set 375# CONFIG_CFG80211 is not set
376CONFIG_CFG80211_DEFAULT_PS_VALUE=0
370CONFIG_WIRELESS_OLD_REGULATORY=y 377CONFIG_WIRELESS_OLD_REGULATORY=y
371# CONFIG_WIRELESS_EXT is not set 378# CONFIG_WIRELESS_EXT is not set
372# CONFIG_LIB80211 is not set 379# CONFIG_LIB80211 is not set
@@ -374,7 +381,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
374# 381#
375# CFG80211 needs to be enabled for MAC80211 382# CFG80211 needs to be enabled for MAC80211
376# 383#
377CONFIG_MAC80211_DEFAULT_PS_VALUE=0
378# CONFIG_WIMAX is not set 384# CONFIG_WIMAX is not set
379# CONFIG_RFKILL is not set 385# CONFIG_RFKILL is not set
380# CONFIG_NET_9P is not set 386# CONFIG_NET_9P is not set
@@ -387,6 +393,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
387# Generic Driver Options 393# Generic Driver Options
388# 394#
389CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 395CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
396# CONFIG_DEVTMPFS is not set
390CONFIG_STANDALONE=y 397CONFIG_STANDALONE=y
391CONFIG_PREVENT_FIRMWARE_BUILD=y 398CONFIG_PREVENT_FIRMWARE_BUILD=y
392# CONFIG_FW_LOADER is not set 399# CONFIG_FW_LOADER is not set
@@ -530,16 +537,15 @@ CONFIG_MII=y
530# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 537# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
531# CONFIG_B44 is not set 538# CONFIG_B44 is not set
532# CONFIG_KS8842 is not set 539# CONFIG_KS8842 is not set
540# CONFIG_KS8851_MLL is not set
541# CONFIG_XILINX_EMACLITE is not set
533CONFIG_FS_ENET=y 542CONFIG_FS_ENET=y
534# CONFIG_FS_ENET_HAS_SCC is not set 543# CONFIG_FS_ENET_HAS_SCC is not set
535CONFIG_FS_ENET_HAS_FEC=y 544CONFIG_FS_ENET_HAS_FEC=y
536CONFIG_FS_ENET_MDIO_FEC=y 545CONFIG_FS_ENET_MDIO_FEC=y
537# CONFIG_NETDEV_1000 is not set 546# CONFIG_NETDEV_1000 is not set
538# CONFIG_NETDEV_10000 is not set 547# CONFIG_NETDEV_10000 is not set
539 548CONFIG_WLAN=y
540#
541# Wireless LAN
542#
543# CONFIG_WLAN_PRE80211 is not set 549# CONFIG_WLAN_PRE80211 is not set
544# CONFIG_WLAN_80211 is not set 550# CONFIG_WLAN_80211 is not set
545 551
@@ -580,6 +586,7 @@ CONFIG_INPUT_KEYBOARD=y
580CONFIG_KEYBOARD_ATKBD=y 586CONFIG_KEYBOARD_ATKBD=y
581# CONFIG_KEYBOARD_LKKBD is not set 587# CONFIG_KEYBOARD_LKKBD is not set
582# CONFIG_KEYBOARD_NEWTON is not set 588# CONFIG_KEYBOARD_NEWTON is not set
589# CONFIG_KEYBOARD_OPENCORES is not set
583# CONFIG_KEYBOARD_STOWAWAY is not set 590# CONFIG_KEYBOARD_STOWAWAY is not set
584# CONFIG_KEYBOARD_SUNKBD is not set 591# CONFIG_KEYBOARD_SUNKBD is not set
585# CONFIG_KEYBOARD_XTKBD is not set 592# CONFIG_KEYBOARD_XTKBD is not set
@@ -590,6 +597,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
590CONFIG_MOUSE_PS2_SYNAPTICS=y 597CONFIG_MOUSE_PS2_SYNAPTICS=y
591CONFIG_MOUSE_PS2_TRACKPOINT=y 598CONFIG_MOUSE_PS2_TRACKPOINT=y
592# CONFIG_MOUSE_PS2_ELANTECH is not set 599# CONFIG_MOUSE_PS2_ELANTECH is not set
600# CONFIG_MOUSE_PS2_SENTELIC is not set
593# CONFIG_MOUSE_PS2_TOUCHKIT is not set 601# CONFIG_MOUSE_PS2_TOUCHKIT is not set
594# CONFIG_MOUSE_SERIAL is not set 602# CONFIG_MOUSE_SERIAL is not set
595# CONFIG_MOUSE_VSXXXAA is not set 603# CONFIG_MOUSE_VSXXXAA is not set
@@ -716,6 +724,7 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
716# CONFIG_GFS2_FS is not set 724# CONFIG_GFS2_FS is not set
717# CONFIG_OCFS2_FS is not set 725# CONFIG_OCFS2_FS is not set
718# CONFIG_BTRFS_FS is not set 726# CONFIG_BTRFS_FS is not set
727# CONFIG_NILFS2_FS is not set
719CONFIG_FILE_LOCKING=y 728CONFIG_FILE_LOCKING=y
720CONFIG_FSNOTIFY=y 729CONFIG_FSNOTIFY=y
721# CONFIG_DNOTIFY is not set 730# CONFIG_DNOTIFY is not set
@@ -775,7 +784,6 @@ CONFIG_CRAMFS=y
775# CONFIG_ROMFS_FS is not set 784# CONFIG_ROMFS_FS is not set
776# CONFIG_SYSV_FS is not set 785# CONFIG_SYSV_FS is not set
777# CONFIG_UFS_FS is not set 786# CONFIG_UFS_FS is not set
778# CONFIG_NILFS2_FS is not set
779CONFIG_NETWORK_FILESYSTEMS=y 787CONFIG_NETWORK_FILESYSTEMS=y
780CONFIG_NFS_FS=y 788CONFIG_NFS_FS=y
781CONFIG_NFS_V3=y 789CONFIG_NFS_V3=y
@@ -847,6 +855,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
847CONFIG_ENABLE_MUST_CHECK=y 855CONFIG_ENABLE_MUST_CHECK=y
848CONFIG_FRAME_WARN=1024 856CONFIG_FRAME_WARN=1024
849CONFIG_MAGIC_SYSRQ=y 857CONFIG_MAGIC_SYSRQ=y
858# CONFIG_STRIP_ASM_SYMS is not set
850# CONFIG_UNUSED_SYMBOLS is not set 859# CONFIG_UNUSED_SYMBOLS is not set
851CONFIG_DEBUG_FS=y 860CONFIG_DEBUG_FS=y
852# CONFIG_HEADERS_CHECK is not set 861# CONFIG_HEADERS_CHECK is not set
@@ -864,6 +873,7 @@ CONFIG_SCHED_DEBUG=y
864# CONFIG_DEBUG_OBJECTS is not set 873# CONFIG_DEBUG_OBJECTS is not set
865# CONFIG_SLUB_DEBUG_ON is not set 874# CONFIG_SLUB_DEBUG_ON is not set
866# CONFIG_SLUB_STATS is not set 875# CONFIG_SLUB_STATS is not set
876# CONFIG_DEBUG_KMEMLEAK is not set
867# CONFIG_DEBUG_SPINLOCK is not set 877# CONFIG_DEBUG_SPINLOCK is not set
868# CONFIG_DEBUG_MUTEXES is not set 878# CONFIG_DEBUG_MUTEXES is not set
869# CONFIG_DEBUG_LOCK_ALLOC is not set 879# CONFIG_DEBUG_LOCK_ALLOC is not set
@@ -880,10 +890,12 @@ CONFIG_DEBUG_INFO=y
880# CONFIG_DEBUG_LIST is not set 890# CONFIG_DEBUG_LIST is not set
881# CONFIG_DEBUG_SG is not set 891# CONFIG_DEBUG_SG is not set
882# CONFIG_DEBUG_NOTIFIERS is not set 892# CONFIG_DEBUG_NOTIFIERS is not set
893# CONFIG_DEBUG_CREDENTIALS is not set
883# CONFIG_RCU_TORTURE_TEST is not set 894# CONFIG_RCU_TORTURE_TEST is not set
884# CONFIG_RCU_CPU_STALL_DETECTOR is not set 895# CONFIG_RCU_CPU_STALL_DETECTOR is not set
885# CONFIG_BACKTRACE_SELF_TEST is not set 896# CONFIG_BACKTRACE_SELF_TEST is not set
886# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 897# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
898# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
887# CONFIG_FAULT_INJECTION is not set 899# CONFIG_FAULT_INJECTION is not set
888# CONFIG_LATENCYTOP is not set 900# CONFIG_LATENCYTOP is not set
889# CONFIG_DEBUG_PAGEALLOC is not set 901# CONFIG_DEBUG_PAGEALLOC is not set
@@ -906,10 +918,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
906# CONFIG_WORKQUEUE_TRACER is not set 918# CONFIG_WORKQUEUE_TRACER is not set
907# CONFIG_BLK_DEV_IO_TRACE is not set 919# CONFIG_BLK_DEV_IO_TRACE is not set
908# CONFIG_DYNAMIC_DEBUG is not set 920# CONFIG_DYNAMIC_DEBUG is not set
921# CONFIG_DMA_API_DEBUG is not set
909# CONFIG_SAMPLES is not set 922# CONFIG_SAMPLES is not set
910CONFIG_HAVE_ARCH_KGDB=y 923CONFIG_HAVE_ARCH_KGDB=y
911# CONFIG_KGDB is not set 924# CONFIG_KGDB is not set
912# CONFIG_KMEMCHECK is not set
913# CONFIG_PPC_DISABLE_WERROR is not set 925# CONFIG_PPC_DISABLE_WERROR is not set
914CONFIG_PPC_WERROR=y 926CONFIG_PPC_WERROR=y
915CONFIG_PRINT_STACK_DEPTH=64 927CONFIG_PRINT_STACK_DEPTH=64
diff --git a/arch/powerpc/configs/c2k_defconfig b/arch/powerpc/configs/c2k_defconfig
index 8105360d53f4..0fb65a85dfdf 100644
--- a/arch/powerpc/configs/c2k_defconfig
+++ b/arch/powerpc/configs/c2k_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:31:48 2009 4# Thu Nov 5 08:20:05 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_PPC_STD_MMU=y
22CONFIG_PPC_STD_MMU_32=y 22CONFIG_PPC_STD_MMU_32=y
23# CONFIG_PPC_MM_SLICES is not set 23# CONFIG_PPC_MM_SLICES is not set
24CONFIG_PPC_HAVE_PMU_SUPPORT=y 24CONFIG_PPC_HAVE_PMU_SUPPORT=y
25CONFIG_PPC_PERF_CTRS=y
25# CONFIG_SMP is not set 26# CONFIG_SMP is not set
26CONFIG_NOT_COHERENT_CACHE=y 27CONFIG_NOT_COHERENT_CACHE=y
27CONFIG_CHECK_CACHE_COHERENCY=y 28CONFIG_CHECK_CACHE_COHERENCY=y
@@ -36,6 +37,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 37CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -88,11 +90,12 @@ CONFIG_AUDIT_TREE=y
88# 90#
89# RCU Subsystem 91# RCU Subsystem
90# 92#
91CONFIG_CLASSIC_RCU=y 93CONFIG_TREE_RCU=y
92# CONFIG_TREE_RCU is not set 94# CONFIG_TREE_PREEMPT_RCU is not set
93# CONFIG_PREEMPT_RCU is not set 95# CONFIG_RCU_TRACE is not set
96CONFIG_RCU_FANOUT=32
97# CONFIG_RCU_FANOUT_EXACT is not set
94# CONFIG_TREE_RCU_TRACE is not set 98# CONFIG_TREE_RCU_TRACE is not set
95# CONFIG_PREEMPT_RCU_TRACE is not set
96# CONFIG_IKCONFIG is not set 99# CONFIG_IKCONFIG is not set
97CONFIG_LOG_BUF_SHIFT=17 100CONFIG_LOG_BUF_SHIFT=17
98CONFIG_GROUP_SCHED=y 101CONFIG_GROUP_SCHED=y
@@ -135,23 +138,24 @@ CONFIG_TIMERFD=y
135CONFIG_EVENTFD=y 138CONFIG_EVENTFD=y
136CONFIG_SHMEM=y 139CONFIG_SHMEM=y
137CONFIG_AIO=y 140CONFIG_AIO=y
138CONFIG_HAVE_PERF_COUNTERS=y 141CONFIG_HAVE_PERF_EVENTS=y
139 142
140# 143#
141# Performance Counters 144# Kernel Performance Events And Counters
142# 145#
146CONFIG_PERF_EVENTS=y
147CONFIG_EVENT_PROFILE=y
143# CONFIG_PERF_COUNTERS is not set 148# CONFIG_PERF_COUNTERS is not set
149# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
144CONFIG_VM_EVENT_COUNTERS=y 150CONFIG_VM_EVENT_COUNTERS=y
145CONFIG_PCI_QUIRKS=y 151CONFIG_PCI_QUIRKS=y
146CONFIG_SLUB_DEBUG=y 152CONFIG_SLUB_DEBUG=y
147# CONFIG_STRIP_ASM_SYMS is not set
148CONFIG_COMPAT_BRK=y 153CONFIG_COMPAT_BRK=y
149# CONFIG_SLAB is not set 154# CONFIG_SLAB is not set
150CONFIG_SLUB=y 155CONFIG_SLUB=y
151# CONFIG_SLOB is not set 156# CONFIG_SLOB is not set
152CONFIG_PROFILING=y 157CONFIG_PROFILING=y
153CONFIG_TRACEPOINTS=y 158CONFIG_TRACEPOINTS=y
154CONFIG_MARKERS=y
155CONFIG_OPROFILE=m 159CONFIG_OPROFILE=m
156CONFIG_HAVE_OPROFILE=y 160CONFIG_HAVE_OPROFILE=y
157CONFIG_KPROBES=y 161CONFIG_KPROBES=y
@@ -161,12 +165,14 @@ CONFIG_HAVE_IOREMAP_PROT=y
161CONFIG_HAVE_KPROBES=y 165CONFIG_HAVE_KPROBES=y
162CONFIG_HAVE_KRETPROBES=y 166CONFIG_HAVE_KRETPROBES=y
163CONFIG_HAVE_ARCH_TRACEHOOK=y 167CONFIG_HAVE_ARCH_TRACEHOOK=y
168CONFIG_HAVE_DMA_ATTRS=y
169CONFIG_HAVE_DMA_API_DEBUG=y
164 170
165# 171#
166# GCOV-based kernel profiling 172# GCOV-based kernel profiling
167# 173#
168# CONFIG_GCOV_KERNEL is not set 174# CONFIG_GCOV_KERNEL is not set
169# CONFIG_SLOW_WORK is not set 175CONFIG_SLOW_WORK=y
170# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 176# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
171CONFIG_SLABINFO=y 177CONFIG_SLABINFO=y
172CONFIG_RT_MUTEXES=y 178CONFIG_RT_MUTEXES=y
@@ -275,12 +281,12 @@ CONFIG_BINFMT_ELF=y
275CONFIG_BINFMT_MISC=y 281CONFIG_BINFMT_MISC=y
276# CONFIG_IOMMU_HELPER is not set 282# CONFIG_IOMMU_HELPER is not set
277# CONFIG_SWIOTLB is not set 283# CONFIG_SWIOTLB is not set
278CONFIG_PPC_NEED_DMA_SYNC_OPS=y
279CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 284CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
280CONFIG_ARCH_HAS_WALK_MEMORY=y 285CONFIG_ARCH_HAS_WALK_MEMORY=y
281CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 286CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
282# CONFIG_KEXEC is not set 287# CONFIG_KEXEC is not set
283# CONFIG_CRASH_DUMP is not set 288# CONFIG_CRASH_DUMP is not set
289CONFIG_MAX_ACTIVE_REGIONS=32
284CONFIG_ARCH_FLATMEM_ENABLE=y 290CONFIG_ARCH_FLATMEM_ENABLE=y
285CONFIG_ARCH_POPULATES_NODE_MAP=y 291CONFIG_ARCH_POPULATES_NODE_MAP=y
286CONFIG_SELECT_MEMORY_MODEL=y 292CONFIG_SELECT_MEMORY_MODEL=y
@@ -298,6 +304,7 @@ CONFIG_BOUNCE=y
298CONFIG_VIRT_TO_BUS=y 304CONFIG_VIRT_TO_BUS=y
299CONFIG_HAVE_MLOCK=y 305CONFIG_HAVE_MLOCK=y
300CONFIG_HAVE_MLOCKED_PAGE_BIT=y 306CONFIG_HAVE_MLOCKED_PAGE_BIT=y
307# CONFIG_KSM is not set
301CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 308CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
302CONFIG_PPC_4K_PAGES=y 309CONFIG_PPC_4K_PAGES=y
303# CONFIG_PPC_16K_PAGES is not set 310# CONFIG_PPC_16K_PAGES is not set
@@ -309,6 +316,7 @@ CONFIG_FORCE_MAX_ZONEORDER=11
309CONFIG_EXTRA_TARGETS="" 316CONFIG_EXTRA_TARGETS=""
310CONFIG_PM=y 317CONFIG_PM=y
311# CONFIG_PM_DEBUG is not set 318# CONFIG_PM_DEBUG is not set
319# CONFIG_PM_RUNTIME is not set
312CONFIG_SECCOMP=y 320CONFIG_SECCOMP=y
313CONFIG_ISA_DMA_API=y 321CONFIG_ISA_DMA_API=y
314 322
@@ -674,10 +682,12 @@ CONFIG_BT_HCIBCM203X=m
674# CONFIG_BT_HCIBPA10X is not set 682# CONFIG_BT_HCIBPA10X is not set
675CONFIG_BT_HCIBFUSB=m 683CONFIG_BT_HCIBFUSB=m
676CONFIG_BT_HCIVHCI=m 684CONFIG_BT_HCIVHCI=m
685# CONFIG_BT_MRVL is not set
677# CONFIG_AF_RXRPC is not set 686# CONFIG_AF_RXRPC is not set
678CONFIG_FIB_RULES=y 687CONFIG_FIB_RULES=y
679CONFIG_WIRELESS=y 688CONFIG_WIRELESS=y
680# CONFIG_CFG80211 is not set 689# CONFIG_CFG80211 is not set
690CONFIG_CFG80211_DEFAULT_PS_VALUE=0
681CONFIG_WIRELESS_OLD_REGULATORY=y 691CONFIG_WIRELESS_OLD_REGULATORY=y
682CONFIG_WIRELESS_EXT=y 692CONFIG_WIRELESS_EXT=y
683CONFIG_WIRELESS_EXT_SYSFS=y 693CONFIG_WIRELESS_EXT_SYSFS=y
@@ -686,7 +696,6 @@ CONFIG_WIRELESS_EXT_SYSFS=y
686# 696#
687# CFG80211 needs to be enabled for MAC80211 697# CFG80211 needs to be enabled for MAC80211
688# 698#
689CONFIG_MAC80211_DEFAULT_PS_VALUE=0
690# CONFIG_WIMAX is not set 699# CONFIG_WIMAX is not set
691# CONFIG_RFKILL is not set 700# CONFIG_RFKILL is not set
692# CONFIG_NET_9P is not set 701# CONFIG_NET_9P is not set
@@ -699,6 +708,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
699# Generic Driver Options 708# Generic Driver Options
700# 709#
701CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 710CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
711# CONFIG_DEVTMPFS is not set
702CONFIG_STANDALONE=y 712CONFIG_STANDALONE=y
703CONFIG_PREVENT_FIRMWARE_BUILD=y 713CONFIG_PREVENT_FIRMWARE_BUILD=y
704CONFIG_FW_LOADER=y 714CONFIG_FW_LOADER=y
@@ -710,9 +720,9 @@ CONFIG_EXTRA_FIRMWARE=""
710# CONFIG_CONNECTOR is not set 720# CONFIG_CONNECTOR is not set
711CONFIG_MTD=y 721CONFIG_MTD=y
712# CONFIG_MTD_DEBUG is not set 722# CONFIG_MTD_DEBUG is not set
723# CONFIG_MTD_TESTS is not set
713CONFIG_MTD_CONCAT=m 724CONFIG_MTD_CONCAT=m
714CONFIG_MTD_PARTITIONS=y 725CONFIG_MTD_PARTITIONS=y
715# CONFIG_MTD_TESTS is not set
716# CONFIG_MTD_REDBOOT_PARTS is not set 726# CONFIG_MTD_REDBOOT_PARTS is not set
717# CONFIG_MTD_CMDLINE_PARTS is not set 727# CONFIG_MTD_CMDLINE_PARTS is not set
718CONFIG_MTD_OF_PARTS=y 728CONFIG_MTD_OF_PARTS=y
@@ -763,6 +773,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
763# CONFIG_MTD_PHYSMAP is not set 773# CONFIG_MTD_PHYSMAP is not set
764CONFIG_MTD_PHYSMAP_OF=y 774CONFIG_MTD_PHYSMAP_OF=y
765# CONFIG_MTD_PCI is not set 775# CONFIG_MTD_PCI is not set
776# CONFIG_MTD_GPIO_ADDR is not set
766# CONFIG_MTD_INTEL_VR_NOR is not set 777# CONFIG_MTD_INTEL_VR_NOR is not set
767# CONFIG_MTD_PLATRAM is not set 778# CONFIG_MTD_PLATRAM is not set
768 779
@@ -857,6 +868,7 @@ CONFIG_SCSI_SRP_ATTRS=m
857CONFIG_SCSI_LOWLEVEL=y 868CONFIG_SCSI_LOWLEVEL=y
858# CONFIG_ISCSI_TCP is not set 869# CONFIG_ISCSI_TCP is not set
859# CONFIG_SCSI_BNX2_ISCSI is not set 870# CONFIG_SCSI_BNX2_ISCSI is not set
871# CONFIG_BE2ISCSI is not set
860CONFIG_BLK_DEV_3W_XXXX_RAID=m 872CONFIG_BLK_DEV_3W_XXXX_RAID=m
861CONFIG_SCSI_3W_9XXX=m 873CONFIG_SCSI_3W_9XXX=m
862CONFIG_SCSI_ACARD=m 874CONFIG_SCSI_ACARD=m
@@ -912,7 +924,9 @@ CONFIG_SCSI_LPFC=m
912# CONFIG_SCSI_DC390T is not set 924# CONFIG_SCSI_DC390T is not set
913# CONFIG_SCSI_NSP32 is not set 925# CONFIG_SCSI_NSP32 is not set
914# CONFIG_SCSI_DEBUG is not set 926# CONFIG_SCSI_DEBUG is not set
927# CONFIG_SCSI_PMCRAID is not set
915# CONFIG_SCSI_SRP is not set 928# CONFIG_SCSI_SRP is not set
929# CONFIG_SCSI_BFA_FC is not set
916# CONFIG_SCSI_DH is not set 930# CONFIG_SCSI_DH is not set
917# CONFIG_SCSI_OSD_INITIATOR is not set 931# CONFIG_SCSI_OSD_INITIATOR is not set
918# CONFIG_ATA is not set 932# CONFIG_ATA is not set
@@ -982,7 +996,9 @@ CONFIG_MII=y
982# CONFIG_NET_PCI is not set 996# CONFIG_NET_PCI is not set
983# CONFIG_B44 is not set 997# CONFIG_B44 is not set
984# CONFIG_KS8842 is not set 998# CONFIG_KS8842 is not set
999# CONFIG_KS8851_MLL is not set
985# CONFIG_ATL2 is not set 1000# CONFIG_ATL2 is not set
1001# CONFIG_XILINX_EMACLITE is not set
986CONFIG_NETDEV_1000=y 1002CONFIG_NETDEV_1000=y
987# CONFIG_ACENIC is not set 1003# CONFIG_ACENIC is not set
988# CONFIG_DL2K is not set 1004# CONFIG_DL2K is not set
@@ -1010,10 +1026,7 @@ CONFIG_MV643XX_ETH=y
1010# CONFIG_JME is not set 1026# CONFIG_JME is not set
1011# CONFIG_NETDEV_10000 is not set 1027# CONFIG_NETDEV_10000 is not set
1012# CONFIG_TR is not set 1028# CONFIG_TR is not set
1013 1029CONFIG_WLAN=y
1014#
1015# Wireless LAN
1016#
1017# CONFIG_WLAN_PRE80211 is not set 1030# CONFIG_WLAN_PRE80211 is not set
1018# CONFIG_WLAN_80211 is not set 1031# CONFIG_WLAN_80211 is not set
1019 1032
@@ -1145,6 +1158,7 @@ CONFIG_MAX_RAW_DEVS=8192
1145CONFIG_DEVPORT=y 1158CONFIG_DEVPORT=y
1146CONFIG_I2C=m 1159CONFIG_I2C=m
1147CONFIG_I2C_BOARDINFO=y 1160CONFIG_I2C_BOARDINFO=y
1161CONFIG_I2C_COMPAT=y
1148CONFIG_I2C_CHARDEV=m 1162CONFIG_I2C_CHARDEV=m
1149CONFIG_I2C_HELPER_AUTO=y 1163CONFIG_I2C_HELPER_AUTO=y
1150 1164
@@ -1200,9 +1214,6 @@ CONFIG_I2C_MV64XXX=m
1200# Miscellaneous I2C Chip support 1214# Miscellaneous I2C Chip support
1201# 1215#
1202# CONFIG_DS1682 is not set 1216# CONFIG_DS1682 is not set
1203CONFIG_SENSORS_PCF8574=m
1204# CONFIG_PCF8575 is not set
1205# CONFIG_SENSORS_PCA9539 is not set
1206# CONFIG_SENSORS_TSL2550 is not set 1217# CONFIG_SENSORS_TSL2550 is not set
1207# CONFIG_I2C_DEBUG_CORE is not set 1218# CONFIG_I2C_DEBUG_CORE is not set
1208# CONFIG_I2C_DEBUG_ALGO is not set 1219# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1220,6 +1231,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
1220# CONFIG_POWER_SUPPLY is not set 1231# CONFIG_POWER_SUPPLY is not set
1221CONFIG_HWMON=m 1232CONFIG_HWMON=m
1222CONFIG_HWMON_VID=m 1233CONFIG_HWMON_VID=m
1234# CONFIG_HWMON_DEBUG_CHIP is not set
1235
1236#
1237# Native drivers
1238#
1223# CONFIG_SENSORS_AD7414 is not set 1239# CONFIG_SENSORS_AD7414 is not set
1224# CONFIG_SENSORS_AD7418 is not set 1240# CONFIG_SENSORS_AD7418 is not set
1225CONFIG_SENSORS_ADM1021=m 1241CONFIG_SENSORS_ADM1021=m
@@ -1269,6 +1285,7 @@ CONFIG_SENSORS_SMSC47B397=m
1269# CONFIG_SENSORS_ADS7828 is not set 1285# CONFIG_SENSORS_ADS7828 is not set
1270# CONFIG_SENSORS_THMC50 is not set 1286# CONFIG_SENSORS_THMC50 is not set
1271# CONFIG_SENSORS_TMP401 is not set 1287# CONFIG_SENSORS_TMP401 is not set
1288# CONFIG_SENSORS_TMP421 is not set
1272CONFIG_SENSORS_VIA686A=m 1289CONFIG_SENSORS_VIA686A=m
1273# CONFIG_SENSORS_VT1211 is not set 1290# CONFIG_SENSORS_VT1211 is not set
1274# CONFIG_SENSORS_VT8231 is not set 1291# CONFIG_SENSORS_VT8231 is not set
@@ -1280,7 +1297,6 @@ CONFIG_SENSORS_W83L785TS=m
1280# CONFIG_SENSORS_W83L786NG is not set 1297# CONFIG_SENSORS_W83L786NG is not set
1281CONFIG_SENSORS_W83627HF=m 1298CONFIG_SENSORS_W83627HF=m
1282# CONFIG_SENSORS_W83627EHF is not set 1299# CONFIG_SENSORS_W83627EHF is not set
1283# CONFIG_HWMON_DEBUG_CHIP is not set
1284# CONFIG_THERMAL is not set 1300# CONFIG_THERMAL is not set
1285CONFIG_WATCHDOG=y 1301CONFIG_WATCHDOG=y
1286# CONFIG_WATCHDOG_NOWAYOUT is not set 1302# CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -1317,6 +1333,7 @@ CONFIG_SSB_POSSIBLE=y
1317# CONFIG_HTC_PASIC3 is not set 1333# CONFIG_HTC_PASIC3 is not set
1318# CONFIG_MFD_TMIO is not set 1334# CONFIG_MFD_TMIO is not set
1319# CONFIG_MFD_WM8400 is not set 1335# CONFIG_MFD_WM8400 is not set
1336# CONFIG_MFD_WM831X is not set
1320# CONFIG_MFD_WM8350_I2C is not set 1337# CONFIG_MFD_WM8350_I2C is not set
1321# CONFIG_MFD_PCF50633 is not set 1338# CONFIG_MFD_PCF50633 is not set
1322# CONFIG_AB3100_CORE is not set 1339# CONFIG_AB3100_CORE is not set
@@ -1327,6 +1344,7 @@ CONFIG_SSB_POSSIBLE=y
1327# Graphics support 1344# Graphics support
1328# 1345#
1329# CONFIG_AGP is not set 1346# CONFIG_AGP is not set
1347CONFIG_VGA_ARB=y
1330# CONFIG_DRM is not set 1348# CONFIG_DRM is not set
1331# CONFIG_VGASTATE is not set 1349# CONFIG_VGASTATE is not set
1332# CONFIG_VIDEO_OUTPUT_CONTROL is not set 1350# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -1378,6 +1396,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1378# CONFIG_USB_OXU210HP_HCD is not set 1396# CONFIG_USB_OXU210HP_HCD is not set
1379# CONFIG_USB_ISP116X_HCD is not set 1397# CONFIG_USB_ISP116X_HCD is not set
1380# CONFIG_USB_ISP1760_HCD is not set 1398# CONFIG_USB_ISP1760_HCD is not set
1399# CONFIG_USB_ISP1362_HCD is not set
1381CONFIG_USB_OHCI_HCD=m 1400CONFIG_USB_OHCI_HCD=m
1382CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1401CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
1383# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 1402# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
@@ -1588,6 +1607,7 @@ CONFIG_FS_POSIX_ACL=y
1588# CONFIG_GFS2_FS is not set 1607# CONFIG_GFS2_FS is not set
1589# CONFIG_OCFS2_FS is not set 1608# CONFIG_OCFS2_FS is not set
1590# CONFIG_BTRFS_FS is not set 1609# CONFIG_BTRFS_FS is not set
1610# CONFIG_NILFS2_FS is not set
1591CONFIG_FILE_LOCKING=y 1611CONFIG_FILE_LOCKING=y
1592CONFIG_FSNOTIFY=y 1612CONFIG_FSNOTIFY=y
1593CONFIG_DNOTIFY=y 1613CONFIG_DNOTIFY=y
@@ -1668,7 +1688,6 @@ CONFIG_VXFS_FS=m
1668# CONFIG_ROMFS_FS is not set 1688# CONFIG_ROMFS_FS is not set
1669# CONFIG_SYSV_FS is not set 1689# CONFIG_SYSV_FS is not set
1670# CONFIG_UFS_FS is not set 1690# CONFIG_UFS_FS is not set
1671# CONFIG_NILFS2_FS is not set
1672CONFIG_NETWORK_FILESYSTEMS=y 1691CONFIG_NETWORK_FILESYSTEMS=y
1673CONFIG_NFS_FS=y 1692CONFIG_NFS_FS=y
1674CONFIG_NFS_V3=y 1693CONFIG_NFS_V3=y
@@ -1770,7 +1789,7 @@ CONFIG_BINARY_PRINTF=y
1770CONFIG_BITREVERSE=y 1789CONFIG_BITREVERSE=y
1771CONFIG_GENERIC_FIND_LAST_BIT=y 1790CONFIG_GENERIC_FIND_LAST_BIT=y
1772CONFIG_CRC_CCITT=m 1791CONFIG_CRC_CCITT=m
1773# CONFIG_CRC16 is not set 1792CONFIG_CRC16=m
1774CONFIG_CRC_T10DIF=m 1793CONFIG_CRC_T10DIF=m
1775CONFIG_CRC_ITU_T=m 1794CONFIG_CRC_ITU_T=m
1776CONFIG_CRC32=y 1795CONFIG_CRC32=y
@@ -1797,6 +1816,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1797CONFIG_ENABLE_MUST_CHECK=y 1816CONFIG_ENABLE_MUST_CHECK=y
1798CONFIG_FRAME_WARN=1024 1817CONFIG_FRAME_WARN=1024
1799CONFIG_MAGIC_SYSRQ=y 1818CONFIG_MAGIC_SYSRQ=y
1819# CONFIG_STRIP_ASM_SYMS is not set
1800# CONFIG_UNUSED_SYMBOLS is not set 1820# CONFIG_UNUSED_SYMBOLS is not set
1801CONFIG_DEBUG_FS=y 1821CONFIG_DEBUG_FS=y
1802# CONFIG_HEADERS_CHECK is not set 1822# CONFIG_HEADERS_CHECK is not set
@@ -1814,6 +1834,7 @@ CONFIG_SCHED_DEBUG=y
1814# CONFIG_DEBUG_OBJECTS is not set 1834# CONFIG_DEBUG_OBJECTS is not set
1815# CONFIG_SLUB_DEBUG_ON is not set 1835# CONFIG_SLUB_DEBUG_ON is not set
1816# CONFIG_SLUB_STATS is not set 1836# CONFIG_SLUB_STATS is not set
1837# CONFIG_DEBUG_KMEMLEAK is not set
1817# CONFIG_DEBUG_RT_MUTEXES is not set 1838# CONFIG_DEBUG_RT_MUTEXES is not set
1818# CONFIG_RT_MUTEX_TESTER is not set 1839# CONFIG_RT_MUTEX_TESTER is not set
1819CONFIG_DEBUG_SPINLOCK=y 1840CONFIG_DEBUG_SPINLOCK=y
@@ -1834,11 +1855,13 @@ CONFIG_DEBUG_MEMORY_INIT=y
1834# CONFIG_DEBUG_LIST is not set 1855# CONFIG_DEBUG_LIST is not set
1835# CONFIG_DEBUG_SG is not set 1856# CONFIG_DEBUG_SG is not set
1836# CONFIG_DEBUG_NOTIFIERS is not set 1857# CONFIG_DEBUG_NOTIFIERS is not set
1858# CONFIG_DEBUG_CREDENTIALS is not set
1837# CONFIG_RCU_TORTURE_TEST is not set 1859# CONFIG_RCU_TORTURE_TEST is not set
1838# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1860# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1839# CONFIG_KPROBES_SANITY_TEST is not set 1861# CONFIG_KPROBES_SANITY_TEST is not set
1840# CONFIG_BACKTRACE_SELF_TEST is not set 1862# CONFIG_BACKTRACE_SELF_TEST is not set
1841# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1863# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1864# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1842# CONFIG_LKDTM is not set 1865# CONFIG_LKDTM is not set
1843# CONFIG_FAULT_INJECTION is not set 1866# CONFIG_FAULT_INJECTION is not set
1844# CONFIG_LATENCYTOP is not set 1867# CONFIG_LATENCYTOP is not set
@@ -1852,6 +1875,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1852CONFIG_RING_BUFFER=y 1875CONFIG_RING_BUFFER=y
1853CONFIG_EVENT_TRACING=y 1876CONFIG_EVENT_TRACING=y
1854CONFIG_CONTEXT_SWITCH_TRACER=y 1877CONFIG_CONTEXT_SWITCH_TRACER=y
1878CONFIG_RING_BUFFER_ALLOW_SWAP=y
1855CONFIG_TRACING=y 1879CONFIG_TRACING=y
1856CONFIG_TRACING_SUPPORT=y 1880CONFIG_TRACING_SUPPORT=y
1857CONFIG_FTRACE=y 1881CONFIG_FTRACE=y
@@ -1869,6 +1893,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
1869# CONFIG_BLK_DEV_IO_TRACE is not set 1893# CONFIG_BLK_DEV_IO_TRACE is not set
1870# CONFIG_RING_BUFFER_BENCHMARK is not set 1894# CONFIG_RING_BUFFER_BENCHMARK is not set
1871# CONFIG_DYNAMIC_DEBUG is not set 1895# CONFIG_DYNAMIC_DEBUG is not set
1896# CONFIG_DMA_API_DEBUG is not set
1872# CONFIG_SAMPLES is not set 1897# CONFIG_SAMPLES is not set
1873CONFIG_HAVE_ARCH_KGDB=y 1898CONFIG_HAVE_ARCH_KGDB=y
1874# CONFIG_KGDB is not set 1899# CONFIG_KGDB is not set
@@ -1899,6 +1924,7 @@ CONFIG_SECURITY_NETWORK=y
1899# CONFIG_SECURITY_NETWORK_XFRM is not set 1924# CONFIG_SECURITY_NETWORK_XFRM is not set
1900# CONFIG_SECURITY_PATH is not set 1925# CONFIG_SECURITY_PATH is not set
1901# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1926# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1927CONFIG_LSM_MMAP_MIN_ADDR=65536
1902CONFIG_SECURITY_SELINUX=y 1928CONFIG_SECURITY_SELINUX=y
1903CONFIG_SECURITY_SELINUX_BOOTPARAM=y 1929CONFIG_SECURITY_SELINUX_BOOTPARAM=y
1904CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 1930CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
@@ -1913,7 +1939,6 @@ CONFIG_CRYPTO=y
1913# 1939#
1914# Crypto core or helper 1940# Crypto core or helper
1915# 1941#
1916# CONFIG_CRYPTO_FIPS is not set
1917CONFIG_CRYPTO_ALGAPI=y 1942CONFIG_CRYPTO_ALGAPI=y
1918CONFIG_CRYPTO_ALGAPI2=y 1943CONFIG_CRYPTO_ALGAPI2=y
1919CONFIG_CRYPTO_AEAD=m 1944CONFIG_CRYPTO_AEAD=m
@@ -1956,11 +1981,13 @@ CONFIG_CRYPTO_ECB=m
1956# 1981#
1957CONFIG_CRYPTO_HMAC=y 1982CONFIG_CRYPTO_HMAC=y
1958# CONFIG_CRYPTO_XCBC is not set 1983# CONFIG_CRYPTO_XCBC is not set
1984# CONFIG_CRYPTO_VMAC is not set
1959 1985
1960# 1986#
1961# Digest 1987# Digest
1962# 1988#
1963CONFIG_CRYPTO_CRC32C=m 1989CONFIG_CRYPTO_CRC32C=m
1990# CONFIG_CRYPTO_GHASH is not set
1964CONFIG_CRYPTO_MD4=m 1991CONFIG_CRYPTO_MD4=m
1965CONFIG_CRYPTO_MD5=y 1992CONFIG_CRYPTO_MD5=y
1966CONFIG_CRYPTO_MICHAEL_MIC=m 1993CONFIG_CRYPTO_MICHAEL_MIC=m
diff --git a/arch/powerpc/configs/ep8248e_defconfig b/arch/powerpc/configs/ep8248e_defconfig
index 0aa5b43ffeb2..ef5edc7203f5 100644
--- a/arch/powerpc/configs/ep8248e_defconfig
+++ b/arch/powerpc/configs/ep8248e_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:31:49 2009 4# Thu Nov 5 08:20:06 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -34,6 +34,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
34CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
37CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
38CONFIG_STACKTRACE_SUPPORT=y 39CONFIG_STACKTRACE_SUPPORT=y
39CONFIG_HAVE_LATENCYTOP_SUPPORT=y 40CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -82,11 +83,12 @@ CONFIG_SYSVIPC_SYSCTL=y
82# 83#
83# RCU Subsystem 84# RCU Subsystem
84# 85#
85CONFIG_CLASSIC_RCU=y 86CONFIG_TREE_RCU=y
86# CONFIG_TREE_RCU is not set 87# CONFIG_TREE_PREEMPT_RCU is not set
87# CONFIG_PREEMPT_RCU is not set 88# CONFIG_RCU_TRACE is not set
89CONFIG_RCU_FANOUT=32
90# CONFIG_RCU_FANOUT_EXACT is not set
88# CONFIG_TREE_RCU_TRACE is not set 91# CONFIG_TREE_RCU_TRACE is not set
89# CONFIG_PREEMPT_RCU_TRACE is not set
90CONFIG_IKCONFIG=y 92CONFIG_IKCONFIG=y
91CONFIG_IKCONFIG_PROC=y 93CONFIG_IKCONFIG_PROC=y
92CONFIG_LOG_BUF_SHIFT=14 94CONFIG_LOG_BUF_SHIFT=14
@@ -116,28 +118,29 @@ CONFIG_TIMERFD=y
116CONFIG_EVENTFD=y 118CONFIG_EVENTFD=y
117CONFIG_SHMEM=y 119CONFIG_SHMEM=y
118CONFIG_AIO=y 120CONFIG_AIO=y
119CONFIG_HAVE_PERF_COUNTERS=y 121CONFIG_HAVE_PERF_EVENTS=y
120 122
121# 123#
122# Performance Counters 124# Kernel Performance Events And Counters
123# 125#
126# CONFIG_PERF_EVENTS is not set
124# CONFIG_PERF_COUNTERS is not set 127# CONFIG_PERF_COUNTERS is not set
125CONFIG_VM_EVENT_COUNTERS=y 128CONFIG_VM_EVENT_COUNTERS=y
126CONFIG_PCI_QUIRKS=y 129CONFIG_PCI_QUIRKS=y
127# CONFIG_STRIP_ASM_SYMS is not set
128CONFIG_COMPAT_BRK=y 130CONFIG_COMPAT_BRK=y
129CONFIG_SLAB=y 131CONFIG_SLAB=y
130# CONFIG_SLUB is not set 132# CONFIG_SLUB is not set
131# CONFIG_SLOB is not set 133# CONFIG_SLOB is not set
132# CONFIG_PROFILING is not set 134# CONFIG_PROFILING is not set
133# CONFIG_MARKERS is not set
134CONFIG_HAVE_OPROFILE=y 135CONFIG_HAVE_OPROFILE=y
135CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 136CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
136CONFIG_HAVE_IOREMAP_PROT=y 137CONFIG_HAVE_IOREMAP_PROT=y
137CONFIG_HAVE_KPROBES=y 138CONFIG_HAVE_KPROBES=y
138CONFIG_HAVE_KRETPROBES=y 139CONFIG_HAVE_KRETPROBES=y
139CONFIG_HAVE_ARCH_TRACEHOOK=y 140CONFIG_HAVE_ARCH_TRACEHOOK=y
141CONFIG_HAVE_DMA_ATTRS=y
140CONFIG_HAVE_CLK=y 142CONFIG_HAVE_CLK=y
143CONFIG_HAVE_DMA_API_DEBUG=y
141 144
142# 145#
143# GCOV-based kernel profiling 146# GCOV-based kernel profiling
@@ -150,6 +153,7 @@ CONFIG_BASE_SMALL=0
150# CONFIG_MODULES is not set 153# CONFIG_MODULES is not set
151CONFIG_BLOCK=y 154CONFIG_BLOCK=y
152CONFIG_LBDAF=y 155CONFIG_LBDAF=y
156CONFIG_BLK_DEV_BSG=y
153# CONFIG_BLK_DEV_INTEGRITY is not set 157# CONFIG_BLK_DEV_INTEGRITY is not set
154 158
155# 159#
@@ -233,6 +237,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
233CONFIG_ARCH_HAS_WALK_MEMORY=y 237CONFIG_ARCH_HAS_WALK_MEMORY=y
234CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 238CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
235# CONFIG_CRASH_DUMP is not set 239# CONFIG_CRASH_DUMP is not set
240CONFIG_MAX_ACTIVE_REGIONS=32
236CONFIG_ARCH_FLATMEM_ENABLE=y 241CONFIG_ARCH_FLATMEM_ENABLE=y
237CONFIG_ARCH_POPULATES_NODE_MAP=y 242CONFIG_ARCH_POPULATES_NODE_MAP=y
238CONFIG_FLATMEM=y 243CONFIG_FLATMEM=y
@@ -246,6 +251,7 @@ CONFIG_BOUNCE=y
246CONFIG_VIRT_TO_BUS=y 251CONFIG_VIRT_TO_BUS=y
247CONFIG_HAVE_MLOCK=y 252CONFIG_HAVE_MLOCK=y
248CONFIG_HAVE_MLOCKED_PAGE_BIT=y 253CONFIG_HAVE_MLOCKED_PAGE_BIT=y
254# CONFIG_KSM is not set
249CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 255CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
250CONFIG_PPC_4K_PAGES=y 256CONFIG_PPC_4K_PAGES=y
251# CONFIG_PPC_16K_PAGES is not set 257# CONFIG_PPC_16K_PAGES is not set
@@ -394,6 +400,7 @@ CONFIG_NETFILTER_ADVANCED=y
394# CONFIG_BT is not set 400# CONFIG_BT is not set
395CONFIG_WIRELESS=y 401CONFIG_WIRELESS=y
396# CONFIG_CFG80211 is not set 402# CONFIG_CFG80211 is not set
403CONFIG_CFG80211_DEFAULT_PS_VALUE=0
397CONFIG_WIRELESS_OLD_REGULATORY=y 404CONFIG_WIRELESS_OLD_REGULATORY=y
398# CONFIG_WIRELESS_EXT is not set 405# CONFIG_WIRELESS_EXT is not set
399# CONFIG_LIB80211 is not set 406# CONFIG_LIB80211 is not set
@@ -401,7 +408,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
401# 408#
402# CFG80211 needs to be enabled for MAC80211 409# CFG80211 needs to be enabled for MAC80211
403# 410#
404CONFIG_MAC80211_DEFAULT_PS_VALUE=0
405# CONFIG_WIMAX is not set 411# CONFIG_WIMAX is not set
406# CONFIG_RFKILL is not set 412# CONFIG_RFKILL is not set
407 413
@@ -413,6 +419,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
413# Generic Driver Options 419# Generic Driver Options
414# 420#
415CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 421CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
422# CONFIG_DEVTMPFS is not set
416CONFIG_STANDALONE=y 423CONFIG_STANDALONE=y
417CONFIG_PREVENT_FIRMWARE_BUILD=y 424CONFIG_PREVENT_FIRMWARE_BUILD=y
418# CONFIG_FW_LOADER is not set 425# CONFIG_FW_LOADER is not set
@@ -600,7 +607,9 @@ CONFIG_MII=y
600# CONFIG_NET_PCI is not set 607# CONFIG_NET_PCI is not set
601# CONFIG_B44 is not set 608# CONFIG_B44 is not set
602# CONFIG_KS8842 is not set 609# CONFIG_KS8842 is not set
610# CONFIG_KS8851_MLL is not set
603# CONFIG_ATL2 is not set 611# CONFIG_ATL2 is not set
612# CONFIG_XILINX_EMACLITE is not set
604CONFIG_FS_ENET=y 613CONFIG_FS_ENET=y
605# CONFIG_FS_ENET_HAS_SCC is not set 614# CONFIG_FS_ENET_HAS_SCC is not set
606CONFIG_FS_ENET_HAS_FCC=y 615CONFIG_FS_ENET_HAS_FCC=y
@@ -648,10 +657,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
648# CONFIG_SFC is not set 657# CONFIG_SFC is not set
649# CONFIG_BE2NET is not set 658# CONFIG_BE2NET is not set
650# CONFIG_TR is not set 659# CONFIG_TR is not set
651 660CONFIG_WLAN=y
652#
653# Wireless LAN
654#
655# CONFIG_WLAN_PRE80211 is not set 661# CONFIG_WLAN_PRE80211 is not set
656# CONFIG_WLAN_80211 is not set 662# CONFIG_WLAN_80211 is not set
657 663
@@ -736,15 +742,19 @@ CONFIG_GPIOLIB=y
736# PCI GPIO expanders: 742# PCI GPIO expanders:
737# 743#
738# CONFIG_GPIO_BT8XX is not set 744# CONFIG_GPIO_BT8XX is not set
745# CONFIG_GPIO_LANGWELL is not set
739 746
740# 747#
741# SPI GPIO expanders: 748# SPI GPIO expanders:
742# 749#
750
751#
752# AC97 GPIO expanders:
753#
743# CONFIG_W1 is not set 754# CONFIG_W1 is not set
744# CONFIG_POWER_SUPPLY is not set 755# CONFIG_POWER_SUPPLY is not set
745# CONFIG_HWMON is not set 756# CONFIG_HWMON is not set
746# CONFIG_THERMAL is not set 757# CONFIG_THERMAL is not set
747# CONFIG_THERMAL_HWMON is not set
748# CONFIG_WATCHDOG is not set 758# CONFIG_WATCHDOG is not set
749CONFIG_SSB_POSSIBLE=y 759CONFIG_SSB_POSSIBLE=y
750 760
@@ -767,6 +777,7 @@ CONFIG_SSB_POSSIBLE=y
767# Graphics support 777# Graphics support
768# 778#
769# CONFIG_AGP is not set 779# CONFIG_AGP is not set
780CONFIG_VGA_ARB=y
770# CONFIG_DRM is not set 781# CONFIG_DRM is not set
771# CONFIG_VGASTATE is not set 782# CONFIG_VGASTATE is not set
772# CONFIG_VIDEO_OUTPUT_CONTROL is not set 783# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -968,6 +979,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
968CONFIG_ENABLE_MUST_CHECK=y 979CONFIG_ENABLE_MUST_CHECK=y
969CONFIG_FRAME_WARN=1024 980CONFIG_FRAME_WARN=1024
970CONFIG_MAGIC_SYSRQ=y 981CONFIG_MAGIC_SYSRQ=y
982# CONFIG_STRIP_ASM_SYMS is not set
971# CONFIG_UNUSED_SYMBOLS is not set 983# CONFIG_UNUSED_SYMBOLS is not set
972# CONFIG_DEBUG_FS is not set 984# CONFIG_DEBUG_FS is not set
973# CONFIG_HEADERS_CHECK is not set 985# CONFIG_HEADERS_CHECK is not set
@@ -998,10 +1010,12 @@ CONFIG_DEBUG_INFO=y
998# CONFIG_DEBUG_LIST is not set 1010# CONFIG_DEBUG_LIST is not set
999# CONFIG_DEBUG_SG is not set 1011# CONFIG_DEBUG_SG is not set
1000# CONFIG_DEBUG_NOTIFIERS is not set 1012# CONFIG_DEBUG_NOTIFIERS is not set
1013# CONFIG_DEBUG_CREDENTIALS is not set
1001# CONFIG_RCU_TORTURE_TEST is not set 1014# CONFIG_RCU_TORTURE_TEST is not set
1002# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1015# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1003# CONFIG_BACKTRACE_SELF_TEST is not set 1016# CONFIG_BACKTRACE_SELF_TEST is not set
1004# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1017# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1018# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1005# CONFIG_FAULT_INJECTION is not set 1019# CONFIG_FAULT_INJECTION is not set
1006# CONFIG_LATENCYTOP is not set 1020# CONFIG_LATENCYTOP is not set
1007CONFIG_SYSCTL_SYSCALL_CHECK=y 1021CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1024,6 +1038,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
1024# CONFIG_KMEMTRACE is not set 1038# CONFIG_KMEMTRACE is not set
1025# CONFIG_WORKQUEUE_TRACER is not set 1039# CONFIG_WORKQUEUE_TRACER is not set
1026# CONFIG_BLK_DEV_IO_TRACE is not set 1040# CONFIG_BLK_DEV_IO_TRACE is not set
1041# CONFIG_DMA_API_DEBUG is not set
1027# CONFIG_SAMPLES is not set 1042# CONFIG_SAMPLES is not set
1028CONFIG_HAVE_ARCH_KGDB=y 1043CONFIG_HAVE_ARCH_KGDB=y
1029# CONFIG_PPC_DISABLE_WERROR is not set 1044# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1052,7 +1067,6 @@ CONFIG_CRYPTO=y
1052# 1067#
1053# Crypto core or helper 1068# Crypto core or helper
1054# 1069#
1055# CONFIG_CRYPTO_FIPS is not set
1056CONFIG_CRYPTO_ALGAPI=y 1070CONFIG_CRYPTO_ALGAPI=y
1057CONFIG_CRYPTO_ALGAPI2=y 1071CONFIG_CRYPTO_ALGAPI2=y
1058CONFIG_CRYPTO_AEAD2=y 1072CONFIG_CRYPTO_AEAD2=y
@@ -1094,6 +1108,7 @@ CONFIG_CRYPTO_PCBC=y
1094# Digest 1108# Digest
1095# 1109#
1096# CONFIG_CRYPTO_CRC32C is not set 1110# CONFIG_CRYPTO_CRC32C is not set
1111# CONFIG_CRYPTO_GHASH is not set
1097# CONFIG_CRYPTO_MD4 is not set 1112# CONFIG_CRYPTO_MD4 is not set
1098CONFIG_CRYPTO_MD5=y 1113CONFIG_CRYPTO_MD5=y
1099# CONFIG_CRYPTO_MICHAEL_MIC is not set 1114# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/ep88xc_defconfig b/arch/powerpc/configs/ep88xc_defconfig
index 2c292e25cc01..73ef9be41280 100644
--- a/arch/powerpc/configs/ep88xc_defconfig
+++ b/arch/powerpc/configs/ep88xc_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:31:49 2009 4# Thu Nov 5 08:20:07 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,6 +16,7 @@ CONFIG_PPC_8xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_8xx=y 17CONFIG_8xx=y
18CONFIG_PPC_MMU_NOHASH=y 18CONFIG_PPC_MMU_NOHASH=y
19CONFIG_PPC_MMU_NOHASH_32=y
19# CONFIG_PPC_MM_SLICES is not set 20# CONFIG_PPC_MM_SLICES is not set
20CONFIG_NOT_COHERENT_CACHE=y 21CONFIG_NOT_COHERENT_CACHE=y
21CONFIG_PPC32=y 22CONFIG_PPC32=y
@@ -29,6 +30,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
29CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
30CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 31CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
31# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
32CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
33CONFIG_STACKTRACE_SUPPORT=y 35CONFIG_STACKTRACE_SUPPORT=y
34CONFIG_HAVE_LATENCYTOP_SUPPORT=y 36CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -77,11 +79,12 @@ CONFIG_SYSVIPC_SYSCTL=y
77# 79#
78# RCU Subsystem 80# RCU Subsystem
79# 81#
80CONFIG_CLASSIC_RCU=y 82CONFIG_TREE_RCU=y
81# CONFIG_TREE_RCU is not set 83# CONFIG_TREE_PREEMPT_RCU is not set
82# CONFIG_PREEMPT_RCU is not set 84# CONFIG_RCU_TRACE is not set
85CONFIG_RCU_FANOUT=32
86# CONFIG_RCU_FANOUT_EXACT is not set
83# CONFIG_TREE_RCU_TRACE is not set 87# CONFIG_TREE_RCU_TRACE is not set
84# CONFIG_PREEMPT_RCU_TRACE is not set
85# CONFIG_IKCONFIG is not set 88# CONFIG_IKCONFIG is not set
86CONFIG_LOG_BUF_SHIFT=14 89CONFIG_LOG_BUF_SHIFT=14
87CONFIG_GROUP_SCHED=y 90CONFIG_GROUP_SCHED=y
@@ -115,28 +118,29 @@ CONFIG_TIMERFD=y
115CONFIG_EVENTFD=y 118CONFIG_EVENTFD=y
116CONFIG_SHMEM=y 119CONFIG_SHMEM=y
117CONFIG_AIO=y 120CONFIG_AIO=y
118CONFIG_HAVE_PERF_COUNTERS=y 121CONFIG_HAVE_PERF_EVENTS=y
119 122
120# 123#
121# Performance Counters 124# Kernel Performance Events And Counters
122# 125#
126# CONFIG_PERF_EVENTS is not set
123# CONFIG_PERF_COUNTERS is not set 127# CONFIG_PERF_COUNTERS is not set
124# CONFIG_VM_EVENT_COUNTERS is not set 128# CONFIG_VM_EVENT_COUNTERS is not set
125CONFIG_SLUB_DEBUG=y 129CONFIG_SLUB_DEBUG=y
126# CONFIG_STRIP_ASM_SYMS is not set
127CONFIG_COMPAT_BRK=y 130CONFIG_COMPAT_BRK=y
128# CONFIG_SLAB is not set 131# CONFIG_SLAB is not set
129CONFIG_SLUB=y 132CONFIG_SLUB=y
130# CONFIG_SLOB is not set 133# CONFIG_SLOB is not set
131# CONFIG_PROFILING is not set 134# CONFIG_PROFILING is not set
132# CONFIG_MARKERS is not set
133CONFIG_HAVE_OPROFILE=y 135CONFIG_HAVE_OPROFILE=y
134CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 136CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
135CONFIG_HAVE_IOREMAP_PROT=y 137CONFIG_HAVE_IOREMAP_PROT=y
136CONFIG_HAVE_KPROBES=y 138CONFIG_HAVE_KPROBES=y
137CONFIG_HAVE_KRETPROBES=y 139CONFIG_HAVE_KRETPROBES=y
138CONFIG_HAVE_ARCH_TRACEHOOK=y 140CONFIG_HAVE_ARCH_TRACEHOOK=y
141CONFIG_HAVE_DMA_ATTRS=y
139CONFIG_HAVE_CLK=y 142CONFIG_HAVE_CLK=y
143CONFIG_HAVE_DMA_API_DEBUG=y
140 144
141# 145#
142# GCOV-based kernel profiling 146# GCOV-based kernel profiling
@@ -234,10 +238,10 @@ CONFIG_BINFMT_ELF=y
234CONFIG_8XX_MINIMAL_FPEMU=y 238CONFIG_8XX_MINIMAL_FPEMU=y
235# CONFIG_IOMMU_HELPER is not set 239# CONFIG_IOMMU_HELPER is not set
236# CONFIG_SWIOTLB is not set 240# CONFIG_SWIOTLB is not set
237CONFIG_PPC_NEED_DMA_SYNC_OPS=y
238CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 241CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
239CONFIG_ARCH_HAS_WALK_MEMORY=y 242CONFIG_ARCH_HAS_WALK_MEMORY=y
240CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 243CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
244CONFIG_MAX_ACTIVE_REGIONS=32
241CONFIG_ARCH_FLATMEM_ENABLE=y 245CONFIG_ARCH_FLATMEM_ENABLE=y
242CONFIG_ARCH_POPULATES_NODE_MAP=y 246CONFIG_ARCH_POPULATES_NODE_MAP=y
243CONFIG_SELECT_MEMORY_MODEL=y 247CONFIG_SELECT_MEMORY_MODEL=y
@@ -255,6 +259,7 @@ CONFIG_BOUNCE=y
255CONFIG_VIRT_TO_BUS=y 259CONFIG_VIRT_TO_BUS=y
256CONFIG_HAVE_MLOCK=y 260CONFIG_HAVE_MLOCK=y
257CONFIG_HAVE_MLOCKED_PAGE_BIT=y 261CONFIG_HAVE_MLOCKED_PAGE_BIT=y
262# CONFIG_KSM is not set
258CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 263CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
259CONFIG_PPC_4K_PAGES=y 264CONFIG_PPC_4K_PAGES=y
260# CONFIG_PPC_16K_PAGES is not set 265# CONFIG_PPC_16K_PAGES is not set
@@ -337,6 +342,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
337# CONFIG_NETFILTER is not set 342# CONFIG_NETFILTER is not set
338# CONFIG_IP_DCCP is not set 343# CONFIG_IP_DCCP is not set
339# CONFIG_IP_SCTP is not set 344# CONFIG_IP_SCTP is not set
345# CONFIG_RDS is not set
340# CONFIG_TIPC is not set 346# CONFIG_TIPC is not set
341# CONFIG_ATM is not set 347# CONFIG_ATM is not set
342# CONFIG_BRIDGE is not set 348# CONFIG_BRIDGE is not set
@@ -366,6 +372,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
366# CONFIG_AF_RXRPC is not set 372# CONFIG_AF_RXRPC is not set
367CONFIG_WIRELESS=y 373CONFIG_WIRELESS=y
368# CONFIG_CFG80211 is not set 374# CONFIG_CFG80211 is not set
375CONFIG_CFG80211_DEFAULT_PS_VALUE=0
369CONFIG_WIRELESS_OLD_REGULATORY=y 376CONFIG_WIRELESS_OLD_REGULATORY=y
370# CONFIG_WIRELESS_EXT is not set 377# CONFIG_WIRELESS_EXT is not set
371# CONFIG_LIB80211 is not set 378# CONFIG_LIB80211 is not set
@@ -373,7 +380,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
373# 380#
374# CFG80211 needs to be enabled for MAC80211 381# CFG80211 needs to be enabled for MAC80211
375# 382#
376CONFIG_MAC80211_DEFAULT_PS_VALUE=0
377# CONFIG_WIMAX is not set 383# CONFIG_WIMAX is not set
378# CONFIG_RFKILL is not set 384# CONFIG_RFKILL is not set
379# CONFIG_NET_9P is not set 385# CONFIG_NET_9P is not set
@@ -386,6 +392,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
386# Generic Driver Options 392# Generic Driver Options
387# 393#
388CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 394CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
395# CONFIG_DEVTMPFS is not set
389CONFIG_STANDALONE=y 396CONFIG_STANDALONE=y
390CONFIG_PREVENT_FIRMWARE_BUILD=y 397CONFIG_PREVENT_FIRMWARE_BUILD=y
391# CONFIG_FW_LOADER is not set 398# CONFIG_FW_LOADER is not set
@@ -529,16 +536,15 @@ CONFIG_MII=y
529# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 536# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
530# CONFIG_B44 is not set 537# CONFIG_B44 is not set
531# CONFIG_KS8842 is not set 538# CONFIG_KS8842 is not set
539# CONFIG_KS8851_MLL is not set
540# CONFIG_XILINX_EMACLITE is not set
532CONFIG_FS_ENET=y 541CONFIG_FS_ENET=y
533# CONFIG_FS_ENET_HAS_SCC is not set 542# CONFIG_FS_ENET_HAS_SCC is not set
534CONFIG_FS_ENET_HAS_FEC=y 543CONFIG_FS_ENET_HAS_FEC=y
535CONFIG_FS_ENET_MDIO_FEC=y 544CONFIG_FS_ENET_MDIO_FEC=y
536# CONFIG_NETDEV_1000 is not set 545# CONFIG_NETDEV_1000 is not set
537# CONFIG_NETDEV_10000 is not set 546# CONFIG_NETDEV_10000 is not set
538 547CONFIG_WLAN=y
539#
540# Wireless LAN
541#
542# CONFIG_WLAN_PRE80211 is not set 548# CONFIG_WLAN_PRE80211 is not set
543# CONFIG_WLAN_80211 is not set 549# CONFIG_WLAN_80211 is not set
544 550
@@ -611,7 +617,6 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
611# CONFIG_POWER_SUPPLY is not set 617# CONFIG_POWER_SUPPLY is not set
612# CONFIG_HWMON is not set 618# CONFIG_HWMON is not set
613# CONFIG_THERMAL is not set 619# CONFIG_THERMAL is not set
614# CONFIG_THERMAL_HWMON is not set
615# CONFIG_WATCHDOG is not set 620# CONFIG_WATCHDOG is not set
616CONFIG_SSB_POSSIBLE=y 621CONFIG_SSB_POSSIBLE=y
617 622
@@ -672,6 +677,7 @@ CONFIG_SSB_POSSIBLE=y
672# CONFIG_GFS2_FS is not set 677# CONFIG_GFS2_FS is not set
673# CONFIG_OCFS2_FS is not set 678# CONFIG_OCFS2_FS is not set
674# CONFIG_BTRFS_FS is not set 679# CONFIG_BTRFS_FS is not set
680# CONFIG_NILFS2_FS is not set
675CONFIG_FILE_LOCKING=y 681CONFIG_FILE_LOCKING=y
676CONFIG_FSNOTIFY=y 682CONFIG_FSNOTIFY=y
677# CONFIG_DNOTIFY is not set 683# CONFIG_DNOTIFY is not set
@@ -731,7 +737,6 @@ CONFIG_CRAMFS=y
731# CONFIG_ROMFS_FS is not set 737# CONFIG_ROMFS_FS is not set
732# CONFIG_SYSV_FS is not set 738# CONFIG_SYSV_FS is not set
733# CONFIG_UFS_FS is not set 739# CONFIG_UFS_FS is not set
734# CONFIG_NILFS2_FS is not set
735CONFIG_NETWORK_FILESYSTEMS=y 740CONFIG_NETWORK_FILESYSTEMS=y
736CONFIG_NFS_FS=y 741CONFIG_NFS_FS=y
737CONFIG_NFS_V3=y 742CONFIG_NFS_V3=y
@@ -803,6 +808,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
803CONFIG_ENABLE_MUST_CHECK=y 808CONFIG_ENABLE_MUST_CHECK=y
804CONFIG_FRAME_WARN=1024 809CONFIG_FRAME_WARN=1024
805CONFIG_MAGIC_SYSRQ=y 810CONFIG_MAGIC_SYSRQ=y
811# CONFIG_STRIP_ASM_SYMS is not set
806# CONFIG_UNUSED_SYMBOLS is not set 812# CONFIG_UNUSED_SYMBOLS is not set
807# CONFIG_DEBUG_FS is not set 813# CONFIG_DEBUG_FS is not set
808# CONFIG_HEADERS_CHECK is not set 814# CONFIG_HEADERS_CHECK is not set
@@ -820,6 +826,7 @@ CONFIG_SCHED_DEBUG=y
820# CONFIG_DEBUG_OBJECTS is not set 826# CONFIG_DEBUG_OBJECTS is not set
821# CONFIG_SLUB_DEBUG_ON is not set 827# CONFIG_SLUB_DEBUG_ON is not set
822# CONFIG_SLUB_STATS is not set 828# CONFIG_SLUB_STATS is not set
829# CONFIG_DEBUG_KMEMLEAK is not set
823# CONFIG_DEBUG_SPINLOCK is not set 830# CONFIG_DEBUG_SPINLOCK is not set
824# CONFIG_DEBUG_MUTEXES is not set 831# CONFIG_DEBUG_MUTEXES is not set
825# CONFIG_DEBUG_LOCK_ALLOC is not set 832# CONFIG_DEBUG_LOCK_ALLOC is not set
@@ -836,10 +843,12 @@ CONFIG_DEBUG_INFO=y
836# CONFIG_DEBUG_LIST is not set 843# CONFIG_DEBUG_LIST is not set
837# CONFIG_DEBUG_SG is not set 844# CONFIG_DEBUG_SG is not set
838# CONFIG_DEBUG_NOTIFIERS is not set 845# CONFIG_DEBUG_NOTIFIERS is not set
846# CONFIG_DEBUG_CREDENTIALS is not set
839# CONFIG_RCU_TORTURE_TEST is not set 847# CONFIG_RCU_TORTURE_TEST is not set
840# CONFIG_RCU_CPU_STALL_DETECTOR is not set 848# CONFIG_RCU_CPU_STALL_DETECTOR is not set
841# CONFIG_BACKTRACE_SELF_TEST is not set 849# CONFIG_BACKTRACE_SELF_TEST is not set
842# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 850# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
851# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
843# CONFIG_FAULT_INJECTION is not set 852# CONFIG_FAULT_INJECTION is not set
844# CONFIG_LATENCYTOP is not set 853# CONFIG_LATENCYTOP is not set
845# CONFIG_DEBUG_PAGEALLOC is not set 854# CONFIG_DEBUG_PAGEALLOC is not set
@@ -861,10 +870,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
861# CONFIG_KMEMTRACE is not set 870# CONFIG_KMEMTRACE is not set
862# CONFIG_WORKQUEUE_TRACER is not set 871# CONFIG_WORKQUEUE_TRACER is not set
863# CONFIG_BLK_DEV_IO_TRACE is not set 872# CONFIG_BLK_DEV_IO_TRACE is not set
873# CONFIG_DMA_API_DEBUG is not set
864# CONFIG_SAMPLES is not set 874# CONFIG_SAMPLES is not set
865CONFIG_HAVE_ARCH_KGDB=y 875CONFIG_HAVE_ARCH_KGDB=y
866# CONFIG_KGDB is not set 876# CONFIG_KGDB is not set
867# CONFIG_KMEMCHECK is not set
868# CONFIG_PPC_DISABLE_WERROR is not set 877# CONFIG_PPC_DISABLE_WERROR is not set
869CONFIG_PPC_WERROR=y 878CONFIG_PPC_WERROR=y
870CONFIG_PRINT_STACK_DEPTH=64 879CONFIG_PRINT_STACK_DEPTH=64
diff --git a/arch/powerpc/configs/linkstation_defconfig b/arch/powerpc/configs/linkstation_defconfig
index 45671e7dd2c7..63c3e8de8f16 100644
--- a/arch/powerpc/configs/linkstation_defconfig
+++ b/arch/powerpc/configs/linkstation_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:31:50 2009 4# Thu Nov 5 08:20:08 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -34,6 +34,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
34CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
37CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
38CONFIG_STACKTRACE_SUPPORT=y 39CONFIG_STACKTRACE_SUPPORT=y
39CONFIG_HAVE_LATENCYTOP_SUPPORT=y 40CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -83,11 +84,12 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
83# 84#
84# RCU Subsystem 85# RCU Subsystem
85# 86#
86CONFIG_CLASSIC_RCU=y 87CONFIG_TREE_RCU=y
87# CONFIG_TREE_RCU is not set 88# CONFIG_TREE_PREEMPT_RCU is not set
88# CONFIG_PREEMPT_RCU is not set 89# CONFIG_RCU_TRACE is not set
90CONFIG_RCU_FANOUT=32
91# CONFIG_RCU_FANOUT_EXACT is not set
89# CONFIG_TREE_RCU_TRACE is not set 92# CONFIG_TREE_RCU_TRACE is not set
90# CONFIG_PREEMPT_RCU_TRACE is not set
91CONFIG_IKCONFIG=y 93CONFIG_IKCONFIG=y
92CONFIG_IKCONFIG_PROC=y 94CONFIG_IKCONFIG_PROC=y
93CONFIG_LOG_BUF_SHIFT=14 95CONFIG_LOG_BUF_SHIFT=14
@@ -131,22 +133,21 @@ CONFIG_TIMERFD=y
131CONFIG_EVENTFD=y 133CONFIG_EVENTFD=y
132CONFIG_SHMEM=y 134CONFIG_SHMEM=y
133CONFIG_AIO=y 135CONFIG_AIO=y
134CONFIG_HAVE_PERF_COUNTERS=y 136CONFIG_HAVE_PERF_EVENTS=y
135 137
136# 138#
137# Performance Counters 139# Kernel Performance Events And Counters
138# 140#
141# CONFIG_PERF_EVENTS is not set
139# CONFIG_PERF_COUNTERS is not set 142# CONFIG_PERF_COUNTERS is not set
140CONFIG_VM_EVENT_COUNTERS=y 143CONFIG_VM_EVENT_COUNTERS=y
141CONFIG_PCI_QUIRKS=y 144CONFIG_PCI_QUIRKS=y
142CONFIG_SLUB_DEBUG=y 145CONFIG_SLUB_DEBUG=y
143# CONFIG_STRIP_ASM_SYMS is not set
144# CONFIG_COMPAT_BRK is not set 146# CONFIG_COMPAT_BRK is not set
145# CONFIG_SLAB is not set 147# CONFIG_SLAB is not set
146CONFIG_SLUB=y 148CONFIG_SLUB=y
147# CONFIG_SLOB is not set 149# CONFIG_SLOB is not set
148# CONFIG_PROFILING is not set 150# CONFIG_PROFILING is not set
149# CONFIG_MARKERS is not set
150CONFIG_HAVE_OPROFILE=y 151CONFIG_HAVE_OPROFILE=y
151# CONFIG_KPROBES is not set 152# CONFIG_KPROBES is not set
152CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 153CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -154,11 +155,13 @@ CONFIG_HAVE_IOREMAP_PROT=y
154CONFIG_HAVE_KPROBES=y 155CONFIG_HAVE_KPROBES=y
155CONFIG_HAVE_KRETPROBES=y 156CONFIG_HAVE_KRETPROBES=y
156CONFIG_HAVE_ARCH_TRACEHOOK=y 157CONFIG_HAVE_ARCH_TRACEHOOK=y
158CONFIG_HAVE_DMA_ATTRS=y
159CONFIG_HAVE_DMA_API_DEBUG=y
157 160
158# 161#
159# GCOV-based kernel profiling 162# GCOV-based kernel profiling
160# 163#
161# CONFIG_SLOW_WORK is not set 164CONFIG_SLOW_WORK=y
162# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 165# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
163CONFIG_SLABINFO=y 166CONFIG_SLABINFO=y
164CONFIG_RT_MUTEXES=y 167CONFIG_RT_MUTEXES=y
@@ -258,6 +261,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
258CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 261CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
259# CONFIG_KEXEC is not set 262# CONFIG_KEXEC is not set
260# CONFIG_CRASH_DUMP is not set 263# CONFIG_CRASH_DUMP is not set
264CONFIG_MAX_ACTIVE_REGIONS=32
261CONFIG_ARCH_FLATMEM_ENABLE=y 265CONFIG_ARCH_FLATMEM_ENABLE=y
262CONFIG_ARCH_POPULATES_NODE_MAP=y 266CONFIG_ARCH_POPULATES_NODE_MAP=y
263CONFIG_SELECT_MEMORY_MODEL=y 267CONFIG_SELECT_MEMORY_MODEL=y
@@ -275,6 +279,7 @@ CONFIG_BOUNCE=y
275CONFIG_VIRT_TO_BUS=y 279CONFIG_VIRT_TO_BUS=y
276CONFIG_HAVE_MLOCK=y 280CONFIG_HAVE_MLOCK=y
277CONFIG_HAVE_MLOCKED_PAGE_BIT=y 281CONFIG_HAVE_MLOCKED_PAGE_BIT=y
282# CONFIG_KSM is not set
278CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 283CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
279CONFIG_PPC_4K_PAGES=y 284CONFIG_PPC_4K_PAGES=y
280# CONFIG_PPC_16K_PAGES is not set 285# CONFIG_PPC_16K_PAGES is not set
@@ -482,6 +487,7 @@ CONFIG_IP_NF_ARPFILTER=m
482CONFIG_IP_NF_ARP_MANGLE=m 487CONFIG_IP_NF_ARP_MANGLE=m
483# CONFIG_IP_DCCP is not set 488# CONFIG_IP_DCCP is not set
484# CONFIG_IP_SCTP is not set 489# CONFIG_IP_SCTP is not set
490# CONFIG_RDS is not set
485# CONFIG_TIPC is not set 491# CONFIG_TIPC is not set
486# CONFIG_ATM is not set 492# CONFIG_ATM is not set
487# CONFIG_BRIDGE is not set 493# CONFIG_BRIDGE is not set
@@ -511,6 +517,7 @@ CONFIG_IP_NF_ARP_MANGLE=m
511# CONFIG_AF_RXRPC is not set 517# CONFIG_AF_RXRPC is not set
512CONFIG_WIRELESS=y 518CONFIG_WIRELESS=y
513# CONFIG_CFG80211 is not set 519# CONFIG_CFG80211 is not set
520CONFIG_CFG80211_DEFAULT_PS_VALUE=0
514CONFIG_WIRELESS_OLD_REGULATORY=y 521CONFIG_WIRELESS_OLD_REGULATORY=y
515CONFIG_WIRELESS_EXT=y 522CONFIG_WIRELESS_EXT=y
516CONFIG_WIRELESS_EXT_SYSFS=y 523CONFIG_WIRELESS_EXT_SYSFS=y
@@ -519,7 +526,6 @@ CONFIG_WIRELESS_EXT_SYSFS=y
519# 526#
520# CFG80211 needs to be enabled for MAC80211 527# CFG80211 needs to be enabled for MAC80211
521# 528#
522CONFIG_MAC80211_DEFAULT_PS_VALUE=0
523# CONFIG_WIMAX is not set 529# CONFIG_WIMAX is not set
524# CONFIG_RFKILL is not set 530# CONFIG_RFKILL is not set
525# CONFIG_NET_9P is not set 531# CONFIG_NET_9P is not set
@@ -532,6 +538,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
532# Generic Driver Options 538# Generic Driver Options
533# 539#
534CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 540CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
541# CONFIG_DEVTMPFS is not set
535CONFIG_STANDALONE=y 542CONFIG_STANDALONE=y
536CONFIG_PREVENT_FIRMWARE_BUILD=y 543CONFIG_PREVENT_FIRMWARE_BUILD=y
537CONFIG_FW_LOADER=y 544CONFIG_FW_LOADER=y
@@ -543,9 +550,9 @@ CONFIG_EXTRA_FIRMWARE=""
543# CONFIG_CONNECTOR is not set 550# CONFIG_CONNECTOR is not set
544CONFIG_MTD=y 551CONFIG_MTD=y
545# CONFIG_MTD_DEBUG is not set 552# CONFIG_MTD_DEBUG is not set
553# CONFIG_MTD_TESTS is not set
546CONFIG_MTD_CONCAT=y 554CONFIG_MTD_CONCAT=y
547CONFIG_MTD_PARTITIONS=y 555CONFIG_MTD_PARTITIONS=y
548# CONFIG_MTD_TESTS is not set
549# CONFIG_MTD_REDBOOT_PARTS is not set 556# CONFIG_MTD_REDBOOT_PARTS is not set
550CONFIG_MTD_CMDLINE_PARTS=y 557CONFIG_MTD_CMDLINE_PARTS=y
551CONFIG_MTD_OF_PARTS=y 558CONFIG_MTD_OF_PARTS=y
@@ -711,6 +718,7 @@ CONFIG_SCSI_LOWLEVEL=y
711# CONFIG_ISCSI_TCP is not set 718# CONFIG_ISCSI_TCP is not set
712# CONFIG_SCSI_CXGB3_ISCSI is not set 719# CONFIG_SCSI_CXGB3_ISCSI is not set
713# CONFIG_SCSI_BNX2_ISCSI is not set 720# CONFIG_SCSI_BNX2_ISCSI is not set
721# CONFIG_BE2ISCSI is not set
714# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 722# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
715# CONFIG_SCSI_3W_9XXX is not set 723# CONFIG_SCSI_3W_9XXX is not set
716# CONFIG_SCSI_ACARD is not set 724# CONFIG_SCSI_ACARD is not set
@@ -750,11 +758,14 @@ CONFIG_SCSI_LOWLEVEL=y
750# CONFIG_SCSI_DC390T is not set 758# CONFIG_SCSI_DC390T is not set
751# CONFIG_SCSI_NSP32 is not set 759# CONFIG_SCSI_NSP32 is not set
752# CONFIG_SCSI_DEBUG is not set 760# CONFIG_SCSI_DEBUG is not set
761# CONFIG_SCSI_PMCRAID is not set
753# CONFIG_SCSI_SRP is not set 762# CONFIG_SCSI_SRP is not set
763# CONFIG_SCSI_BFA_FC is not set
754# CONFIG_SCSI_DH is not set 764# CONFIG_SCSI_DH is not set
755# CONFIG_SCSI_OSD_INITIATOR is not set 765# CONFIG_SCSI_OSD_INITIATOR is not set
756CONFIG_ATA=y 766CONFIG_ATA=y
757# CONFIG_ATA_NONSTANDARD is not set 767# CONFIG_ATA_NONSTANDARD is not set
768CONFIG_ATA_VERBOSE_ERROR=y
758CONFIG_SATA_PMP=y 769CONFIG_SATA_PMP=y
759# CONFIG_SATA_AHCI is not set 770# CONFIG_SATA_AHCI is not set
760# CONFIG_SATA_SIL24 is not set 771# CONFIG_SATA_SIL24 is not set
@@ -777,6 +788,7 @@ CONFIG_ATA_SFF=y
777# CONFIG_PATA_ALI is not set 788# CONFIG_PATA_ALI is not set
778# CONFIG_PATA_AMD is not set 789# CONFIG_PATA_AMD is not set
779# CONFIG_PATA_ARTOP is not set 790# CONFIG_PATA_ARTOP is not set
791# CONFIG_PATA_ATP867X is not set
780# CONFIG_PATA_ATIIXP is not set 792# CONFIG_PATA_ATIIXP is not set
781# CONFIG_PATA_CMD640_PCI is not set 793# CONFIG_PATA_CMD640_PCI is not set
782# CONFIG_PATA_CMD64X is not set 794# CONFIG_PATA_CMD64X is not set
@@ -804,6 +816,7 @@ CONFIG_PATA_IT821X=y
804# CONFIG_PATA_OPTIDMA is not set 816# CONFIG_PATA_OPTIDMA is not set
805# CONFIG_PATA_PDC_OLD is not set 817# CONFIG_PATA_PDC_OLD is not set
806# CONFIG_PATA_RADISYS is not set 818# CONFIG_PATA_RADISYS is not set
819# CONFIG_PATA_RDC is not set
807# CONFIG_PATA_RZ1000 is not set 820# CONFIG_PATA_RZ1000 is not set
808# CONFIG_PATA_SC1200 is not set 821# CONFIG_PATA_SC1200 is not set
809# CONFIG_PATA_SERVERWORKS is not set 822# CONFIG_PATA_SERVERWORKS is not set
@@ -870,7 +883,9 @@ CONFIG_TULIP_MMIO=y
870# CONFIG_NET_PCI is not set 883# CONFIG_NET_PCI is not set
871# CONFIG_B44 is not set 884# CONFIG_B44 is not set
872# CONFIG_KS8842 is not set 885# CONFIG_KS8842 is not set
886# CONFIG_KS8851_MLL is not set
873# CONFIG_ATL2 is not set 887# CONFIG_ATL2 is not set
888# CONFIG_XILINX_EMACLITE is not set
874CONFIG_NETDEV_1000=y 889CONFIG_NETDEV_1000=y
875# CONFIG_ACENIC is not set 890# CONFIG_ACENIC is not set
876# CONFIG_DL2K is not set 891# CONFIG_DL2K is not set
@@ -918,10 +933,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
918# CONFIG_SFC is not set 933# CONFIG_SFC is not set
919# CONFIG_BE2NET is not set 934# CONFIG_BE2NET is not set
920# CONFIG_TR is not set 935# CONFIG_TR is not set
921 936CONFIG_WLAN=y
922#
923# Wireless LAN
924#
925# CONFIG_WLAN_PRE80211 is not set 937# CONFIG_WLAN_PRE80211 is not set
926# CONFIG_WLAN_80211 is not set 938# CONFIG_WLAN_80211 is not set
927 939
@@ -1043,6 +1055,7 @@ CONFIG_HW_RANDOM=y
1043CONFIG_DEVPORT=y 1055CONFIG_DEVPORT=y
1044CONFIG_I2C=y 1056CONFIG_I2C=y
1045CONFIG_I2C_BOARDINFO=y 1057CONFIG_I2C_BOARDINFO=y
1058CONFIG_I2C_COMPAT=y
1046CONFIG_I2C_CHARDEV=y 1059CONFIG_I2C_CHARDEV=y
1047CONFIG_I2C_HELPER_AUTO=y 1060CONFIG_I2C_HELPER_AUTO=y
1048 1061
@@ -1097,9 +1110,6 @@ CONFIG_I2C_MPC=y
1097# Miscellaneous I2C Chip support 1110# Miscellaneous I2C Chip support
1098# 1111#
1099# CONFIG_DS1682 is not set 1112# CONFIG_DS1682 is not set
1100# CONFIG_SENSORS_PCF8574 is not set
1101# CONFIG_PCF8575 is not set
1102# CONFIG_SENSORS_PCA9539 is not set
1103# CONFIG_SENSORS_TSL2550 is not set 1113# CONFIG_SENSORS_TSL2550 is not set
1104# CONFIG_I2C_DEBUG_CORE is not set 1114# CONFIG_I2C_DEBUG_CORE is not set
1105# CONFIG_I2C_DEBUG_ALGO is not set 1115# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1117,6 +1127,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
1117# CONFIG_POWER_SUPPLY is not set 1127# CONFIG_POWER_SUPPLY is not set
1118CONFIG_HWMON=y 1128CONFIG_HWMON=y
1119# CONFIG_HWMON_VID is not set 1129# CONFIG_HWMON_VID is not set
1130# CONFIG_HWMON_DEBUG_CHIP is not set
1131
1132#
1133# Native drivers
1134#
1120# CONFIG_SENSORS_AD7414 is not set 1135# CONFIG_SENSORS_AD7414 is not set
1121# CONFIG_SENSORS_AD7418 is not set 1136# CONFIG_SENSORS_AD7418 is not set
1122# CONFIG_SENSORS_ADM1021 is not set 1137# CONFIG_SENSORS_ADM1021 is not set
@@ -1166,6 +1181,7 @@ CONFIG_HWMON=y
1166# CONFIG_SENSORS_ADS7828 is not set 1181# CONFIG_SENSORS_ADS7828 is not set
1167# CONFIG_SENSORS_THMC50 is not set 1182# CONFIG_SENSORS_THMC50 is not set
1168# CONFIG_SENSORS_TMP401 is not set 1183# CONFIG_SENSORS_TMP401 is not set
1184# CONFIG_SENSORS_TMP421 is not set
1169# CONFIG_SENSORS_VIA686A is not set 1185# CONFIG_SENSORS_VIA686A is not set
1170# CONFIG_SENSORS_VT1211 is not set 1186# CONFIG_SENSORS_VT1211 is not set
1171# CONFIG_SENSORS_VT8231 is not set 1187# CONFIG_SENSORS_VT8231 is not set
@@ -1177,9 +1193,7 @@ CONFIG_HWMON=y
1177# CONFIG_SENSORS_W83L786NG is not set 1193# CONFIG_SENSORS_W83L786NG is not set
1178# CONFIG_SENSORS_W83627HF is not set 1194# CONFIG_SENSORS_W83627HF is not set
1179# CONFIG_SENSORS_W83627EHF is not set 1195# CONFIG_SENSORS_W83627EHF is not set
1180# CONFIG_HWMON_DEBUG_CHIP is not set
1181# CONFIG_THERMAL is not set 1196# CONFIG_THERMAL is not set
1182# CONFIG_THERMAL_HWMON is not set
1183# CONFIG_WATCHDOG is not set 1197# CONFIG_WATCHDOG is not set
1184CONFIG_SSB_POSSIBLE=y 1198CONFIG_SSB_POSSIBLE=y
1185 1199
@@ -1198,6 +1212,7 @@ CONFIG_SSB_POSSIBLE=y
1198# CONFIG_MFD_TMIO is not set 1212# CONFIG_MFD_TMIO is not set
1199# CONFIG_PMIC_DA903X is not set 1213# CONFIG_PMIC_DA903X is not set
1200# CONFIG_MFD_WM8400 is not set 1214# CONFIG_MFD_WM8400 is not set
1215# CONFIG_MFD_WM831X is not set
1201# CONFIG_MFD_WM8350_I2C is not set 1216# CONFIG_MFD_WM8350_I2C is not set
1202# CONFIG_MFD_PCF50633 is not set 1217# CONFIG_MFD_PCF50633 is not set
1203# CONFIG_AB3100_CORE is not set 1218# CONFIG_AB3100_CORE is not set
@@ -1208,6 +1223,7 @@ CONFIG_SSB_POSSIBLE=y
1208# Graphics support 1223# Graphics support
1209# 1224#
1210# CONFIG_AGP is not set 1225# CONFIG_AGP is not set
1226CONFIG_VGA_ARB=y
1211# CONFIG_DRM is not set 1227# CONFIG_DRM is not set
1212# CONFIG_VGASTATE is not set 1228# CONFIG_VGASTATE is not set
1213CONFIG_VIDEO_OUTPUT_CONTROL=m 1229CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -1227,7 +1243,6 @@ CONFIG_DUMMY_CONSOLE=y
1227# CONFIG_SOUND is not set 1243# CONFIG_SOUND is not set
1228CONFIG_HID_SUPPORT=y 1244CONFIG_HID_SUPPORT=y
1229CONFIG_HID=m 1245CONFIG_HID=m
1230# CONFIG_HID_DEBUG is not set
1231# CONFIG_HIDRAW is not set 1246# CONFIG_HIDRAW is not set
1232 1247
1233# 1248#
@@ -1271,6 +1286,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1271# CONFIG_USB_OXU210HP_HCD is not set 1286# CONFIG_USB_OXU210HP_HCD is not set
1272# CONFIG_USB_ISP116X_HCD is not set 1287# CONFIG_USB_ISP116X_HCD is not set
1273# CONFIG_USB_ISP1760_HCD is not set 1288# CONFIG_USB_ISP1760_HCD is not set
1289# CONFIG_USB_ISP1362_HCD is not set
1274CONFIG_USB_OHCI_HCD=y 1290CONFIG_USB_OHCI_HCD=y
1275CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1291CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
1276# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 1292# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
@@ -1500,6 +1516,7 @@ CONFIG_XFS_FS=m
1500# CONFIG_GFS2_FS is not set 1516# CONFIG_GFS2_FS is not set
1501# CONFIG_OCFS2_FS is not set 1517# CONFIG_OCFS2_FS is not set
1502# CONFIG_BTRFS_FS is not set 1518# CONFIG_BTRFS_FS is not set
1519# CONFIG_NILFS2_FS is not set
1503CONFIG_FILE_LOCKING=y 1520CONFIG_FILE_LOCKING=y
1504CONFIG_FSNOTIFY=y 1521CONFIG_FSNOTIFY=y
1505CONFIG_DNOTIFY=y 1522CONFIG_DNOTIFY=y
@@ -1567,7 +1584,6 @@ CONFIG_MISC_FILESYSTEMS=y
1567# CONFIG_ROMFS_FS is not set 1584# CONFIG_ROMFS_FS is not set
1568# CONFIG_SYSV_FS is not set 1585# CONFIG_SYSV_FS is not set
1569# CONFIG_UFS_FS is not set 1586# CONFIG_UFS_FS is not set
1570# CONFIG_NILFS2_FS is not set
1571CONFIG_NETWORK_FILESYSTEMS=y 1587CONFIG_NETWORK_FILESYSTEMS=y
1572CONFIG_NFS_FS=y 1588CONFIG_NFS_FS=y
1573CONFIG_NFS_V3=y 1589CONFIG_NFS_V3=y
@@ -1681,6 +1697,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1681CONFIG_ENABLE_MUST_CHECK=y 1697CONFIG_ENABLE_MUST_CHECK=y
1682CONFIG_FRAME_WARN=1024 1698CONFIG_FRAME_WARN=1024
1683CONFIG_MAGIC_SYSRQ=y 1699CONFIG_MAGIC_SYSRQ=y
1700# CONFIG_STRIP_ASM_SYMS is not set
1684# CONFIG_UNUSED_SYMBOLS is not set 1701# CONFIG_UNUSED_SYMBOLS is not set
1685# CONFIG_DEBUG_FS is not set 1702# CONFIG_DEBUG_FS is not set
1686# CONFIG_HEADERS_CHECK is not set 1703# CONFIG_HEADERS_CHECK is not set
@@ -1698,6 +1715,7 @@ CONFIG_SCHED_DEBUG=y
1698# CONFIG_DEBUG_OBJECTS is not set 1715# CONFIG_DEBUG_OBJECTS is not set
1699# CONFIG_SLUB_DEBUG_ON is not set 1716# CONFIG_SLUB_DEBUG_ON is not set
1700# CONFIG_SLUB_STATS is not set 1717# CONFIG_SLUB_STATS is not set
1718# CONFIG_DEBUG_KMEMLEAK is not set
1701# CONFIG_DEBUG_RT_MUTEXES is not set 1719# CONFIG_DEBUG_RT_MUTEXES is not set
1702# CONFIG_RT_MUTEX_TESTER is not set 1720# CONFIG_RT_MUTEX_TESTER is not set
1703# CONFIG_DEBUG_SPINLOCK is not set 1721# CONFIG_DEBUG_SPINLOCK is not set
@@ -1716,10 +1734,12 @@ CONFIG_DEBUG_MEMORY_INIT=y
1716# CONFIG_DEBUG_LIST is not set 1734# CONFIG_DEBUG_LIST is not set
1717# CONFIG_DEBUG_SG is not set 1735# CONFIG_DEBUG_SG is not set
1718# CONFIG_DEBUG_NOTIFIERS is not set 1736# CONFIG_DEBUG_NOTIFIERS is not set
1737# CONFIG_DEBUG_CREDENTIALS is not set
1719# CONFIG_RCU_TORTURE_TEST is not set 1738# CONFIG_RCU_TORTURE_TEST is not set
1720# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1739# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1721# CONFIG_BACKTRACE_SELF_TEST is not set 1740# CONFIG_BACKTRACE_SELF_TEST is not set
1722# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1741# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1742# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1723# CONFIG_FAULT_INJECTION is not set 1743# CONFIG_FAULT_INJECTION is not set
1724# CONFIG_LATENCYTOP is not set 1744# CONFIG_LATENCYTOP is not set
1725CONFIG_SYSCTL_SYSCALL_CHECK=y 1745CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1742,6 +1762,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
1742# CONFIG_KMEMTRACE is not set 1762# CONFIG_KMEMTRACE is not set
1743# CONFIG_WORKQUEUE_TRACER is not set 1763# CONFIG_WORKQUEUE_TRACER is not set
1744# CONFIG_BLK_DEV_IO_TRACE is not set 1764# CONFIG_BLK_DEV_IO_TRACE is not set
1765# CONFIG_DMA_API_DEBUG is not set
1745# CONFIG_SAMPLES is not set 1766# CONFIG_SAMPLES is not set
1746CONFIG_HAVE_ARCH_KGDB=y 1767CONFIG_HAVE_ARCH_KGDB=y
1747# CONFIG_KGDB is not set 1768# CONFIG_KGDB is not set
@@ -1771,7 +1792,6 @@ CONFIG_CRYPTO=y
1771# 1792#
1772# Crypto core or helper 1793# Crypto core or helper
1773# 1794#
1774# CONFIG_CRYPTO_FIPS is not set
1775CONFIG_CRYPTO_ALGAPI=y 1795CONFIG_CRYPTO_ALGAPI=y
1776CONFIG_CRYPTO_ALGAPI2=y 1796CONFIG_CRYPTO_ALGAPI2=y
1777CONFIG_CRYPTO_AEAD2=y 1797CONFIG_CRYPTO_AEAD2=y
@@ -1813,11 +1833,13 @@ CONFIG_CRYPTO_PCBC=m
1813# 1833#
1814# CONFIG_CRYPTO_HMAC is not set 1834# CONFIG_CRYPTO_HMAC is not set
1815# CONFIG_CRYPTO_XCBC is not set 1835# CONFIG_CRYPTO_XCBC is not set
1836# CONFIG_CRYPTO_VMAC is not set
1816 1837
1817# 1838#
1818# Digest 1839# Digest
1819# 1840#
1820CONFIG_CRYPTO_CRC32C=m 1841CONFIG_CRYPTO_CRC32C=m
1842# CONFIG_CRYPTO_GHASH is not set
1821CONFIG_CRYPTO_MD4=m 1843CONFIG_CRYPTO_MD4=m
1822CONFIG_CRYPTO_MD5=y 1844CONFIG_CRYPTO_MD5=y
1823CONFIG_CRYPTO_MICHAEL_MIC=m 1845CONFIG_CRYPTO_MICHAEL_MIC=m
diff --git a/arch/powerpc/configs/mgcoge_defconfig b/arch/powerpc/configs/mgcoge_defconfig
index 30b68bfacebf..520b04a0def9 100644
--- a/arch/powerpc/configs/mgcoge_defconfig
+++ b/arch/powerpc/configs/mgcoge_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.31-rc5 3# Linux kernel version: 2.6.32-rc5
4# Fri Aug 7 08:19:15 2009 4# Thu Nov 5 08:20:09 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -34,6 +34,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
34CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
37CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
38CONFIG_STACKTRACE_SUPPORT=y 39CONFIG_STACKTRACE_SUPPORT=y
39CONFIG_HAVE_LATENCYTOP_SUPPORT=y 40CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -84,11 +85,12 @@ CONFIG_SYSVIPC_SYSCTL=y
84# 85#
85# RCU Subsystem 86# RCU Subsystem
86# 87#
87CONFIG_CLASSIC_RCU=y 88CONFIG_TREE_RCU=y
88# CONFIG_TREE_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
89# CONFIG_PREEMPT_RCU is not set 90# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set
90# CONFIG_TREE_RCU_TRACE is not set 93# CONFIG_TREE_RCU_TRACE is not set
91# CONFIG_PREEMPT_RCU_TRACE is not set
92CONFIG_IKCONFIG=y 94CONFIG_IKCONFIG=y
93CONFIG_IKCONFIG_PROC=y 95CONFIG_IKCONFIG_PROC=y
94CONFIG_LOG_BUF_SHIFT=14 96CONFIG_LOG_BUF_SHIFT=14
@@ -123,28 +125,29 @@ CONFIG_TIMERFD=y
123CONFIG_EVENTFD=y 125CONFIG_EVENTFD=y
124CONFIG_SHMEM=y 126CONFIG_SHMEM=y
125CONFIG_AIO=y 127CONFIG_AIO=y
126CONFIG_HAVE_PERF_COUNTERS=y 128CONFIG_HAVE_PERF_EVENTS=y
127 129
128# 130#
129# Performance Counters 131# Kernel Performance Events And Counters
130# 132#
133# CONFIG_PERF_EVENTS is not set
131# CONFIG_PERF_COUNTERS is not set 134# CONFIG_PERF_COUNTERS is not set
132CONFIG_VM_EVENT_COUNTERS=y 135CONFIG_VM_EVENT_COUNTERS=y
133CONFIG_PCI_QUIRKS=y 136CONFIG_PCI_QUIRKS=y
134# CONFIG_STRIP_ASM_SYMS is not set
135CONFIG_COMPAT_BRK=y 137CONFIG_COMPAT_BRK=y
136CONFIG_SLAB=y 138CONFIG_SLAB=y
137# CONFIG_SLUB is not set 139# CONFIG_SLUB is not set
138# CONFIG_SLOB is not set 140# CONFIG_SLOB is not set
139# CONFIG_PROFILING is not set 141# CONFIG_PROFILING is not set
140# CONFIG_MARKERS is not set
141CONFIG_HAVE_OPROFILE=y 142CONFIG_HAVE_OPROFILE=y
142CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 143CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
143CONFIG_HAVE_IOREMAP_PROT=y 144CONFIG_HAVE_IOREMAP_PROT=y
144CONFIG_HAVE_KPROBES=y 145CONFIG_HAVE_KPROBES=y
145CONFIG_HAVE_KRETPROBES=y 146CONFIG_HAVE_KRETPROBES=y
146CONFIG_HAVE_ARCH_TRACEHOOK=y 147CONFIG_HAVE_ARCH_TRACEHOOK=y
148CONFIG_HAVE_DMA_ATTRS=y
147CONFIG_HAVE_CLK=y 149CONFIG_HAVE_CLK=y
150CONFIG_HAVE_DMA_API_DEBUG=y
148 151
149# 152#
150# GCOV-based kernel profiling 153# GCOV-based kernel profiling
@@ -247,6 +250,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
247CONFIG_ARCH_HAS_WALK_MEMORY=y 250CONFIG_ARCH_HAS_WALK_MEMORY=y
248CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 251CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
249# CONFIG_CRASH_DUMP is not set 252# CONFIG_CRASH_DUMP is not set
253CONFIG_MAX_ACTIVE_REGIONS=32
250CONFIG_ARCH_FLATMEM_ENABLE=y 254CONFIG_ARCH_FLATMEM_ENABLE=y
251CONFIG_ARCH_POPULATES_NODE_MAP=y 255CONFIG_ARCH_POPULATES_NODE_MAP=y
252CONFIG_FLATMEM=y 256CONFIG_FLATMEM=y
@@ -260,6 +264,7 @@ CONFIG_BOUNCE=y
260CONFIG_VIRT_TO_BUS=y 264CONFIG_VIRT_TO_BUS=y
261CONFIG_HAVE_MLOCK=y 265CONFIG_HAVE_MLOCK=y
262CONFIG_HAVE_MLOCKED_PAGE_BIT=y 266CONFIG_HAVE_MLOCKED_PAGE_BIT=y
267# CONFIG_KSM is not set
263CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 268CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
264CONFIG_PPC_4K_PAGES=y 269CONFIG_PPC_4K_PAGES=y
265# CONFIG_PPC_16K_PAGES is not set 270# CONFIG_PPC_16K_PAGES is not set
@@ -390,6 +395,7 @@ CONFIG_NETFILTER_ADVANCED=y
390# CONFIG_BT is not set 395# CONFIG_BT is not set
391CONFIG_WIRELESS=y 396CONFIG_WIRELESS=y
392# CONFIG_CFG80211 is not set 397# CONFIG_CFG80211 is not set
398CONFIG_CFG80211_DEFAULT_PS_VALUE=0
393CONFIG_WIRELESS_OLD_REGULATORY=y 399CONFIG_WIRELESS_OLD_REGULATORY=y
394# CONFIG_WIRELESS_EXT is not set 400# CONFIG_WIRELESS_EXT is not set
395# CONFIG_LIB80211 is not set 401# CONFIG_LIB80211 is not set
@@ -397,7 +403,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
397# 403#
398# CFG80211 needs to be enabled for MAC80211 404# CFG80211 needs to be enabled for MAC80211
399# 405#
400CONFIG_MAC80211_DEFAULT_PS_VALUE=0
401# CONFIG_WIMAX is not set 406# CONFIG_WIMAX is not set
402# CONFIG_RFKILL is not set 407# CONFIG_RFKILL is not set
403 408
@@ -409,6 +414,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
409# Generic Driver Options 414# Generic Driver Options
410# 415#
411CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 416CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
417# CONFIG_DEVTMPFS is not set
412CONFIG_STANDALONE=y 418CONFIG_STANDALONE=y
413CONFIG_PREVENT_FIRMWARE_BUILD=y 419CONFIG_PREVENT_FIRMWARE_BUILD=y
414# CONFIG_FW_LOADER is not set 420# CONFIG_FW_LOADER is not set
@@ -608,7 +614,9 @@ CONFIG_MII=y
608# CONFIG_NET_PCI is not set 614# CONFIG_NET_PCI is not set
609# CONFIG_B44 is not set 615# CONFIG_B44 is not set
610# CONFIG_KS8842 is not set 616# CONFIG_KS8842 is not set
617# CONFIG_KS8851_MLL is not set
611# CONFIG_ATL2 is not set 618# CONFIG_ATL2 is not set
619# CONFIG_XILINX_EMACLITE is not set
612CONFIG_FS_ENET=y 620CONFIG_FS_ENET=y
613CONFIG_FS_ENET_HAS_SCC=y 621CONFIG_FS_ENET_HAS_SCC=y
614CONFIG_FS_ENET_HAS_FCC=y 622CONFIG_FS_ENET_HAS_FCC=y
@@ -616,10 +624,7 @@ CONFIG_FS_ENET_MDIO_FCC=y
616# CONFIG_NETDEV_1000 is not set 624# CONFIG_NETDEV_1000 is not set
617# CONFIG_NETDEV_10000 is not set 625# CONFIG_NETDEV_10000 is not set
618# CONFIG_TR is not set 626# CONFIG_TR is not set
619 627CONFIG_WLAN=y
620#
621# Wireless LAN
622#
623# CONFIG_WLAN_PRE80211 is not set 628# CONFIG_WLAN_PRE80211 is not set
624# CONFIG_WLAN_80211 is not set 629# CONFIG_WLAN_80211 is not set
625 630
@@ -685,6 +690,7 @@ CONFIG_HW_RANDOM=y
685CONFIG_DEVPORT=y 690CONFIG_DEVPORT=y
686CONFIG_I2C=y 691CONFIG_I2C=y
687CONFIG_I2C_BOARDINFO=y 692CONFIG_I2C_BOARDINFO=y
693CONFIG_I2C_COMPAT=y
688CONFIG_I2C_CHARDEV=y 694CONFIG_I2C_CHARDEV=y
689CONFIG_I2C_HELPER_AUTO=y 695CONFIG_I2C_HELPER_AUTO=y
690 696
@@ -740,7 +746,6 @@ CONFIG_I2C_CPM=y
740# 746#
741# Miscellaneous I2C Chip support 747# Miscellaneous I2C Chip support
742# 748#
743# CONFIG_PCF8575 is not set
744# CONFIG_I2C_DEBUG_CORE is not set 749# CONFIG_I2C_DEBUG_CORE is not set
745# CONFIG_I2C_DEBUG_ALGO is not set 750# CONFIG_I2C_DEBUG_ALGO is not set
746# CONFIG_I2C_DEBUG_BUS is not set 751# CONFIG_I2C_DEBUG_BUS is not set
@@ -771,15 +776,19 @@ CONFIG_GPIOLIB=y
771# PCI GPIO expanders: 776# PCI GPIO expanders:
772# 777#
773# CONFIG_GPIO_BT8XX is not set 778# CONFIG_GPIO_BT8XX is not set
779# CONFIG_GPIO_LANGWELL is not set
774 780
775# 781#
776# SPI GPIO expanders: 782# SPI GPIO expanders:
777# 783#
784
785#
786# AC97 GPIO expanders:
787#
778# CONFIG_W1 is not set 788# CONFIG_W1 is not set
779# CONFIG_POWER_SUPPLY is not set 789# CONFIG_POWER_SUPPLY is not set
780# CONFIG_HWMON is not set 790# CONFIG_HWMON is not set
781# CONFIG_THERMAL is not set 791# CONFIG_THERMAL is not set
782# CONFIG_THERMAL_HWMON is not set
783# CONFIG_WATCHDOG is not set 792# CONFIG_WATCHDOG is not set
784CONFIG_SSB_POSSIBLE=y 793CONFIG_SSB_POSSIBLE=y
785 794
@@ -799,6 +808,7 @@ CONFIG_SSB_POSSIBLE=y
799# CONFIG_MFD_TMIO is not set 808# CONFIG_MFD_TMIO is not set
800# CONFIG_PMIC_DA903X is not set 809# CONFIG_PMIC_DA903X is not set
801# CONFIG_MFD_WM8400 is not set 810# CONFIG_MFD_WM8400 is not set
811# CONFIG_MFD_WM831X is not set
802# CONFIG_MFD_WM8350_I2C is not set 812# CONFIG_MFD_WM8350_I2C is not set
803# CONFIG_MFD_PCF50633 is not set 813# CONFIG_MFD_PCF50633 is not set
804# CONFIG_AB3100_CORE is not set 814# CONFIG_AB3100_CORE is not set
@@ -809,6 +819,7 @@ CONFIG_SSB_POSSIBLE=y
809# Graphics support 819# Graphics support
810# 820#
811# CONFIG_AGP is not set 821# CONFIG_AGP is not set
822CONFIG_VGA_ARB=y
812# CONFIG_DRM is not set 823# CONFIG_DRM is not set
813# CONFIG_VGASTATE is not set 824# CONFIG_VGASTATE is not set
814# CONFIG_VIDEO_OUTPUT_CONTROL is not set 825# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -1022,6 +1033,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1022CONFIG_ENABLE_MUST_CHECK=y 1033CONFIG_ENABLE_MUST_CHECK=y
1023CONFIG_FRAME_WARN=1024 1034CONFIG_FRAME_WARN=1024
1024CONFIG_MAGIC_SYSRQ=y 1035CONFIG_MAGIC_SYSRQ=y
1036# CONFIG_STRIP_ASM_SYMS is not set
1025# CONFIG_UNUSED_SYMBOLS is not set 1037# CONFIG_UNUSED_SYMBOLS is not set
1026CONFIG_DEBUG_FS=y 1038CONFIG_DEBUG_FS=y
1027# CONFIG_HEADERS_CHECK is not set 1039# CONFIG_HEADERS_CHECK is not set
@@ -1052,10 +1064,12 @@ CONFIG_DEBUG_INFO=y
1052# CONFIG_DEBUG_LIST is not set 1064# CONFIG_DEBUG_LIST is not set
1053# CONFIG_DEBUG_SG is not set 1065# CONFIG_DEBUG_SG is not set
1054# CONFIG_DEBUG_NOTIFIERS is not set 1066# CONFIG_DEBUG_NOTIFIERS is not set
1067# CONFIG_DEBUG_CREDENTIALS is not set
1055# CONFIG_RCU_TORTURE_TEST is not set 1068# CONFIG_RCU_TORTURE_TEST is not set
1056# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1069# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1057# CONFIG_BACKTRACE_SELF_TEST is not set 1070# CONFIG_BACKTRACE_SELF_TEST is not set
1058# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1071# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1072# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1059# CONFIG_FAULT_INJECTION is not set 1073# CONFIG_FAULT_INJECTION is not set
1060# CONFIG_LATENCYTOP is not set 1074# CONFIG_LATENCYTOP is not set
1061CONFIG_SYSCTL_SYSCALL_CHECK=y 1075CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1079,6 +1093,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
1079# CONFIG_WORKQUEUE_TRACER is not set 1093# CONFIG_WORKQUEUE_TRACER is not set
1080# CONFIG_BLK_DEV_IO_TRACE is not set 1094# CONFIG_BLK_DEV_IO_TRACE is not set
1081# CONFIG_DYNAMIC_DEBUG is not set 1095# CONFIG_DYNAMIC_DEBUG is not set
1096# CONFIG_DMA_API_DEBUG is not set
1082# CONFIG_SAMPLES is not set 1097# CONFIG_SAMPLES is not set
1083CONFIG_HAVE_ARCH_KGDB=y 1098CONFIG_HAVE_ARCH_KGDB=y
1084# CONFIG_PPC_DISABLE_WERROR is not set 1099# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1109,7 +1124,6 @@ CONFIG_CRYPTO=y
1109# 1124#
1110# Crypto core or helper 1125# Crypto core or helper
1111# 1126#
1112# CONFIG_CRYPTO_FIPS is not set
1113CONFIG_CRYPTO_ALGAPI=y 1127CONFIG_CRYPTO_ALGAPI=y
1114CONFIG_CRYPTO_ALGAPI2=y 1128CONFIG_CRYPTO_ALGAPI2=y
1115CONFIG_CRYPTO_AEAD2=y 1129CONFIG_CRYPTO_AEAD2=y
@@ -1151,6 +1165,7 @@ CONFIG_CRYPTO_PCBC=y
1151# Digest 1165# Digest
1152# 1166#
1153# CONFIG_CRYPTO_CRC32C is not set 1167# CONFIG_CRYPTO_CRC32C is not set
1168# CONFIG_CRYPTO_GHASH is not set
1154# CONFIG_CRYPTO_MD4 is not set 1169# CONFIG_CRYPTO_MD4 is not set
1155CONFIG_CRYPTO_MD5=y 1170CONFIG_CRYPTO_MD5=y
1156# CONFIG_CRYPTO_MICHAEL_MIC is not set 1171# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/mgsuvd_defconfig b/arch/powerpc/configs/mgsuvd_defconfig
index 1ae85a3b2942..43c3c4fcdce3 100644
--- a/arch/powerpc/configs/mgsuvd_defconfig
+++ b/arch/powerpc/configs/mgsuvd_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:31:52 2009 4# Thu Nov 5 08:20:10 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,6 +16,7 @@ CONFIG_PPC_8xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_8xx=y 17CONFIG_8xx=y
18CONFIG_PPC_MMU_NOHASH=y 18CONFIG_PPC_MMU_NOHASH=y
19CONFIG_PPC_MMU_NOHASH_32=y
19# CONFIG_PPC_MM_SLICES is not set 20# CONFIG_PPC_MM_SLICES is not set
20CONFIG_NOT_COHERENT_CACHE=y 21CONFIG_NOT_COHERENT_CACHE=y
21CONFIG_PPC32=y 22CONFIG_PPC32=y
@@ -29,6 +30,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
29CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
30CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 31CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
31# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
32CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
33CONFIG_STACKTRACE_SUPPORT=y 35CONFIG_STACKTRACE_SUPPORT=y
34CONFIG_HAVE_LATENCYTOP_SUPPORT=y 36CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -76,11 +78,12 @@ CONFIG_SYSVIPC_SYSCTL=y
76# 78#
77# RCU Subsystem 79# RCU Subsystem
78# 80#
79CONFIG_CLASSIC_RCU=y 81CONFIG_TREE_RCU=y
80# CONFIG_TREE_RCU is not set 82# CONFIG_TREE_PREEMPT_RCU is not set
81# CONFIG_PREEMPT_RCU is not set 83# CONFIG_RCU_TRACE is not set
84CONFIG_RCU_FANOUT=32
85# CONFIG_RCU_FANOUT_EXACT is not set
82# CONFIG_TREE_RCU_TRACE is not set 86# CONFIG_TREE_RCU_TRACE is not set
83# CONFIG_PREEMPT_RCU_TRACE is not set
84# CONFIG_IKCONFIG is not set 87# CONFIG_IKCONFIG is not set
85CONFIG_LOG_BUF_SHIFT=17 88CONFIG_LOG_BUF_SHIFT=17
86CONFIG_GROUP_SCHED=y 89CONFIG_GROUP_SCHED=y
@@ -117,27 +120,28 @@ CONFIG_TIMERFD=y
117CONFIG_EVENTFD=y 120CONFIG_EVENTFD=y
118CONFIG_SHMEM=y 121CONFIG_SHMEM=y
119CONFIG_AIO=y 122CONFIG_AIO=y
120CONFIG_HAVE_PERF_COUNTERS=y 123CONFIG_HAVE_PERF_EVENTS=y
121 124
122# 125#
123# Performance Counters 126# Kernel Performance Events And Counters
124# 127#
128# CONFIG_PERF_EVENTS is not set
125# CONFIG_PERF_COUNTERS is not set 129# CONFIG_PERF_COUNTERS is not set
126# CONFIG_VM_EVENT_COUNTERS is not set 130# CONFIG_VM_EVENT_COUNTERS is not set
127# CONFIG_STRIP_ASM_SYMS is not set
128CONFIG_COMPAT_BRK=y 131CONFIG_COMPAT_BRK=y
129CONFIG_SLAB=y 132CONFIG_SLAB=y
130# CONFIG_SLUB is not set 133# CONFIG_SLUB is not set
131# CONFIG_SLOB is not set 134# CONFIG_SLOB is not set
132# CONFIG_PROFILING is not set 135# CONFIG_PROFILING is not set
133# CONFIG_MARKERS is not set
134CONFIG_HAVE_OPROFILE=y 136CONFIG_HAVE_OPROFILE=y
135CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 137CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
136CONFIG_HAVE_IOREMAP_PROT=y 138CONFIG_HAVE_IOREMAP_PROT=y
137CONFIG_HAVE_KPROBES=y 139CONFIG_HAVE_KPROBES=y
138CONFIG_HAVE_KRETPROBES=y 140CONFIG_HAVE_KRETPROBES=y
139CONFIG_HAVE_ARCH_TRACEHOOK=y 141CONFIG_HAVE_ARCH_TRACEHOOK=y
142CONFIG_HAVE_DMA_ATTRS=y
140CONFIG_HAVE_CLK=y 143CONFIG_HAVE_CLK=y
144CONFIG_HAVE_DMA_API_DEBUG=y
141 145
142# 146#
143# GCOV-based kernel profiling 147# GCOV-based kernel profiling
@@ -237,10 +241,10 @@ CONFIG_BINFMT_ELF=y
237CONFIG_MATH_EMULATION=y 241CONFIG_MATH_EMULATION=y
238# CONFIG_IOMMU_HELPER is not set 242# CONFIG_IOMMU_HELPER is not set
239# CONFIG_SWIOTLB is not set 243# CONFIG_SWIOTLB is not set
240CONFIG_PPC_NEED_DMA_SYNC_OPS=y
241CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 244CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
242CONFIG_ARCH_HAS_WALK_MEMORY=y 245CONFIG_ARCH_HAS_WALK_MEMORY=y
243CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 246CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
247CONFIG_MAX_ACTIVE_REGIONS=32
244CONFIG_ARCH_FLATMEM_ENABLE=y 248CONFIG_ARCH_FLATMEM_ENABLE=y
245CONFIG_ARCH_POPULATES_NODE_MAP=y 249CONFIG_ARCH_POPULATES_NODE_MAP=y
246CONFIG_SELECT_MEMORY_MODEL=y 250CONFIG_SELECT_MEMORY_MODEL=y
@@ -258,6 +262,7 @@ CONFIG_BOUNCE=y
258CONFIG_VIRT_TO_BUS=y 262CONFIG_VIRT_TO_BUS=y
259CONFIG_HAVE_MLOCK=y 263CONFIG_HAVE_MLOCK=y
260CONFIG_HAVE_MLOCKED_PAGE_BIT=y 264CONFIG_HAVE_MLOCKED_PAGE_BIT=y
265# CONFIG_KSM is not set
261CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 266CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
262CONFIG_PPC_4K_PAGES=y 267CONFIG_PPC_4K_PAGES=y
263# CONFIG_PPC_16K_PAGES is not set 268# CONFIG_PPC_16K_PAGES is not set
@@ -344,6 +349,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
344# CONFIG_NETFILTER is not set 349# CONFIG_NETFILTER is not set
345# CONFIG_IP_DCCP is not set 350# CONFIG_IP_DCCP is not set
346# CONFIG_IP_SCTP is not set 351# CONFIG_IP_SCTP is not set
352# CONFIG_RDS is not set
347# CONFIG_TIPC is not set 353# CONFIG_TIPC is not set
348# CONFIG_ATM is not set 354# CONFIG_ATM is not set
349# CONFIG_BRIDGE is not set 355# CONFIG_BRIDGE is not set
@@ -373,6 +379,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
373# CONFIG_AF_RXRPC is not set 379# CONFIG_AF_RXRPC is not set
374CONFIG_WIRELESS=y 380CONFIG_WIRELESS=y
375# CONFIG_CFG80211 is not set 381# CONFIG_CFG80211 is not set
382CONFIG_CFG80211_DEFAULT_PS_VALUE=0
376CONFIG_WIRELESS_OLD_REGULATORY=y 383CONFIG_WIRELESS_OLD_REGULATORY=y
377# CONFIG_WIRELESS_EXT is not set 384# CONFIG_WIRELESS_EXT is not set
378# CONFIG_LIB80211 is not set 385# CONFIG_LIB80211 is not set
@@ -380,7 +387,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
380# 387#
381# CFG80211 needs to be enabled for MAC80211 388# CFG80211 needs to be enabled for MAC80211
382# 389#
383CONFIG_MAC80211_DEFAULT_PS_VALUE=0
384# CONFIG_WIMAX is not set 390# CONFIG_WIMAX is not set
385# CONFIG_RFKILL is not set 391# CONFIG_RFKILL is not set
386# CONFIG_NET_9P is not set 392# CONFIG_NET_9P is not set
@@ -553,16 +559,15 @@ CONFIG_MII=y
553# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 559# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
554# CONFIG_B44 is not set 560# CONFIG_B44 is not set
555# CONFIG_KS8842 is not set 561# CONFIG_KS8842 is not set
562# CONFIG_KS8851_MLL is not set
563# CONFIG_XILINX_EMACLITE is not set
556CONFIG_FS_ENET=y 564CONFIG_FS_ENET=y
557CONFIG_FS_ENET_HAS_SCC=y 565CONFIG_FS_ENET_HAS_SCC=y
558# CONFIG_FS_ENET_HAS_FEC is not set 566# CONFIG_FS_ENET_HAS_FEC is not set
559# CONFIG_FS_ENET_MDIO_FEC is not set 567# CONFIG_FS_ENET_MDIO_FEC is not set
560# CONFIG_NETDEV_1000 is not set 568# CONFIG_NETDEV_1000 is not set
561# CONFIG_NETDEV_10000 is not set 569# CONFIG_NETDEV_10000 is not set
562 570CONFIG_WLAN=y
563#
564# Wireless LAN
565#
566# CONFIG_WLAN_PRE80211 is not set 571# CONFIG_WLAN_PRE80211 is not set
567# CONFIG_WLAN_80211 is not set 572# CONFIG_WLAN_80211 is not set
568 573
@@ -635,7 +640,6 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
635# CONFIG_POWER_SUPPLY is not set 640# CONFIG_POWER_SUPPLY is not set
636# CONFIG_HWMON is not set 641# CONFIG_HWMON is not set
637# CONFIG_THERMAL is not set 642# CONFIG_THERMAL is not set
638# CONFIG_THERMAL_HWMON is not set
639# CONFIG_WATCHDOG is not set 643# CONFIG_WATCHDOG is not set
640CONFIG_SSB_POSSIBLE=y 644CONFIG_SSB_POSSIBLE=y
641 645
@@ -707,6 +711,7 @@ CONFIG_FS_MBCACHE=y
707# CONFIG_GFS2_FS is not set 711# CONFIG_GFS2_FS is not set
708# CONFIG_OCFS2_FS is not set 712# CONFIG_OCFS2_FS is not set
709# CONFIG_BTRFS_FS is not set 713# CONFIG_BTRFS_FS is not set
714# CONFIG_NILFS2_FS is not set
710CONFIG_FILE_LOCKING=y 715CONFIG_FILE_LOCKING=y
711CONFIG_FSNOTIFY=y 716CONFIG_FSNOTIFY=y
712CONFIG_DNOTIFY=y 717CONFIG_DNOTIFY=y
@@ -776,7 +781,6 @@ CONFIG_CRAMFS=y
776# CONFIG_ROMFS_FS is not set 781# CONFIG_ROMFS_FS is not set
777# CONFIG_SYSV_FS is not set 782# CONFIG_SYSV_FS is not set
778# CONFIG_UFS_FS is not set 783# CONFIG_UFS_FS is not set
779# CONFIG_NILFS2_FS is not set
780CONFIG_NETWORK_FILESYSTEMS=y 784CONFIG_NETWORK_FILESYSTEMS=y
781CONFIG_NFS_FS=y 785CONFIG_NFS_FS=y
782CONFIG_NFS_V3=y 786CONFIG_NFS_V3=y
@@ -851,6 +855,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
851CONFIG_ENABLE_MUST_CHECK=y 855CONFIG_ENABLE_MUST_CHECK=y
852CONFIG_FRAME_WARN=1024 856CONFIG_FRAME_WARN=1024
853# CONFIG_MAGIC_SYSRQ is not set 857# CONFIG_MAGIC_SYSRQ is not set
858# CONFIG_STRIP_ASM_SYMS is not set
854# CONFIG_UNUSED_SYMBOLS is not set 859# CONFIG_UNUSED_SYMBOLS is not set
855CONFIG_DEBUG_FS=y 860CONFIG_DEBUG_FS=y
856# CONFIG_HEADERS_CHECK is not set 861# CONFIG_HEADERS_CHECK is not set
@@ -865,6 +870,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
865CONFIG_TRACING_SUPPORT=y 870CONFIG_TRACING_SUPPORT=y
866# CONFIG_FTRACE is not set 871# CONFIG_FTRACE is not set
867# CONFIG_DYNAMIC_DEBUG is not set 872# CONFIG_DYNAMIC_DEBUG is not set
873# CONFIG_DMA_API_DEBUG is not set
868# CONFIG_SAMPLES is not set 874# CONFIG_SAMPLES is not set
869CONFIG_HAVE_ARCH_KGDB=y 875CONFIG_HAVE_ARCH_KGDB=y
870# CONFIG_PPC_DISABLE_WERROR is not set 876# CONFIG_PPC_DISABLE_WERROR is not set
@@ -887,7 +893,6 @@ CONFIG_CRYPTO=y
887# 893#
888# Crypto core or helper 894# Crypto core or helper
889# 895#
890# CONFIG_CRYPTO_FIPS is not set
891# CONFIG_CRYPTO_MANAGER is not set 896# CONFIG_CRYPTO_MANAGER is not set
892# CONFIG_CRYPTO_MANAGER2 is not set 897# CONFIG_CRYPTO_MANAGER2 is not set
893# CONFIG_CRYPTO_GF128MUL is not set 898# CONFIG_CRYPTO_GF128MUL is not set
@@ -918,11 +923,13 @@ CONFIG_CRYPTO=y
918# 923#
919# CONFIG_CRYPTO_HMAC is not set 924# CONFIG_CRYPTO_HMAC is not set
920# CONFIG_CRYPTO_XCBC is not set 925# CONFIG_CRYPTO_XCBC is not set
926# CONFIG_CRYPTO_VMAC is not set
921 927
922# 928#
923# Digest 929# Digest
924# 930#
925# CONFIG_CRYPTO_CRC32C is not set 931# CONFIG_CRYPTO_CRC32C is not set
932# CONFIG_CRYPTO_GHASH is not set
926# CONFIG_CRYPTO_MD4 is not set 933# CONFIG_CRYPTO_MD4 is not set
927# CONFIG_CRYPTO_MD5 is not set 934# CONFIG_CRYPTO_MD5 is not set
928# CONFIG_CRYPTO_MICHAEL_MIC is not set 935# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/mpc5200_defconfig b/arch/powerpc/configs/mpc5200_defconfig
index aaa4416660e9..523d5fe18c0e 100644
--- a/arch/powerpc/configs/mpc5200_defconfig
+++ b/arch/powerpc/configs/mpc5200_defconfig
@@ -1,25 +1,27 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.30-rc2 3# Linux kernel version: 2.6.32-rc4
4# Mon Apr 20 11:06:25 2009 4# Thu Oct 15 10:33:21 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
8# 8#
9# Processor support 9# Processor support
10# 10#
11CONFIG_6xx=y 11CONFIG_PPC_BOOK3S_32=y
12# CONFIG_PPC_85xx is not set 12# CONFIG_PPC_85xx is not set
13# CONFIG_PPC_8xx is not set 13# CONFIG_PPC_8xx is not set
14# CONFIG_40x is not set 14# CONFIG_40x is not set
15# CONFIG_44x is not set 15# CONFIG_44x is not set
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_PPC_BOOK3S=y 17CONFIG_PPC_BOOK3S=y
18CONFIG_6xx=y
18CONFIG_PPC_FPU=y 19CONFIG_PPC_FPU=y
19# CONFIG_ALTIVEC is not set 20# CONFIG_ALTIVEC is not set
20CONFIG_PPC_STD_MMU=y 21CONFIG_PPC_STD_MMU=y
21CONFIG_PPC_STD_MMU_32=y 22CONFIG_PPC_STD_MMU_32=y
22# CONFIG_PPC_MM_SLICES is not set 23# CONFIG_PPC_MM_SLICES is not set
24CONFIG_PPC_HAVE_PMU_SUPPORT=y
23# CONFIG_SMP is not set 25# CONFIG_SMP is not set
24CONFIG_PPC32=y 26CONFIG_PPC32=y
25CONFIG_WORD_SIZE=32 27CONFIG_WORD_SIZE=32
@@ -30,15 +32,17 @@ CONFIG_GENERIC_TIME=y
30CONFIG_GENERIC_TIME_VSYSCALL=y 32CONFIG_GENERIC_TIME_VSYSCALL=y
31CONFIG_GENERIC_CLOCKEVENTS=y 33CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
34CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y 39CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_HAVE_LATENCYTOP_SUPPORT=y 40CONFIG_HAVE_LATENCYTOP_SUPPORT=y
41CONFIG_TRACE_IRQFLAGS_SUPPORT=y
37CONFIG_LOCKDEP_SUPPORT=y 42CONFIG_LOCKDEP_SUPPORT=y
38CONFIG_RWSEM_XCHGADD_ALGORITHM=y 43CONFIG_RWSEM_XCHGADD_ALGORITHM=y
39CONFIG_ARCH_HAS_ILOG2_U32=y 44CONFIG_ARCH_HAS_ILOG2_U32=y
40CONFIG_GENERIC_HWEIGHT=y 45CONFIG_GENERIC_HWEIGHT=y
41CONFIG_GENERIC_CALIBRATE_DELAY=y
42CONFIG_GENERIC_FIND_NEXT_BIT=y 46CONFIG_GENERIC_FIND_NEXT_BIT=y
43CONFIG_GENERIC_GPIO=y 47CONFIG_GENERIC_GPIO=y
44# CONFIG_ARCH_NO_VIRT_TO_BUS is not set 48# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
@@ -53,12 +57,14 @@ CONFIG_OF=y
53# CONFIG_GENERIC_TBSYNC is not set 57# CONFIG_GENERIC_TBSYNC is not set
54CONFIG_AUDIT_ARCH=y 58CONFIG_AUDIT_ARCH=y
55CONFIG_GENERIC_BUG=y 59CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y
56CONFIG_DEFAULT_UIMAGE=y 61CONFIG_DEFAULT_UIMAGE=y
57CONFIG_ARCH_SUSPEND_POSSIBLE=y 62CONFIG_ARCH_SUSPEND_POSSIBLE=y
58# CONFIG_PPC_DCR_NATIVE is not set 63# CONFIG_PPC_DCR_NATIVE is not set
59# CONFIG_PPC_DCR_MMIO is not set 64# CONFIG_PPC_DCR_MMIO is not set
60CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
61CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 66CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
67CONFIG_CONSTRUCTORS=y
62 68
63# 69#
64# General setup 70# General setup
@@ -79,11 +85,12 @@ CONFIG_SYSVIPC_SYSCTL=y
79# 85#
80# RCU Subsystem 86# RCU Subsystem
81# 87#
82CONFIG_CLASSIC_RCU=y 88CONFIG_TREE_RCU=y
83# CONFIG_TREE_RCU is not set 89# CONFIG_TREE_PREEMPT_RCU is not set
84# CONFIG_PREEMPT_RCU is not set 90# CONFIG_RCU_TRACE is not set
91CONFIG_RCU_FANOUT=32
92# CONFIG_RCU_FANOUT_EXACT is not set
85# CONFIG_TREE_RCU_TRACE is not set 93# CONFIG_TREE_RCU_TRACE is not set
86# CONFIG_PREEMPT_RCU_TRACE is not set
87# CONFIG_IKCONFIG is not set 94# CONFIG_IKCONFIG is not set
88CONFIG_LOG_BUF_SHIFT=14 95CONFIG_LOG_BUF_SHIFT=14
89# CONFIG_GROUP_SCHED is not set 96# CONFIG_GROUP_SCHED is not set
@@ -103,7 +110,6 @@ CONFIG_ANON_INODES=y
103CONFIG_EMBEDDED=y 110CONFIG_EMBEDDED=y
104# CONFIG_SYSCTL_SYSCALL is not set 111# CONFIG_SYSCTL_SYSCALL is not set
105# CONFIG_KALLSYMS is not set 112# CONFIG_KALLSYMS is not set
106# CONFIG_STRIP_ASM_SYMS is not set
107CONFIG_HOTPLUG=y 113CONFIG_HOTPLUG=y
108CONFIG_PRINTK=y 114CONFIG_PRINTK=y
109CONFIG_BUG=y 115CONFIG_BUG=y
@@ -116,6 +122,13 @@ CONFIG_TIMERFD=y
116CONFIG_EVENTFD=y 122CONFIG_EVENTFD=y
117CONFIG_SHMEM=y 123CONFIG_SHMEM=y
118CONFIG_AIO=y 124CONFIG_AIO=y
125CONFIG_HAVE_PERF_EVENTS=y
126
127#
128# Kernel Performance Events And Counters
129#
130# CONFIG_PERF_EVENTS is not set
131# CONFIG_PERF_COUNTERS is not set
119CONFIG_VM_EVENT_COUNTERS=y 132CONFIG_VM_EVENT_COUNTERS=y
120CONFIG_PCI_QUIRKS=y 133CONFIG_PCI_QUIRKS=y
121CONFIG_SLUB_DEBUG=y 134CONFIG_SLUB_DEBUG=y
@@ -124,14 +137,19 @@ CONFIG_COMPAT_BRK=y
124CONFIG_SLUB=y 137CONFIG_SLUB=y
125# CONFIG_SLOB is not set 138# CONFIG_SLOB is not set
126# CONFIG_PROFILING is not set 139# CONFIG_PROFILING is not set
127# CONFIG_MARKERS is not set
128CONFIG_HAVE_OPROFILE=y 140CONFIG_HAVE_OPROFILE=y
129CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 141CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
130CONFIG_HAVE_IOREMAP_PROT=y 142CONFIG_HAVE_IOREMAP_PROT=y
131CONFIG_HAVE_KPROBES=y 143CONFIG_HAVE_KPROBES=y
132CONFIG_HAVE_KRETPROBES=y 144CONFIG_HAVE_KRETPROBES=y
133CONFIG_HAVE_ARCH_TRACEHOOK=y 145CONFIG_HAVE_ARCH_TRACEHOOK=y
146CONFIG_HAVE_DMA_ATTRS=y
134CONFIG_HAVE_CLK=y 147CONFIG_HAVE_CLK=y
148CONFIG_HAVE_DMA_API_DEBUG=y
149
150#
151# GCOV-based kernel profiling
152#
135# CONFIG_SLOW_WORK is not set 153# CONFIG_SLOW_WORK is not set
136# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 154# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
137CONFIG_SLABINFO=y 155CONFIG_SLABINFO=y
@@ -144,7 +162,7 @@ CONFIG_MODULE_UNLOAD=y
144# CONFIG_MODVERSIONS is not set 162# CONFIG_MODVERSIONS is not set
145# CONFIG_MODULE_SRCVERSION_ALL is not set 163# CONFIG_MODULE_SRCVERSION_ALL is not set
146CONFIG_BLOCK=y 164CONFIG_BLOCK=y
147# CONFIG_LBD is not set 165CONFIG_LBDAF=y
148# CONFIG_BLK_DEV_BSG is not set 166# CONFIG_BLK_DEV_BSG is not set
149# CONFIG_BLK_DEV_INTEGRITY is not set 167# CONFIG_BLK_DEV_INTEGRITY is not set
150 168
@@ -205,7 +223,7 @@ CONFIG_RTAS_PROC=y
205CONFIG_PPC_BESTCOMM=y 223CONFIG_PPC_BESTCOMM=y
206CONFIG_PPC_BESTCOMM_ATA=y 224CONFIG_PPC_BESTCOMM_ATA=y
207CONFIG_PPC_BESTCOMM_FEC=y 225CONFIG_PPC_BESTCOMM_FEC=y
208# CONFIG_SIMPLE_GPIO is not set 226CONFIG_SIMPLE_GPIO=y
209 227
210# 228#
211# Kernel options 229# Kernel options
@@ -229,11 +247,13 @@ CONFIG_BINFMT_ELF=y
229# CONFIG_HAVE_AOUT is not set 247# CONFIG_HAVE_AOUT is not set
230# CONFIG_BINFMT_MISC is not set 248# CONFIG_BINFMT_MISC is not set
231# CONFIG_IOMMU_HELPER is not set 249# CONFIG_IOMMU_HELPER is not set
250# CONFIG_SWIOTLB is not set
232CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 251CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
233CONFIG_ARCH_HAS_WALK_MEMORY=y 252CONFIG_ARCH_HAS_WALK_MEMORY=y
234CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 253CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
235# CONFIG_KEXEC is not set 254# CONFIG_KEXEC is not set
236# CONFIG_CRASH_DUMP is not set 255# CONFIG_CRASH_DUMP is not set
256CONFIG_MAX_ACTIVE_REGIONS=32
237CONFIG_ARCH_FLATMEM_ENABLE=y 257CONFIG_ARCH_FLATMEM_ENABLE=y
238CONFIG_ARCH_POPULATES_NODE_MAP=y 258CONFIG_ARCH_POPULATES_NODE_MAP=y
239CONFIG_SELECT_MEMORY_MODEL=y 259CONFIG_SELECT_MEMORY_MODEL=y
@@ -249,9 +269,10 @@ CONFIG_MIGRATION=y
249CONFIG_ZONE_DMA_FLAG=1 269CONFIG_ZONE_DMA_FLAG=1
250CONFIG_BOUNCE=y 270CONFIG_BOUNCE=y
251CONFIG_VIRT_TO_BUS=y 271CONFIG_VIRT_TO_BUS=y
252CONFIG_UNEVICTABLE_LRU=y
253CONFIG_HAVE_MLOCK=y 272CONFIG_HAVE_MLOCK=y
254CONFIG_HAVE_MLOCKED_PAGE_BIT=y 273CONFIG_HAVE_MLOCKED_PAGE_BIT=y
274# CONFIG_KSM is not set
275CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
255CONFIG_PPC_4K_PAGES=y 276CONFIG_PPC_4K_PAGES=y
256# CONFIG_PPC_16K_PAGES is not set 277# CONFIG_PPC_16K_PAGES is not set
257# CONFIG_PPC_64K_PAGES is not set 278# CONFIG_PPC_64K_PAGES is not set
@@ -265,6 +286,7 @@ CONFIG_PM=y
265CONFIG_PM_SLEEP=y 286CONFIG_PM_SLEEP=y
266CONFIG_SUSPEND=y 287CONFIG_SUSPEND=y
267CONFIG_SUSPEND_FREEZER=y 288CONFIG_SUSPEND_FREEZER=y
289# CONFIG_PM_RUNTIME is not set
268CONFIG_SECCOMP=y 290CONFIG_SECCOMP=y
269CONFIG_ISA_DMA_API=y 291CONFIG_ISA_DMA_API=y
270 292
@@ -349,6 +371,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
349# CONFIG_NETFILTER is not set 371# CONFIG_NETFILTER is not set
350# CONFIG_IP_DCCP is not set 372# CONFIG_IP_DCCP is not set
351# CONFIG_IP_SCTP is not set 373# CONFIG_IP_SCTP is not set
374# CONFIG_RDS is not set
352# CONFIG_TIPC is not set 375# CONFIG_TIPC is not set
353# CONFIG_ATM is not set 376# CONFIG_ATM is not set
354# CONFIG_BRIDGE is not set 377# CONFIG_BRIDGE is not set
@@ -363,6 +386,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
363# CONFIG_ECONET is not set 386# CONFIG_ECONET is not set
364# CONFIG_WAN_ROUTER is not set 387# CONFIG_WAN_ROUTER is not set
365# CONFIG_PHONET is not set 388# CONFIG_PHONET is not set
389# CONFIG_IEEE802154 is not set
366# CONFIG_NET_SCHED is not set 390# CONFIG_NET_SCHED is not set
367# CONFIG_DCB is not set 391# CONFIG_DCB is not set
368 392
@@ -388,6 +412,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
388# Generic Driver Options 412# Generic Driver Options
389# 413#
390CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 414CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
415# CONFIG_DEVTMPFS is not set
391CONFIG_STANDALONE=y 416CONFIG_STANDALONE=y
392CONFIG_PREVENT_FIRMWARE_BUILD=y 417CONFIG_PREVENT_FIRMWARE_BUILD=y
393# CONFIG_FW_LOADER is not set 418# CONFIG_FW_LOADER is not set
@@ -397,9 +422,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
397# CONFIG_CONNECTOR is not set 422# CONFIG_CONNECTOR is not set
398CONFIG_MTD=y 423CONFIG_MTD=y
399# CONFIG_MTD_DEBUG is not set 424# CONFIG_MTD_DEBUG is not set
425# CONFIG_MTD_TESTS is not set
400CONFIG_MTD_CONCAT=y 426CONFIG_MTD_CONCAT=y
401CONFIG_MTD_PARTITIONS=y 427CONFIG_MTD_PARTITIONS=y
402# CONFIG_MTD_TESTS is not set
403# CONFIG_MTD_REDBOOT_PARTS is not set 428# CONFIG_MTD_REDBOOT_PARTS is not set
404CONFIG_MTD_CMDLINE_PARTS=y 429CONFIG_MTD_CMDLINE_PARTS=y
405CONFIG_MTD_OF_PARTS=y 430CONFIG_MTD_OF_PARTS=y
@@ -458,6 +483,7 @@ CONFIG_MTD_PHYSMAP_OF=y
458# CONFIG_MTD_PMC551 is not set 483# CONFIG_MTD_PMC551 is not set
459# CONFIG_MTD_DATAFLASH is not set 484# CONFIG_MTD_DATAFLASH is not set
460# CONFIG_MTD_M25P80 is not set 485# CONFIG_MTD_M25P80 is not set
486# CONFIG_MTD_SST25L is not set
461# CONFIG_MTD_SLRAM is not set 487# CONFIG_MTD_SLRAM is not set
462# CONFIG_MTD_PHRAM is not set 488# CONFIG_MTD_PHRAM is not set
463# CONFIG_MTD_MTDRAM is not set 489# CONFIG_MTD_MTDRAM is not set
@@ -493,6 +519,7 @@ CONFIG_OF_DEVICE=y
493CONFIG_OF_GPIO=y 519CONFIG_OF_GPIO=y
494CONFIG_OF_I2C=y 520CONFIG_OF_I2C=y
495CONFIG_OF_SPI=y 521CONFIG_OF_SPI=y
522CONFIG_OF_MDIO=y
496# CONFIG_PARPORT is not set 523# CONFIG_PARPORT is not set
497CONFIG_BLK_DEV=y 524CONFIG_BLK_DEV=y
498# CONFIG_BLK_DEV_FD is not set 525# CONFIG_BLK_DEV_FD is not set
@@ -529,7 +556,9 @@ CONFIG_MISC_DEVICES=y
529CONFIG_EEPROM_AT24=y 556CONFIG_EEPROM_AT24=y
530# CONFIG_EEPROM_AT25 is not set 557# CONFIG_EEPROM_AT25 is not set
531# CONFIG_EEPROM_LEGACY is not set 558# CONFIG_EEPROM_LEGACY is not set
559# CONFIG_EEPROM_MAX6875 is not set
532# CONFIG_EEPROM_93CX6 is not set 560# CONFIG_EEPROM_93CX6 is not set
561# CONFIG_CB710_CORE is not set
533CONFIG_HAVE_IDE=y 562CONFIG_HAVE_IDE=y
534# CONFIG_IDE is not set 563# CONFIG_IDE is not set
535 564
@@ -552,10 +581,6 @@ CONFIG_BLK_DEV_SD=y
552# CONFIG_BLK_DEV_SR is not set 581# CONFIG_BLK_DEV_SR is not set
553CONFIG_CHR_DEV_SG=y 582CONFIG_CHR_DEV_SG=y
554# CONFIG_CHR_DEV_SCH is not set 583# CONFIG_CHR_DEV_SCH is not set
555
556#
557# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
558#
559# CONFIG_SCSI_MULTI_LUN is not set 584# CONFIG_SCSI_MULTI_LUN is not set
560# CONFIG_SCSI_CONSTANTS is not set 585# CONFIG_SCSI_CONSTANTS is not set
561# CONFIG_SCSI_LOGGING is not set 586# CONFIG_SCSI_LOGGING is not set
@@ -572,6 +597,8 @@ CONFIG_SCSI_WAIT_SCAN=m
572# CONFIG_SCSI_SRP_ATTRS is not set 597# CONFIG_SCSI_SRP_ATTRS is not set
573CONFIG_SCSI_LOWLEVEL=y 598CONFIG_SCSI_LOWLEVEL=y
574# CONFIG_ISCSI_TCP is not set 599# CONFIG_ISCSI_TCP is not set
600# CONFIG_SCSI_BNX2_ISCSI is not set
601# CONFIG_BE2ISCSI is not set
575# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 602# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
576# CONFIG_SCSI_3W_9XXX is not set 603# CONFIG_SCSI_3W_9XXX is not set
577# CONFIG_SCSI_ACARD is not set 604# CONFIG_SCSI_ACARD is not set
@@ -580,6 +607,7 @@ CONFIG_SCSI_LOWLEVEL=y
580# CONFIG_SCSI_AIC7XXX_OLD is not set 607# CONFIG_SCSI_AIC7XXX_OLD is not set
581# CONFIG_SCSI_AIC79XX is not set 608# CONFIG_SCSI_AIC79XX is not set
582# CONFIG_SCSI_AIC94XX is not set 609# CONFIG_SCSI_AIC94XX is not set
610# CONFIG_SCSI_MVSAS is not set
583# CONFIG_SCSI_DPT_I2O is not set 611# CONFIG_SCSI_DPT_I2O is not set
584# CONFIG_SCSI_ADVANSYS is not set 612# CONFIG_SCSI_ADVANSYS is not set
585# CONFIG_SCSI_ARCMSR is not set 613# CONFIG_SCSI_ARCMSR is not set
@@ -599,7 +627,6 @@ CONFIG_SCSI_LOWLEVEL=y
599# CONFIG_SCSI_IPS is not set 627# CONFIG_SCSI_IPS is not set
600# CONFIG_SCSI_INITIO is not set 628# CONFIG_SCSI_INITIO is not set
601# CONFIG_SCSI_INIA100 is not set 629# CONFIG_SCSI_INIA100 is not set
602# CONFIG_SCSI_MVSAS is not set
603# CONFIG_SCSI_STEX is not set 630# CONFIG_SCSI_STEX is not set
604# CONFIG_SCSI_SYM53C8XX_2 is not set 631# CONFIG_SCSI_SYM53C8XX_2 is not set
605# CONFIG_SCSI_IPR is not set 632# CONFIG_SCSI_IPR is not set
@@ -611,11 +638,14 @@ CONFIG_SCSI_LOWLEVEL=y
611# CONFIG_SCSI_DC390T is not set 638# CONFIG_SCSI_DC390T is not set
612# CONFIG_SCSI_NSP32 is not set 639# CONFIG_SCSI_NSP32 is not set
613# CONFIG_SCSI_DEBUG is not set 640# CONFIG_SCSI_DEBUG is not set
641# CONFIG_SCSI_PMCRAID is not set
614# CONFIG_SCSI_SRP is not set 642# CONFIG_SCSI_SRP is not set
643# CONFIG_SCSI_BFA_FC is not set
615# CONFIG_SCSI_DH is not set 644# CONFIG_SCSI_DH is not set
616# CONFIG_SCSI_OSD_INITIATOR is not set 645# CONFIG_SCSI_OSD_INITIATOR is not set
617CONFIG_ATA=y 646CONFIG_ATA=y
618# CONFIG_ATA_NONSTANDARD is not set 647# CONFIG_ATA_NONSTANDARD is not set
648CONFIG_ATA_VERBOSE_ERROR=y
619CONFIG_SATA_PMP=y 649CONFIG_SATA_PMP=y
620# CONFIG_SATA_AHCI is not set 650# CONFIG_SATA_AHCI is not set
621# CONFIG_SATA_SIL24 is not set 651# CONFIG_SATA_SIL24 is not set
@@ -637,6 +667,7 @@ CONFIG_ATA_SFF=y
637# CONFIG_PATA_ALI is not set 667# CONFIG_PATA_ALI is not set
638# CONFIG_PATA_AMD is not set 668# CONFIG_PATA_AMD is not set
639# CONFIG_PATA_ARTOP is not set 669# CONFIG_PATA_ARTOP is not set
670# CONFIG_PATA_ATP867X is not set
640# CONFIG_PATA_ATIIXP is not set 671# CONFIG_PATA_ATIIXP is not set
641# CONFIG_PATA_CMD640_PCI is not set 672# CONFIG_PATA_CMD640_PCI is not set
642# CONFIG_PATA_CMD64X is not set 673# CONFIG_PATA_CMD64X is not set
@@ -665,6 +696,7 @@ CONFIG_PATA_MPC52xx=y
665# CONFIG_PATA_OPTIDMA is not set 696# CONFIG_PATA_OPTIDMA is not set
666# CONFIG_PATA_PDC_OLD is not set 697# CONFIG_PATA_PDC_OLD is not set
667# CONFIG_PATA_RADISYS is not set 698# CONFIG_PATA_RADISYS is not set
699# CONFIG_PATA_RDC is not set
668# CONFIG_PATA_RZ1000 is not set 700# CONFIG_PATA_RZ1000 is not set
669# CONFIG_PATA_SC1200 is not set 701# CONFIG_PATA_SC1200 is not set
670# CONFIG_PATA_SERVERWORKS is not set 702# CONFIG_PATA_SERVERWORKS is not set
@@ -684,14 +716,17 @@ CONFIG_PATA_PLATFORM=y
684# 716#
685 717
686# 718#
687# Enable only one of the two stacks, unless you know what you are doing 719# You can enable one or both FireWire driver stacks.
720#
721
722#
723# See the help texts for more information.
688# 724#
689# CONFIG_FIREWIRE is not set 725# CONFIG_FIREWIRE is not set
690# CONFIG_IEEE1394 is not set 726# CONFIG_IEEE1394 is not set
691# CONFIG_I2O is not set 727# CONFIG_I2O is not set
692# CONFIG_MACINTOSH_DRIVERS is not set 728# CONFIG_MACINTOSH_DRIVERS is not set
693CONFIG_NETDEVICES=y 729CONFIG_NETDEVICES=y
694CONFIG_COMPAT_NET_DEV_OPS=y
695# CONFIG_DUMMY is not set 730# CONFIG_DUMMY is not set
696# CONFIG_BONDING is not set 731# CONFIG_BONDING is not set
697# CONFIG_MACVLAN is not set 732# CONFIG_MACVLAN is not set
@@ -739,16 +774,17 @@ CONFIG_NET_ETHERNET=y
739# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 774# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
740# CONFIG_NET_PCI is not set 775# CONFIG_NET_PCI is not set
741# CONFIG_B44 is not set 776# CONFIG_B44 is not set
777# CONFIG_KS8842 is not set
778# CONFIG_KS8851 is not set
779# CONFIG_KS8851_MLL is not set
742CONFIG_FEC_MPC52xx=y 780CONFIG_FEC_MPC52xx=y
743CONFIG_FEC_MPC52xx_MDIO=y 781CONFIG_FEC_MPC52xx_MDIO=y
744# CONFIG_ATL2 is not set 782# CONFIG_ATL2 is not set
783# CONFIG_XILINX_EMACLITE is not set
745# CONFIG_NETDEV_1000 is not set 784# CONFIG_NETDEV_1000 is not set
746# CONFIG_NETDEV_10000 is not set 785# CONFIG_NETDEV_10000 is not set
747# CONFIG_TR is not set 786# CONFIG_TR is not set
748 787CONFIG_WLAN=y
749#
750# Wireless LAN
751#
752# CONFIG_WLAN_PRE80211 is not set 788# CONFIG_WLAN_PRE80211 is not set
753# CONFIG_WLAN_80211 is not set 789# CONFIG_WLAN_80211 is not set
754 790
@@ -854,6 +890,7 @@ CONFIG_LEGACY_PTY_COUNT=256
854CONFIG_DEVPORT=y 890CONFIG_DEVPORT=y
855CONFIG_I2C=y 891CONFIG_I2C=y
856CONFIG_I2C_BOARDINFO=y 892CONFIG_I2C_BOARDINFO=y
893CONFIG_I2C_COMPAT=y
857CONFIG_I2C_CHARDEV=y 894CONFIG_I2C_CHARDEV=y
858CONFIG_I2C_HELPER_AUTO=y 895CONFIG_I2C_HELPER_AUTO=y
859CONFIG_I2C_ALGOBIT=y 896CONFIG_I2C_ALGOBIT=y
@@ -883,6 +920,7 @@ CONFIG_I2C_ALGOBIT=y
883# 920#
884# I2C system bus drivers (mostly embedded / system-on-chip) 921# I2C system bus drivers (mostly embedded / system-on-chip)
885# 922#
923# CONFIG_I2C_DESIGNWARE is not set
886# CONFIG_I2C_GPIO is not set 924# CONFIG_I2C_GPIO is not set
887CONFIG_I2C_MPC=y 925CONFIG_I2C_MPC=y
888# CONFIG_I2C_OCORES is not set 926# CONFIG_I2C_OCORES is not set
@@ -910,10 +948,6 @@ CONFIG_I2C_MPC=y
910# Miscellaneous I2C Chip support 948# Miscellaneous I2C Chip support
911# 949#
912# CONFIG_DS1682 is not set 950# CONFIG_DS1682 is not set
913# CONFIG_SENSORS_PCF8574 is not set
914# CONFIG_PCF8575 is not set
915# CONFIG_SENSORS_PCA9539 is not set
916# CONFIG_SENSORS_MAX6875 is not set
917# CONFIG_SENSORS_TSL2550 is not set 951# CONFIG_SENSORS_TSL2550 is not set
918# CONFIG_I2C_DEBUG_CORE is not set 952# CONFIG_I2C_DEBUG_CORE is not set
919# CONFIG_I2C_DEBUG_ALGO is not set 953# CONFIG_I2C_DEBUG_ALGO is not set
@@ -935,6 +969,11 @@ CONFIG_SPI_MPC52xx_PSC=m
935# 969#
936CONFIG_SPI_SPIDEV=m 970CONFIG_SPI_SPIDEV=m
937# CONFIG_SPI_TLE62X0 is not set 971# CONFIG_SPI_TLE62X0 is not set
972
973#
974# PPS support
975#
976# CONFIG_PPS is not set
938CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y 977CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
939CONFIG_ARCH_REQUIRE_GPIOLIB=y 978CONFIG_ARCH_REQUIRE_GPIOLIB=y
940CONFIG_GPIOLIB=y 979CONFIG_GPIOLIB=y
@@ -957,16 +996,27 @@ CONFIG_GPIOLIB=y
957# PCI GPIO expanders: 996# PCI GPIO expanders:
958# 997#
959# CONFIG_GPIO_BT8XX is not set 998# CONFIG_GPIO_BT8XX is not set
999# CONFIG_GPIO_LANGWELL is not set
960 1000
961# 1001#
962# SPI GPIO expanders: 1002# SPI GPIO expanders:
963# 1003#
964# CONFIG_GPIO_MAX7301 is not set 1004# CONFIG_GPIO_MAX7301 is not set
965# CONFIG_GPIO_MCP23S08 is not set 1005# CONFIG_GPIO_MCP23S08 is not set
1006# CONFIG_GPIO_MC33880 is not set
1007
1008#
1009# AC97 GPIO expanders:
1010#
966# CONFIG_W1 is not set 1011# CONFIG_W1 is not set
967# CONFIG_POWER_SUPPLY is not set 1012# CONFIG_POWER_SUPPLY is not set
968CONFIG_HWMON=y 1013CONFIG_HWMON=y
969# CONFIG_HWMON_VID is not set 1014# CONFIG_HWMON_VID is not set
1015# CONFIG_HWMON_DEBUG_CHIP is not set
1016
1017#
1018# Native drivers
1019#
970# CONFIG_SENSORS_AD7414 is not set 1020# CONFIG_SENSORS_AD7414 is not set
971# CONFIG_SENSORS_AD7418 is not set 1021# CONFIG_SENSORS_AD7418 is not set
972# CONFIG_SENSORS_ADCXX is not set 1022# CONFIG_SENSORS_ADCXX is not set
@@ -1019,6 +1069,8 @@ CONFIG_HWMON=y
1019# CONFIG_SENSORS_SMSC47B397 is not set 1069# CONFIG_SENSORS_SMSC47B397 is not set
1020# CONFIG_SENSORS_ADS7828 is not set 1070# CONFIG_SENSORS_ADS7828 is not set
1021# CONFIG_SENSORS_THMC50 is not set 1071# CONFIG_SENSORS_THMC50 is not set
1072# CONFIG_SENSORS_TMP401 is not set
1073# CONFIG_SENSORS_TMP421 is not set
1022# CONFIG_SENSORS_VIA686A is not set 1074# CONFIG_SENSORS_VIA686A is not set
1023# CONFIG_SENSORS_VT1211 is not set 1075# CONFIG_SENSORS_VT1211 is not set
1024# CONFIG_SENSORS_VT8231 is not set 1076# CONFIG_SENSORS_VT8231 is not set
@@ -1031,9 +1083,7 @@ CONFIG_HWMON=y
1031# CONFIG_SENSORS_W83627HF is not set 1083# CONFIG_SENSORS_W83627HF is not set
1032# CONFIG_SENSORS_W83627EHF is not set 1084# CONFIG_SENSORS_W83627EHF is not set
1033# CONFIG_SENSORS_LIS3_SPI is not set 1085# CONFIG_SENSORS_LIS3_SPI is not set
1034# CONFIG_HWMON_DEBUG_CHIP is not set
1035# CONFIG_THERMAL is not set 1086# CONFIG_THERMAL is not set
1036# CONFIG_THERMAL_HWMON is not set
1037CONFIG_WATCHDOG=y 1087CONFIG_WATCHDOG=y
1038# CONFIG_WATCHDOG_NOWAYOUT is not set 1088# CONFIG_WATCHDOG_NOWAYOUT is not set
1039 1089
@@ -1073,31 +1123,20 @@ CONFIG_SSB_POSSIBLE=y
1073# CONFIG_MFD_TMIO is not set 1123# CONFIG_MFD_TMIO is not set
1074# CONFIG_PMIC_DA903X is not set 1124# CONFIG_PMIC_DA903X is not set
1075# CONFIG_MFD_WM8400 is not set 1125# CONFIG_MFD_WM8400 is not set
1126# CONFIG_MFD_WM831X is not set
1076# CONFIG_MFD_WM8350_I2C is not set 1127# CONFIG_MFD_WM8350_I2C is not set
1077# CONFIG_MFD_PCF50633 is not set 1128# CONFIG_MFD_PCF50633 is not set
1129# CONFIG_MFD_MC13783 is not set
1130# CONFIG_AB3100_CORE is not set
1131# CONFIG_EZX_PCAP is not set
1078# CONFIG_REGULATOR is not set 1132# CONFIG_REGULATOR is not set
1079 1133# CONFIG_MEDIA_SUPPORT is not set
1080#
1081# Multimedia devices
1082#
1083
1084#
1085# Multimedia core support
1086#
1087# CONFIG_VIDEO_DEV is not set
1088# CONFIG_DVB_CORE is not set
1089# CONFIG_VIDEO_MEDIA is not set
1090
1091#
1092# Multimedia drivers
1093#
1094CONFIG_DAB=y
1095# CONFIG_USB_DABUSB is not set
1096 1134
1097# 1135#
1098# Graphics support 1136# Graphics support
1099# 1137#
1100# CONFIG_AGP is not set 1138# CONFIG_AGP is not set
1139CONFIG_VGA_ARB=y
1101CONFIG_DRM=y 1140CONFIG_DRM=y
1102# CONFIG_DRM_TDFX is not set 1141# CONFIG_DRM_TDFX is not set
1103# CONFIG_DRM_R128 is not set 1142# CONFIG_DRM_R128 is not set
@@ -1167,6 +1206,7 @@ CONFIG_FB_RADEON_BACKLIGHT=y
1167# CONFIG_FB_BROADSHEET is not set 1206# CONFIG_FB_BROADSHEET is not set
1168CONFIG_BACKLIGHT_LCD_SUPPORT=y 1207CONFIG_BACKLIGHT_LCD_SUPPORT=y
1169CONFIG_LCD_CLASS_DEVICE=m 1208CONFIG_LCD_CLASS_DEVICE=m
1209# CONFIG_LCD_LMS283GF05 is not set
1170# CONFIG_LCD_LTV350QV is not set 1210# CONFIG_LCD_LTV350QV is not set
1171# CONFIG_LCD_ILI9320 is not set 1211# CONFIG_LCD_ILI9320 is not set
1172# CONFIG_LCD_TDO24M is not set 1212# CONFIG_LCD_TDO24M is not set
@@ -1198,7 +1238,6 @@ CONFIG_LOGO_LINUX_CLUT224=y
1198# CONFIG_SOUND is not set 1238# CONFIG_SOUND is not set
1199CONFIG_HID_SUPPORT=y 1239CONFIG_HID_SUPPORT=y
1200CONFIG_HID=y 1240CONFIG_HID=y
1201# CONFIG_HID_DEBUG is not set
1202# CONFIG_HIDRAW is not set 1241# CONFIG_HIDRAW is not set
1203 1242
1204# 1243#
@@ -1217,10 +1256,11 @@ CONFIG_HID_BELKIN=y
1217CONFIG_HID_CHERRY=y 1256CONFIG_HID_CHERRY=y
1218# CONFIG_HID_CHICONY is not set 1257# CONFIG_HID_CHICONY is not set
1219CONFIG_HID_CYPRESS=y 1258CONFIG_HID_CYPRESS=y
1220# CONFIG_DRAGONRISE_FF is not set 1259# CONFIG_HID_DRAGONRISE is not set
1221CONFIG_HID_EZKEY=y 1260CONFIG_HID_EZKEY=y
1222# CONFIG_HID_KYE is not set 1261# CONFIG_HID_KYE is not set
1223# CONFIG_HID_GYRATION is not set 1262# CONFIG_HID_GYRATION is not set
1263# CONFIG_HID_TWINHAN is not set
1224# CONFIG_HID_KENSINGTON is not set 1264# CONFIG_HID_KENSINGTON is not set
1225# CONFIG_HID_LOGITECH is not set 1265# CONFIG_HID_LOGITECH is not set
1226# CONFIG_HID_MICROSOFT is not set 1266# CONFIG_HID_MICROSOFT is not set
@@ -1231,10 +1271,11 @@ CONFIG_HID_EZKEY=y
1231# CONFIG_HID_SAMSUNG is not set 1271# CONFIG_HID_SAMSUNG is not set
1232# CONFIG_HID_SONY is not set 1272# CONFIG_HID_SONY is not set
1233# CONFIG_HID_SUNPLUS is not set 1273# CONFIG_HID_SUNPLUS is not set
1234# CONFIG_GREENASIA_FF is not set 1274# CONFIG_HID_GREENASIA is not set
1275# CONFIG_HID_SMARTJOYPLUS is not set
1235# CONFIG_HID_TOPSEED is not set 1276# CONFIG_HID_TOPSEED is not set
1236# CONFIG_THRUSTMASTER_FF is not set 1277# CONFIG_HID_THRUSTMASTER is not set
1237# CONFIG_ZEROPLUS_FF is not set 1278# CONFIG_HID_ZEROPLUS is not set
1238CONFIG_USB_SUPPORT=y 1279CONFIG_USB_SUPPORT=y
1239CONFIG_USB_ARCH_HAS_HCD=y 1280CONFIG_USB_ARCH_HAS_HCD=y
1240CONFIG_USB_ARCH_HAS_OHCI=y 1281CONFIG_USB_ARCH_HAS_OHCI=y
@@ -1261,15 +1302,17 @@ CONFIG_USB_MON=y
1261# USB Host Controller Drivers 1302# USB Host Controller Drivers
1262# 1303#
1263# CONFIG_USB_C67X00_HCD is not set 1304# CONFIG_USB_C67X00_HCD is not set
1305# CONFIG_USB_XHCI_HCD is not set
1264# CONFIG_USB_EHCI_HCD is not set 1306# CONFIG_USB_EHCI_HCD is not set
1265# CONFIG_USB_OXU210HP_HCD is not set 1307# CONFIG_USB_OXU210HP_HCD is not set
1266# CONFIG_USB_ISP116X_HCD is not set 1308# CONFIG_USB_ISP116X_HCD is not set
1267# CONFIG_USB_ISP1760_HCD is not set 1309# CONFIG_USB_ISP1760_HCD is not set
1310# CONFIG_USB_ISP1362_HCD is not set
1268CONFIG_USB_OHCI_HCD=y 1311CONFIG_USB_OHCI_HCD=y
1269CONFIG_USB_OHCI_HCD_PPC_SOC=y 1312CONFIG_USB_OHCI_HCD_PPC_SOC=y
1270CONFIG_USB_OHCI_HCD_PPC_OF=y
1271CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1313CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
1272# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 1314# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
1315CONFIG_USB_OHCI_HCD_PPC_OF=y
1273CONFIG_USB_OHCI_HCD_PCI=y 1316CONFIG_USB_OHCI_HCD_PCI=y
1274CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y 1317CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
1275CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y 1318CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
@@ -1400,6 +1443,7 @@ CONFIG_RTC_DRV_DS1307=y
1400# CONFIG_RTC_DRV_S35390A is not set 1443# CONFIG_RTC_DRV_S35390A is not set
1401# CONFIG_RTC_DRV_FM3130 is not set 1444# CONFIG_RTC_DRV_FM3130 is not set
1402# CONFIG_RTC_DRV_RX8581 is not set 1445# CONFIG_RTC_DRV_RX8581 is not set
1446# CONFIG_RTC_DRV_RX8025 is not set
1403 1447
1404# 1448#
1405# SPI RTC drivers 1449# SPI RTC drivers
@@ -1411,6 +1455,7 @@ CONFIG_RTC_DRV_DS1307=y
1411# CONFIG_RTC_DRV_R9701 is not set 1455# CONFIG_RTC_DRV_R9701 is not set
1412# CONFIG_RTC_DRV_RS5C348 is not set 1456# CONFIG_RTC_DRV_RS5C348 is not set
1413# CONFIG_RTC_DRV_DS3234 is not set 1457# CONFIG_RTC_DRV_DS3234 is not set
1458# CONFIG_RTC_DRV_PCF2123 is not set
1414 1459
1415# 1460#
1416# Platform RTC drivers 1461# Platform RTC drivers
@@ -1434,6 +1479,10 @@ CONFIG_RTC_DRV_DS1307=y
1434# CONFIG_DMADEVICES is not set 1479# CONFIG_DMADEVICES is not set
1435# CONFIG_AUXDISPLAY is not set 1480# CONFIG_AUXDISPLAY is not set
1436# CONFIG_UIO is not set 1481# CONFIG_UIO is not set
1482
1483#
1484# TI VLYNQ
1485#
1437# CONFIG_STAGING is not set 1486# CONFIG_STAGING is not set
1438 1487
1439# 1488#
@@ -1453,10 +1502,13 @@ CONFIG_FS_MBCACHE=y
1453# CONFIG_REISERFS_FS is not set 1502# CONFIG_REISERFS_FS is not set
1454# CONFIG_JFS_FS is not set 1503# CONFIG_JFS_FS is not set
1455# CONFIG_FS_POSIX_ACL is not set 1504# CONFIG_FS_POSIX_ACL is not set
1456CONFIG_FILE_LOCKING=y
1457# CONFIG_XFS_FS is not set 1505# CONFIG_XFS_FS is not set
1506# CONFIG_GFS2_FS is not set
1458# CONFIG_OCFS2_FS is not set 1507# CONFIG_OCFS2_FS is not set
1459# CONFIG_BTRFS_FS is not set 1508# CONFIG_BTRFS_FS is not set
1509# CONFIG_NILFS2_FS is not set
1510CONFIG_FILE_LOCKING=y
1511CONFIG_FSNOTIFY=y
1460CONFIG_DNOTIFY=y 1512CONFIG_DNOTIFY=y
1461CONFIG_INOTIFY=y 1513CONFIG_INOTIFY=y
1462CONFIG_INOTIFY_USER=y 1514CONFIG_INOTIFY_USER=y
@@ -1533,12 +1585,12 @@ CONFIG_CRAMFS=y
1533# CONFIG_ROMFS_FS is not set 1585# CONFIG_ROMFS_FS is not set
1534# CONFIG_SYSV_FS is not set 1586# CONFIG_SYSV_FS is not set
1535# CONFIG_UFS_FS is not set 1587# CONFIG_UFS_FS is not set
1536# CONFIG_NILFS2_FS is not set
1537CONFIG_NETWORK_FILESYSTEMS=y 1588CONFIG_NETWORK_FILESYSTEMS=y
1538CONFIG_NFS_FS=y 1589CONFIG_NFS_FS=y
1539CONFIG_NFS_V3=y 1590CONFIG_NFS_V3=y
1540# CONFIG_NFS_V3_ACL is not set 1591# CONFIG_NFS_V3_ACL is not set
1541CONFIG_NFS_V4=y 1592CONFIG_NFS_V4=y
1593# CONFIG_NFS_V4_1 is not set
1542CONFIG_ROOT_NFS=y 1594CONFIG_ROOT_NFS=y
1543# CONFIG_NFSD is not set 1595# CONFIG_NFSD is not set
1544CONFIG_LOCKD=y 1596CONFIG_LOCKD=y
@@ -1624,6 +1676,7 @@ CONFIG_HAS_IOPORT=y
1624CONFIG_HAS_DMA=y 1676CONFIG_HAS_DMA=y
1625CONFIG_HAVE_LMB=y 1677CONFIG_HAVE_LMB=y
1626CONFIG_NLATTR=y 1678CONFIG_NLATTR=y
1679CONFIG_GENERIC_ATOMIC64=y
1627 1680
1628# 1681#
1629# Kernel hacking 1682# Kernel hacking
@@ -1633,6 +1686,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1633CONFIG_ENABLE_MUST_CHECK=y 1686CONFIG_ENABLE_MUST_CHECK=y
1634CONFIG_FRAME_WARN=1024 1687CONFIG_FRAME_WARN=1024
1635# CONFIG_MAGIC_SYSRQ is not set 1688# CONFIG_MAGIC_SYSRQ is not set
1689# CONFIG_STRIP_ASM_SYMS is not set
1636# CONFIG_UNUSED_SYMBOLS is not set 1690# CONFIG_UNUSED_SYMBOLS is not set
1637# CONFIG_DEBUG_FS is not set 1691# CONFIG_DEBUG_FS is not set
1638# CONFIG_HEADERS_CHECK is not set 1692# CONFIG_HEADERS_CHECK is not set
@@ -1650,10 +1704,14 @@ CONFIG_SCHED_DEBUG=y
1650# CONFIG_DEBUG_OBJECTS is not set 1704# CONFIG_DEBUG_OBJECTS is not set
1651# CONFIG_SLUB_DEBUG_ON is not set 1705# CONFIG_SLUB_DEBUG_ON is not set
1652# CONFIG_SLUB_STATS is not set 1706# CONFIG_SLUB_STATS is not set
1707# CONFIG_DEBUG_KMEMLEAK is not set
1653# CONFIG_DEBUG_RT_MUTEXES is not set 1708# CONFIG_DEBUG_RT_MUTEXES is not set
1654# CONFIG_RT_MUTEX_TESTER is not set 1709# CONFIG_RT_MUTEX_TESTER is not set
1655# CONFIG_DEBUG_SPINLOCK is not set 1710# CONFIG_DEBUG_SPINLOCK is not set
1656# CONFIG_DEBUG_MUTEXES is not set 1711# CONFIG_DEBUG_MUTEXES is not set
1712# CONFIG_DEBUG_LOCK_ALLOC is not set
1713# CONFIG_PROVE_LOCKING is not set
1714# CONFIG_LOCK_STAT is not set
1657# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1715# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1658# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1716# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1659# CONFIG_DEBUG_KOBJECT is not set 1717# CONFIG_DEBUG_KOBJECT is not set
@@ -1665,11 +1723,12 @@ CONFIG_DEBUG_INFO=y
1665# CONFIG_DEBUG_LIST is not set 1723# CONFIG_DEBUG_LIST is not set
1666# CONFIG_DEBUG_SG is not set 1724# CONFIG_DEBUG_SG is not set
1667# CONFIG_DEBUG_NOTIFIERS is not set 1725# CONFIG_DEBUG_NOTIFIERS is not set
1668# CONFIG_BOOT_PRINTK_DELAY is not set 1726# CONFIG_DEBUG_CREDENTIALS is not set
1669# CONFIG_RCU_TORTURE_TEST is not set 1727# CONFIG_RCU_TORTURE_TEST is not set
1670# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1728# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1671# CONFIG_BACKTRACE_SELF_TEST is not set 1729# CONFIG_BACKTRACE_SELF_TEST is not set
1672# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1730# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1731# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1673# CONFIG_FAULT_INJECTION is not set 1732# CONFIG_FAULT_INJECTION is not set
1674# CONFIG_LATENCYTOP is not set 1733# CONFIG_LATENCYTOP is not set
1675# CONFIG_DEBUG_PAGEALLOC is not set 1734# CONFIG_DEBUG_PAGEALLOC is not set
@@ -1678,23 +1737,25 @@ CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1678CONFIG_HAVE_DYNAMIC_FTRACE=y 1737CONFIG_HAVE_DYNAMIC_FTRACE=y
1679CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1738CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1680CONFIG_TRACING_SUPPORT=y 1739CONFIG_TRACING_SUPPORT=y
1681 1740CONFIG_FTRACE=y
1682#
1683# Tracers
1684#
1685# CONFIG_FUNCTION_TRACER is not set 1741# CONFIG_FUNCTION_TRACER is not set
1742# CONFIG_IRQSOFF_TRACER is not set
1686# CONFIG_SCHED_TRACER is not set 1743# CONFIG_SCHED_TRACER is not set
1687# CONFIG_CONTEXT_SWITCH_TRACER is not set 1744# CONFIG_ENABLE_DEFAULT_TRACERS is not set
1688# CONFIG_EVENT_TRACER is not set
1689# CONFIG_BOOT_TRACER is not set 1745# CONFIG_BOOT_TRACER is not set
1690# CONFIG_TRACE_BRANCH_PROFILING is not set 1746CONFIG_BRANCH_PROFILE_NONE=y
1747# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1748# CONFIG_PROFILE_ALL_BRANCHES is not set
1691# CONFIG_STACK_TRACER is not set 1749# CONFIG_STACK_TRACER is not set
1692# CONFIG_KMEMTRACE is not set 1750# CONFIG_KMEMTRACE is not set
1693# CONFIG_WORKQUEUE_TRACER is not set 1751# CONFIG_WORKQUEUE_TRACER is not set
1694# CONFIG_BLK_DEV_IO_TRACE is not set 1752# CONFIG_BLK_DEV_IO_TRACE is not set
1753# CONFIG_DMA_API_DEBUG is not set
1695# CONFIG_SAMPLES is not set 1754# CONFIG_SAMPLES is not set
1696CONFIG_HAVE_ARCH_KGDB=y 1755CONFIG_HAVE_ARCH_KGDB=y
1697# CONFIG_KGDB is not set 1756# CONFIG_KGDB is not set
1757# CONFIG_PPC_DISABLE_WERROR is not set
1758CONFIG_PPC_WERROR=y
1698CONFIG_PRINT_STACK_DEPTH=64 1759CONFIG_PRINT_STACK_DEPTH=64
1699# CONFIG_DEBUG_STACKOVERFLOW is not set 1760# CONFIG_DEBUG_STACKOVERFLOW is not set
1700# CONFIG_DEBUG_STACK_USAGE is not set 1761# CONFIG_DEBUG_STACK_USAGE is not set
@@ -1719,7 +1780,6 @@ CONFIG_CRYPTO=y
1719# 1780#
1720# Crypto core or helper 1781# Crypto core or helper
1721# 1782#
1722# CONFIG_CRYPTO_FIPS is not set
1723CONFIG_CRYPTO_ALGAPI=y 1783CONFIG_CRYPTO_ALGAPI=y
1724CONFIG_CRYPTO_ALGAPI2=y 1784CONFIG_CRYPTO_ALGAPI2=y
1725CONFIG_CRYPTO_AEAD2=y 1785CONFIG_CRYPTO_AEAD2=y
@@ -1761,11 +1821,13 @@ CONFIG_CRYPTO_CBC=y
1761# 1821#
1762# CONFIG_CRYPTO_HMAC is not set 1822# CONFIG_CRYPTO_HMAC is not set
1763# CONFIG_CRYPTO_XCBC is not set 1823# CONFIG_CRYPTO_XCBC is not set
1824# CONFIG_CRYPTO_VMAC is not set
1764 1825
1765# 1826#
1766# Digest 1827# Digest
1767# 1828#
1768# CONFIG_CRYPTO_CRC32C is not set 1829# CONFIG_CRYPTO_CRC32C is not set
1830# CONFIG_CRYPTO_GHASH is not set
1769# CONFIG_CRYPTO_MD4 is not set 1831# CONFIG_CRYPTO_MD4 is not set
1770CONFIG_CRYPTO_MD5=y 1832CONFIG_CRYPTO_MD5=y
1771# CONFIG_CRYPTO_MICHAEL_MIC is not set 1833# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/mpc7448_hpc2_defconfig b/arch/powerpc/configs/mpc7448_hpc2_defconfig
index f23428c3b34e..d8b364a45944 100644
--- a/arch/powerpc/configs/mpc7448_hpc2_defconfig
+++ b/arch/powerpc/configs/mpc7448_hpc2_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:31:53 2009 4# Thu Nov 5 08:20:10 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -34,6 +34,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
34CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
37CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
38CONFIG_STACKTRACE_SUPPORT=y 39CONFIG_STACKTRACE_SUPPORT=y
39CONFIG_HAVE_LATENCYTOP_SUPPORT=y 40CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -82,11 +83,12 @@ CONFIG_SYSVIPC_SYSCTL=y
82# 83#
83# RCU Subsystem 84# RCU Subsystem
84# 85#
85CONFIG_CLASSIC_RCU=y 86CONFIG_TREE_RCU=y
86# CONFIG_TREE_RCU is not set 87# CONFIG_TREE_PREEMPT_RCU is not set
87# CONFIG_PREEMPT_RCU is not set 88# CONFIG_RCU_TRACE is not set
89CONFIG_RCU_FANOUT=32
90# CONFIG_RCU_FANOUT_EXACT is not set
88# CONFIG_TREE_RCU_TRACE is not set 91# CONFIG_TREE_RCU_TRACE is not set
89# CONFIG_PREEMPT_RCU_TRACE is not set
90# CONFIG_IKCONFIG is not set 92# CONFIG_IKCONFIG is not set
91CONFIG_LOG_BUF_SHIFT=14 93CONFIG_LOG_BUF_SHIFT=14
92CONFIG_GROUP_SCHED=y 94CONFIG_GROUP_SCHED=y
@@ -123,28 +125,29 @@ CONFIG_TIMERFD=y
123CONFIG_EVENTFD=y 125CONFIG_EVENTFD=y
124CONFIG_SHMEM=y 126CONFIG_SHMEM=y
125CONFIG_AIO=y 127CONFIG_AIO=y
126CONFIG_HAVE_PERF_COUNTERS=y 128CONFIG_HAVE_PERF_EVENTS=y
127 129
128# 130#
129# Performance Counters 131# Kernel Performance Events And Counters
130# 132#
133# CONFIG_PERF_EVENTS is not set
131# CONFIG_PERF_COUNTERS is not set 134# CONFIG_PERF_COUNTERS is not set
132CONFIG_VM_EVENT_COUNTERS=y 135CONFIG_VM_EVENT_COUNTERS=y
133CONFIG_PCI_QUIRKS=y 136CONFIG_PCI_QUIRKS=y
134CONFIG_SLUB_DEBUG=y 137CONFIG_SLUB_DEBUG=y
135# CONFIG_STRIP_ASM_SYMS is not set
136CONFIG_COMPAT_BRK=y 138CONFIG_COMPAT_BRK=y
137# CONFIG_SLAB is not set 139# CONFIG_SLAB is not set
138CONFIG_SLUB=y 140CONFIG_SLUB=y
139# CONFIG_SLOB is not set 141# CONFIG_SLOB is not set
140# CONFIG_PROFILING is not set 142# CONFIG_PROFILING is not set
141# CONFIG_MARKERS is not set
142CONFIG_HAVE_OPROFILE=y 143CONFIG_HAVE_OPROFILE=y
143CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 144CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
144CONFIG_HAVE_IOREMAP_PROT=y 145CONFIG_HAVE_IOREMAP_PROT=y
145CONFIG_HAVE_KPROBES=y 146CONFIG_HAVE_KPROBES=y
146CONFIG_HAVE_KRETPROBES=y 147CONFIG_HAVE_KRETPROBES=y
147CONFIG_HAVE_ARCH_TRACEHOOK=y 148CONFIG_HAVE_ARCH_TRACEHOOK=y
149CONFIG_HAVE_DMA_ATTRS=y
150CONFIG_HAVE_DMA_API_DEBUG=y
148 151
149# 152#
150# GCOV-based kernel profiling 153# GCOV-based kernel profiling
@@ -241,6 +244,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
241CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 244CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
242# CONFIG_KEXEC is not set 245# CONFIG_KEXEC is not set
243# CONFIG_CRASH_DUMP is not set 246# CONFIG_CRASH_DUMP is not set
247CONFIG_MAX_ACTIVE_REGIONS=32
244CONFIG_ARCH_FLATMEM_ENABLE=y 248CONFIG_ARCH_FLATMEM_ENABLE=y
245CONFIG_ARCH_POPULATES_NODE_MAP=y 249CONFIG_ARCH_POPULATES_NODE_MAP=y
246CONFIG_SELECT_MEMORY_MODEL=y 250CONFIG_SELECT_MEMORY_MODEL=y
@@ -258,6 +262,7 @@ CONFIG_BOUNCE=y
258CONFIG_VIRT_TO_BUS=y 262CONFIG_VIRT_TO_BUS=y
259CONFIG_HAVE_MLOCK=y 263CONFIG_HAVE_MLOCK=y
260CONFIG_HAVE_MLOCKED_PAGE_BIT=y 264CONFIG_HAVE_MLOCKED_PAGE_BIT=y
265# CONFIG_KSM is not set
261CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 266CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
262CONFIG_PPC_4K_PAGES=y 267CONFIG_PPC_4K_PAGES=y
263# CONFIG_PPC_16K_PAGES is not set 268# CONFIG_PPC_16K_PAGES is not set
@@ -350,6 +355,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
350# CONFIG_NETFILTER is not set 355# CONFIG_NETFILTER is not set
351# CONFIG_IP_DCCP is not set 356# CONFIG_IP_DCCP is not set
352# CONFIG_IP_SCTP is not set 357# CONFIG_IP_SCTP is not set
358# CONFIG_RDS is not set
353# CONFIG_TIPC is not set 359# CONFIG_TIPC is not set
354# CONFIG_ATM is not set 360# CONFIG_ATM is not set
355# CONFIG_BRIDGE is not set 361# CONFIG_BRIDGE is not set
@@ -379,6 +385,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
379# CONFIG_AF_RXRPC is not set 385# CONFIG_AF_RXRPC is not set
380CONFIG_WIRELESS=y 386CONFIG_WIRELESS=y
381# CONFIG_CFG80211 is not set 387# CONFIG_CFG80211 is not set
388CONFIG_CFG80211_DEFAULT_PS_VALUE=0
382CONFIG_WIRELESS_OLD_REGULATORY=y 389CONFIG_WIRELESS_OLD_REGULATORY=y
383# CONFIG_WIRELESS_EXT is not set 390# CONFIG_WIRELESS_EXT is not set
384# CONFIG_LIB80211 is not set 391# CONFIG_LIB80211 is not set
@@ -386,7 +393,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
386# 393#
387# CFG80211 needs to be enabled for MAC80211 394# CFG80211 needs to be enabled for MAC80211
388# 395#
389CONFIG_MAC80211_DEFAULT_PS_VALUE=0
390# CONFIG_WIMAX is not set 396# CONFIG_WIMAX is not set
391# CONFIG_RFKILL is not set 397# CONFIG_RFKILL is not set
392# CONFIG_NET_9P is not set 398# CONFIG_NET_9P is not set
@@ -399,6 +405,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
399# Generic Driver Options 405# Generic Driver Options
400# 406#
401CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 407CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
408# CONFIG_DEVTMPFS is not set
402CONFIG_STANDALONE=y 409CONFIG_STANDALONE=y
403CONFIG_PREVENT_FIRMWARE_BUILD=y 410CONFIG_PREVENT_FIRMWARE_BUILD=y
404# CONFIG_FW_LOADER is not set 411# CONFIG_FW_LOADER is not set
@@ -478,6 +485,7 @@ CONFIG_SCSI_LOWLEVEL=y
478# CONFIG_ISCSI_TCP is not set 485# CONFIG_ISCSI_TCP is not set
479# CONFIG_SCSI_CXGB3_ISCSI is not set 486# CONFIG_SCSI_CXGB3_ISCSI is not set
480# CONFIG_SCSI_BNX2_ISCSI is not set 487# CONFIG_SCSI_BNX2_ISCSI is not set
488# CONFIG_BE2ISCSI is not set
481# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 489# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
482# CONFIG_SCSI_3W_9XXX is not set 490# CONFIG_SCSI_3W_9XXX is not set
483# CONFIG_SCSI_ACARD is not set 491# CONFIG_SCSI_ACARD is not set
@@ -517,11 +525,14 @@ CONFIG_SCSI_LOWLEVEL=y
517# CONFIG_SCSI_DC390T is not set 525# CONFIG_SCSI_DC390T is not set
518# CONFIG_SCSI_NSP32 is not set 526# CONFIG_SCSI_NSP32 is not set
519# CONFIG_SCSI_DEBUG is not set 527# CONFIG_SCSI_DEBUG is not set
528# CONFIG_SCSI_PMCRAID is not set
520# CONFIG_SCSI_SRP is not set 529# CONFIG_SCSI_SRP is not set
530# CONFIG_SCSI_BFA_FC is not set
521# CONFIG_SCSI_DH is not set 531# CONFIG_SCSI_DH is not set
522# CONFIG_SCSI_OSD_INITIATOR is not set 532# CONFIG_SCSI_OSD_INITIATOR is not set
523CONFIG_ATA=y 533CONFIG_ATA=y
524# CONFIG_ATA_NONSTANDARD is not set 534# CONFIG_ATA_NONSTANDARD is not set
535CONFIG_ATA_VERBOSE_ERROR=y
525CONFIG_SATA_PMP=y 536CONFIG_SATA_PMP=y
526# CONFIG_SATA_AHCI is not set 537# CONFIG_SATA_AHCI is not set
527# CONFIG_SATA_SIL24 is not set 538# CONFIG_SATA_SIL24 is not set
@@ -543,6 +554,7 @@ CONFIG_SATA_MV=y
543# CONFIG_PATA_ALI is not set 554# CONFIG_PATA_ALI is not set
544# CONFIG_PATA_AMD is not set 555# CONFIG_PATA_AMD is not set
545# CONFIG_PATA_ARTOP is not set 556# CONFIG_PATA_ARTOP is not set
557# CONFIG_PATA_ATP867X is not set
546# CONFIG_PATA_ATIIXP is not set 558# CONFIG_PATA_ATIIXP is not set
547# CONFIG_PATA_CMD640_PCI is not set 559# CONFIG_PATA_CMD640_PCI is not set
548# CONFIG_PATA_CMD64X is not set 560# CONFIG_PATA_CMD64X is not set
@@ -570,6 +582,7 @@ CONFIG_SATA_MV=y
570# CONFIG_PATA_OPTIDMA is not set 582# CONFIG_PATA_OPTIDMA is not set
571# CONFIG_PATA_PDC_OLD is not set 583# CONFIG_PATA_PDC_OLD is not set
572# CONFIG_PATA_RADISYS is not set 584# CONFIG_PATA_RADISYS is not set
585# CONFIG_PATA_RDC is not set
573# CONFIG_PATA_RZ1000 is not set 586# CONFIG_PATA_RZ1000 is not set
574# CONFIG_PATA_SC1200 is not set 587# CONFIG_PATA_SC1200 is not set
575# CONFIG_PATA_SERVERWORKS is not set 588# CONFIG_PATA_SERVERWORKS is not set
@@ -666,9 +679,11 @@ CONFIG_8139TOO=y
666# CONFIG_SUNDANCE is not set 679# CONFIG_SUNDANCE is not set
667# CONFIG_TLAN is not set 680# CONFIG_TLAN is not set
668# CONFIG_KS8842 is not set 681# CONFIG_KS8842 is not set
682# CONFIG_KS8851_MLL is not set
669# CONFIG_VIA_RHINE is not set 683# CONFIG_VIA_RHINE is not set
670# CONFIG_SC92031 is not set 684# CONFIG_SC92031 is not set
671# CONFIG_ATL2 is not set 685# CONFIG_ATL2 is not set
686# CONFIG_XILINX_EMACLITE is not set
672CONFIG_NETDEV_1000=y 687CONFIG_NETDEV_1000=y
673# CONFIG_ACENIC is not set 688# CONFIG_ACENIC is not set
674# CONFIG_DL2K is not set 689# CONFIG_DL2K is not set
@@ -715,10 +730,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
715# CONFIG_SFC is not set 730# CONFIG_SFC is not set
716# CONFIG_BE2NET is not set 731# CONFIG_BE2NET is not set
717# CONFIG_TR is not set 732# CONFIG_TR is not set
718 733CONFIG_WLAN=y
719#
720# Wireless LAN
721#
722# CONFIG_WLAN_PRE80211 is not set 734# CONFIG_WLAN_PRE80211 is not set
723# CONFIG_WLAN_80211 is not set 735# CONFIG_WLAN_80211 is not set
724 736
@@ -822,6 +834,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
822# CONFIG_POWER_SUPPLY is not set 834# CONFIG_POWER_SUPPLY is not set
823CONFIG_HWMON=y 835CONFIG_HWMON=y
824# CONFIG_HWMON_VID is not set 836# CONFIG_HWMON_VID is not set
837# CONFIG_HWMON_DEBUG_CHIP is not set
838
839#
840# Native drivers
841#
825# CONFIG_SENSORS_I5K_AMB is not set 842# CONFIG_SENSORS_I5K_AMB is not set
826# CONFIG_SENSORS_F71805F is not set 843# CONFIG_SENSORS_F71805F is not set
827# CONFIG_SENSORS_F71882FG is not set 844# CONFIG_SENSORS_F71882FG is not set
@@ -836,9 +853,7 @@ CONFIG_HWMON=y
836# CONFIG_SENSORS_VT8231 is not set 853# CONFIG_SENSORS_VT8231 is not set
837# CONFIG_SENSORS_W83627HF is not set 854# CONFIG_SENSORS_W83627HF is not set
838# CONFIG_SENSORS_W83627EHF is not set 855# CONFIG_SENSORS_W83627EHF is not set
839# CONFIG_HWMON_DEBUG_CHIP is not set
840# CONFIG_THERMAL is not set 856# CONFIG_THERMAL is not set
841# CONFIG_THERMAL_HWMON is not set
842# CONFIG_WATCHDOG is not set 857# CONFIG_WATCHDOG is not set
843CONFIG_SSB_POSSIBLE=y 858CONFIG_SSB_POSSIBLE=y
844 859
@@ -861,6 +876,7 @@ CONFIG_SSB_POSSIBLE=y
861# Graphics support 876# Graphics support
862# 877#
863# CONFIG_AGP is not set 878# CONFIG_AGP is not set
879CONFIG_VGA_ARB=y
864# CONFIG_DRM is not set 880# CONFIG_DRM is not set
865# CONFIG_VGASTATE is not set 881# CONFIG_VGASTATE is not set
866CONFIG_VIDEO_OUTPUT_CONTROL=y 882CONFIG_VIDEO_OUTPUT_CONTROL=y
@@ -874,7 +890,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
874# CONFIG_SOUND is not set 890# CONFIG_SOUND is not set
875CONFIG_HID_SUPPORT=y 891CONFIG_HID_SUPPORT=y
876CONFIG_HID=y 892CONFIG_HID=y
877# CONFIG_HID_DEBUG is not set
878# CONFIG_HIDRAW is not set 893# CONFIG_HIDRAW is not set
879# CONFIG_HID_PID is not set 894# CONFIG_HID_PID is not set
880 895
@@ -939,6 +954,7 @@ CONFIG_FS_MBCACHE=y
939# CONFIG_GFS2_FS is not set 954# CONFIG_GFS2_FS is not set
940# CONFIG_OCFS2_FS is not set 955# CONFIG_OCFS2_FS is not set
941# CONFIG_BTRFS_FS is not set 956# CONFIG_BTRFS_FS is not set
957# CONFIG_NILFS2_FS is not set
942CONFIG_FILE_LOCKING=y 958CONFIG_FILE_LOCKING=y
943CONFIG_FSNOTIFY=y 959CONFIG_FSNOTIFY=y
944CONFIG_DNOTIFY=y 960CONFIG_DNOTIFY=y
@@ -997,7 +1013,6 @@ CONFIG_MISC_FILESYSTEMS=y
997# CONFIG_ROMFS_FS is not set 1013# CONFIG_ROMFS_FS is not set
998# CONFIG_SYSV_FS is not set 1014# CONFIG_SYSV_FS is not set
999# CONFIG_UFS_FS is not set 1015# CONFIG_UFS_FS is not set
1000# CONFIG_NILFS2_FS is not set
1001CONFIG_NETWORK_FILESYSTEMS=y 1016CONFIG_NETWORK_FILESYSTEMS=y
1002CONFIG_NFS_FS=y 1017CONFIG_NFS_FS=y
1003# CONFIG_NFS_V3 is not set 1018# CONFIG_NFS_V3 is not set
@@ -1069,6 +1084,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1069CONFIG_ENABLE_MUST_CHECK=y 1084CONFIG_ENABLE_MUST_CHECK=y
1070CONFIG_FRAME_WARN=1024 1085CONFIG_FRAME_WARN=1024
1071# CONFIG_MAGIC_SYSRQ is not set 1086# CONFIG_MAGIC_SYSRQ is not set
1087# CONFIG_STRIP_ASM_SYMS is not set
1072# CONFIG_UNUSED_SYMBOLS is not set 1088# CONFIG_UNUSED_SYMBOLS is not set
1073# CONFIG_DEBUG_FS is not set 1089# CONFIG_DEBUG_FS is not set
1074# CONFIG_HEADERS_CHECK is not set 1090# CONFIG_HEADERS_CHECK is not set
@@ -1086,6 +1102,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1086CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1102CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1087CONFIG_TRACING_SUPPORT=y 1103CONFIG_TRACING_SUPPORT=y
1088# CONFIG_FTRACE is not set 1104# CONFIG_FTRACE is not set
1105# CONFIG_DMA_API_DEBUG is not set
1089# CONFIG_SAMPLES is not set 1106# CONFIG_SAMPLES is not set
1090CONFIG_HAVE_ARCH_KGDB=y 1107CONFIG_HAVE_ARCH_KGDB=y
1091# CONFIG_PPC_DISABLE_WERROR is not set 1108# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1107,7 +1124,6 @@ CONFIG_CRYPTO=y
1107# 1124#
1108# Crypto core or helper 1125# Crypto core or helper
1109# 1126#
1110# CONFIG_CRYPTO_FIPS is not set
1111# CONFIG_CRYPTO_MANAGER is not set 1127# CONFIG_CRYPTO_MANAGER is not set
1112# CONFIG_CRYPTO_MANAGER2 is not set 1128# CONFIG_CRYPTO_MANAGER2 is not set
1113# CONFIG_CRYPTO_GF128MUL is not set 1129# CONFIG_CRYPTO_GF128MUL is not set
@@ -1138,11 +1154,13 @@ CONFIG_CRYPTO=y
1138# 1154#
1139# CONFIG_CRYPTO_HMAC is not set 1155# CONFIG_CRYPTO_HMAC is not set
1140# CONFIG_CRYPTO_XCBC is not set 1156# CONFIG_CRYPTO_XCBC is not set
1157# CONFIG_CRYPTO_VMAC is not set
1141 1158
1142# 1159#
1143# Digest 1160# Digest
1144# 1161#
1145# CONFIG_CRYPTO_CRC32C is not set 1162# CONFIG_CRYPTO_CRC32C is not set
1163# CONFIG_CRYPTO_GHASH is not set
1146# CONFIG_CRYPTO_MD4 is not set 1164# CONFIG_CRYPTO_MD4 is not set
1147# CONFIG_CRYPTO_MD5 is not set 1165# CONFIG_CRYPTO_MD5 is not set
1148# CONFIG_CRYPTO_MICHAEL_MIC is not set 1166# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/mpc8272_ads_defconfig b/arch/powerpc/configs/mpc8272_ads_defconfig
index 02716f72db6f..00fad81b6fce 100644
--- a/arch/powerpc/configs/mpc8272_ads_defconfig
+++ b/arch/powerpc/configs/mpc8272_ads_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:31:54 2009 4# Thu Nov 5 08:20:11 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -34,6 +34,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
34CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
37CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
38CONFIG_STACKTRACE_SUPPORT=y 39CONFIG_STACKTRACE_SUPPORT=y
39CONFIG_HAVE_LATENCYTOP_SUPPORT=y 40CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -82,11 +83,12 @@ CONFIG_SYSVIPC_SYSCTL=y
82# 83#
83# RCU Subsystem 84# RCU Subsystem
84# 85#
85CONFIG_CLASSIC_RCU=y 86CONFIG_TREE_RCU=y
86# CONFIG_TREE_RCU is not set 87# CONFIG_TREE_PREEMPT_RCU is not set
87# CONFIG_PREEMPT_RCU is not set 88# CONFIG_RCU_TRACE is not set
89CONFIG_RCU_FANOUT=32
90# CONFIG_RCU_FANOUT_EXACT is not set
88# CONFIG_TREE_RCU_TRACE is not set 91# CONFIG_TREE_RCU_TRACE is not set
89# CONFIG_PREEMPT_RCU_TRACE is not set
90CONFIG_IKCONFIG=y 92CONFIG_IKCONFIG=y
91CONFIG_IKCONFIG_PROC=y 93CONFIG_IKCONFIG_PROC=y
92CONFIG_LOG_BUF_SHIFT=14 94CONFIG_LOG_BUF_SHIFT=14
@@ -116,29 +118,30 @@ CONFIG_TIMERFD=y
116CONFIG_EVENTFD=y 118CONFIG_EVENTFD=y
117CONFIG_SHMEM=y 119CONFIG_SHMEM=y
118CONFIG_AIO=y 120CONFIG_AIO=y
119CONFIG_HAVE_PERF_COUNTERS=y 121CONFIG_HAVE_PERF_EVENTS=y
120 122
121# 123#
122# Performance Counters 124# Kernel Performance Events And Counters
123# 125#
126# CONFIG_PERF_EVENTS is not set
124# CONFIG_PERF_COUNTERS is not set 127# CONFIG_PERF_COUNTERS is not set
125CONFIG_VM_EVENT_COUNTERS=y 128CONFIG_VM_EVENT_COUNTERS=y
126CONFIG_PCI_QUIRKS=y 129CONFIG_PCI_QUIRKS=y
127CONFIG_SLUB_DEBUG=y 130CONFIG_SLUB_DEBUG=y
128# CONFIG_STRIP_ASM_SYMS is not set
129CONFIG_COMPAT_BRK=y 131CONFIG_COMPAT_BRK=y
130# CONFIG_SLAB is not set 132# CONFIG_SLAB is not set
131CONFIG_SLUB=y 133CONFIG_SLUB=y
132# CONFIG_SLOB is not set 134# CONFIG_SLOB is not set
133# CONFIG_PROFILING is not set 135# CONFIG_PROFILING is not set
134# CONFIG_MARKERS is not set
135CONFIG_HAVE_OPROFILE=y 136CONFIG_HAVE_OPROFILE=y
136CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 137CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
137CONFIG_HAVE_IOREMAP_PROT=y 138CONFIG_HAVE_IOREMAP_PROT=y
138CONFIG_HAVE_KPROBES=y 139CONFIG_HAVE_KPROBES=y
139CONFIG_HAVE_KRETPROBES=y 140CONFIG_HAVE_KRETPROBES=y
140CONFIG_HAVE_ARCH_TRACEHOOK=y 141CONFIG_HAVE_ARCH_TRACEHOOK=y
142CONFIG_HAVE_DMA_ATTRS=y
141CONFIG_HAVE_CLK=y 143CONFIG_HAVE_CLK=y
144CONFIG_HAVE_DMA_API_DEBUG=y
142 145
143# 146#
144# GCOV-based kernel profiling 147# GCOV-based kernel profiling
@@ -151,6 +154,7 @@ CONFIG_BASE_SMALL=0
151# CONFIG_MODULES is not set 154# CONFIG_MODULES is not set
152CONFIG_BLOCK=y 155CONFIG_BLOCK=y
153CONFIG_LBDAF=y 156CONFIG_LBDAF=y
157CONFIG_BLK_DEV_BSG=y
154# CONFIG_BLK_DEV_INTEGRITY is not set 158# CONFIG_BLK_DEV_INTEGRITY is not set
155 159
156# 160#
@@ -236,6 +240,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
236CONFIG_ARCH_HAS_WALK_MEMORY=y 240CONFIG_ARCH_HAS_WALK_MEMORY=y
237CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 241CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
238# CONFIG_CRASH_DUMP is not set 242# CONFIG_CRASH_DUMP is not set
243CONFIG_MAX_ACTIVE_REGIONS=32
239CONFIG_ARCH_FLATMEM_ENABLE=y 244CONFIG_ARCH_FLATMEM_ENABLE=y
240CONFIG_ARCH_POPULATES_NODE_MAP=y 245CONFIG_ARCH_POPULATES_NODE_MAP=y
241CONFIG_FLATMEM=y 246CONFIG_FLATMEM=y
@@ -249,6 +254,7 @@ CONFIG_BOUNCE=y
249CONFIG_VIRT_TO_BUS=y 254CONFIG_VIRT_TO_BUS=y
250CONFIG_HAVE_MLOCK=y 255CONFIG_HAVE_MLOCK=y
251CONFIG_HAVE_MLOCKED_PAGE_BIT=y 256CONFIG_HAVE_MLOCKED_PAGE_BIT=y
257# CONFIG_KSM is not set
252CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 258CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
253CONFIG_PPC_4K_PAGES=y 259CONFIG_PPC_4K_PAGES=y
254# CONFIG_PPC_16K_PAGES is not set 260# CONFIG_PPC_16K_PAGES is not set
@@ -397,6 +403,7 @@ CONFIG_NETFILTER_ADVANCED=y
397# CONFIG_BT is not set 403# CONFIG_BT is not set
398CONFIG_WIRELESS=y 404CONFIG_WIRELESS=y
399# CONFIG_CFG80211 is not set 405# CONFIG_CFG80211 is not set
406CONFIG_CFG80211_DEFAULT_PS_VALUE=0
400CONFIG_WIRELESS_OLD_REGULATORY=y 407CONFIG_WIRELESS_OLD_REGULATORY=y
401# CONFIG_WIRELESS_EXT is not set 408# CONFIG_WIRELESS_EXT is not set
402# CONFIG_LIB80211 is not set 409# CONFIG_LIB80211 is not set
@@ -404,7 +411,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
404# 411#
405# CFG80211 needs to be enabled for MAC80211 412# CFG80211 needs to be enabled for MAC80211
406# 413#
407CONFIG_MAC80211_DEFAULT_PS_VALUE=0
408# CONFIG_WIMAX is not set 414# CONFIG_WIMAX is not set
409# CONFIG_RFKILL is not set 415# CONFIG_RFKILL is not set
410 416
@@ -416,6 +422,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
416# Generic Driver Options 422# Generic Driver Options
417# 423#
418CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 424CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
425# CONFIG_DEVTMPFS is not set
419CONFIG_STANDALONE=y 426CONFIG_STANDALONE=y
420CONFIG_PREVENT_FIRMWARE_BUILD=y 427CONFIG_PREVENT_FIRMWARE_BUILD=y
421# CONFIG_FW_LOADER is not set 428# CONFIG_FW_LOADER is not set
@@ -477,7 +484,6 @@ CONFIG_MTD_CFI_UTIL=y
477# CONFIG_MTD_COMPLEX_MAPPINGS is not set 484# CONFIG_MTD_COMPLEX_MAPPINGS is not set
478# CONFIG_MTD_PHYSMAP is not set 485# CONFIG_MTD_PHYSMAP is not set
479CONFIG_MTD_PHYSMAP_OF=y 486CONFIG_MTD_PHYSMAP_OF=y
480# CONFIG_MTD_SBC8240 is not set
481# CONFIG_MTD_INTEL_VR_NOR is not set 487# CONFIG_MTD_INTEL_VR_NOR is not set
482# CONFIG_MTD_PLATRAM is not set 488# CONFIG_MTD_PLATRAM is not set
483 489
@@ -604,7 +610,9 @@ CONFIG_MII=y
604# CONFIG_NET_PCI is not set 610# CONFIG_NET_PCI is not set
605# CONFIG_B44 is not set 611# CONFIG_B44 is not set
606# CONFIG_KS8842 is not set 612# CONFIG_KS8842 is not set
613# CONFIG_KS8851_MLL is not set
607# CONFIG_ATL2 is not set 614# CONFIG_ATL2 is not set
615# CONFIG_XILINX_EMACLITE is not set
608CONFIG_FS_ENET=y 616CONFIG_FS_ENET=y
609# CONFIG_FS_ENET_HAS_SCC is not set 617# CONFIG_FS_ENET_HAS_SCC is not set
610CONFIG_FS_ENET_HAS_FCC=y 618CONFIG_FS_ENET_HAS_FCC=y
@@ -652,10 +660,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
652# CONFIG_SFC is not set 660# CONFIG_SFC is not set
653# CONFIG_BE2NET is not set 661# CONFIG_BE2NET is not set
654# CONFIG_TR is not set 662# CONFIG_TR is not set
655 663CONFIG_WLAN=y
656#
657# Wireless LAN
658#
659# CONFIG_WLAN_PRE80211 is not set 664# CONFIG_WLAN_PRE80211 is not set
660# CONFIG_WLAN_80211 is not set 665# CONFIG_WLAN_80211 is not set
661 666
@@ -704,6 +709,7 @@ CONFIG_KEYBOARD_ATKBD=y
704# CONFIG_KEYBOARD_GPIO is not set 709# CONFIG_KEYBOARD_GPIO is not set
705# CONFIG_KEYBOARD_MATRIX is not set 710# CONFIG_KEYBOARD_MATRIX is not set
706# CONFIG_KEYBOARD_NEWTON is not set 711# CONFIG_KEYBOARD_NEWTON is not set
712# CONFIG_KEYBOARD_OPENCORES is not set
707# CONFIG_KEYBOARD_STOWAWAY is not set 713# CONFIG_KEYBOARD_STOWAWAY is not set
708# CONFIG_KEYBOARD_SUNKBD is not set 714# CONFIG_KEYBOARD_SUNKBD is not set
709# CONFIG_KEYBOARD_XTKBD is not set 715# CONFIG_KEYBOARD_XTKBD is not set
@@ -714,6 +720,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
714CONFIG_MOUSE_PS2_SYNAPTICS=y 720CONFIG_MOUSE_PS2_SYNAPTICS=y
715CONFIG_MOUSE_PS2_TRACKPOINT=y 721CONFIG_MOUSE_PS2_TRACKPOINT=y
716# CONFIG_MOUSE_PS2_ELANTECH is not set 722# CONFIG_MOUSE_PS2_ELANTECH is not set
723# CONFIG_MOUSE_PS2_SENTELIC is not set
717# CONFIG_MOUSE_PS2_TOUCHKIT is not set 724# CONFIG_MOUSE_PS2_TOUCHKIT is not set
718# CONFIG_MOUSE_SERIAL is not set 725# CONFIG_MOUSE_SERIAL is not set
719# CONFIG_MOUSE_VSXXXAA is not set 726# CONFIG_MOUSE_VSXXXAA is not set
@@ -793,15 +800,19 @@ CONFIG_GPIOLIB=y
793# PCI GPIO expanders: 800# PCI GPIO expanders:
794# 801#
795# CONFIG_GPIO_BT8XX is not set 802# CONFIG_GPIO_BT8XX is not set
803# CONFIG_GPIO_LANGWELL is not set
796 804
797# 805#
798# SPI GPIO expanders: 806# SPI GPIO expanders:
799# 807#
808
809#
810# AC97 GPIO expanders:
811#
800# CONFIG_W1 is not set 812# CONFIG_W1 is not set
801# CONFIG_POWER_SUPPLY is not set 813# CONFIG_POWER_SUPPLY is not set
802# CONFIG_HWMON is not set 814# CONFIG_HWMON is not set
803# CONFIG_THERMAL is not set 815# CONFIG_THERMAL is not set
804# CONFIG_THERMAL_HWMON is not set
805# CONFIG_WATCHDOG is not set 816# CONFIG_WATCHDOG is not set
806CONFIG_SSB_POSSIBLE=y 817CONFIG_SSB_POSSIBLE=y
807 818
@@ -824,6 +835,7 @@ CONFIG_SSB_POSSIBLE=y
824# Graphics support 835# Graphics support
825# 836#
826# CONFIG_AGP is not set 837# CONFIG_AGP is not set
838CONFIG_VGA_ARB=y
827# CONFIG_DRM is not set 839# CONFIG_DRM is not set
828# CONFIG_VGASTATE is not set 840# CONFIG_VGASTATE is not set
829# CONFIG_VIDEO_OUTPUT_CONTROL is not set 841# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -1032,6 +1044,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1032CONFIG_ENABLE_MUST_CHECK=y 1044CONFIG_ENABLE_MUST_CHECK=y
1033CONFIG_FRAME_WARN=1024 1045CONFIG_FRAME_WARN=1024
1034CONFIG_MAGIC_SYSRQ=y 1046CONFIG_MAGIC_SYSRQ=y
1047# CONFIG_STRIP_ASM_SYMS is not set
1035# CONFIG_UNUSED_SYMBOLS is not set 1048# CONFIG_UNUSED_SYMBOLS is not set
1036# CONFIG_DEBUG_FS is not set 1049# CONFIG_DEBUG_FS is not set
1037# CONFIG_HEADERS_CHECK is not set 1050# CONFIG_HEADERS_CHECK is not set
@@ -1067,10 +1080,12 @@ CONFIG_DEBUG_INFO=y
1067# CONFIG_DEBUG_LIST is not set 1080# CONFIG_DEBUG_LIST is not set
1068# CONFIG_DEBUG_SG is not set 1081# CONFIG_DEBUG_SG is not set
1069# CONFIG_DEBUG_NOTIFIERS is not set 1082# CONFIG_DEBUG_NOTIFIERS is not set
1083# CONFIG_DEBUG_CREDENTIALS is not set
1070# CONFIG_RCU_TORTURE_TEST is not set 1084# CONFIG_RCU_TORTURE_TEST is not set
1071# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1085# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1072# CONFIG_BACKTRACE_SELF_TEST is not set 1086# CONFIG_BACKTRACE_SELF_TEST is not set
1073# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1087# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1088# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1074# CONFIG_FAULT_INJECTION is not set 1089# CONFIG_FAULT_INJECTION is not set
1075# CONFIG_LATENCYTOP is not set 1090# CONFIG_LATENCYTOP is not set
1076CONFIG_SYSCTL_SYSCALL_CHECK=y 1091CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1093,6 +1108,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
1093# CONFIG_KMEMTRACE is not set 1108# CONFIG_KMEMTRACE is not set
1094# CONFIG_WORKQUEUE_TRACER is not set 1109# CONFIG_WORKQUEUE_TRACER is not set
1095# CONFIG_BLK_DEV_IO_TRACE is not set 1110# CONFIG_BLK_DEV_IO_TRACE is not set
1111# CONFIG_DMA_API_DEBUG is not set
1096# CONFIG_SAMPLES is not set 1112# CONFIG_SAMPLES is not set
1097CONFIG_HAVE_ARCH_KGDB=y 1113CONFIG_HAVE_ARCH_KGDB=y
1098# CONFIG_PPC_DISABLE_WERROR is not set 1114# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1121,7 +1137,6 @@ CONFIG_CRYPTO=y
1121# 1137#
1122# Crypto core or helper 1138# Crypto core or helper
1123# 1139#
1124# CONFIG_CRYPTO_FIPS is not set
1125CONFIG_CRYPTO_ALGAPI=y 1140CONFIG_CRYPTO_ALGAPI=y
1126CONFIG_CRYPTO_ALGAPI2=y 1141CONFIG_CRYPTO_ALGAPI2=y
1127CONFIG_CRYPTO_AEAD2=y 1142CONFIG_CRYPTO_AEAD2=y
@@ -1163,6 +1178,7 @@ CONFIG_CRYPTO_PCBC=y
1163# Digest 1178# Digest
1164# 1179#
1165# CONFIG_CRYPTO_CRC32C is not set 1180# CONFIG_CRYPTO_CRC32C is not set
1181# CONFIG_CRYPTO_GHASH is not set
1166# CONFIG_CRYPTO_MD4 is not set 1182# CONFIG_CRYPTO_MD4 is not set
1167CONFIG_CRYPTO_MD5=y 1183CONFIG_CRYPTO_MD5=y
1168# CONFIG_CRYPTO_MICHAEL_MIC is not set 1184# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/mpc83xx_defconfig b/arch/powerpc/configs/mpc83xx_defconfig
index 4a96cb6925b4..64dff21516cb 100644
--- a/arch/powerpc/configs/mpc83xx_defconfig
+++ b/arch/powerpc/configs/mpc83xx_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:31:55 2009 4# Thu Nov 5 08:20:12 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -35,6 +35,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
35CONFIG_GENERIC_HARDIRQS=y 35CONFIG_GENERIC_HARDIRQS=y
36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 36CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 37# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
38# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
38CONFIG_IRQ_PER_CPU=y 39CONFIG_IRQ_PER_CPU=y
39CONFIG_STACKTRACE_SUPPORT=y 40CONFIG_STACKTRACE_SUPPORT=y
40CONFIG_HAVE_LATENCYTOP_SUPPORT=y 41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -86,11 +87,12 @@ CONFIG_SYSVIPC_SYSCTL=y
86# 87#
87# RCU Subsystem 88# RCU Subsystem
88# 89#
89CONFIG_CLASSIC_RCU=y 90CONFIG_TREE_RCU=y
90# CONFIG_TREE_RCU is not set 91# CONFIG_TREE_PREEMPT_RCU is not set
91# CONFIG_PREEMPT_RCU is not set 92# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set
92# CONFIG_TREE_RCU_TRACE is not set 95# CONFIG_TREE_RCU_TRACE is not set
93# CONFIG_PREEMPT_RCU_TRACE is not set
94# CONFIG_IKCONFIG is not set 96# CONFIG_IKCONFIG is not set
95CONFIG_LOG_BUF_SHIFT=14 97CONFIG_LOG_BUF_SHIFT=14
96CONFIG_GROUP_SCHED=y 98CONFIG_GROUP_SCHED=y
@@ -127,21 +129,20 @@ CONFIG_TIMERFD=y
127CONFIG_EVENTFD=y 129CONFIG_EVENTFD=y
128CONFIG_SHMEM=y 130CONFIG_SHMEM=y
129CONFIG_AIO=y 131CONFIG_AIO=y
130CONFIG_HAVE_PERF_COUNTERS=y 132CONFIG_HAVE_PERF_EVENTS=y
131 133
132# 134#
133# Performance Counters 135# Kernel Performance Events And Counters
134# 136#
137# CONFIG_PERF_EVENTS is not set
135# CONFIG_PERF_COUNTERS is not set 138# CONFIG_PERF_COUNTERS is not set
136CONFIG_VM_EVENT_COUNTERS=y 139CONFIG_VM_EVENT_COUNTERS=y
137CONFIG_PCI_QUIRKS=y 140CONFIG_PCI_QUIRKS=y
138# CONFIG_STRIP_ASM_SYMS is not set
139CONFIG_COMPAT_BRK=y 141CONFIG_COMPAT_BRK=y
140CONFIG_SLAB=y 142CONFIG_SLAB=y
141# CONFIG_SLUB is not set 143# CONFIG_SLUB is not set
142# CONFIG_SLOB is not set 144# CONFIG_SLOB is not set
143# CONFIG_PROFILING is not set 145# CONFIG_PROFILING is not set
144# CONFIG_MARKERS is not set
145CONFIG_HAVE_OPROFILE=y 146CONFIG_HAVE_OPROFILE=y
146# CONFIG_KPROBES is not set 147# CONFIG_KPROBES is not set
147CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 148CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -149,6 +150,8 @@ CONFIG_HAVE_IOREMAP_PROT=y
149CONFIG_HAVE_KPROBES=y 150CONFIG_HAVE_KPROBES=y
150CONFIG_HAVE_KRETPROBES=y 151CONFIG_HAVE_KRETPROBES=y
151CONFIG_HAVE_ARCH_TRACEHOOK=y 152CONFIG_HAVE_ARCH_TRACEHOOK=y
153CONFIG_HAVE_DMA_ATTRS=y
154CONFIG_HAVE_DMA_API_DEBUG=y
152 155
153# 156#
154# GCOV-based kernel profiling 157# GCOV-based kernel profiling
@@ -263,6 +266,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
263CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 266CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
264# CONFIG_KEXEC is not set 267# CONFIG_KEXEC is not set
265# CONFIG_CRASH_DUMP is not set 268# CONFIG_CRASH_DUMP is not set
269CONFIG_MAX_ACTIVE_REGIONS=32
266CONFIG_ARCH_FLATMEM_ENABLE=y 270CONFIG_ARCH_FLATMEM_ENABLE=y
267CONFIG_ARCH_POPULATES_NODE_MAP=y 271CONFIG_ARCH_POPULATES_NODE_MAP=y
268CONFIG_SELECT_MEMORY_MODEL=y 272CONFIG_SELECT_MEMORY_MODEL=y
@@ -280,6 +284,7 @@ CONFIG_BOUNCE=y
280CONFIG_VIRT_TO_BUS=y 284CONFIG_VIRT_TO_BUS=y
281CONFIG_HAVE_MLOCK=y 285CONFIG_HAVE_MLOCK=y
282CONFIG_HAVE_MLOCKED_PAGE_BIT=y 286CONFIG_HAVE_MLOCKED_PAGE_BIT=y
287# CONFIG_KSM is not set
283CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 288CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
284CONFIG_PPC_4K_PAGES=y 289CONFIG_PPC_4K_PAGES=y
285# CONFIG_PPC_16K_PAGES is not set 290# CONFIG_PPC_16K_PAGES is not set
@@ -343,7 +348,8 @@ CONFIG_XFRM_USER=m
343# CONFIG_XFRM_SUB_POLICY is not set 348# CONFIG_XFRM_SUB_POLICY is not set
344# CONFIG_XFRM_MIGRATE is not set 349# CONFIG_XFRM_MIGRATE is not set
345# CONFIG_XFRM_STATISTICS is not set 350# CONFIG_XFRM_STATISTICS is not set
346# CONFIG_NET_KEY is not set 351CONFIG_NET_KEY=y
352# CONFIG_NET_KEY_MIGRATE is not set
347CONFIG_INET=y 353CONFIG_INET=y
348CONFIG_IP_MULTICAST=y 354CONFIG_IP_MULTICAST=y
349# CONFIG_IP_ADVANCED_ROUTER is not set 355# CONFIG_IP_ADVANCED_ROUTER is not set
@@ -358,7 +364,7 @@ CONFIG_IP_PNP_BOOTP=y
358# CONFIG_ARPD is not set 364# CONFIG_ARPD is not set
359CONFIG_SYN_COOKIES=y 365CONFIG_SYN_COOKIES=y
360# CONFIG_INET_AH is not set 366# CONFIG_INET_AH is not set
361# CONFIG_INET_ESP is not set 367CONFIG_INET_ESP=y
362# CONFIG_INET_IPCOMP is not set 368# CONFIG_INET_IPCOMP is not set
363# CONFIG_INET_XFRM_TUNNEL is not set 369# CONFIG_INET_XFRM_TUNNEL is not set
364# CONFIG_INET_TUNNEL is not set 370# CONFIG_INET_TUNNEL is not set
@@ -377,6 +383,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
377# CONFIG_NETFILTER is not set 383# CONFIG_NETFILTER is not set
378# CONFIG_IP_DCCP is not set 384# CONFIG_IP_DCCP is not set
379# CONFIG_IP_SCTP is not set 385# CONFIG_IP_SCTP is not set
386# CONFIG_RDS is not set
380# CONFIG_TIPC is not set 387# CONFIG_TIPC is not set
381# CONFIG_ATM is not set 388# CONFIG_ATM is not set
382# CONFIG_BRIDGE is not set 389# CONFIG_BRIDGE is not set
@@ -406,6 +413,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
406# CONFIG_AF_RXRPC is not set 413# CONFIG_AF_RXRPC is not set
407CONFIG_WIRELESS=y 414CONFIG_WIRELESS=y
408# CONFIG_CFG80211 is not set 415# CONFIG_CFG80211 is not set
416CONFIG_CFG80211_DEFAULT_PS_VALUE=0
409CONFIG_WIRELESS_OLD_REGULATORY=y 417CONFIG_WIRELESS_OLD_REGULATORY=y
410# CONFIG_WIRELESS_EXT is not set 418# CONFIG_WIRELESS_EXT is not set
411# CONFIG_LIB80211 is not set 419# CONFIG_LIB80211 is not set
@@ -413,7 +421,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
413# 421#
414# CFG80211 needs to be enabled for MAC80211 422# CFG80211 needs to be enabled for MAC80211
415# 423#
416CONFIG_MAC80211_DEFAULT_PS_VALUE=0
417# CONFIG_WIMAX is not set 424# CONFIG_WIMAX is not set
418# CONFIG_RFKILL is not set 425# CONFIG_RFKILL is not set
419# CONFIG_NET_9P is not set 426# CONFIG_NET_9P is not set
@@ -426,6 +433,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
426# Generic Driver Options 433# Generic Driver Options
427# 434#
428CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 435CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
436# CONFIG_DEVTMPFS is not set
429CONFIG_STANDALONE=y 437CONFIG_STANDALONE=y
430CONFIG_PREVENT_FIRMWARE_BUILD=y 438CONFIG_PREVENT_FIRMWARE_BUILD=y
431# CONFIG_FW_LOADER is not set 439# CONFIG_FW_LOADER is not set
@@ -433,9 +441,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
433# CONFIG_CONNECTOR is not set 441# CONFIG_CONNECTOR is not set
434CONFIG_MTD=y 442CONFIG_MTD=y
435# CONFIG_MTD_DEBUG is not set 443# CONFIG_MTD_DEBUG is not set
444# CONFIG_MTD_TESTS is not set
436# CONFIG_MTD_CONCAT is not set 445# CONFIG_MTD_CONCAT is not set
437CONFIG_MTD_PARTITIONS=y 446CONFIG_MTD_PARTITIONS=y
438# CONFIG_MTD_TESTS is not set
439# CONFIG_MTD_REDBOOT_PARTS is not set 447# CONFIG_MTD_REDBOOT_PARTS is not set
440# CONFIG_MTD_CMDLINE_PARTS is not set 448# CONFIG_MTD_CMDLINE_PARTS is not set
441CONFIG_MTD_OF_PARTS=y 449CONFIG_MTD_OF_PARTS=y
@@ -608,6 +616,7 @@ CONFIG_SCSI_LOWLEVEL=y
608# CONFIG_ISCSI_TCP is not set 616# CONFIG_ISCSI_TCP is not set
609# CONFIG_SCSI_CXGB3_ISCSI is not set 617# CONFIG_SCSI_CXGB3_ISCSI is not set
610# CONFIG_SCSI_BNX2_ISCSI is not set 618# CONFIG_SCSI_BNX2_ISCSI is not set
619# CONFIG_BE2ISCSI is not set
611# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 620# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
612# CONFIG_SCSI_3W_9XXX is not set 621# CONFIG_SCSI_3W_9XXX is not set
613# CONFIG_SCSI_ACARD is not set 622# CONFIG_SCSI_ACARD is not set
@@ -647,11 +656,14 @@ CONFIG_SCSI_LOWLEVEL=y
647# CONFIG_SCSI_DC390T is not set 656# CONFIG_SCSI_DC390T is not set
648# CONFIG_SCSI_NSP32 is not set 657# CONFIG_SCSI_NSP32 is not set
649# CONFIG_SCSI_DEBUG is not set 658# CONFIG_SCSI_DEBUG is not set
659# CONFIG_SCSI_PMCRAID is not set
650# CONFIG_SCSI_SRP is not set 660# CONFIG_SCSI_SRP is not set
661# CONFIG_SCSI_BFA_FC is not set
651# CONFIG_SCSI_DH is not set 662# CONFIG_SCSI_DH is not set
652# CONFIG_SCSI_OSD_INITIATOR is not set 663# CONFIG_SCSI_OSD_INITIATOR is not set
653CONFIG_ATA=y 664CONFIG_ATA=y
654# CONFIG_ATA_NONSTANDARD is not set 665# CONFIG_ATA_NONSTANDARD is not set
666CONFIG_ATA_VERBOSE_ERROR=y
655CONFIG_SATA_PMP=y 667CONFIG_SATA_PMP=y
656# CONFIG_SATA_AHCI is not set 668# CONFIG_SATA_AHCI is not set
657# CONFIG_SATA_SIL24 is not set 669# CONFIG_SATA_SIL24 is not set
@@ -674,6 +686,7 @@ CONFIG_ATA_SFF=y
674# CONFIG_PATA_ALI is not set 686# CONFIG_PATA_ALI is not set
675# CONFIG_PATA_AMD is not set 687# CONFIG_PATA_AMD is not set
676# CONFIG_PATA_ARTOP is not set 688# CONFIG_PATA_ARTOP is not set
689# CONFIG_PATA_ATP867X is not set
677# CONFIG_PATA_ATIIXP is not set 690# CONFIG_PATA_ATIIXP is not set
678# CONFIG_PATA_CMD640_PCI is not set 691# CONFIG_PATA_CMD640_PCI is not set
679# CONFIG_PATA_CMD64X is not set 692# CONFIG_PATA_CMD64X is not set
@@ -701,6 +714,7 @@ CONFIG_ATA_SFF=y
701# CONFIG_PATA_OPTIDMA is not set 714# CONFIG_PATA_OPTIDMA is not set
702# CONFIG_PATA_PDC_OLD is not set 715# CONFIG_PATA_PDC_OLD is not set
703# CONFIG_PATA_RADISYS is not set 716# CONFIG_PATA_RADISYS is not set
717# CONFIG_PATA_RDC is not set
704# CONFIG_PATA_RZ1000 is not set 718# CONFIG_PATA_RZ1000 is not set
705# CONFIG_PATA_SC1200 is not set 719# CONFIG_PATA_SC1200 is not set
706# CONFIG_PATA_SERVERWORKS is not set 720# CONFIG_PATA_SERVERWORKS is not set
@@ -777,7 +791,9 @@ CONFIG_MII=y
777# CONFIG_NET_PCI is not set 791# CONFIG_NET_PCI is not set
778# CONFIG_B44 is not set 792# CONFIG_B44 is not set
779# CONFIG_KS8842 is not set 793# CONFIG_KS8842 is not set
794# CONFIG_KS8851_MLL is not set
780# CONFIG_ATL2 is not set 795# CONFIG_ATL2 is not set
796# CONFIG_XILINX_EMACLITE is not set
781CONFIG_NETDEV_1000=y 797CONFIG_NETDEV_1000=y
782# CONFIG_ACENIC is not set 798# CONFIG_ACENIC is not set
783# CONFIG_DL2K is not set 799# CONFIG_DL2K is not set
@@ -800,7 +816,6 @@ CONFIG_NETDEV_1000=y
800CONFIG_FSL_PQ_MDIO=y 816CONFIG_FSL_PQ_MDIO=y
801CONFIG_GIANFAR=y 817CONFIG_GIANFAR=y
802CONFIG_UCC_GETH=y 818CONFIG_UCC_GETH=y
803# CONFIG_UGETH_MAGIC_PACKET is not set
804# CONFIG_UGETH_TX_ON_DEMAND is not set 819# CONFIG_UGETH_TX_ON_DEMAND is not set
805# CONFIG_MV643XX_ETH is not set 820# CONFIG_MV643XX_ETH is not set
806# CONFIG_QLA3XXX is not set 821# CONFIG_QLA3XXX is not set
@@ -828,10 +843,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
828# CONFIG_SFC is not set 843# CONFIG_SFC is not set
829# CONFIG_BE2NET is not set 844# CONFIG_BE2NET is not set
830# CONFIG_TR is not set 845# CONFIG_TR is not set
831 846CONFIG_WLAN=y
832#
833# Wireless LAN
834#
835# CONFIG_WLAN_PRE80211 is not set 847# CONFIG_WLAN_PRE80211 is not set
836# CONFIG_WLAN_80211 is not set 848# CONFIG_WLAN_80211 is not set
837 849
@@ -935,6 +947,7 @@ CONFIG_GEN_RTC=y
935CONFIG_DEVPORT=y 947CONFIG_DEVPORT=y
936CONFIG_I2C=y 948CONFIG_I2C=y
937CONFIG_I2C_BOARDINFO=y 949CONFIG_I2C_BOARDINFO=y
950CONFIG_I2C_COMPAT=y
938CONFIG_I2C_CHARDEV=y 951CONFIG_I2C_CHARDEV=y
939CONFIG_I2C_HELPER_AUTO=y 952CONFIG_I2C_HELPER_AUTO=y
940 953
@@ -990,9 +1003,6 @@ CONFIG_I2C_MPC=y
990# Miscellaneous I2C Chip support 1003# Miscellaneous I2C Chip support
991# 1004#
992# CONFIG_DS1682 is not set 1005# CONFIG_DS1682 is not set
993# CONFIG_SENSORS_PCF8574 is not set
994# CONFIG_PCF8575 is not set
995# CONFIG_SENSORS_PCA9539 is not set
996# CONFIG_SENSORS_TSL2550 is not set 1006# CONFIG_SENSORS_TSL2550 is not set
997# CONFIG_I2C_DEBUG_CORE is not set 1007# CONFIG_I2C_DEBUG_CORE is not set
998# CONFIG_I2C_DEBUG_ALGO is not set 1008# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1025,14 +1035,24 @@ CONFIG_GPIOLIB=y
1025# PCI GPIO expanders: 1035# PCI GPIO expanders:
1026# 1036#
1027# CONFIG_GPIO_BT8XX is not set 1037# CONFIG_GPIO_BT8XX is not set
1038# CONFIG_GPIO_LANGWELL is not set
1028 1039
1029# 1040#
1030# SPI GPIO expanders: 1041# SPI GPIO expanders:
1031# 1042#
1043
1044#
1045# AC97 GPIO expanders:
1046#
1032# CONFIG_W1 is not set 1047# CONFIG_W1 is not set
1033# CONFIG_POWER_SUPPLY is not set 1048# CONFIG_POWER_SUPPLY is not set
1034CONFIG_HWMON=y 1049CONFIG_HWMON=y
1035# CONFIG_HWMON_VID is not set 1050# CONFIG_HWMON_VID is not set
1051# CONFIG_HWMON_DEBUG_CHIP is not set
1052
1053#
1054# Native drivers
1055#
1036# CONFIG_SENSORS_AD7414 is not set 1056# CONFIG_SENSORS_AD7414 is not set
1037# CONFIG_SENSORS_AD7418 is not set 1057# CONFIG_SENSORS_AD7418 is not set
1038# CONFIG_SENSORS_ADM1021 is not set 1058# CONFIG_SENSORS_ADM1021 is not set
@@ -1083,6 +1103,7 @@ CONFIG_HWMON=y
1083# CONFIG_SENSORS_ADS7828 is not set 1103# CONFIG_SENSORS_ADS7828 is not set
1084# CONFIG_SENSORS_THMC50 is not set 1104# CONFIG_SENSORS_THMC50 is not set
1085# CONFIG_SENSORS_TMP401 is not set 1105# CONFIG_SENSORS_TMP401 is not set
1106# CONFIG_SENSORS_TMP421 is not set
1086# CONFIG_SENSORS_VIA686A is not set 1107# CONFIG_SENSORS_VIA686A is not set
1087# CONFIG_SENSORS_VT1211 is not set 1108# CONFIG_SENSORS_VT1211 is not set
1088# CONFIG_SENSORS_VT8231 is not set 1109# CONFIG_SENSORS_VT8231 is not set
@@ -1094,9 +1115,7 @@ CONFIG_HWMON=y
1094# CONFIG_SENSORS_W83L786NG is not set 1115# CONFIG_SENSORS_W83L786NG is not set
1095# CONFIG_SENSORS_W83627HF is not set 1116# CONFIG_SENSORS_W83627HF is not set
1096# CONFIG_SENSORS_W83627EHF is not set 1117# CONFIG_SENSORS_W83627EHF is not set
1097# CONFIG_HWMON_DEBUG_CHIP is not set
1098# CONFIG_THERMAL is not set 1118# CONFIG_THERMAL is not set
1099# CONFIG_THERMAL_HWMON is not set
1100CONFIG_WATCHDOG=y 1119CONFIG_WATCHDOG=y
1101# CONFIG_WATCHDOG_NOWAYOUT is not set 1120# CONFIG_WATCHDOG_NOWAYOUT is not set
1102 1121
@@ -1135,6 +1154,7 @@ CONFIG_SSB_POSSIBLE=y
1135# CONFIG_MFD_TMIO is not set 1154# CONFIG_MFD_TMIO is not set
1136# CONFIG_PMIC_DA903X is not set 1155# CONFIG_PMIC_DA903X is not set
1137# CONFIG_MFD_WM8400 is not set 1156# CONFIG_MFD_WM8400 is not set
1157# CONFIG_MFD_WM831X is not set
1138# CONFIG_MFD_WM8350_I2C is not set 1158# CONFIG_MFD_WM8350_I2C is not set
1139# CONFIG_MFD_PCF50633 is not set 1159# CONFIG_MFD_PCF50633 is not set
1140# CONFIG_AB3100_CORE is not set 1160# CONFIG_AB3100_CORE is not set
@@ -1145,6 +1165,7 @@ CONFIG_SSB_POSSIBLE=y
1145# Graphics support 1165# Graphics support
1146# 1166#
1147# CONFIG_AGP is not set 1167# CONFIG_AGP is not set
1168CONFIG_VGA_ARB=y
1148# CONFIG_DRM is not set 1169# CONFIG_DRM is not set
1149# CONFIG_VGASTATE is not set 1170# CONFIG_VGASTATE is not set
1150CONFIG_VIDEO_OUTPUT_CONTROL=m 1171CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -1158,7 +1179,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
1158# CONFIG_SOUND is not set 1179# CONFIG_SOUND is not set
1159CONFIG_HID_SUPPORT=y 1180CONFIG_HID_SUPPORT=y
1160CONFIG_HID=y 1181CONFIG_HID=y
1161# CONFIG_HID_DEBUG is not set
1162# CONFIG_HIDRAW is not set 1182# CONFIG_HIDRAW is not set
1163 1183
1164# 1184#
@@ -1181,6 +1201,7 @@ CONFIG_HID_CYPRESS=y
1181CONFIG_HID_EZKEY=y 1201CONFIG_HID_EZKEY=y
1182# CONFIG_HID_KYE is not set 1202# CONFIG_HID_KYE is not set
1183CONFIG_HID_GYRATION=y 1203CONFIG_HID_GYRATION=y
1204# CONFIG_HID_TWINHAN is not set
1184# CONFIG_HID_KENSINGTON is not set 1205# CONFIG_HID_KENSINGTON is not set
1185CONFIG_HID_LOGITECH=y 1206CONFIG_HID_LOGITECH=y
1186# CONFIG_LOGITECH_FF is not set 1207# CONFIG_LOGITECH_FF is not set
@@ -1233,6 +1254,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1233# CONFIG_USB_OXU210HP_HCD is not set 1254# CONFIG_USB_OXU210HP_HCD is not set
1234# CONFIG_USB_ISP116X_HCD is not set 1255# CONFIG_USB_ISP116X_HCD is not set
1235# CONFIG_USB_ISP1760_HCD is not set 1256# CONFIG_USB_ISP1760_HCD is not set
1257# CONFIG_USB_ISP1362_HCD is not set
1236# CONFIG_USB_OHCI_HCD is not set 1258# CONFIG_USB_OHCI_HCD is not set
1237# CONFIG_USB_UHCI_HCD is not set 1259# CONFIG_USB_UHCI_HCD is not set
1238# CONFIG_USB_FHCI_HCD is not set 1260# CONFIG_USB_FHCI_HCD is not set
@@ -1291,6 +1313,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1291# CONFIG_USB_LD is not set 1313# CONFIG_USB_LD is not set
1292# CONFIG_USB_TRANCEVIBRATOR is not set 1314# CONFIG_USB_TRANCEVIBRATOR is not set
1293# CONFIG_USB_IOWARRIOR is not set 1315# CONFIG_USB_IOWARRIOR is not set
1316# CONFIG_USB_TEST is not set
1294# CONFIG_USB_ISIGHTFW is not set 1317# CONFIG_USB_ISIGHTFW is not set
1295# CONFIG_USB_VST is not set 1318# CONFIG_USB_VST is not set
1296# CONFIG_USB_GADGET is not set 1319# CONFIG_USB_GADGET is not set
@@ -1338,6 +1361,7 @@ CONFIG_FS_MBCACHE=y
1338# CONFIG_GFS2_FS is not set 1361# CONFIG_GFS2_FS is not set
1339# CONFIG_OCFS2_FS is not set 1362# CONFIG_OCFS2_FS is not set
1340# CONFIG_BTRFS_FS is not set 1363# CONFIG_BTRFS_FS is not set
1364# CONFIG_NILFS2_FS is not set
1341CONFIG_FILE_LOCKING=y 1365CONFIG_FILE_LOCKING=y
1342CONFIG_FSNOTIFY=y 1366CONFIG_FSNOTIFY=y
1343CONFIG_DNOTIFY=y 1367CONFIG_DNOTIFY=y
@@ -1397,7 +1421,6 @@ CONFIG_MISC_FILESYSTEMS=y
1397# CONFIG_ROMFS_FS is not set 1421# CONFIG_ROMFS_FS is not set
1398# CONFIG_SYSV_FS is not set 1422# CONFIG_SYSV_FS is not set
1399# CONFIG_UFS_FS is not set 1423# CONFIG_UFS_FS is not set
1400# CONFIG_NILFS2_FS is not set
1401CONFIG_NETWORK_FILESYSTEMS=y 1424CONFIG_NETWORK_FILESYSTEMS=y
1402CONFIG_NFS_FS=y 1425CONFIG_NFS_FS=y
1403CONFIG_NFS_V3=y 1426CONFIG_NFS_V3=y
@@ -1514,6 +1537,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1514CONFIG_ENABLE_MUST_CHECK=y 1537CONFIG_ENABLE_MUST_CHECK=y
1515CONFIG_FRAME_WARN=1024 1538CONFIG_FRAME_WARN=1024
1516# CONFIG_MAGIC_SYSRQ is not set 1539# CONFIG_MAGIC_SYSRQ is not set
1540# CONFIG_STRIP_ASM_SYMS is not set
1517# CONFIG_UNUSED_SYMBOLS is not set 1541# CONFIG_UNUSED_SYMBOLS is not set
1518# CONFIG_DEBUG_FS is not set 1542# CONFIG_DEBUG_FS is not set
1519# CONFIG_HEADERS_CHECK is not set 1543# CONFIG_HEADERS_CHECK is not set
@@ -1529,6 +1553,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1529CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1553CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1530CONFIG_TRACING_SUPPORT=y 1554CONFIG_TRACING_SUPPORT=y
1531# CONFIG_FTRACE is not set 1555# CONFIG_FTRACE is not set
1556# CONFIG_DMA_API_DEBUG is not set
1532# CONFIG_SAMPLES is not set 1557# CONFIG_SAMPLES is not set
1533CONFIG_HAVE_ARCH_KGDB=y 1558CONFIG_HAVE_ARCH_KGDB=y
1534# CONFIG_PPC_DISABLE_WERROR is not set 1559# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1550,7 +1575,6 @@ CONFIG_CRYPTO=y
1550# 1575#
1551# Crypto core or helper 1576# Crypto core or helper
1552# 1577#
1553# CONFIG_CRYPTO_FIPS is not set
1554CONFIG_CRYPTO_ALGAPI=y 1578CONFIG_CRYPTO_ALGAPI=y
1555CONFIG_CRYPTO_ALGAPI2=y 1579CONFIG_CRYPTO_ALGAPI2=y
1556CONFIG_CRYPTO_AEAD=y 1580CONFIG_CRYPTO_AEAD=y
@@ -1591,13 +1615,15 @@ CONFIG_CRYPTO_PCBC=m
1591# 1615#
1592# Hash modes 1616# Hash modes
1593# 1617#
1594# CONFIG_CRYPTO_HMAC is not set 1618CONFIG_CRYPTO_HMAC=y
1595# CONFIG_CRYPTO_XCBC is not set 1619# CONFIG_CRYPTO_XCBC is not set
1620# CONFIG_CRYPTO_VMAC is not set
1596 1621
1597# 1622#
1598# Digest 1623# Digest
1599# 1624#
1600# CONFIG_CRYPTO_CRC32C is not set 1625# CONFIG_CRYPTO_CRC32C is not set
1626# CONFIG_CRYPTO_GHASH is not set
1601# CONFIG_CRYPTO_MD4 is not set 1627# CONFIG_CRYPTO_MD4 is not set
1602CONFIG_CRYPTO_MD5=y 1628CONFIG_CRYPTO_MD5=y
1603# CONFIG_CRYPTO_MICHAEL_MIC is not set 1629# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1605,16 +1631,16 @@ CONFIG_CRYPTO_MD5=y
1605# CONFIG_CRYPTO_RMD160 is not set 1631# CONFIG_CRYPTO_RMD160 is not set
1606# CONFIG_CRYPTO_RMD256 is not set 1632# CONFIG_CRYPTO_RMD256 is not set
1607# CONFIG_CRYPTO_RMD320 is not set 1633# CONFIG_CRYPTO_RMD320 is not set
1608# CONFIG_CRYPTO_SHA1 is not set 1634CONFIG_CRYPTO_SHA1=y
1609# CONFIG_CRYPTO_SHA256 is not set 1635CONFIG_CRYPTO_SHA256=y
1610# CONFIG_CRYPTO_SHA512 is not set 1636CONFIG_CRYPTO_SHA512=y
1611# CONFIG_CRYPTO_TGR192 is not set 1637# CONFIG_CRYPTO_TGR192 is not set
1612# CONFIG_CRYPTO_WP512 is not set 1638# CONFIG_CRYPTO_WP512 is not set
1613 1639
1614# 1640#
1615# Ciphers 1641# Ciphers
1616# 1642#
1617# CONFIG_CRYPTO_AES is not set 1643CONFIG_CRYPTO_AES=y
1618# CONFIG_CRYPTO_ANUBIS is not set 1644# CONFIG_CRYPTO_ANUBIS is not set
1619# CONFIG_CRYPTO_ARC4 is not set 1645# CONFIG_CRYPTO_ARC4 is not set
1620# CONFIG_CRYPTO_BLOWFISH is not set 1646# CONFIG_CRYPTO_BLOWFISH is not set
diff --git a/arch/powerpc/configs/mpc85xx_defconfig b/arch/powerpc/configs/mpc85xx_defconfig
index ee6acc6557f8..a12e7ba87a43 100644
--- a/arch/powerpc/configs/mpc85xx_defconfig
+++ b/arch/powerpc/configs/mpc85xx_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:31:55 2009 4# Thu Nov 5 08:25:20 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_MMU_NOHASH_32=y
25CONFIG_PPC_BOOK3E_MMU=y 26CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set 27# CONFIG_PPC_MM_SLICES is not set
27# CONFIG_SMP is not set 28# CONFIG_SMP is not set
@@ -36,6 +37,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 37CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
40# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 41CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 42CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 43CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -88,11 +90,12 @@ CONFIG_AUDIT=y
88# 90#
89# RCU Subsystem 91# RCU Subsystem
90# 92#
91CONFIG_CLASSIC_RCU=y 93CONFIG_TREE_RCU=y
92# CONFIG_TREE_RCU is not set 94# CONFIG_TREE_PREEMPT_RCU is not set
93# CONFIG_PREEMPT_RCU is not set 95# CONFIG_RCU_TRACE is not set
96CONFIG_RCU_FANOUT=32
97# CONFIG_RCU_FANOUT_EXACT is not set
94# CONFIG_TREE_RCU_TRACE is not set 98# CONFIG_TREE_RCU_TRACE is not set
95# CONFIG_PREEMPT_RCU_TRACE is not set
96CONFIG_IKCONFIG=y 99CONFIG_IKCONFIG=y
97CONFIG_IKCONFIG_PROC=y 100CONFIG_IKCONFIG_PROC=y
98CONFIG_LOG_BUF_SHIFT=14 101CONFIG_LOG_BUF_SHIFT=14
@@ -131,22 +134,21 @@ CONFIG_TIMERFD=y
131CONFIG_EVENTFD=y 134CONFIG_EVENTFD=y
132CONFIG_SHMEM=y 135CONFIG_SHMEM=y
133CONFIG_AIO=y 136CONFIG_AIO=y
134CONFIG_HAVE_PERF_COUNTERS=y 137CONFIG_HAVE_PERF_EVENTS=y
135 138
136# 139#
137# Performance Counters 140# Kernel Performance Events And Counters
138# 141#
142# CONFIG_PERF_EVENTS is not set
139# CONFIG_PERF_COUNTERS is not set 143# CONFIG_PERF_COUNTERS is not set
140CONFIG_VM_EVENT_COUNTERS=y 144CONFIG_VM_EVENT_COUNTERS=y
141CONFIG_PCI_QUIRKS=y 145CONFIG_PCI_QUIRKS=y
142CONFIG_SLUB_DEBUG=y 146CONFIG_SLUB_DEBUG=y
143# CONFIG_STRIP_ASM_SYMS is not set
144CONFIG_COMPAT_BRK=y 147CONFIG_COMPAT_BRK=y
145# CONFIG_SLAB is not set 148# CONFIG_SLAB is not set
146CONFIG_SLUB=y 149CONFIG_SLUB=y
147# CONFIG_SLOB is not set 150# CONFIG_SLOB is not set
148# CONFIG_PROFILING is not set 151# CONFIG_PROFILING is not set
149# CONFIG_MARKERS is not set
150CONFIG_HAVE_OPROFILE=y 152CONFIG_HAVE_OPROFILE=y
151# CONFIG_KPROBES is not set 153# CONFIG_KPROBES is not set
152CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 154CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -154,7 +156,9 @@ CONFIG_HAVE_IOREMAP_PROT=y
154CONFIG_HAVE_KPROBES=y 156CONFIG_HAVE_KPROBES=y
155CONFIG_HAVE_KRETPROBES=y 157CONFIG_HAVE_KRETPROBES=y
156CONFIG_HAVE_ARCH_TRACEHOOK=y 158CONFIG_HAVE_ARCH_TRACEHOOK=y
159CONFIG_HAVE_DMA_ATTRS=y
157CONFIG_HAVE_CLK=y 160CONFIG_HAVE_CLK=y
161CONFIG_HAVE_DMA_API_DEBUG=y
158 162
159# 163#
160# GCOV-based kernel profiling 164# GCOV-based kernel profiling
@@ -189,6 +193,7 @@ CONFIG_DEFAULT_CFQ=y
189# CONFIG_DEFAULT_NOOP is not set 193# CONFIG_DEFAULT_NOOP is not set
190CONFIG_DEFAULT_IOSCHED="cfq" 194CONFIG_DEFAULT_IOSCHED="cfq"
191# CONFIG_FREEZER is not set 195# CONFIG_FREEZER is not set
196CONFIG_PPC_MSI_BITMAP=y
192 197
193# 198#
194# Platform support 199# Platform support
@@ -206,7 +211,7 @@ CONFIG_MPC85xx_DS=y
206CONFIG_MPC85xx_RDB=y 211CONFIG_MPC85xx_RDB=y
207CONFIG_SOCRATES=y 212CONFIG_SOCRATES=y
208CONFIG_KSI8560=y 213CONFIG_KSI8560=y
209# CONFIG_XES_MPC85xx is not set 214CONFIG_XES_MPC85xx=y
210CONFIG_STX_GP3=y 215CONFIG_STX_GP3=y
211CONFIG_TQM8540=y 216CONFIG_TQM8540=y
212CONFIG_TQM8541=y 217CONFIG_TQM8541=y
@@ -259,10 +264,10 @@ CONFIG_BINFMT_MISC=m
259CONFIG_MATH_EMULATION=y 264CONFIG_MATH_EMULATION=y
260CONFIG_IOMMU_HELPER=y 265CONFIG_IOMMU_HELPER=y
261CONFIG_SWIOTLB=y 266CONFIG_SWIOTLB=y
262CONFIG_PPC_NEED_DMA_SYNC_OPS=y
263CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 267CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
264CONFIG_ARCH_HAS_WALK_MEMORY=y 268CONFIG_ARCH_HAS_WALK_MEMORY=y
265CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 269CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
270CONFIG_MAX_ACTIVE_REGIONS=32
266CONFIG_ARCH_FLATMEM_ENABLE=y 271CONFIG_ARCH_FLATMEM_ENABLE=y
267CONFIG_ARCH_POPULATES_NODE_MAP=y 272CONFIG_ARCH_POPULATES_NODE_MAP=y
268CONFIG_SELECT_MEMORY_MODEL=y 273CONFIG_SELECT_MEMORY_MODEL=y
@@ -280,6 +285,7 @@ CONFIG_BOUNCE=y
280CONFIG_VIRT_TO_BUS=y 285CONFIG_VIRT_TO_BUS=y
281CONFIG_HAVE_MLOCK=y 286CONFIG_HAVE_MLOCK=y
282CONFIG_HAVE_MLOCKED_PAGE_BIT=y 287CONFIG_HAVE_MLOCKED_PAGE_BIT=y
288# CONFIG_KSM is not set
283CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 289CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
284CONFIG_PPC_4K_PAGES=y 290CONFIG_PPC_4K_PAGES=y
285# CONFIG_PPC_16K_PAGES is not set 291# CONFIG_PPC_16K_PAGES is not set
@@ -307,7 +313,7 @@ CONFIG_PCI_DOMAINS=y
307CONFIG_PCI_SYSCALL=y 313CONFIG_PCI_SYSCALL=y
308# CONFIG_PCIEPORTBUS is not set 314# CONFIG_PCIEPORTBUS is not set
309CONFIG_ARCH_SUPPORTS_MSI=y 315CONFIG_ARCH_SUPPORTS_MSI=y
310# CONFIG_PCI_MSI is not set 316CONFIG_PCI_MSI=y
311# CONFIG_PCI_LEGACY is not set 317# CONFIG_PCI_LEGACY is not set
312# CONFIG_PCI_DEBUG is not set 318# CONFIG_PCI_DEBUG is not set
313# CONFIG_PCI_STUB is not set 319# CONFIG_PCI_STUB is not set
@@ -315,7 +321,8 @@ CONFIG_ARCH_SUPPORTS_MSI=y
315# CONFIG_PCCARD is not set 321# CONFIG_PCCARD is not set
316# CONFIG_HOTPLUG_PCI is not set 322# CONFIG_HOTPLUG_PCI is not set
317CONFIG_HAS_RAPIDIO=y 323CONFIG_HAS_RAPIDIO=y
318# CONFIG_RAPIDIO is not set 324CONFIG_RAPIDIO=y
325CONFIG_RAPIDIO_DISC_TIMEOUT=30
319 326
320# 327#
321# Advanced setup 328# Advanced setup
@@ -345,7 +352,7 @@ CONFIG_XFRM_USER=y
345# CONFIG_XFRM_SUB_POLICY is not set 352# CONFIG_XFRM_SUB_POLICY is not set
346# CONFIG_XFRM_MIGRATE is not set 353# CONFIG_XFRM_MIGRATE is not set
347# CONFIG_XFRM_STATISTICS is not set 354# CONFIG_XFRM_STATISTICS is not set
348CONFIG_NET_KEY=m 355CONFIG_NET_KEY=y
349# CONFIG_NET_KEY_MIGRATE is not set 356# CONFIG_NET_KEY_MIGRATE is not set
350CONFIG_INET=y 357CONFIG_INET=y
351CONFIG_IP_MULTICAST=y 358CONFIG_IP_MULTICAST=y
@@ -369,12 +376,12 @@ CONFIG_IP_PIMSM_V2=y
369CONFIG_ARPD=y 376CONFIG_ARPD=y
370# CONFIG_SYN_COOKIES is not set 377# CONFIG_SYN_COOKIES is not set
371# CONFIG_INET_AH is not set 378# CONFIG_INET_AH is not set
372# CONFIG_INET_ESP is not set 379CONFIG_INET_ESP=y
373# CONFIG_INET_IPCOMP is not set 380# CONFIG_INET_IPCOMP is not set
374# CONFIG_INET_XFRM_TUNNEL is not set 381# CONFIG_INET_XFRM_TUNNEL is not set
375CONFIG_INET_TUNNEL=y 382CONFIG_INET_TUNNEL=y
376# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 383CONFIG_INET_XFRM_MODE_TRANSPORT=y
377# CONFIG_INET_XFRM_MODE_TUNNEL is not set 384CONFIG_INET_XFRM_MODE_TUNNEL=y
378# CONFIG_INET_XFRM_MODE_BEET is not set 385# CONFIG_INET_XFRM_MODE_BEET is not set
379# CONFIG_INET_LRO is not set 386# CONFIG_INET_LRO is not set
380CONFIG_INET_DIAG=y 387CONFIG_INET_DIAG=y
@@ -411,6 +418,7 @@ CONFIG_IP_SCTP=m
411# CONFIG_SCTP_HMAC_NONE is not set 418# CONFIG_SCTP_HMAC_NONE is not set
412# CONFIG_SCTP_HMAC_SHA1 is not set 419# CONFIG_SCTP_HMAC_SHA1 is not set
413CONFIG_SCTP_HMAC_MD5=y 420CONFIG_SCTP_HMAC_MD5=y
421# CONFIG_RDS is not set
414# CONFIG_TIPC is not set 422# CONFIG_TIPC is not set
415# CONFIG_ATM is not set 423# CONFIG_ATM is not set
416# CONFIG_BRIDGE is not set 424# CONFIG_BRIDGE is not set
@@ -441,6 +449,7 @@ CONFIG_SCTP_HMAC_MD5=y
441CONFIG_FIB_RULES=y 449CONFIG_FIB_RULES=y
442CONFIG_WIRELESS=y 450CONFIG_WIRELESS=y
443# CONFIG_CFG80211 is not set 451# CONFIG_CFG80211 is not set
452CONFIG_CFG80211_DEFAULT_PS_VALUE=0
444CONFIG_WIRELESS_OLD_REGULATORY=y 453CONFIG_WIRELESS_OLD_REGULATORY=y
445# CONFIG_WIRELESS_EXT is not set 454# CONFIG_WIRELESS_EXT is not set
446# CONFIG_LIB80211 is not set 455# CONFIG_LIB80211 is not set
@@ -448,7 +457,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
448# 457#
449# CFG80211 needs to be enabled for MAC80211 458# CFG80211 needs to be enabled for MAC80211
450# 459#
451CONFIG_MAC80211_DEFAULT_PS_VALUE=0
452# CONFIG_WIMAX is not set 460# CONFIG_WIMAX is not set
453# CONFIG_RFKILL is not set 461# CONFIG_RFKILL is not set
454# CONFIG_NET_9P is not set 462# CONFIG_NET_9P is not set
@@ -461,6 +469,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
461# Generic Driver Options 469# Generic Driver Options
462# 470#
463CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 471CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
472# CONFIG_DEVTMPFS is not set
464CONFIG_STANDALONE=y 473CONFIG_STANDALONE=y
465CONFIG_PREVENT_FIRMWARE_BUILD=y 474CONFIG_PREVENT_FIRMWARE_BUILD=y
466CONFIG_FW_LOADER=y 475CONFIG_FW_LOADER=y
@@ -554,6 +563,7 @@ CONFIG_SCSI_LOWLEVEL=y
554# CONFIG_ISCSI_TCP is not set 563# CONFIG_ISCSI_TCP is not set
555# CONFIG_SCSI_CXGB3_ISCSI is not set 564# CONFIG_SCSI_CXGB3_ISCSI is not set
556# CONFIG_SCSI_BNX2_ISCSI is not set 565# CONFIG_SCSI_BNX2_ISCSI is not set
566# CONFIG_BE2ISCSI is not set
557# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 567# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
558# CONFIG_SCSI_3W_9XXX is not set 568# CONFIG_SCSI_3W_9XXX is not set
559# CONFIG_SCSI_ACARD is not set 569# CONFIG_SCSI_ACARD is not set
@@ -593,11 +603,14 @@ CONFIG_SCSI_LOWLEVEL=y
593# CONFIG_SCSI_DC390T is not set 603# CONFIG_SCSI_DC390T is not set
594# CONFIG_SCSI_NSP32 is not set 604# CONFIG_SCSI_NSP32 is not set
595# CONFIG_SCSI_DEBUG is not set 605# CONFIG_SCSI_DEBUG is not set
606# CONFIG_SCSI_PMCRAID is not set
596# CONFIG_SCSI_SRP is not set 607# CONFIG_SCSI_SRP is not set
608# CONFIG_SCSI_BFA_FC is not set
597# CONFIG_SCSI_DH is not set 609# CONFIG_SCSI_DH is not set
598# CONFIG_SCSI_OSD_INITIATOR is not set 610# CONFIG_SCSI_OSD_INITIATOR is not set
599CONFIG_ATA=y 611CONFIG_ATA=y
600# CONFIG_ATA_NONSTANDARD is not set 612# CONFIG_ATA_NONSTANDARD is not set
613CONFIG_ATA_VERBOSE_ERROR=y
601CONFIG_SATA_PMP=y 614CONFIG_SATA_PMP=y
602CONFIG_SATA_AHCI=y 615CONFIG_SATA_AHCI=y
603# CONFIG_SATA_SIL24 is not set 616# CONFIG_SATA_SIL24 is not set
@@ -620,6 +633,7 @@ CONFIG_ATA_SFF=y
620CONFIG_PATA_ALI=y 633CONFIG_PATA_ALI=y
621# CONFIG_PATA_AMD is not set 634# CONFIG_PATA_AMD is not set
622# CONFIG_PATA_ARTOP is not set 635# CONFIG_PATA_ARTOP is not set
636# CONFIG_PATA_ATP867X is not set
623# CONFIG_PATA_ATIIXP is not set 637# CONFIG_PATA_ATIIXP is not set
624# CONFIG_PATA_CMD640_PCI is not set 638# CONFIG_PATA_CMD640_PCI is not set
625# CONFIG_PATA_CMD64X is not set 639# CONFIG_PATA_CMD64X is not set
@@ -647,6 +661,7 @@ CONFIG_PATA_ALI=y
647# CONFIG_PATA_OPTIDMA is not set 661# CONFIG_PATA_OPTIDMA is not set
648# CONFIG_PATA_PDC_OLD is not set 662# CONFIG_PATA_PDC_OLD is not set
649# CONFIG_PATA_RADISYS is not set 663# CONFIG_PATA_RADISYS is not set
664# CONFIG_PATA_RDC is not set
650# CONFIG_PATA_RZ1000 is not set 665# CONFIG_PATA_RZ1000 is not set
651# CONFIG_PATA_SC1200 is not set 666# CONFIG_PATA_SC1200 is not set
652# CONFIG_PATA_SERVERWORKS is not set 667# CONFIG_PATA_SERVERWORKS is not set
@@ -723,7 +738,9 @@ CONFIG_MII=y
723# CONFIG_NET_PCI is not set 738# CONFIG_NET_PCI is not set
724# CONFIG_B44 is not set 739# CONFIG_B44 is not set
725# CONFIG_KS8842 is not set 740# CONFIG_KS8842 is not set
741# CONFIG_KS8851_MLL is not set
726# CONFIG_ATL2 is not set 742# CONFIG_ATL2 is not set
743# CONFIG_XILINX_EMACLITE is not set
727CONFIG_FS_ENET=y 744CONFIG_FS_ENET=y
728CONFIG_FS_ENET_HAS_SCC=y 745CONFIG_FS_ENET_HAS_SCC=y
729CONFIG_FS_ENET_HAS_FCC=y 746CONFIG_FS_ENET_HAS_FCC=y
@@ -750,7 +767,6 @@ CONFIG_NETDEV_1000=y
750CONFIG_FSL_PQ_MDIO=y 767CONFIG_FSL_PQ_MDIO=y
751CONFIG_GIANFAR=y 768CONFIG_GIANFAR=y
752CONFIG_UCC_GETH=y 769CONFIG_UCC_GETH=y
753# CONFIG_UGETH_MAGIC_PACKET is not set
754# CONFIG_UGETH_TX_ON_DEMAND is not set 770# CONFIG_UGETH_TX_ON_DEMAND is not set
755# CONFIG_MV643XX_ETH is not set 771# CONFIG_MV643XX_ETH is not set
756# CONFIG_QLA3XXX is not set 772# CONFIG_QLA3XXX is not set
@@ -778,10 +794,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
778# CONFIG_SFC is not set 794# CONFIG_SFC is not set
779# CONFIG_BE2NET is not set 795# CONFIG_BE2NET is not set
780# CONFIG_TR is not set 796# CONFIG_TR is not set
781 797CONFIG_WLAN=y
782#
783# Wireless LAN
784#
785# CONFIG_WLAN_PRE80211 is not set 798# CONFIG_WLAN_PRE80211 is not set
786# CONFIG_WLAN_80211 is not set 799# CONFIG_WLAN_80211 is not set
787 800
@@ -798,6 +811,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
798# CONFIG_USB_RTL8150 is not set 811# CONFIG_USB_RTL8150 is not set
799# CONFIG_USB_USBNET is not set 812# CONFIG_USB_USBNET is not set
800# CONFIG_WAN is not set 813# CONFIG_WAN is not set
814# CONFIG_RIONET is not set
801# CONFIG_FDDI is not set 815# CONFIG_FDDI is not set
802# CONFIG_HIPPI is not set 816# CONFIG_HIPPI is not set
803# CONFIG_PPP is not set 817# CONFIG_PPP is not set
@@ -898,6 +912,7 @@ CONFIG_NVRAM=y
898CONFIG_DEVPORT=y 912CONFIG_DEVPORT=y
899CONFIG_I2C=y 913CONFIG_I2C=y
900CONFIG_I2C_BOARDINFO=y 914CONFIG_I2C_BOARDINFO=y
915CONFIG_I2C_COMPAT=y
901# CONFIG_I2C_CHARDEV is not set 916# CONFIG_I2C_CHARDEV is not set
902CONFIG_I2C_HELPER_AUTO=y 917CONFIG_I2C_HELPER_AUTO=y
903 918
@@ -955,9 +970,6 @@ CONFIG_I2C_MPC=y
955# Miscellaneous I2C Chip support 970# Miscellaneous I2C Chip support
956# 971#
957# CONFIG_DS1682 is not set 972# CONFIG_DS1682 is not set
958# CONFIG_SENSORS_PCF8574 is not set
959# CONFIG_PCF8575 is not set
960# CONFIG_SENSORS_PCA9539 is not set
961# CONFIG_SENSORS_TSL2550 is not set 973# CONFIG_SENSORS_TSL2550 is not set
962# CONFIG_I2C_DEBUG_CORE is not set 974# CONFIG_I2C_DEBUG_CORE is not set
963# CONFIG_I2C_DEBUG_ALGO is not set 975# CONFIG_I2C_DEBUG_ALGO is not set
@@ -991,15 +1003,19 @@ CONFIG_GPIOLIB=y
991# PCI GPIO expanders: 1003# PCI GPIO expanders:
992# 1004#
993# CONFIG_GPIO_BT8XX is not set 1005# CONFIG_GPIO_BT8XX is not set
1006# CONFIG_GPIO_LANGWELL is not set
994 1007
995# 1008#
996# SPI GPIO expanders: 1009# SPI GPIO expanders:
997# 1010#
1011
1012#
1013# AC97 GPIO expanders:
1014#
998# CONFIG_W1 is not set 1015# CONFIG_W1 is not set
999# CONFIG_POWER_SUPPLY is not set 1016# CONFIG_POWER_SUPPLY is not set
1000# CONFIG_HWMON is not set 1017# CONFIG_HWMON is not set
1001# CONFIG_THERMAL is not set 1018# CONFIG_THERMAL is not set
1002# CONFIG_THERMAL_HWMON is not set
1003# CONFIG_WATCHDOG is not set 1019# CONFIG_WATCHDOG is not set
1004CONFIG_SSB_POSSIBLE=y 1020CONFIG_SSB_POSSIBLE=y
1005 1021
@@ -1020,6 +1036,7 @@ CONFIG_SSB_POSSIBLE=y
1020# CONFIG_MFD_TMIO is not set 1036# CONFIG_MFD_TMIO is not set
1021# CONFIG_PMIC_DA903X is not set 1037# CONFIG_PMIC_DA903X is not set
1022# CONFIG_MFD_WM8400 is not set 1038# CONFIG_MFD_WM8400 is not set
1039# CONFIG_MFD_WM831X is not set
1023# CONFIG_MFD_WM8350_I2C is not set 1040# CONFIG_MFD_WM8350_I2C is not set
1024# CONFIG_MFD_PCF50633 is not set 1041# CONFIG_MFD_PCF50633 is not set
1025# CONFIG_AB3100_CORE is not set 1042# CONFIG_AB3100_CORE is not set
@@ -1030,6 +1047,7 @@ CONFIG_SSB_POSSIBLE=y
1030# Graphics support 1047# Graphics support
1031# 1048#
1032# CONFIG_AGP is not set 1049# CONFIG_AGP is not set
1050CONFIG_VGA_ARB=y
1033# CONFIG_DRM is not set 1051# CONFIG_DRM is not set
1034# CONFIG_VGASTATE is not set 1052# CONFIG_VGASTATE is not set
1035CONFIG_VIDEO_OUTPUT_CONTROL=y 1053CONFIG_VIDEO_OUTPUT_CONTROL=y
@@ -1049,6 +1067,7 @@ CONFIG_VGA_CONSOLE=y
1049CONFIG_DUMMY_CONSOLE=y 1067CONFIG_DUMMY_CONSOLE=y
1050CONFIG_SOUND=y 1068CONFIG_SOUND=y
1051CONFIG_SOUND_OSS_CORE=y 1069CONFIG_SOUND_OSS_CORE=y
1070CONFIG_SOUND_OSS_CORE_PRECLAIM=y
1052CONFIG_SND=y 1071CONFIG_SND=y
1053CONFIG_SND_TIMER=y 1072CONFIG_SND_TIMER=y
1054CONFIG_SND_PCM=y 1073CONFIG_SND_PCM=y
@@ -1152,7 +1171,6 @@ CONFIG_SND_USB=y
1152CONFIG_AC97_BUS=y 1171CONFIG_AC97_BUS=y
1153CONFIG_HID_SUPPORT=y 1172CONFIG_HID_SUPPORT=y
1154CONFIG_HID=y 1173CONFIG_HID=y
1155# CONFIG_HID_DEBUG is not set
1156# CONFIG_HIDRAW is not set 1174# CONFIG_HIDRAW is not set
1157 1175
1158# 1176#
@@ -1175,6 +1193,7 @@ CONFIG_HID_CYPRESS=y
1175CONFIG_HID_EZKEY=y 1193CONFIG_HID_EZKEY=y
1176# CONFIG_HID_KYE is not set 1194# CONFIG_HID_KYE is not set
1177CONFIG_HID_GYRATION=y 1195CONFIG_HID_GYRATION=y
1196# CONFIG_HID_TWINHAN is not set
1178# CONFIG_HID_KENSINGTON is not set 1197# CONFIG_HID_KENSINGTON is not set
1179CONFIG_HID_LOGITECH=y 1198CONFIG_HID_LOGITECH=y
1180# CONFIG_LOGITECH_FF is not set 1199# CONFIG_LOGITECH_FF is not set
@@ -1227,6 +1246,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1227# CONFIG_USB_OXU210HP_HCD is not set 1246# CONFIG_USB_OXU210HP_HCD is not set
1228# CONFIG_USB_ISP116X_HCD is not set 1247# CONFIG_USB_ISP116X_HCD is not set
1229# CONFIG_USB_ISP1760_HCD is not set 1248# CONFIG_USB_ISP1760_HCD is not set
1249# CONFIG_USB_ISP1362_HCD is not set
1230CONFIG_USB_OHCI_HCD=y 1250CONFIG_USB_OHCI_HCD=y
1231CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1251CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
1232CONFIG_USB_OHCI_HCD_PPC_OF_LE=y 1252CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
@@ -1241,7 +1261,6 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1241# CONFIG_USB_R8A66597_HCD is not set 1261# CONFIG_USB_R8A66597_HCD is not set
1242# CONFIG_USB_WHCI_HCD is not set 1262# CONFIG_USB_WHCI_HCD is not set
1243# CONFIG_USB_HWA_HCD is not set 1263# CONFIG_USB_HWA_HCD is not set
1244# CONFIG_USB_MUSB_HDRC is not set
1245 1264
1246# 1265#
1247# USB Device Class drivers 1266# USB Device Class drivers
@@ -1429,6 +1448,7 @@ CONFIG_FS_MBCACHE=y
1429# CONFIG_GFS2_FS is not set 1448# CONFIG_GFS2_FS is not set
1430# CONFIG_OCFS2_FS is not set 1449# CONFIG_OCFS2_FS is not set
1431# CONFIG_BTRFS_FS is not set 1450# CONFIG_BTRFS_FS is not set
1451# CONFIG_NILFS2_FS is not set
1432CONFIG_FILE_LOCKING=y 1452CONFIG_FILE_LOCKING=y
1433CONFIG_FSNOTIFY=y 1453CONFIG_FSNOTIFY=y
1434CONFIG_DNOTIFY=y 1454CONFIG_DNOTIFY=y
@@ -1499,7 +1519,6 @@ CONFIG_SYSV_FS=m
1499CONFIG_UFS_FS=m 1519CONFIG_UFS_FS=m
1500# CONFIG_UFS_FS_WRITE is not set 1520# CONFIG_UFS_FS_WRITE is not set
1501# CONFIG_UFS_DEBUG is not set 1521# CONFIG_UFS_DEBUG is not set
1502# CONFIG_NILFS2_FS is not set
1503CONFIG_NETWORK_FILESYSTEMS=y 1522CONFIG_NETWORK_FILESYSTEMS=y
1504CONFIG_NFS_FS=y 1523CONFIG_NFS_FS=y
1505CONFIG_NFS_V3=y 1524CONFIG_NFS_V3=y
@@ -1620,6 +1639,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1620CONFIG_ENABLE_MUST_CHECK=y 1639CONFIG_ENABLE_MUST_CHECK=y
1621CONFIG_FRAME_WARN=1024 1640CONFIG_FRAME_WARN=1024
1622# CONFIG_MAGIC_SYSRQ is not set 1641# CONFIG_MAGIC_SYSRQ is not set
1642# CONFIG_STRIP_ASM_SYMS is not set
1623# CONFIG_UNUSED_SYMBOLS is not set 1643# CONFIG_UNUSED_SYMBOLS is not set
1624CONFIG_DEBUG_FS=y 1644CONFIG_DEBUG_FS=y
1625# CONFIG_HEADERS_CHECK is not set 1645# CONFIG_HEADERS_CHECK is not set
@@ -1637,6 +1657,7 @@ CONFIG_SCHED_DEBUG=y
1637# CONFIG_DEBUG_OBJECTS is not set 1657# CONFIG_DEBUG_OBJECTS is not set
1638# CONFIG_SLUB_DEBUG_ON is not set 1658# CONFIG_SLUB_DEBUG_ON is not set
1639# CONFIG_SLUB_STATS is not set 1659# CONFIG_SLUB_STATS is not set
1660# CONFIG_DEBUG_KMEMLEAK is not set
1640# CONFIG_DEBUG_RT_MUTEXES is not set 1661# CONFIG_DEBUG_RT_MUTEXES is not set
1641# CONFIG_RT_MUTEX_TESTER is not set 1662# CONFIG_RT_MUTEX_TESTER is not set
1642# CONFIG_DEBUG_SPINLOCK is not set 1663# CONFIG_DEBUG_SPINLOCK is not set
@@ -1656,10 +1677,12 @@ CONFIG_DEBUG_INFO=y
1656# CONFIG_DEBUG_LIST is not set 1677# CONFIG_DEBUG_LIST is not set
1657# CONFIG_DEBUG_SG is not set 1678# CONFIG_DEBUG_SG is not set
1658# CONFIG_DEBUG_NOTIFIERS is not set 1679# CONFIG_DEBUG_NOTIFIERS is not set
1680# CONFIG_DEBUG_CREDENTIALS is not set
1659# CONFIG_RCU_TORTURE_TEST is not set 1681# CONFIG_RCU_TORTURE_TEST is not set
1660# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1682# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1661# CONFIG_BACKTRACE_SELF_TEST is not set 1683# CONFIG_BACKTRACE_SELF_TEST is not set
1662# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1684# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1685# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1663# CONFIG_FAULT_INJECTION is not set 1686# CONFIG_FAULT_INJECTION is not set
1664# CONFIG_LATENCYTOP is not set 1687# CONFIG_LATENCYTOP is not set
1665CONFIG_SYSCTL_SYSCALL_CHECK=y 1688CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1683,10 +1706,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1683# CONFIG_WORKQUEUE_TRACER is not set 1706# CONFIG_WORKQUEUE_TRACER is not set
1684# CONFIG_BLK_DEV_IO_TRACE is not set 1707# CONFIG_BLK_DEV_IO_TRACE is not set
1685# CONFIG_DYNAMIC_DEBUG is not set 1708# CONFIG_DYNAMIC_DEBUG is not set
1709# CONFIG_DMA_API_DEBUG is not set
1686# CONFIG_SAMPLES is not set 1710# CONFIG_SAMPLES is not set
1687CONFIG_HAVE_ARCH_KGDB=y 1711CONFIG_HAVE_ARCH_KGDB=y
1688# CONFIG_KGDB is not set 1712# CONFIG_KGDB is not set
1689# CONFIG_KMEMCHECK is not set
1690# CONFIG_PPC_DISABLE_WERROR is not set 1713# CONFIG_PPC_DISABLE_WERROR is not set
1691CONFIG_PPC_WERROR=y 1714CONFIG_PPC_WERROR=y
1692CONFIG_PRINT_STACK_DEPTH=64 1715CONFIG_PRINT_STACK_DEPTH=64
@@ -1714,7 +1737,6 @@ CONFIG_CRYPTO=y
1714# 1737#
1715# Crypto core or helper 1738# Crypto core or helper
1716# 1739#
1717# CONFIG_CRYPTO_FIPS is not set
1718CONFIG_CRYPTO_ALGAPI=y 1740CONFIG_CRYPTO_ALGAPI=y
1719CONFIG_CRYPTO_ALGAPI2=y 1741CONFIG_CRYPTO_ALGAPI2=y
1720CONFIG_CRYPTO_AEAD=y 1742CONFIG_CRYPTO_AEAD=y
@@ -1757,11 +1779,13 @@ CONFIG_CRYPTO_PCBC=m
1757# 1779#
1758CONFIG_CRYPTO_HMAC=y 1780CONFIG_CRYPTO_HMAC=y
1759# CONFIG_CRYPTO_XCBC is not set 1781# CONFIG_CRYPTO_XCBC is not set
1782# CONFIG_CRYPTO_VMAC is not set
1760 1783
1761# 1784#
1762# Digest 1785# Digest
1763# 1786#
1764CONFIG_CRYPTO_CRC32C=m 1787CONFIG_CRYPTO_CRC32C=m
1788# CONFIG_CRYPTO_GHASH is not set
1765# CONFIG_CRYPTO_MD4 is not set 1789# CONFIG_CRYPTO_MD4 is not set
1766CONFIG_CRYPTO_MD5=y 1790CONFIG_CRYPTO_MD5=y
1767# CONFIG_CRYPTO_MICHAEL_MIC is not set 1791# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1769,16 +1793,16 @@ CONFIG_CRYPTO_MD5=y
1769# CONFIG_CRYPTO_RMD160 is not set 1793# CONFIG_CRYPTO_RMD160 is not set
1770# CONFIG_CRYPTO_RMD256 is not set 1794# CONFIG_CRYPTO_RMD256 is not set
1771# CONFIG_CRYPTO_RMD320 is not set 1795# CONFIG_CRYPTO_RMD320 is not set
1772CONFIG_CRYPTO_SHA1=m 1796CONFIG_CRYPTO_SHA1=y
1773# CONFIG_CRYPTO_SHA256 is not set 1797CONFIG_CRYPTO_SHA256=y
1774# CONFIG_CRYPTO_SHA512 is not set 1798CONFIG_CRYPTO_SHA512=y
1775# CONFIG_CRYPTO_TGR192 is not set 1799# CONFIG_CRYPTO_TGR192 is not set
1776# CONFIG_CRYPTO_WP512 is not set 1800# CONFIG_CRYPTO_WP512 is not set
1777 1801
1778# 1802#
1779# Ciphers 1803# Ciphers
1780# 1804#
1781# CONFIG_CRYPTO_AES is not set 1805CONFIG_CRYPTO_AES=y
1782# CONFIG_CRYPTO_ANUBIS is not set 1806# CONFIG_CRYPTO_ANUBIS is not set
1783# CONFIG_CRYPTO_ARC4 is not set 1807# CONFIG_CRYPTO_ARC4 is not set
1784# CONFIG_CRYPTO_BLOWFISH is not set 1808# CONFIG_CRYPTO_BLOWFISH is not set
diff --git a/arch/powerpc/configs/mpc85xx_smp_defconfig b/arch/powerpc/configs/mpc85xx_smp_defconfig
index db082ce5a1c5..cd70b4a4ce01 100644
--- a/arch/powerpc/configs/mpc85xx_smp_defconfig
+++ b/arch/powerpc/configs/mpc85xx_smp_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:31:56 2009 4# Thu Nov 5 08:26:01 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,6 +22,7 @@ CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set 22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y 23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y 24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_MMU_NOHASH_32=y
25CONFIG_PPC_BOOK3E_MMU=y 26CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set 27# CONFIG_PPC_MM_SLICES is not set
27CONFIG_SMP=y 28CONFIG_SMP=y
@@ -37,6 +38,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
37CONFIG_GENERIC_HARDIRQS=y 38CONFIG_GENERIC_HARDIRQS=y
38CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 39CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
39# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 40# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
41# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
40CONFIG_IRQ_PER_CPU=y 42CONFIG_IRQ_PER_CPU=y
41CONFIG_STACKTRACE_SUPPORT=y 43CONFIG_STACKTRACE_SUPPORT=y
42CONFIG_HAVE_LATENCYTOP_SUPPORT=y 44CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -89,11 +91,12 @@ CONFIG_AUDIT=y
89# 91#
90# RCU Subsystem 92# RCU Subsystem
91# 93#
92CONFIG_CLASSIC_RCU=y 94CONFIG_TREE_RCU=y
93# CONFIG_TREE_RCU is not set 95# CONFIG_TREE_PREEMPT_RCU is not set
94# CONFIG_PREEMPT_RCU is not set 96# CONFIG_RCU_TRACE is not set
97CONFIG_RCU_FANOUT=32
98# CONFIG_RCU_FANOUT_EXACT is not set
95# CONFIG_TREE_RCU_TRACE is not set 99# CONFIG_TREE_RCU_TRACE is not set
96# CONFIG_PREEMPT_RCU_TRACE is not set
97CONFIG_IKCONFIG=y 100CONFIG_IKCONFIG=y
98CONFIG_IKCONFIG_PROC=y 101CONFIG_IKCONFIG_PROC=y
99CONFIG_LOG_BUF_SHIFT=14 102CONFIG_LOG_BUF_SHIFT=14
@@ -132,22 +135,21 @@ CONFIG_TIMERFD=y
132CONFIG_EVENTFD=y 135CONFIG_EVENTFD=y
133CONFIG_SHMEM=y 136CONFIG_SHMEM=y
134CONFIG_AIO=y 137CONFIG_AIO=y
135CONFIG_HAVE_PERF_COUNTERS=y 138CONFIG_HAVE_PERF_EVENTS=y
136 139
137# 140#
138# Performance Counters 141# Kernel Performance Events And Counters
139# 142#
143# CONFIG_PERF_EVENTS is not set
140# CONFIG_PERF_COUNTERS is not set 144# CONFIG_PERF_COUNTERS is not set
141CONFIG_VM_EVENT_COUNTERS=y 145CONFIG_VM_EVENT_COUNTERS=y
142CONFIG_PCI_QUIRKS=y 146CONFIG_PCI_QUIRKS=y
143CONFIG_SLUB_DEBUG=y 147CONFIG_SLUB_DEBUG=y
144# CONFIG_STRIP_ASM_SYMS is not set
145CONFIG_COMPAT_BRK=y 148CONFIG_COMPAT_BRK=y
146# CONFIG_SLAB is not set 149# CONFIG_SLAB is not set
147CONFIG_SLUB=y 150CONFIG_SLUB=y
148# CONFIG_SLOB is not set 151# CONFIG_SLOB is not set
149# CONFIG_PROFILING is not set 152# CONFIG_PROFILING is not set
150# CONFIG_MARKERS is not set
151CONFIG_HAVE_OPROFILE=y 153CONFIG_HAVE_OPROFILE=y
152# CONFIG_KPROBES is not set 154# CONFIG_KPROBES is not set
153CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 155CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -155,8 +157,10 @@ CONFIG_HAVE_IOREMAP_PROT=y
155CONFIG_HAVE_KPROBES=y 157CONFIG_HAVE_KPROBES=y
156CONFIG_HAVE_KRETPROBES=y 158CONFIG_HAVE_KRETPROBES=y
157CONFIG_HAVE_ARCH_TRACEHOOK=y 159CONFIG_HAVE_ARCH_TRACEHOOK=y
160CONFIG_HAVE_DMA_ATTRS=y
158CONFIG_USE_GENERIC_SMP_HELPERS=y 161CONFIG_USE_GENERIC_SMP_HELPERS=y
159CONFIG_HAVE_CLK=y 162CONFIG_HAVE_CLK=y
163CONFIG_HAVE_DMA_API_DEBUG=y
160 164
161# 165#
162# GCOV-based kernel profiling 166# GCOV-based kernel profiling
@@ -192,6 +196,7 @@ CONFIG_DEFAULT_CFQ=y
192# CONFIG_DEFAULT_NOOP is not set 196# CONFIG_DEFAULT_NOOP is not set
193CONFIG_DEFAULT_IOSCHED="cfq" 197CONFIG_DEFAULT_IOSCHED="cfq"
194# CONFIG_FREEZER is not set 198# CONFIG_FREEZER is not set
199CONFIG_PPC_MSI_BITMAP=y
195 200
196# 201#
197# Platform support 202# Platform support
@@ -206,9 +211,10 @@ CONFIG_MPC85xx_CDS=y
206CONFIG_MPC85xx_MDS=y 211CONFIG_MPC85xx_MDS=y
207CONFIG_MPC8536_DS=y 212CONFIG_MPC8536_DS=y
208CONFIG_MPC85xx_DS=y 213CONFIG_MPC85xx_DS=y
214CONFIG_MPC85xx_RDB=y
209CONFIG_SOCRATES=y 215CONFIG_SOCRATES=y
210CONFIG_KSI8560=y 216CONFIG_KSI8560=y
211# CONFIG_XES_MPC85xx is not set 217CONFIG_XES_MPC85xx=y
212CONFIG_STX_GP3=y 218CONFIG_STX_GP3=y
213CONFIG_TQM8540=y 219CONFIG_TQM8540=y
214CONFIG_TQM8541=y 220CONFIG_TQM8541=y
@@ -261,11 +267,11 @@ CONFIG_BINFMT_MISC=m
261CONFIG_MATH_EMULATION=y 267CONFIG_MATH_EMULATION=y
262CONFIG_IOMMU_HELPER=y 268CONFIG_IOMMU_HELPER=y
263CONFIG_SWIOTLB=y 269CONFIG_SWIOTLB=y
264CONFIG_PPC_NEED_DMA_SYNC_OPS=y
265CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 270CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
266CONFIG_ARCH_HAS_WALK_MEMORY=y 271CONFIG_ARCH_HAS_WALK_MEMORY=y
267CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 272CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
268# CONFIG_IRQ_ALL_CPUS is not set 273# CONFIG_IRQ_ALL_CPUS is not set
274CONFIG_MAX_ACTIVE_REGIONS=32
269CONFIG_ARCH_FLATMEM_ENABLE=y 275CONFIG_ARCH_FLATMEM_ENABLE=y
270CONFIG_ARCH_POPULATES_NODE_MAP=y 276CONFIG_ARCH_POPULATES_NODE_MAP=y
271CONFIG_SELECT_MEMORY_MODEL=y 277CONFIG_SELECT_MEMORY_MODEL=y
@@ -283,6 +289,7 @@ CONFIG_BOUNCE=y
283CONFIG_VIRT_TO_BUS=y 289CONFIG_VIRT_TO_BUS=y
284CONFIG_HAVE_MLOCK=y 290CONFIG_HAVE_MLOCK=y
285CONFIG_HAVE_MLOCKED_PAGE_BIT=y 291CONFIG_HAVE_MLOCKED_PAGE_BIT=y
292# CONFIG_KSM is not set
286CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 293CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
287CONFIG_PPC_4K_PAGES=y 294CONFIG_PPC_4K_PAGES=y
288# CONFIG_PPC_16K_PAGES is not set 295# CONFIG_PPC_16K_PAGES is not set
@@ -310,7 +317,7 @@ CONFIG_PCI_DOMAINS=y
310CONFIG_PCI_SYSCALL=y 317CONFIG_PCI_SYSCALL=y
311# CONFIG_PCIEPORTBUS is not set 318# CONFIG_PCIEPORTBUS is not set
312CONFIG_ARCH_SUPPORTS_MSI=y 319CONFIG_ARCH_SUPPORTS_MSI=y
313# CONFIG_PCI_MSI is not set 320CONFIG_PCI_MSI=y
314# CONFIG_PCI_LEGACY is not set 321# CONFIG_PCI_LEGACY is not set
315# CONFIG_PCI_DEBUG is not set 322# CONFIG_PCI_DEBUG is not set
316# CONFIG_PCI_STUB is not set 323# CONFIG_PCI_STUB is not set
@@ -318,7 +325,8 @@ CONFIG_ARCH_SUPPORTS_MSI=y
318# CONFIG_PCCARD is not set 325# CONFIG_PCCARD is not set
319# CONFIG_HOTPLUG_PCI is not set 326# CONFIG_HOTPLUG_PCI is not set
320CONFIG_HAS_RAPIDIO=y 327CONFIG_HAS_RAPIDIO=y
321# CONFIG_RAPIDIO is not set 328CONFIG_RAPIDIO=y
329CONFIG_RAPIDIO_DISC_TIMEOUT=30
322 330
323# 331#
324# Advanced setup 332# Advanced setup
@@ -348,7 +356,7 @@ CONFIG_XFRM_USER=y
348# CONFIG_XFRM_SUB_POLICY is not set 356# CONFIG_XFRM_SUB_POLICY is not set
349# CONFIG_XFRM_MIGRATE is not set 357# CONFIG_XFRM_MIGRATE is not set
350# CONFIG_XFRM_STATISTICS is not set 358# CONFIG_XFRM_STATISTICS is not set
351CONFIG_NET_KEY=m 359CONFIG_NET_KEY=y
352# CONFIG_NET_KEY_MIGRATE is not set 360# CONFIG_NET_KEY_MIGRATE is not set
353CONFIG_INET=y 361CONFIG_INET=y
354CONFIG_IP_MULTICAST=y 362CONFIG_IP_MULTICAST=y
@@ -372,12 +380,12 @@ CONFIG_IP_PIMSM_V2=y
372CONFIG_ARPD=y 380CONFIG_ARPD=y
373# CONFIG_SYN_COOKIES is not set 381# CONFIG_SYN_COOKIES is not set
374# CONFIG_INET_AH is not set 382# CONFIG_INET_AH is not set
375# CONFIG_INET_ESP is not set 383CONFIG_INET_ESP=y
376# CONFIG_INET_IPCOMP is not set 384# CONFIG_INET_IPCOMP is not set
377# CONFIG_INET_XFRM_TUNNEL is not set 385# CONFIG_INET_XFRM_TUNNEL is not set
378CONFIG_INET_TUNNEL=y 386CONFIG_INET_TUNNEL=y
379# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 387CONFIG_INET_XFRM_MODE_TRANSPORT=y
380# CONFIG_INET_XFRM_MODE_TUNNEL is not set 388CONFIG_INET_XFRM_MODE_TUNNEL=y
381# CONFIG_INET_XFRM_MODE_BEET is not set 389# CONFIG_INET_XFRM_MODE_BEET is not set
382# CONFIG_INET_LRO is not set 390# CONFIG_INET_LRO is not set
383CONFIG_INET_DIAG=y 391CONFIG_INET_DIAG=y
@@ -414,6 +422,7 @@ CONFIG_IP_SCTP=m
414# CONFIG_SCTP_HMAC_NONE is not set 422# CONFIG_SCTP_HMAC_NONE is not set
415# CONFIG_SCTP_HMAC_SHA1 is not set 423# CONFIG_SCTP_HMAC_SHA1 is not set
416CONFIG_SCTP_HMAC_MD5=y 424CONFIG_SCTP_HMAC_MD5=y
425# CONFIG_RDS is not set
417# CONFIG_TIPC is not set 426# CONFIG_TIPC is not set
418# CONFIG_ATM is not set 427# CONFIG_ATM is not set
419# CONFIG_BRIDGE is not set 428# CONFIG_BRIDGE is not set
@@ -444,6 +453,7 @@ CONFIG_SCTP_HMAC_MD5=y
444CONFIG_FIB_RULES=y 453CONFIG_FIB_RULES=y
445CONFIG_WIRELESS=y 454CONFIG_WIRELESS=y
446# CONFIG_CFG80211 is not set 455# CONFIG_CFG80211 is not set
456CONFIG_CFG80211_DEFAULT_PS_VALUE=0
447CONFIG_WIRELESS_OLD_REGULATORY=y 457CONFIG_WIRELESS_OLD_REGULATORY=y
448# CONFIG_WIRELESS_EXT is not set 458# CONFIG_WIRELESS_EXT is not set
449# CONFIG_LIB80211 is not set 459# CONFIG_LIB80211 is not set
@@ -451,7 +461,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
451# 461#
452# CFG80211 needs to be enabled for MAC80211 462# CFG80211 needs to be enabled for MAC80211
453# 463#
454CONFIG_MAC80211_DEFAULT_PS_VALUE=0
455# CONFIG_WIMAX is not set 464# CONFIG_WIMAX is not set
456# CONFIG_RFKILL is not set 465# CONFIG_RFKILL is not set
457# CONFIG_NET_9P is not set 466# CONFIG_NET_9P is not set
@@ -464,6 +473,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
464# Generic Driver Options 473# Generic Driver Options
465# 474#
466CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 475CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
476# CONFIG_DEVTMPFS is not set
467CONFIG_STANDALONE=y 477CONFIG_STANDALONE=y
468CONFIG_PREVENT_FIRMWARE_BUILD=y 478CONFIG_PREVENT_FIRMWARE_BUILD=y
469CONFIG_FW_LOADER=y 479CONFIG_FW_LOADER=y
@@ -557,6 +567,7 @@ CONFIG_SCSI_LOWLEVEL=y
557# CONFIG_ISCSI_TCP is not set 567# CONFIG_ISCSI_TCP is not set
558# CONFIG_SCSI_CXGB3_ISCSI is not set 568# CONFIG_SCSI_CXGB3_ISCSI is not set
559# CONFIG_SCSI_BNX2_ISCSI is not set 569# CONFIG_SCSI_BNX2_ISCSI is not set
570# CONFIG_BE2ISCSI is not set
560# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 571# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
561# CONFIG_SCSI_3W_9XXX is not set 572# CONFIG_SCSI_3W_9XXX is not set
562# CONFIG_SCSI_ACARD is not set 573# CONFIG_SCSI_ACARD is not set
@@ -596,11 +607,14 @@ CONFIG_SCSI_LOWLEVEL=y
596# CONFIG_SCSI_DC390T is not set 607# CONFIG_SCSI_DC390T is not set
597# CONFIG_SCSI_NSP32 is not set 608# CONFIG_SCSI_NSP32 is not set
598# CONFIG_SCSI_DEBUG is not set 609# CONFIG_SCSI_DEBUG is not set
610# CONFIG_SCSI_PMCRAID is not set
599# CONFIG_SCSI_SRP is not set 611# CONFIG_SCSI_SRP is not set
612# CONFIG_SCSI_BFA_FC is not set
600# CONFIG_SCSI_DH is not set 613# CONFIG_SCSI_DH is not set
601# CONFIG_SCSI_OSD_INITIATOR is not set 614# CONFIG_SCSI_OSD_INITIATOR is not set
602CONFIG_ATA=y 615CONFIG_ATA=y
603# CONFIG_ATA_NONSTANDARD is not set 616# CONFIG_ATA_NONSTANDARD is not set
617CONFIG_ATA_VERBOSE_ERROR=y
604CONFIG_SATA_PMP=y 618CONFIG_SATA_PMP=y
605CONFIG_SATA_AHCI=y 619CONFIG_SATA_AHCI=y
606# CONFIG_SATA_SIL24 is not set 620# CONFIG_SATA_SIL24 is not set
@@ -623,6 +637,7 @@ CONFIG_ATA_SFF=y
623CONFIG_PATA_ALI=y 637CONFIG_PATA_ALI=y
624# CONFIG_PATA_AMD is not set 638# CONFIG_PATA_AMD is not set
625# CONFIG_PATA_ARTOP is not set 639# CONFIG_PATA_ARTOP is not set
640# CONFIG_PATA_ATP867X is not set
626# CONFIG_PATA_ATIIXP is not set 641# CONFIG_PATA_ATIIXP is not set
627# CONFIG_PATA_CMD640_PCI is not set 642# CONFIG_PATA_CMD640_PCI is not set
628# CONFIG_PATA_CMD64X is not set 643# CONFIG_PATA_CMD64X is not set
@@ -650,6 +665,7 @@ CONFIG_PATA_ALI=y
650# CONFIG_PATA_OPTIDMA is not set 665# CONFIG_PATA_OPTIDMA is not set
651# CONFIG_PATA_PDC_OLD is not set 666# CONFIG_PATA_PDC_OLD is not set
652# CONFIG_PATA_RADISYS is not set 667# CONFIG_PATA_RADISYS is not set
668# CONFIG_PATA_RDC is not set
653# CONFIG_PATA_RZ1000 is not set 669# CONFIG_PATA_RZ1000 is not set
654# CONFIG_PATA_SC1200 is not set 670# CONFIG_PATA_SC1200 is not set
655# CONFIG_PATA_SERVERWORKS is not set 671# CONFIG_PATA_SERVERWORKS is not set
@@ -726,7 +742,9 @@ CONFIG_MII=y
726# CONFIG_NET_PCI is not set 742# CONFIG_NET_PCI is not set
727# CONFIG_B44 is not set 743# CONFIG_B44 is not set
728# CONFIG_KS8842 is not set 744# CONFIG_KS8842 is not set
745# CONFIG_KS8851_MLL is not set
729# CONFIG_ATL2 is not set 746# CONFIG_ATL2 is not set
747# CONFIG_XILINX_EMACLITE is not set
730CONFIG_FS_ENET=y 748CONFIG_FS_ENET=y
731CONFIG_FS_ENET_HAS_SCC=y 749CONFIG_FS_ENET_HAS_SCC=y
732CONFIG_FS_ENET_HAS_FCC=y 750CONFIG_FS_ENET_HAS_FCC=y
@@ -753,7 +771,6 @@ CONFIG_NETDEV_1000=y
753CONFIG_FSL_PQ_MDIO=y 771CONFIG_FSL_PQ_MDIO=y
754CONFIG_GIANFAR=y 772CONFIG_GIANFAR=y
755CONFIG_UCC_GETH=y 773CONFIG_UCC_GETH=y
756# CONFIG_UGETH_MAGIC_PACKET is not set
757# CONFIG_UGETH_TX_ON_DEMAND is not set 774# CONFIG_UGETH_TX_ON_DEMAND is not set
758# CONFIG_MV643XX_ETH is not set 775# CONFIG_MV643XX_ETH is not set
759# CONFIG_QLA3XXX is not set 776# CONFIG_QLA3XXX is not set
@@ -781,10 +798,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
781# CONFIG_SFC is not set 798# CONFIG_SFC is not set
782# CONFIG_BE2NET is not set 799# CONFIG_BE2NET is not set
783# CONFIG_TR is not set 800# CONFIG_TR is not set
784 801CONFIG_WLAN=y
785#
786# Wireless LAN
787#
788# CONFIG_WLAN_PRE80211 is not set 802# CONFIG_WLAN_PRE80211 is not set
789# CONFIG_WLAN_80211 is not set 803# CONFIG_WLAN_80211 is not set
790 804
@@ -801,6 +815,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
801# CONFIG_USB_RTL8150 is not set 815# CONFIG_USB_RTL8150 is not set
802# CONFIG_USB_USBNET is not set 816# CONFIG_USB_USBNET is not set
803# CONFIG_WAN is not set 817# CONFIG_WAN is not set
818# CONFIG_RIONET is not set
804# CONFIG_FDDI is not set 819# CONFIG_FDDI is not set
805# CONFIG_HIPPI is not set 820# CONFIG_HIPPI is not set
806# CONFIG_PPP is not set 821# CONFIG_PPP is not set
@@ -901,6 +916,7 @@ CONFIG_NVRAM=y
901CONFIG_DEVPORT=y 916CONFIG_DEVPORT=y
902CONFIG_I2C=y 917CONFIG_I2C=y
903CONFIG_I2C_BOARDINFO=y 918CONFIG_I2C_BOARDINFO=y
919CONFIG_I2C_COMPAT=y
904# CONFIG_I2C_CHARDEV is not set 920# CONFIG_I2C_CHARDEV is not set
905CONFIG_I2C_HELPER_AUTO=y 921CONFIG_I2C_HELPER_AUTO=y
906 922
@@ -958,9 +974,6 @@ CONFIG_I2C_MPC=y
958# Miscellaneous I2C Chip support 974# Miscellaneous I2C Chip support
959# 975#
960# CONFIG_DS1682 is not set 976# CONFIG_DS1682 is not set
961# CONFIG_SENSORS_PCF8574 is not set
962# CONFIG_PCF8575 is not set
963# CONFIG_SENSORS_PCA9539 is not set
964# CONFIG_SENSORS_TSL2550 is not set 977# CONFIG_SENSORS_TSL2550 is not set
965# CONFIG_I2C_DEBUG_CORE is not set 978# CONFIG_I2C_DEBUG_CORE is not set
966# CONFIG_I2C_DEBUG_ALGO is not set 979# CONFIG_I2C_DEBUG_ALGO is not set
@@ -994,15 +1007,19 @@ CONFIG_GPIOLIB=y
994# PCI GPIO expanders: 1007# PCI GPIO expanders:
995# 1008#
996# CONFIG_GPIO_BT8XX is not set 1009# CONFIG_GPIO_BT8XX is not set
1010# CONFIG_GPIO_LANGWELL is not set
997 1011
998# 1012#
999# SPI GPIO expanders: 1013# SPI GPIO expanders:
1000# 1014#
1015
1016#
1017# AC97 GPIO expanders:
1018#
1001# CONFIG_W1 is not set 1019# CONFIG_W1 is not set
1002# CONFIG_POWER_SUPPLY is not set 1020# CONFIG_POWER_SUPPLY is not set
1003# CONFIG_HWMON is not set 1021# CONFIG_HWMON is not set
1004# CONFIG_THERMAL is not set 1022# CONFIG_THERMAL is not set
1005# CONFIG_THERMAL_HWMON is not set
1006# CONFIG_WATCHDOG is not set 1023# CONFIG_WATCHDOG is not set
1007CONFIG_SSB_POSSIBLE=y 1024CONFIG_SSB_POSSIBLE=y
1008 1025
@@ -1023,6 +1040,7 @@ CONFIG_SSB_POSSIBLE=y
1023# CONFIG_MFD_TMIO is not set 1040# CONFIG_MFD_TMIO is not set
1024# CONFIG_PMIC_DA903X is not set 1041# CONFIG_PMIC_DA903X is not set
1025# CONFIG_MFD_WM8400 is not set 1042# CONFIG_MFD_WM8400 is not set
1043# CONFIG_MFD_WM831X is not set
1026# CONFIG_MFD_WM8350_I2C is not set 1044# CONFIG_MFD_WM8350_I2C is not set
1027# CONFIG_MFD_PCF50633 is not set 1045# CONFIG_MFD_PCF50633 is not set
1028# CONFIG_AB3100_CORE is not set 1046# CONFIG_AB3100_CORE is not set
@@ -1033,6 +1051,7 @@ CONFIG_SSB_POSSIBLE=y
1033# Graphics support 1051# Graphics support
1034# 1052#
1035# CONFIG_AGP is not set 1053# CONFIG_AGP is not set
1054CONFIG_VGA_ARB=y
1036# CONFIG_DRM is not set 1055# CONFIG_DRM is not set
1037# CONFIG_VGASTATE is not set 1056# CONFIG_VGASTATE is not set
1038CONFIG_VIDEO_OUTPUT_CONTROL=y 1057CONFIG_VIDEO_OUTPUT_CONTROL=y
@@ -1052,6 +1071,7 @@ CONFIG_VGA_CONSOLE=y
1052CONFIG_DUMMY_CONSOLE=y 1071CONFIG_DUMMY_CONSOLE=y
1053CONFIG_SOUND=y 1072CONFIG_SOUND=y
1054CONFIG_SOUND_OSS_CORE=y 1073CONFIG_SOUND_OSS_CORE=y
1074CONFIG_SOUND_OSS_CORE_PRECLAIM=y
1055CONFIG_SND=y 1075CONFIG_SND=y
1056CONFIG_SND_TIMER=y 1076CONFIG_SND_TIMER=y
1057CONFIG_SND_PCM=y 1077CONFIG_SND_PCM=y
@@ -1155,7 +1175,6 @@ CONFIG_SND_USB=y
1155CONFIG_AC97_BUS=y 1175CONFIG_AC97_BUS=y
1156CONFIG_HID_SUPPORT=y 1176CONFIG_HID_SUPPORT=y
1157CONFIG_HID=y 1177CONFIG_HID=y
1158# CONFIG_HID_DEBUG is not set
1159# CONFIG_HIDRAW is not set 1178# CONFIG_HIDRAW is not set
1160 1179
1161# 1180#
@@ -1178,6 +1197,7 @@ CONFIG_HID_CYPRESS=y
1178CONFIG_HID_EZKEY=y 1197CONFIG_HID_EZKEY=y
1179# CONFIG_HID_KYE is not set 1198# CONFIG_HID_KYE is not set
1180CONFIG_HID_GYRATION=y 1199CONFIG_HID_GYRATION=y
1200# CONFIG_HID_TWINHAN is not set
1181# CONFIG_HID_KENSINGTON is not set 1201# CONFIG_HID_KENSINGTON is not set
1182CONFIG_HID_LOGITECH=y 1202CONFIG_HID_LOGITECH=y
1183# CONFIG_LOGITECH_FF is not set 1203# CONFIG_LOGITECH_FF is not set
@@ -1230,6 +1250,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1230# CONFIG_USB_OXU210HP_HCD is not set 1250# CONFIG_USB_OXU210HP_HCD is not set
1231# CONFIG_USB_ISP116X_HCD is not set 1251# CONFIG_USB_ISP116X_HCD is not set
1232# CONFIG_USB_ISP1760_HCD is not set 1252# CONFIG_USB_ISP1760_HCD is not set
1253# CONFIG_USB_ISP1362_HCD is not set
1233CONFIG_USB_OHCI_HCD=y 1254CONFIG_USB_OHCI_HCD=y
1234CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1255CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
1235CONFIG_USB_OHCI_HCD_PPC_OF_LE=y 1256CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
@@ -1244,7 +1265,6 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1244# CONFIG_USB_R8A66597_HCD is not set 1265# CONFIG_USB_R8A66597_HCD is not set
1245# CONFIG_USB_WHCI_HCD is not set 1266# CONFIG_USB_WHCI_HCD is not set
1246# CONFIG_USB_HWA_HCD is not set 1267# CONFIG_USB_HWA_HCD is not set
1247# CONFIG_USB_MUSB_HDRC is not set
1248 1268
1249# 1269#
1250# USB Device Class drivers 1270# USB Device Class drivers
@@ -1432,6 +1452,7 @@ CONFIG_FS_MBCACHE=y
1432# CONFIG_GFS2_FS is not set 1452# CONFIG_GFS2_FS is not set
1433# CONFIG_OCFS2_FS is not set 1453# CONFIG_OCFS2_FS is not set
1434# CONFIG_BTRFS_FS is not set 1454# CONFIG_BTRFS_FS is not set
1455# CONFIG_NILFS2_FS is not set
1435CONFIG_FILE_LOCKING=y 1456CONFIG_FILE_LOCKING=y
1436CONFIG_FSNOTIFY=y 1457CONFIG_FSNOTIFY=y
1437CONFIG_DNOTIFY=y 1458CONFIG_DNOTIFY=y
@@ -1502,7 +1523,6 @@ CONFIG_SYSV_FS=m
1502CONFIG_UFS_FS=m 1523CONFIG_UFS_FS=m
1503# CONFIG_UFS_FS_WRITE is not set 1524# CONFIG_UFS_FS_WRITE is not set
1504# CONFIG_UFS_DEBUG is not set 1525# CONFIG_UFS_DEBUG is not set
1505# CONFIG_NILFS2_FS is not set
1506CONFIG_NETWORK_FILESYSTEMS=y 1526CONFIG_NETWORK_FILESYSTEMS=y
1507CONFIG_NFS_FS=y 1527CONFIG_NFS_FS=y
1508CONFIG_NFS_V3=y 1528CONFIG_NFS_V3=y
@@ -1623,6 +1643,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1623CONFIG_ENABLE_MUST_CHECK=y 1643CONFIG_ENABLE_MUST_CHECK=y
1624CONFIG_FRAME_WARN=1024 1644CONFIG_FRAME_WARN=1024
1625# CONFIG_MAGIC_SYSRQ is not set 1645# CONFIG_MAGIC_SYSRQ is not set
1646# CONFIG_STRIP_ASM_SYMS is not set
1626# CONFIG_UNUSED_SYMBOLS is not set 1647# CONFIG_UNUSED_SYMBOLS is not set
1627CONFIG_DEBUG_FS=y 1648CONFIG_DEBUG_FS=y
1628# CONFIG_HEADERS_CHECK is not set 1649# CONFIG_HEADERS_CHECK is not set
@@ -1640,6 +1661,7 @@ CONFIG_SCHED_DEBUG=y
1640# CONFIG_DEBUG_OBJECTS is not set 1661# CONFIG_DEBUG_OBJECTS is not set
1641# CONFIG_SLUB_DEBUG_ON is not set 1662# CONFIG_SLUB_DEBUG_ON is not set
1642# CONFIG_SLUB_STATS is not set 1663# CONFIG_SLUB_STATS is not set
1664# CONFIG_DEBUG_KMEMLEAK is not set
1643# CONFIG_DEBUG_RT_MUTEXES is not set 1665# CONFIG_DEBUG_RT_MUTEXES is not set
1644# CONFIG_RT_MUTEX_TESTER is not set 1666# CONFIG_RT_MUTEX_TESTER is not set
1645# CONFIG_DEBUG_SPINLOCK is not set 1667# CONFIG_DEBUG_SPINLOCK is not set
@@ -1659,10 +1681,12 @@ CONFIG_DEBUG_INFO=y
1659# CONFIG_DEBUG_LIST is not set 1681# CONFIG_DEBUG_LIST is not set
1660# CONFIG_DEBUG_SG is not set 1682# CONFIG_DEBUG_SG is not set
1661# CONFIG_DEBUG_NOTIFIERS is not set 1683# CONFIG_DEBUG_NOTIFIERS is not set
1684# CONFIG_DEBUG_CREDENTIALS is not set
1662# CONFIG_RCU_TORTURE_TEST is not set 1685# CONFIG_RCU_TORTURE_TEST is not set
1663# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1686# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1664# CONFIG_BACKTRACE_SELF_TEST is not set 1687# CONFIG_BACKTRACE_SELF_TEST is not set
1665# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1688# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1689# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1666# CONFIG_FAULT_INJECTION is not set 1690# CONFIG_FAULT_INJECTION is not set
1667# CONFIG_LATENCYTOP is not set 1691# CONFIG_LATENCYTOP is not set
1668CONFIG_SYSCTL_SYSCALL_CHECK=y 1692CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1686,10 +1710,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1686# CONFIG_WORKQUEUE_TRACER is not set 1710# CONFIG_WORKQUEUE_TRACER is not set
1687# CONFIG_BLK_DEV_IO_TRACE is not set 1711# CONFIG_BLK_DEV_IO_TRACE is not set
1688# CONFIG_DYNAMIC_DEBUG is not set 1712# CONFIG_DYNAMIC_DEBUG is not set
1713# CONFIG_DMA_API_DEBUG is not set
1689# CONFIG_SAMPLES is not set 1714# CONFIG_SAMPLES is not set
1690CONFIG_HAVE_ARCH_KGDB=y 1715CONFIG_HAVE_ARCH_KGDB=y
1691# CONFIG_KGDB is not set 1716# CONFIG_KGDB is not set
1692# CONFIG_KMEMCHECK is not set
1693# CONFIG_PPC_DISABLE_WERROR is not set 1717# CONFIG_PPC_DISABLE_WERROR is not set
1694CONFIG_PPC_WERROR=y 1718CONFIG_PPC_WERROR=y
1695CONFIG_PRINT_STACK_DEPTH=64 1719CONFIG_PRINT_STACK_DEPTH=64
@@ -1717,7 +1741,6 @@ CONFIG_CRYPTO=y
1717# 1741#
1718# Crypto core or helper 1742# Crypto core or helper
1719# 1743#
1720# CONFIG_CRYPTO_FIPS is not set
1721CONFIG_CRYPTO_ALGAPI=y 1744CONFIG_CRYPTO_ALGAPI=y
1722CONFIG_CRYPTO_ALGAPI2=y 1745CONFIG_CRYPTO_ALGAPI2=y
1723CONFIG_CRYPTO_AEAD=y 1746CONFIG_CRYPTO_AEAD=y
@@ -1760,11 +1783,13 @@ CONFIG_CRYPTO_PCBC=m
1760# 1783#
1761CONFIG_CRYPTO_HMAC=y 1784CONFIG_CRYPTO_HMAC=y
1762# CONFIG_CRYPTO_XCBC is not set 1785# CONFIG_CRYPTO_XCBC is not set
1786# CONFIG_CRYPTO_VMAC is not set
1763 1787
1764# 1788#
1765# Digest 1789# Digest
1766# 1790#
1767CONFIG_CRYPTO_CRC32C=m 1791CONFIG_CRYPTO_CRC32C=m
1792# CONFIG_CRYPTO_GHASH is not set
1768# CONFIG_CRYPTO_MD4 is not set 1793# CONFIG_CRYPTO_MD4 is not set
1769CONFIG_CRYPTO_MD5=y 1794CONFIG_CRYPTO_MD5=y
1770# CONFIG_CRYPTO_MICHAEL_MIC is not set 1795# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -1772,16 +1797,16 @@ CONFIG_CRYPTO_MD5=y
1772# CONFIG_CRYPTO_RMD160 is not set 1797# CONFIG_CRYPTO_RMD160 is not set
1773# CONFIG_CRYPTO_RMD256 is not set 1798# CONFIG_CRYPTO_RMD256 is not set
1774# CONFIG_CRYPTO_RMD320 is not set 1799# CONFIG_CRYPTO_RMD320 is not set
1775CONFIG_CRYPTO_SHA1=m 1800CONFIG_CRYPTO_SHA1=y
1776# CONFIG_CRYPTO_SHA256 is not set 1801CONFIG_CRYPTO_SHA256=y
1777# CONFIG_CRYPTO_SHA512 is not set 1802CONFIG_CRYPTO_SHA512=y
1778# CONFIG_CRYPTO_TGR192 is not set 1803# CONFIG_CRYPTO_TGR192 is not set
1779# CONFIG_CRYPTO_WP512 is not set 1804# CONFIG_CRYPTO_WP512 is not set
1780 1805
1781# 1806#
1782# Ciphers 1807# Ciphers
1783# 1808#
1784# CONFIG_CRYPTO_AES is not set 1809CONFIG_CRYPTO_AES=y
1785# CONFIG_CRYPTO_ANUBIS is not set 1810# CONFIG_CRYPTO_ANUBIS is not set
1786# CONFIG_CRYPTO_ARC4 is not set 1811# CONFIG_CRYPTO_ARC4 is not set
1787# CONFIG_CRYPTO_BLOWFISH is not set 1812# CONFIG_CRYPTO_BLOWFISH is not set
diff --git a/arch/powerpc/configs/mpc866_ads_defconfig b/arch/powerpc/configs/mpc866_ads_defconfig
index 6809b61ed3de..40d6f0568ca5 100644
--- a/arch/powerpc/configs/mpc866_ads_defconfig
+++ b/arch/powerpc/configs/mpc866_ads_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:31:57 2009 4# Thu Nov 5 08:20:15 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,6 +16,7 @@ CONFIG_PPC_8xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_8xx=y 17CONFIG_8xx=y
18CONFIG_PPC_MMU_NOHASH=y 18CONFIG_PPC_MMU_NOHASH=y
19CONFIG_PPC_MMU_NOHASH_32=y
19# CONFIG_PPC_MM_SLICES is not set 20# CONFIG_PPC_MM_SLICES is not set
20CONFIG_NOT_COHERENT_CACHE=y 21CONFIG_NOT_COHERENT_CACHE=y
21CONFIG_PPC32=y 22CONFIG_PPC32=y
@@ -29,6 +30,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
29CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
30CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 31CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
31# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
32CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
33CONFIG_STACKTRACE_SUPPORT=y 35CONFIG_STACKTRACE_SUPPORT=y
34CONFIG_HAVE_LATENCYTOP_SUPPORT=y 36CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -76,11 +78,12 @@ CONFIG_SYSVIPC_SYSCTL=y
76# 78#
77# RCU Subsystem 79# RCU Subsystem
78# 80#
79CONFIG_CLASSIC_RCU=y 81CONFIG_TREE_RCU=y
80# CONFIG_TREE_RCU is not set 82# CONFIG_TREE_PREEMPT_RCU is not set
81# CONFIG_PREEMPT_RCU is not set 83# CONFIG_RCU_TRACE is not set
84CONFIG_RCU_FANOUT=32
85# CONFIG_RCU_FANOUT_EXACT is not set
82# CONFIG_TREE_RCU_TRACE is not set 86# CONFIG_TREE_RCU_TRACE is not set
83# CONFIG_PREEMPT_RCU_TRACE is not set
84# CONFIG_IKCONFIG is not set 87# CONFIG_IKCONFIG is not set
85CONFIG_LOG_BUF_SHIFT=14 88CONFIG_LOG_BUF_SHIFT=14
86CONFIG_GROUP_SCHED=y 89CONFIG_GROUP_SCHED=y
@@ -113,28 +116,29 @@ CONFIG_TIMERFD=y
113CONFIG_EVENTFD=y 116CONFIG_EVENTFD=y
114CONFIG_SHMEM=y 117CONFIG_SHMEM=y
115CONFIG_AIO=y 118CONFIG_AIO=y
116CONFIG_HAVE_PERF_COUNTERS=y 119CONFIG_HAVE_PERF_EVENTS=y
117 120
118# 121#
119# Performance Counters 122# Kernel Performance Events And Counters
120# 123#
124# CONFIG_PERF_EVENTS is not set
121# CONFIG_PERF_COUNTERS is not set 125# CONFIG_PERF_COUNTERS is not set
122# CONFIG_VM_EVENT_COUNTERS is not set 126# CONFIG_VM_EVENT_COUNTERS is not set
123CONFIG_SLUB_DEBUG=y 127CONFIG_SLUB_DEBUG=y
124# CONFIG_STRIP_ASM_SYMS is not set
125CONFIG_COMPAT_BRK=y 128CONFIG_COMPAT_BRK=y
126# CONFIG_SLAB is not set 129# CONFIG_SLAB is not set
127CONFIG_SLUB=y 130CONFIG_SLUB=y
128# CONFIG_SLOB is not set 131# CONFIG_SLOB is not set
129# CONFIG_PROFILING is not set 132# CONFIG_PROFILING is not set
130# CONFIG_MARKERS is not set
131CONFIG_HAVE_OPROFILE=y 133CONFIG_HAVE_OPROFILE=y
132CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 134CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
133CONFIG_HAVE_IOREMAP_PROT=y 135CONFIG_HAVE_IOREMAP_PROT=y
134CONFIG_HAVE_KPROBES=y 136CONFIG_HAVE_KPROBES=y
135CONFIG_HAVE_KRETPROBES=y 137CONFIG_HAVE_KRETPROBES=y
136CONFIG_HAVE_ARCH_TRACEHOOK=y 138CONFIG_HAVE_ARCH_TRACEHOOK=y
139CONFIG_HAVE_DMA_ATTRS=y
137CONFIG_HAVE_CLK=y 140CONFIG_HAVE_CLK=y
141CONFIG_HAVE_DMA_API_DEBUG=y
138 142
139# 143#
140# GCOV-based kernel profiling 144# GCOV-based kernel profiling
@@ -233,10 +237,10 @@ CONFIG_BINFMT_ELF=y
233CONFIG_MATH_EMULATION=y 237CONFIG_MATH_EMULATION=y
234# CONFIG_IOMMU_HELPER is not set 238# CONFIG_IOMMU_HELPER is not set
235# CONFIG_SWIOTLB is not set 239# CONFIG_SWIOTLB is not set
236CONFIG_PPC_NEED_DMA_SYNC_OPS=y
237CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 240CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
238CONFIG_ARCH_HAS_WALK_MEMORY=y 241CONFIG_ARCH_HAS_WALK_MEMORY=y
239CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 242CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
243CONFIG_MAX_ACTIVE_REGIONS=32
240CONFIG_ARCH_FLATMEM_ENABLE=y 244CONFIG_ARCH_FLATMEM_ENABLE=y
241CONFIG_ARCH_POPULATES_NODE_MAP=y 245CONFIG_ARCH_POPULATES_NODE_MAP=y
242CONFIG_SELECT_MEMORY_MODEL=y 246CONFIG_SELECT_MEMORY_MODEL=y
@@ -254,6 +258,7 @@ CONFIG_BOUNCE=y
254CONFIG_VIRT_TO_BUS=y 258CONFIG_VIRT_TO_BUS=y
255CONFIG_HAVE_MLOCK=y 259CONFIG_HAVE_MLOCK=y
256CONFIG_HAVE_MLOCKED_PAGE_BIT=y 260CONFIG_HAVE_MLOCKED_PAGE_BIT=y
261# CONFIG_KSM is not set
257CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 262CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
258CONFIG_PPC_4K_PAGES=y 263CONFIG_PPC_4K_PAGES=y
259# CONFIG_PPC_16K_PAGES is not set 264# CONFIG_PPC_16K_PAGES is not set
@@ -340,6 +345,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
340# CONFIG_NETFILTER is not set 345# CONFIG_NETFILTER is not set
341# CONFIG_IP_DCCP is not set 346# CONFIG_IP_DCCP is not set
342# CONFIG_IP_SCTP is not set 347# CONFIG_IP_SCTP is not set
348# CONFIG_RDS is not set
343# CONFIG_TIPC is not set 349# CONFIG_TIPC is not set
344# CONFIG_ATM is not set 350# CONFIG_ATM is not set
345# CONFIG_BRIDGE is not set 351# CONFIG_BRIDGE is not set
@@ -369,6 +375,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
369# CONFIG_AF_RXRPC is not set 375# CONFIG_AF_RXRPC is not set
370CONFIG_WIRELESS=y 376CONFIG_WIRELESS=y
371# CONFIG_CFG80211 is not set 377# CONFIG_CFG80211 is not set
378CONFIG_CFG80211_DEFAULT_PS_VALUE=0
372CONFIG_WIRELESS_OLD_REGULATORY=y 379CONFIG_WIRELESS_OLD_REGULATORY=y
373# CONFIG_WIRELESS_EXT is not set 380# CONFIG_WIRELESS_EXT is not set
374# CONFIG_LIB80211 is not set 381# CONFIG_LIB80211 is not set
@@ -376,7 +383,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
376# 383#
377# CFG80211 needs to be enabled for MAC80211 384# CFG80211 needs to be enabled for MAC80211
378# 385#
379CONFIG_MAC80211_DEFAULT_PS_VALUE=0
380# CONFIG_WIMAX is not set 386# CONFIG_WIMAX is not set
381# CONFIG_RFKILL is not set 387# CONFIG_RFKILL is not set
382# CONFIG_NET_9P is not set 388# CONFIG_NET_9P is not set
@@ -467,6 +473,8 @@ CONFIG_MII=y
467# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 473# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
468# CONFIG_B44 is not set 474# CONFIG_B44 is not set
469# CONFIG_KS8842 is not set 475# CONFIG_KS8842 is not set
476# CONFIG_KS8851_MLL is not set
477# CONFIG_XILINX_EMACLITE is not set
470CONFIG_FS_ENET=y 478CONFIG_FS_ENET=y
471CONFIG_FS_ENET_HAS_SCC=y 479CONFIG_FS_ENET_HAS_SCC=y
472CONFIG_FS_ENET_HAS_FEC=y 480CONFIG_FS_ENET_HAS_FEC=y
@@ -476,10 +484,7 @@ CONFIG_NETDEV_1000=y
476# CONFIG_GIANFAR is not set 484# CONFIG_GIANFAR is not set
477# CONFIG_MV643XX_ETH is not set 485# CONFIG_MV643XX_ETH is not set
478CONFIG_NETDEV_10000=y 486CONFIG_NETDEV_10000=y
479 487CONFIG_WLAN=y
480#
481# Wireless LAN
482#
483# CONFIG_WLAN_PRE80211 is not set 488# CONFIG_WLAN_PRE80211 is not set
484# CONFIG_WLAN_80211 is not set 489# CONFIG_WLAN_80211 is not set
485 490
@@ -520,6 +525,7 @@ CONFIG_INPUT_KEYBOARD=y
520CONFIG_KEYBOARD_ATKBD=y 525CONFIG_KEYBOARD_ATKBD=y
521# CONFIG_KEYBOARD_LKKBD is not set 526# CONFIG_KEYBOARD_LKKBD is not set
522# CONFIG_KEYBOARD_NEWTON is not set 527# CONFIG_KEYBOARD_NEWTON is not set
528# CONFIG_KEYBOARD_OPENCORES is not set
523# CONFIG_KEYBOARD_STOWAWAY is not set 529# CONFIG_KEYBOARD_STOWAWAY is not set
524# CONFIG_KEYBOARD_SUNKBD is not set 530# CONFIG_KEYBOARD_SUNKBD is not set
525# CONFIG_KEYBOARD_XTKBD is not set 531# CONFIG_KEYBOARD_XTKBD is not set
@@ -530,6 +536,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
530CONFIG_MOUSE_PS2_SYNAPTICS=y 536CONFIG_MOUSE_PS2_SYNAPTICS=y
531CONFIG_MOUSE_PS2_TRACKPOINT=y 537CONFIG_MOUSE_PS2_TRACKPOINT=y
532# CONFIG_MOUSE_PS2_ELANTECH is not set 538# CONFIG_MOUSE_PS2_ELANTECH is not set
539# CONFIG_MOUSE_PS2_SENTELIC is not set
533# CONFIG_MOUSE_PS2_TOUCHKIT is not set 540# CONFIG_MOUSE_PS2_TOUCHKIT is not set
534# CONFIG_MOUSE_SERIAL is not set 541# CONFIG_MOUSE_SERIAL is not set
535# CONFIG_MOUSE_VSXXXAA is not set 542# CONFIG_MOUSE_VSXXXAA is not set
@@ -595,6 +602,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
595# CONFIG_POWER_SUPPLY is not set 602# CONFIG_POWER_SUPPLY is not set
596CONFIG_HWMON=y 603CONFIG_HWMON=y
597# CONFIG_HWMON_VID is not set 604# CONFIG_HWMON_VID is not set
605# CONFIG_HWMON_DEBUG_CHIP is not set
606
607#
608# Native drivers
609#
598# CONFIG_SENSORS_F71805F is not set 610# CONFIG_SENSORS_F71805F is not set
599# CONFIG_SENSORS_F71882FG is not set 611# CONFIG_SENSORS_F71882FG is not set
600# CONFIG_SENSORS_IT87 is not set 612# CONFIG_SENSORS_IT87 is not set
@@ -605,9 +617,7 @@ CONFIG_HWMON=y
605# CONFIG_SENSORS_VT1211 is not set 617# CONFIG_SENSORS_VT1211 is not set
606# CONFIG_SENSORS_W83627HF is not set 618# CONFIG_SENSORS_W83627HF is not set
607# CONFIG_SENSORS_W83627EHF is not set 619# CONFIG_SENSORS_W83627EHF is not set
608# CONFIG_HWMON_DEBUG_CHIP is not set
609# CONFIG_THERMAL is not set 620# CONFIG_THERMAL is not set
610# CONFIG_THERMAL_HWMON is not set
611# CONFIG_WATCHDOG is not set 621# CONFIG_WATCHDOG is not set
612CONFIG_SSB_POSSIBLE=y 622CONFIG_SSB_POSSIBLE=y
613 623
@@ -641,7 +651,6 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
641# CONFIG_SOUND is not set 651# CONFIG_SOUND is not set
642CONFIG_HID_SUPPORT=y 652CONFIG_HID_SUPPORT=y
643CONFIG_HID=y 653CONFIG_HID=y
644# CONFIG_HID_DEBUG is not set
645# CONFIG_HIDRAW is not set 654# CONFIG_HIDRAW is not set
646# CONFIG_HID_PID is not set 655# CONFIG_HID_PID is not set
647 656
@@ -705,6 +714,7 @@ CONFIG_FS_MBCACHE=y
705# CONFIG_GFS2_FS is not set 714# CONFIG_GFS2_FS is not set
706# CONFIG_OCFS2_FS is not set 715# CONFIG_OCFS2_FS is not set
707# CONFIG_BTRFS_FS is not set 716# CONFIG_BTRFS_FS is not set
717# CONFIG_NILFS2_FS is not set
708CONFIG_FILE_LOCKING=y 718CONFIG_FILE_LOCKING=y
709CONFIG_FSNOTIFY=y 719CONFIG_FSNOTIFY=y
710CONFIG_DNOTIFY=y 720CONFIG_DNOTIFY=y
@@ -763,7 +773,6 @@ CONFIG_CRAMFS=y
763# CONFIG_ROMFS_FS is not set 773# CONFIG_ROMFS_FS is not set
764# CONFIG_SYSV_FS is not set 774# CONFIG_SYSV_FS is not set
765# CONFIG_UFS_FS is not set 775# CONFIG_UFS_FS is not set
766# CONFIG_NILFS2_FS is not set
767CONFIG_NETWORK_FILESYSTEMS=y 776CONFIG_NETWORK_FILESYSTEMS=y
768CONFIG_NFS_FS=y 777CONFIG_NFS_FS=y
769CONFIG_NFS_V3=y 778CONFIG_NFS_V3=y
@@ -836,6 +845,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
836CONFIG_ENABLE_MUST_CHECK=y 845CONFIG_ENABLE_MUST_CHECK=y
837CONFIG_FRAME_WARN=1024 846CONFIG_FRAME_WARN=1024
838# CONFIG_MAGIC_SYSRQ is not set 847# CONFIG_MAGIC_SYSRQ is not set
848# CONFIG_STRIP_ASM_SYMS is not set
839# CONFIG_UNUSED_SYMBOLS is not set 849# CONFIG_UNUSED_SYMBOLS is not set
840# CONFIG_DEBUG_FS is not set 850# CONFIG_DEBUG_FS is not set
841# CONFIG_HEADERS_CHECK is not set 851# CONFIG_HEADERS_CHECK is not set
@@ -851,6 +861,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
851CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 861CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
852CONFIG_TRACING_SUPPORT=y 862CONFIG_TRACING_SUPPORT=y
853# CONFIG_FTRACE is not set 863# CONFIG_FTRACE is not set
864# CONFIG_DMA_API_DEBUG is not set
854# CONFIG_SAMPLES is not set 865# CONFIG_SAMPLES is not set
855CONFIG_HAVE_ARCH_KGDB=y 866CONFIG_HAVE_ARCH_KGDB=y
856# CONFIG_PPC_DISABLE_WERROR is not set 867# CONFIG_PPC_DISABLE_WERROR is not set
@@ -871,7 +882,6 @@ CONFIG_CRYPTO=y
871# 882#
872# Crypto core or helper 883# Crypto core or helper
873# 884#
874# CONFIG_CRYPTO_FIPS is not set
875# CONFIG_CRYPTO_MANAGER is not set 885# CONFIG_CRYPTO_MANAGER is not set
876# CONFIG_CRYPTO_MANAGER2 is not set 886# CONFIG_CRYPTO_MANAGER2 is not set
877# CONFIG_CRYPTO_GF128MUL is not set 887# CONFIG_CRYPTO_GF128MUL is not set
@@ -902,11 +912,13 @@ CONFIG_CRYPTO=y
902# 912#
903# CONFIG_CRYPTO_HMAC is not set 913# CONFIG_CRYPTO_HMAC is not set
904# CONFIG_CRYPTO_XCBC is not set 914# CONFIG_CRYPTO_XCBC is not set
915# CONFIG_CRYPTO_VMAC is not set
905 916
906# 917#
907# Digest 918# Digest
908# 919#
909# CONFIG_CRYPTO_CRC32C is not set 920# CONFIG_CRYPTO_CRC32C is not set
921# CONFIG_CRYPTO_GHASH is not set
910# CONFIG_CRYPTO_MD4 is not set 922# CONFIG_CRYPTO_MD4 is not set
911# CONFIG_CRYPTO_MD5 is not set 923# CONFIG_CRYPTO_MD5 is not set
912# CONFIG_CRYPTO_MICHAEL_MIC is not set 924# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/mpc86xx_defconfig b/arch/powerpc/configs/mpc86xx_defconfig
index 0e8684a3138d..5b3abb42ae30 100644
--- a/arch/powerpc/configs/mpc86xx_defconfig
+++ b/arch/powerpc/configs/mpc86xx_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:31:58 2009 4# Thu Nov 5 08:20:16 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 36CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
39# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 40CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -88,11 +89,12 @@ CONFIG_AUDIT=y
88# 89#
89# RCU Subsystem 90# RCU Subsystem
90# 91#
91CONFIG_CLASSIC_RCU=y 92CONFIG_TREE_RCU=y
92# CONFIG_TREE_RCU is not set 93# CONFIG_TREE_PREEMPT_RCU is not set
93# CONFIG_PREEMPT_RCU is not set 94# CONFIG_RCU_TRACE is not set
95CONFIG_RCU_FANOUT=32
96# CONFIG_RCU_FANOUT_EXACT is not set
94# CONFIG_TREE_RCU_TRACE is not set 97# CONFIG_TREE_RCU_TRACE is not set
95# CONFIG_PREEMPT_RCU_TRACE is not set
96CONFIG_IKCONFIG=y 98CONFIG_IKCONFIG=y
97CONFIG_IKCONFIG_PROC=y 99CONFIG_IKCONFIG_PROC=y
98CONFIG_LOG_BUF_SHIFT=14 100CONFIG_LOG_BUF_SHIFT=14
@@ -131,22 +133,21 @@ CONFIG_TIMERFD=y
131CONFIG_EVENTFD=y 133CONFIG_EVENTFD=y
132CONFIG_SHMEM=y 134CONFIG_SHMEM=y
133CONFIG_AIO=y 135CONFIG_AIO=y
134CONFIG_HAVE_PERF_COUNTERS=y 136CONFIG_HAVE_PERF_EVENTS=y
135 137
136# 138#
137# Performance Counters 139# Kernel Performance Events And Counters
138# 140#
141# CONFIG_PERF_EVENTS is not set
139# CONFIG_PERF_COUNTERS is not set 142# CONFIG_PERF_COUNTERS is not set
140CONFIG_VM_EVENT_COUNTERS=y 143CONFIG_VM_EVENT_COUNTERS=y
141CONFIG_PCI_QUIRKS=y 144CONFIG_PCI_QUIRKS=y
142CONFIG_SLUB_DEBUG=y 145CONFIG_SLUB_DEBUG=y
143# CONFIG_STRIP_ASM_SYMS is not set
144CONFIG_COMPAT_BRK=y 146CONFIG_COMPAT_BRK=y
145# CONFIG_SLAB is not set 147# CONFIG_SLAB is not set
146CONFIG_SLUB=y 148CONFIG_SLUB=y
147# CONFIG_SLOB is not set 149# CONFIG_SLOB is not set
148# CONFIG_PROFILING is not set 150# CONFIG_PROFILING is not set
149# CONFIG_MARKERS is not set
150CONFIG_HAVE_OPROFILE=y 151CONFIG_HAVE_OPROFILE=y
151# CONFIG_KPROBES is not set 152# CONFIG_KPROBES is not set
152CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 153CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -154,7 +155,9 @@ CONFIG_HAVE_IOREMAP_PROT=y
154CONFIG_HAVE_KPROBES=y 155CONFIG_HAVE_KPROBES=y
155CONFIG_HAVE_KRETPROBES=y 156CONFIG_HAVE_KRETPROBES=y
156CONFIG_HAVE_ARCH_TRACEHOOK=y 157CONFIG_HAVE_ARCH_TRACEHOOK=y
158CONFIG_HAVE_DMA_ATTRS=y
157CONFIG_USE_GENERIC_SMP_HELPERS=y 159CONFIG_USE_GENERIC_SMP_HELPERS=y
160CONFIG_HAVE_DMA_API_DEBUG=y
158 161
159# 162#
160# GCOV-based kernel profiling 163# GCOV-based kernel profiling
@@ -253,13 +256,13 @@ CONFIG_BINFMT_ELF=y
253CONFIG_BINFMT_MISC=m 256CONFIG_BINFMT_MISC=m
254CONFIG_IOMMU_HELPER=y 257CONFIG_IOMMU_HELPER=y
255CONFIG_SWIOTLB=y 258CONFIG_SWIOTLB=y
256CONFIG_PPC_NEED_DMA_SYNC_OPS=y
257CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 259CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
258CONFIG_ARCH_HAS_WALK_MEMORY=y 260CONFIG_ARCH_HAS_WALK_MEMORY=y
259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 261CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
260# CONFIG_KEXEC is not set 262# CONFIG_KEXEC is not set
261# CONFIG_CRASH_DUMP is not set 263# CONFIG_CRASH_DUMP is not set
262# CONFIG_IRQ_ALL_CPUS is not set 264# CONFIG_IRQ_ALL_CPUS is not set
265CONFIG_MAX_ACTIVE_REGIONS=32
263CONFIG_ARCH_FLATMEM_ENABLE=y 266CONFIG_ARCH_FLATMEM_ENABLE=y
264CONFIG_ARCH_POPULATES_NODE_MAP=y 267CONFIG_ARCH_POPULATES_NODE_MAP=y
265CONFIG_SELECT_MEMORY_MODEL=y 268CONFIG_SELECT_MEMORY_MODEL=y
@@ -277,6 +280,7 @@ CONFIG_BOUNCE=y
277CONFIG_VIRT_TO_BUS=y 280CONFIG_VIRT_TO_BUS=y
278CONFIG_HAVE_MLOCK=y 281CONFIG_HAVE_MLOCK=y
279CONFIG_HAVE_MLOCKED_PAGE_BIT=y 282CONFIG_HAVE_MLOCKED_PAGE_BIT=y
283# CONFIG_KSM is not set
280CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 284CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
281CONFIG_PPC_4K_PAGES=y 285CONFIG_PPC_4K_PAGES=y
282# CONFIG_PPC_16K_PAGES is not set 286# CONFIG_PPC_16K_PAGES is not set
@@ -406,6 +410,7 @@ CONFIG_IP_SCTP=m
406# CONFIG_SCTP_HMAC_NONE is not set 410# CONFIG_SCTP_HMAC_NONE is not set
407# CONFIG_SCTP_HMAC_SHA1 is not set 411# CONFIG_SCTP_HMAC_SHA1 is not set
408CONFIG_SCTP_HMAC_MD5=y 412CONFIG_SCTP_HMAC_MD5=y
413# CONFIG_RDS is not set
409# CONFIG_TIPC is not set 414# CONFIG_TIPC is not set
410# CONFIG_ATM is not set 415# CONFIG_ATM is not set
411# CONFIG_BRIDGE is not set 416# CONFIG_BRIDGE is not set
@@ -436,6 +441,7 @@ CONFIG_SCTP_HMAC_MD5=y
436CONFIG_FIB_RULES=y 441CONFIG_FIB_RULES=y
437CONFIG_WIRELESS=y 442CONFIG_WIRELESS=y
438# CONFIG_CFG80211 is not set 443# CONFIG_CFG80211 is not set
444CONFIG_CFG80211_DEFAULT_PS_VALUE=0
439CONFIG_WIRELESS_OLD_REGULATORY=y 445CONFIG_WIRELESS_OLD_REGULATORY=y
440# CONFIG_WIRELESS_EXT is not set 446# CONFIG_WIRELESS_EXT is not set
441# CONFIG_LIB80211 is not set 447# CONFIG_LIB80211 is not set
@@ -443,7 +449,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
443# 449#
444# CFG80211 needs to be enabled for MAC80211 450# CFG80211 needs to be enabled for MAC80211
445# 451#
446CONFIG_MAC80211_DEFAULT_PS_VALUE=0
447# CONFIG_WIMAX is not set 452# CONFIG_WIMAX is not set
448# CONFIG_RFKILL is not set 453# CONFIG_RFKILL is not set
449# CONFIG_NET_9P is not set 454# CONFIG_NET_9P is not set
@@ -456,6 +461,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
456# Generic Driver Options 461# Generic Driver Options
457# 462#
458CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 463CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
464# CONFIG_DEVTMPFS is not set
459CONFIG_STANDALONE=y 465CONFIG_STANDALONE=y
460CONFIG_PREVENT_FIRMWARE_BUILD=y 466CONFIG_PREVENT_FIRMWARE_BUILD=y
461CONFIG_FW_LOADER=y 467CONFIG_FW_LOADER=y
@@ -549,6 +555,7 @@ CONFIG_SCSI_LOWLEVEL=y
549# CONFIG_ISCSI_TCP is not set 555# CONFIG_ISCSI_TCP is not set
550# CONFIG_SCSI_CXGB3_ISCSI is not set 556# CONFIG_SCSI_CXGB3_ISCSI is not set
551# CONFIG_SCSI_BNX2_ISCSI is not set 557# CONFIG_SCSI_BNX2_ISCSI is not set
558# CONFIG_BE2ISCSI is not set
552# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 559# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
553# CONFIG_SCSI_3W_9XXX is not set 560# CONFIG_SCSI_3W_9XXX is not set
554# CONFIG_SCSI_ACARD is not set 561# CONFIG_SCSI_ACARD is not set
@@ -588,11 +595,14 @@ CONFIG_SCSI_LOWLEVEL=y
588# CONFIG_SCSI_DC390T is not set 595# CONFIG_SCSI_DC390T is not set
589# CONFIG_SCSI_NSP32 is not set 596# CONFIG_SCSI_NSP32 is not set
590# CONFIG_SCSI_DEBUG is not set 597# CONFIG_SCSI_DEBUG is not set
598# CONFIG_SCSI_PMCRAID is not set
591# CONFIG_SCSI_SRP is not set 599# CONFIG_SCSI_SRP is not set
600# CONFIG_SCSI_BFA_FC is not set
592# CONFIG_SCSI_DH is not set 601# CONFIG_SCSI_DH is not set
593# CONFIG_SCSI_OSD_INITIATOR is not set 602# CONFIG_SCSI_OSD_INITIATOR is not set
594CONFIG_ATA=y 603CONFIG_ATA=y
595# CONFIG_ATA_NONSTANDARD is not set 604# CONFIG_ATA_NONSTANDARD is not set
605CONFIG_ATA_VERBOSE_ERROR=y
596CONFIG_SATA_PMP=y 606CONFIG_SATA_PMP=y
597CONFIG_SATA_AHCI=y 607CONFIG_SATA_AHCI=y
598# CONFIG_SATA_SIL24 is not set 608# CONFIG_SATA_SIL24 is not set
@@ -615,6 +625,7 @@ CONFIG_ATA_SFF=y
615CONFIG_PATA_ALI=y 625CONFIG_PATA_ALI=y
616# CONFIG_PATA_AMD is not set 626# CONFIG_PATA_AMD is not set
617# CONFIG_PATA_ARTOP is not set 627# CONFIG_PATA_ARTOP is not set
628# CONFIG_PATA_ATP867X is not set
618# CONFIG_PATA_ATIIXP is not set 629# CONFIG_PATA_ATIIXP is not set
619# CONFIG_PATA_CMD640_PCI is not set 630# CONFIG_PATA_CMD640_PCI is not set
620# CONFIG_PATA_CMD64X is not set 631# CONFIG_PATA_CMD64X is not set
@@ -642,6 +653,7 @@ CONFIG_PATA_ALI=y
642# CONFIG_PATA_OPTIDMA is not set 653# CONFIG_PATA_OPTIDMA is not set
643# CONFIG_PATA_PDC_OLD is not set 654# CONFIG_PATA_PDC_OLD is not set
644# CONFIG_PATA_RADISYS is not set 655# CONFIG_PATA_RADISYS is not set
656# CONFIG_PATA_RDC is not set
645# CONFIG_PATA_RZ1000 is not set 657# CONFIG_PATA_RZ1000 is not set
646# CONFIG_PATA_SC1200 is not set 658# CONFIG_PATA_SC1200 is not set
647# CONFIG_PATA_SERVERWORKS is not set 659# CONFIG_PATA_SERVERWORKS is not set
@@ -718,7 +730,9 @@ CONFIG_MII=y
718# CONFIG_NET_PCI is not set 730# CONFIG_NET_PCI is not set
719# CONFIG_B44 is not set 731# CONFIG_B44 is not set
720# CONFIG_KS8842 is not set 732# CONFIG_KS8842 is not set
733# CONFIG_KS8851_MLL is not set
721# CONFIG_ATL2 is not set 734# CONFIG_ATL2 is not set
735# CONFIG_XILINX_EMACLITE is not set
722CONFIG_NETDEV_1000=y 736CONFIG_NETDEV_1000=y
723# CONFIG_ACENIC is not set 737# CONFIG_ACENIC is not set
724# CONFIG_DL2K is not set 738# CONFIG_DL2K is not set
@@ -766,10 +780,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
766# CONFIG_SFC is not set 780# CONFIG_SFC is not set
767# CONFIG_BE2NET is not set 781# CONFIG_BE2NET is not set
768# CONFIG_TR is not set 782# CONFIG_TR is not set
769 783CONFIG_WLAN=y
770#
771# Wireless LAN
772#
773# CONFIG_WLAN_PRE80211 is not set 784# CONFIG_WLAN_PRE80211 is not set
774# CONFIG_WLAN_80211 is not set 785# CONFIG_WLAN_80211 is not set
775 786
@@ -883,6 +894,7 @@ CONFIG_NVRAM=y
883CONFIG_DEVPORT=y 894CONFIG_DEVPORT=y
884CONFIG_I2C=y 895CONFIG_I2C=y
885CONFIG_I2C_BOARDINFO=y 896CONFIG_I2C_BOARDINFO=y
897CONFIG_I2C_COMPAT=y
886# CONFIG_I2C_CHARDEV is not set 898# CONFIG_I2C_CHARDEV is not set
887CONFIG_I2C_HELPER_AUTO=y 899CONFIG_I2C_HELPER_AUTO=y
888 900
@@ -938,9 +950,6 @@ CONFIG_I2C_MPC=y
938# Miscellaneous I2C Chip support 950# Miscellaneous I2C Chip support
939# 951#
940# CONFIG_DS1682 is not set 952# CONFIG_DS1682 is not set
941# CONFIG_SENSORS_PCF8574 is not set
942# CONFIG_PCF8575 is not set
943# CONFIG_SENSORS_PCA9539 is not set
944# CONFIG_SENSORS_TSL2550 is not set 953# CONFIG_SENSORS_TSL2550 is not set
945# CONFIG_I2C_DEBUG_CORE is not set 954# CONFIG_I2C_DEBUG_CORE is not set
946# CONFIG_I2C_DEBUG_ALGO is not set 955# CONFIG_I2C_DEBUG_ALGO is not set
@@ -974,15 +983,19 @@ CONFIG_GPIOLIB=y
974# PCI GPIO expanders: 983# PCI GPIO expanders:
975# 984#
976# CONFIG_GPIO_BT8XX is not set 985# CONFIG_GPIO_BT8XX is not set
986# CONFIG_GPIO_LANGWELL is not set
977 987
978# 988#
979# SPI GPIO expanders: 989# SPI GPIO expanders:
980# 990#
991
992#
993# AC97 GPIO expanders:
994#
981# CONFIG_W1 is not set 995# CONFIG_W1 is not set
982# CONFIG_POWER_SUPPLY is not set 996# CONFIG_POWER_SUPPLY is not set
983# CONFIG_HWMON is not set 997# CONFIG_HWMON is not set
984# CONFIG_THERMAL is not set 998# CONFIG_THERMAL is not set
985# CONFIG_THERMAL_HWMON is not set
986# CONFIG_WATCHDOG is not set 999# CONFIG_WATCHDOG is not set
987CONFIG_SSB_POSSIBLE=y 1000CONFIG_SSB_POSSIBLE=y
988 1001
@@ -1003,6 +1016,7 @@ CONFIG_SSB_POSSIBLE=y
1003# CONFIG_MFD_TMIO is not set 1016# CONFIG_MFD_TMIO is not set
1004# CONFIG_PMIC_DA903X is not set 1017# CONFIG_PMIC_DA903X is not set
1005# CONFIG_MFD_WM8400 is not set 1018# CONFIG_MFD_WM8400 is not set
1019# CONFIG_MFD_WM831X is not set
1006# CONFIG_MFD_WM8350_I2C is not set 1020# CONFIG_MFD_WM8350_I2C is not set
1007# CONFIG_MFD_PCF50633 is not set 1021# CONFIG_MFD_PCF50633 is not set
1008# CONFIG_AB3100_CORE is not set 1022# CONFIG_AB3100_CORE is not set
@@ -1013,6 +1027,7 @@ CONFIG_SSB_POSSIBLE=y
1013# Graphics support 1027# Graphics support
1014# 1028#
1015# CONFIG_AGP is not set 1029# CONFIG_AGP is not set
1030CONFIG_VGA_ARB=y
1016# CONFIG_DRM is not set 1031# CONFIG_DRM is not set
1017# CONFIG_VGASTATE is not set 1032# CONFIG_VGASTATE is not set
1018CONFIG_VIDEO_OUTPUT_CONTROL=y 1033CONFIG_VIDEO_OUTPUT_CONTROL=y
@@ -1032,6 +1047,7 @@ CONFIG_VGA_CONSOLE=y
1032CONFIG_DUMMY_CONSOLE=y 1047CONFIG_DUMMY_CONSOLE=y
1033CONFIG_SOUND=y 1048CONFIG_SOUND=y
1034CONFIG_SOUND_OSS_CORE=y 1049CONFIG_SOUND_OSS_CORE=y
1050CONFIG_SOUND_OSS_CORE_PRECLAIM=y
1035CONFIG_SND=y 1051CONFIG_SND=y
1036CONFIG_SND_TIMER=y 1052CONFIG_SND_TIMER=y
1037CONFIG_SND_PCM=y 1053CONFIG_SND_PCM=y
@@ -1135,7 +1151,6 @@ CONFIG_SND_USB=y
1135CONFIG_AC97_BUS=y 1151CONFIG_AC97_BUS=y
1136CONFIG_HID_SUPPORT=y 1152CONFIG_HID_SUPPORT=y
1137CONFIG_HID=y 1153CONFIG_HID=y
1138# CONFIG_HID_DEBUG is not set
1139# CONFIG_HIDRAW is not set 1154# CONFIG_HIDRAW is not set
1140 1155
1141# 1156#
@@ -1158,6 +1173,7 @@ CONFIG_HID_CYPRESS=y
1158CONFIG_HID_EZKEY=y 1173CONFIG_HID_EZKEY=y
1159# CONFIG_HID_KYE is not set 1174# CONFIG_HID_KYE is not set
1160CONFIG_HID_GYRATION=y 1175CONFIG_HID_GYRATION=y
1176# CONFIG_HID_TWINHAN is not set
1161# CONFIG_HID_KENSINGTON is not set 1177# CONFIG_HID_KENSINGTON is not set
1162CONFIG_HID_LOGITECH=y 1178CONFIG_HID_LOGITECH=y
1163# CONFIG_LOGITECH_FF is not set 1179# CONFIG_LOGITECH_FF is not set
@@ -1210,6 +1226,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1210# CONFIG_USB_OXU210HP_HCD is not set 1226# CONFIG_USB_OXU210HP_HCD is not set
1211# CONFIG_USB_ISP116X_HCD is not set 1227# CONFIG_USB_ISP116X_HCD is not set
1212# CONFIG_USB_ISP1760_HCD is not set 1228# CONFIG_USB_ISP1760_HCD is not set
1229# CONFIG_USB_ISP1362_HCD is not set
1213CONFIG_USB_OHCI_HCD=y 1230CONFIG_USB_OHCI_HCD=y
1214CONFIG_USB_OHCI_HCD_PPC_OF_BE=y 1231CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
1215CONFIG_USB_OHCI_HCD_PPC_OF_LE=y 1232CONFIG_USB_OHCI_HCD_PPC_OF_LE=y
@@ -1389,6 +1406,7 @@ CONFIG_FS_MBCACHE=y
1389# CONFIG_GFS2_FS is not set 1406# CONFIG_GFS2_FS is not set
1390# CONFIG_OCFS2_FS is not set 1407# CONFIG_OCFS2_FS is not set
1391# CONFIG_BTRFS_FS is not set 1408# CONFIG_BTRFS_FS is not set
1409# CONFIG_NILFS2_FS is not set
1392CONFIG_FILE_LOCKING=y 1410CONFIG_FILE_LOCKING=y
1393CONFIG_FSNOTIFY=y 1411CONFIG_FSNOTIFY=y
1394CONFIG_DNOTIFY=y 1412CONFIG_DNOTIFY=y
@@ -1459,7 +1477,6 @@ CONFIG_SYSV_FS=m
1459CONFIG_UFS_FS=m 1477CONFIG_UFS_FS=m
1460# CONFIG_UFS_FS_WRITE is not set 1478# CONFIG_UFS_FS_WRITE is not set
1461# CONFIG_UFS_DEBUG is not set 1479# CONFIG_UFS_DEBUG is not set
1462# CONFIG_NILFS2_FS is not set
1463CONFIG_NETWORK_FILESYSTEMS=y 1480CONFIG_NETWORK_FILESYSTEMS=y
1464CONFIG_NFS_FS=y 1481CONFIG_NFS_FS=y
1465CONFIG_NFS_V3=y 1482CONFIG_NFS_V3=y
@@ -1577,6 +1594,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1577CONFIG_ENABLE_MUST_CHECK=y 1594CONFIG_ENABLE_MUST_CHECK=y
1578CONFIG_FRAME_WARN=1024 1595CONFIG_FRAME_WARN=1024
1579# CONFIG_MAGIC_SYSRQ is not set 1596# CONFIG_MAGIC_SYSRQ is not set
1597# CONFIG_STRIP_ASM_SYMS is not set
1580# CONFIG_UNUSED_SYMBOLS is not set 1598# CONFIG_UNUSED_SYMBOLS is not set
1581# CONFIG_DEBUG_FS is not set 1599# CONFIG_DEBUG_FS is not set
1582# CONFIG_HEADERS_CHECK is not set 1600# CONFIG_HEADERS_CHECK is not set
@@ -1594,6 +1612,7 @@ CONFIG_SCHED_DEBUG=y
1594# CONFIG_DEBUG_OBJECTS is not set 1612# CONFIG_DEBUG_OBJECTS is not set
1595# CONFIG_SLUB_DEBUG_ON is not set 1613# CONFIG_SLUB_DEBUG_ON is not set
1596# CONFIG_SLUB_STATS is not set 1614# CONFIG_SLUB_STATS is not set
1615# CONFIG_DEBUG_KMEMLEAK is not set
1597# CONFIG_DEBUG_RT_MUTEXES is not set 1616# CONFIG_DEBUG_RT_MUTEXES is not set
1598# CONFIG_RT_MUTEX_TESTER is not set 1617# CONFIG_RT_MUTEX_TESTER is not set
1599# CONFIG_DEBUG_SPINLOCK is not set 1618# CONFIG_DEBUG_SPINLOCK is not set
@@ -1613,10 +1632,12 @@ CONFIG_DEBUG_INFO=y
1613# CONFIG_DEBUG_LIST is not set 1632# CONFIG_DEBUG_LIST is not set
1614# CONFIG_DEBUG_SG is not set 1633# CONFIG_DEBUG_SG is not set
1615# CONFIG_DEBUG_NOTIFIERS is not set 1634# CONFIG_DEBUG_NOTIFIERS is not set
1635# CONFIG_DEBUG_CREDENTIALS is not set
1616# CONFIG_RCU_TORTURE_TEST is not set 1636# CONFIG_RCU_TORTURE_TEST is not set
1617# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1637# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1618# CONFIG_BACKTRACE_SELF_TEST is not set 1638# CONFIG_BACKTRACE_SELF_TEST is not set
1619# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1639# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1640# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1620# CONFIG_FAULT_INJECTION is not set 1641# CONFIG_FAULT_INJECTION is not set
1621# CONFIG_LATENCYTOP is not set 1642# CONFIG_LATENCYTOP is not set
1622CONFIG_SYSCTL_SYSCALL_CHECK=y 1643CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1639,10 +1660,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
1639# CONFIG_KMEMTRACE is not set 1660# CONFIG_KMEMTRACE is not set
1640# CONFIG_WORKQUEUE_TRACER is not set 1661# CONFIG_WORKQUEUE_TRACER is not set
1641# CONFIG_BLK_DEV_IO_TRACE is not set 1662# CONFIG_BLK_DEV_IO_TRACE is not set
1663# CONFIG_DMA_API_DEBUG is not set
1642# CONFIG_SAMPLES is not set 1664# CONFIG_SAMPLES is not set
1643CONFIG_HAVE_ARCH_KGDB=y 1665CONFIG_HAVE_ARCH_KGDB=y
1644# CONFIG_KGDB is not set 1666# CONFIG_KGDB is not set
1645# CONFIG_KMEMCHECK is not set
1646# CONFIG_PPC_DISABLE_WERROR is not set 1667# CONFIG_PPC_DISABLE_WERROR is not set
1647CONFIG_PPC_WERROR=y 1668CONFIG_PPC_WERROR=y
1648CONFIG_PRINT_STACK_DEPTH=64 1669CONFIG_PRINT_STACK_DEPTH=64
@@ -1669,7 +1690,6 @@ CONFIG_CRYPTO=y
1669# 1690#
1670# Crypto core or helper 1691# Crypto core or helper
1671# 1692#
1672# CONFIG_CRYPTO_FIPS is not set
1673CONFIG_CRYPTO_ALGAPI=y 1693CONFIG_CRYPTO_ALGAPI=y
1674CONFIG_CRYPTO_ALGAPI2=y 1694CONFIG_CRYPTO_ALGAPI2=y
1675CONFIG_CRYPTO_AEAD2=y 1695CONFIG_CRYPTO_AEAD2=y
@@ -1711,11 +1731,13 @@ CONFIG_CRYPTO_PCBC=m
1711# 1731#
1712CONFIG_CRYPTO_HMAC=y 1732CONFIG_CRYPTO_HMAC=y
1713# CONFIG_CRYPTO_XCBC is not set 1733# CONFIG_CRYPTO_XCBC is not set
1734# CONFIG_CRYPTO_VMAC is not set
1714 1735
1715# 1736#
1716# Digest 1737# Digest
1717# 1738#
1718CONFIG_CRYPTO_CRC32C=m 1739CONFIG_CRYPTO_CRC32C=m
1740# CONFIG_CRYPTO_GHASH is not set
1719# CONFIG_CRYPTO_MD4 is not set 1741# CONFIG_CRYPTO_MD4 is not set
1720CONFIG_CRYPTO_MD5=y 1742CONFIG_CRYPTO_MD5=y
1721# CONFIG_CRYPTO_MICHAEL_MIC is not set 1743# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/mpc885_ads_defconfig b/arch/powerpc/configs/mpc885_ads_defconfig
index dbe8e869a827..1da3488a603d 100644
--- a/arch/powerpc/configs/mpc885_ads_defconfig
+++ b/arch/powerpc/configs/mpc885_ads_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:31:59 2009 4# Thu Nov 5 08:20:17 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -16,6 +16,7 @@ CONFIG_PPC_8xx=y
16# CONFIG_E200 is not set 16# CONFIG_E200 is not set
17CONFIG_8xx=y 17CONFIG_8xx=y
18CONFIG_PPC_MMU_NOHASH=y 18CONFIG_PPC_MMU_NOHASH=y
19CONFIG_PPC_MMU_NOHASH_32=y
19# CONFIG_PPC_MM_SLICES is not set 20# CONFIG_PPC_MM_SLICES is not set
20CONFIG_NOT_COHERENT_CACHE=y 21CONFIG_NOT_COHERENT_CACHE=y
21CONFIG_PPC32=y 22CONFIG_PPC32=y
@@ -29,6 +30,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
29CONFIG_GENERIC_HARDIRQS=y 30CONFIG_GENERIC_HARDIRQS=y
30CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 31CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
31# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
32CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
33CONFIG_STACKTRACE_SUPPORT=y 35CONFIG_STACKTRACE_SUPPORT=y
34CONFIG_HAVE_LATENCYTOP_SUPPORT=y 36CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -77,11 +79,12 @@ CONFIG_SYSVIPC_SYSCTL=y
77# 79#
78# RCU Subsystem 80# RCU Subsystem
79# 81#
80CONFIG_CLASSIC_RCU=y 82CONFIG_TREE_RCU=y
81# CONFIG_TREE_RCU is not set 83# CONFIG_TREE_PREEMPT_RCU is not set
82# CONFIG_PREEMPT_RCU is not set 84# CONFIG_RCU_TRACE is not set
85CONFIG_RCU_FANOUT=32
86# CONFIG_RCU_FANOUT_EXACT is not set
83# CONFIG_TREE_RCU_TRACE is not set 87# CONFIG_TREE_RCU_TRACE is not set
84# CONFIG_PREEMPT_RCU_TRACE is not set
85# CONFIG_IKCONFIG is not set 88# CONFIG_IKCONFIG is not set
86CONFIG_LOG_BUF_SHIFT=14 89CONFIG_LOG_BUF_SHIFT=14
87CONFIG_GROUP_SCHED=y 90CONFIG_GROUP_SCHED=y
@@ -115,28 +118,29 @@ CONFIG_TIMERFD=y
115CONFIG_EVENTFD=y 118CONFIG_EVENTFD=y
116CONFIG_SHMEM=y 119CONFIG_SHMEM=y
117CONFIG_AIO=y 120CONFIG_AIO=y
118CONFIG_HAVE_PERF_COUNTERS=y 121CONFIG_HAVE_PERF_EVENTS=y
119 122
120# 123#
121# Performance Counters 124# Kernel Performance Events And Counters
122# 125#
126# CONFIG_PERF_EVENTS is not set
123# CONFIG_PERF_COUNTERS is not set 127# CONFIG_PERF_COUNTERS is not set
124# CONFIG_VM_EVENT_COUNTERS is not set 128# CONFIG_VM_EVENT_COUNTERS is not set
125CONFIG_SLUB_DEBUG=y 129CONFIG_SLUB_DEBUG=y
126# CONFIG_STRIP_ASM_SYMS is not set
127CONFIG_COMPAT_BRK=y 130CONFIG_COMPAT_BRK=y
128# CONFIG_SLAB is not set 131# CONFIG_SLAB is not set
129CONFIG_SLUB=y 132CONFIG_SLUB=y
130# CONFIG_SLOB is not set 133# CONFIG_SLOB is not set
131# CONFIG_PROFILING is not set 134# CONFIG_PROFILING is not set
132# CONFIG_MARKERS is not set
133CONFIG_HAVE_OPROFILE=y 135CONFIG_HAVE_OPROFILE=y
134CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 136CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
135CONFIG_HAVE_IOREMAP_PROT=y 137CONFIG_HAVE_IOREMAP_PROT=y
136CONFIG_HAVE_KPROBES=y 138CONFIG_HAVE_KPROBES=y
137CONFIG_HAVE_KRETPROBES=y 139CONFIG_HAVE_KRETPROBES=y
138CONFIG_HAVE_ARCH_TRACEHOOK=y 140CONFIG_HAVE_ARCH_TRACEHOOK=y
141CONFIG_HAVE_DMA_ATTRS=y
139CONFIG_HAVE_CLK=y 142CONFIG_HAVE_CLK=y
143CONFIG_HAVE_DMA_API_DEBUG=y
140 144
141# 145#
142# GCOV-based kernel profiling 146# GCOV-based kernel profiling
@@ -241,10 +245,10 @@ CONFIG_BINFMT_ELF=y
241CONFIG_8XX_MINIMAL_FPEMU=y 245CONFIG_8XX_MINIMAL_FPEMU=y
242# CONFIG_IOMMU_HELPER is not set 246# CONFIG_IOMMU_HELPER is not set
243# CONFIG_SWIOTLB is not set 247# CONFIG_SWIOTLB is not set
244CONFIG_PPC_NEED_DMA_SYNC_OPS=y
245CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 248CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
246CONFIG_ARCH_HAS_WALK_MEMORY=y 249CONFIG_ARCH_HAS_WALK_MEMORY=y
247CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 250CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
251CONFIG_MAX_ACTIVE_REGIONS=32
248CONFIG_ARCH_FLATMEM_ENABLE=y 252CONFIG_ARCH_FLATMEM_ENABLE=y
249CONFIG_ARCH_POPULATES_NODE_MAP=y 253CONFIG_ARCH_POPULATES_NODE_MAP=y
250CONFIG_SELECT_MEMORY_MODEL=y 254CONFIG_SELECT_MEMORY_MODEL=y
@@ -262,6 +266,7 @@ CONFIG_BOUNCE=y
262CONFIG_VIRT_TO_BUS=y 266CONFIG_VIRT_TO_BUS=y
263CONFIG_HAVE_MLOCK=y 267CONFIG_HAVE_MLOCK=y
264CONFIG_HAVE_MLOCKED_PAGE_BIT=y 268CONFIG_HAVE_MLOCKED_PAGE_BIT=y
269# CONFIG_KSM is not set
265CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 270CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
266CONFIG_PPC_4K_PAGES=y 271CONFIG_PPC_4K_PAGES=y
267# CONFIG_PPC_16K_PAGES is not set 272# CONFIG_PPC_16K_PAGES is not set
@@ -344,6 +349,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
344# CONFIG_NETFILTER is not set 349# CONFIG_NETFILTER is not set
345# CONFIG_IP_DCCP is not set 350# CONFIG_IP_DCCP is not set
346# CONFIG_IP_SCTP is not set 351# CONFIG_IP_SCTP is not set
352# CONFIG_RDS is not set
347# CONFIG_TIPC is not set 353# CONFIG_TIPC is not set
348# CONFIG_ATM is not set 354# CONFIG_ATM is not set
349# CONFIG_BRIDGE is not set 355# CONFIG_BRIDGE is not set
@@ -373,6 +379,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
373# CONFIG_AF_RXRPC is not set 379# CONFIG_AF_RXRPC is not set
374CONFIG_WIRELESS=y 380CONFIG_WIRELESS=y
375# CONFIG_CFG80211 is not set 381# CONFIG_CFG80211 is not set
382CONFIG_CFG80211_DEFAULT_PS_VALUE=0
376CONFIG_WIRELESS_OLD_REGULATORY=y 383CONFIG_WIRELESS_OLD_REGULATORY=y
377# CONFIG_WIRELESS_EXT is not set 384# CONFIG_WIRELESS_EXT is not set
378# CONFIG_LIB80211 is not set 385# CONFIG_LIB80211 is not set
@@ -380,7 +387,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
380# 387#
381# CFG80211 needs to be enabled for MAC80211 388# CFG80211 needs to be enabled for MAC80211
382# 389#
383CONFIG_MAC80211_DEFAULT_PS_VALUE=0
384# CONFIG_WIMAX is not set 390# CONFIG_WIMAX is not set
385# CONFIG_RFKILL is not set 391# CONFIG_RFKILL is not set
386# CONFIG_NET_9P is not set 392# CONFIG_NET_9P is not set
@@ -393,6 +399,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
393# Generic Driver Options 399# Generic Driver Options
394# 400#
395CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 401CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
402# CONFIG_DEVTMPFS is not set
396CONFIG_STANDALONE=y 403CONFIG_STANDALONE=y
397CONFIG_PREVENT_FIRMWARE_BUILD=y 404CONFIG_PREVENT_FIRMWARE_BUILD=y
398# CONFIG_FW_LOADER is not set 405# CONFIG_FW_LOADER is not set
@@ -540,16 +547,15 @@ CONFIG_MII=y
540# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set 547# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
541# CONFIG_B44 is not set 548# CONFIG_B44 is not set
542# CONFIG_KS8842 is not set 549# CONFIG_KS8842 is not set
550# CONFIG_KS8851_MLL is not set
551# CONFIG_XILINX_EMACLITE is not set
543CONFIG_FS_ENET=y 552CONFIG_FS_ENET=y
544# CONFIG_FS_ENET_HAS_SCC is not set 553# CONFIG_FS_ENET_HAS_SCC is not set
545CONFIG_FS_ENET_HAS_FEC=y 554CONFIG_FS_ENET_HAS_FEC=y
546CONFIG_FS_ENET_MDIO_FEC=y 555CONFIG_FS_ENET_MDIO_FEC=y
547# CONFIG_NETDEV_1000 is not set 556# CONFIG_NETDEV_1000 is not set
548# CONFIG_NETDEV_10000 is not set 557# CONFIG_NETDEV_10000 is not set
549 558CONFIG_WLAN=y
550#
551# Wireless LAN
552#
553# CONFIG_WLAN_PRE80211 is not set 559# CONFIG_WLAN_PRE80211 is not set
554# CONFIG_WLAN_80211 is not set 560# CONFIG_WLAN_80211 is not set
555 561
@@ -622,7 +628,6 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
622# CONFIG_POWER_SUPPLY is not set 628# CONFIG_POWER_SUPPLY is not set
623# CONFIG_HWMON is not set 629# CONFIG_HWMON is not set
624# CONFIG_THERMAL is not set 630# CONFIG_THERMAL is not set
625# CONFIG_THERMAL_HWMON is not set
626# CONFIG_WATCHDOG is not set 631# CONFIG_WATCHDOG is not set
627CONFIG_SSB_POSSIBLE=y 632CONFIG_SSB_POSSIBLE=y
628 633
@@ -683,6 +688,7 @@ CONFIG_SSB_POSSIBLE=y
683# CONFIG_GFS2_FS is not set 688# CONFIG_GFS2_FS is not set
684# CONFIG_OCFS2_FS is not set 689# CONFIG_OCFS2_FS is not set
685# CONFIG_BTRFS_FS is not set 690# CONFIG_BTRFS_FS is not set
691# CONFIG_NILFS2_FS is not set
686CONFIG_FILE_LOCKING=y 692CONFIG_FILE_LOCKING=y
687CONFIG_FSNOTIFY=y 693CONFIG_FSNOTIFY=y
688# CONFIG_DNOTIFY is not set 694# CONFIG_DNOTIFY is not set
@@ -742,7 +748,6 @@ CONFIG_CRAMFS=y
742# CONFIG_ROMFS_FS is not set 748# CONFIG_ROMFS_FS is not set
743# CONFIG_SYSV_FS is not set 749# CONFIG_SYSV_FS is not set
744# CONFIG_UFS_FS is not set 750# CONFIG_UFS_FS is not set
745# CONFIG_NILFS2_FS is not set
746CONFIG_NETWORK_FILESYSTEMS=y 751CONFIG_NETWORK_FILESYSTEMS=y
747CONFIG_NFS_FS=y 752CONFIG_NFS_FS=y
748CONFIG_NFS_V3=y 753CONFIG_NFS_V3=y
@@ -814,6 +819,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
814CONFIG_ENABLE_MUST_CHECK=y 819CONFIG_ENABLE_MUST_CHECK=y
815CONFIG_FRAME_WARN=1024 820CONFIG_FRAME_WARN=1024
816CONFIG_MAGIC_SYSRQ=y 821CONFIG_MAGIC_SYSRQ=y
822# CONFIG_STRIP_ASM_SYMS is not set
817# CONFIG_UNUSED_SYMBOLS is not set 823# CONFIG_UNUSED_SYMBOLS is not set
818# CONFIG_DEBUG_FS is not set 824# CONFIG_DEBUG_FS is not set
819# CONFIG_HEADERS_CHECK is not set 825# CONFIG_HEADERS_CHECK is not set
@@ -831,6 +837,7 @@ CONFIG_SCHED_DEBUG=y
831# CONFIG_DEBUG_OBJECTS is not set 837# CONFIG_DEBUG_OBJECTS is not set
832# CONFIG_SLUB_DEBUG_ON is not set 838# CONFIG_SLUB_DEBUG_ON is not set
833# CONFIG_SLUB_STATS is not set 839# CONFIG_SLUB_STATS is not set
840# CONFIG_DEBUG_KMEMLEAK is not set
834# CONFIG_DEBUG_SPINLOCK is not set 841# CONFIG_DEBUG_SPINLOCK is not set
835# CONFIG_DEBUG_MUTEXES is not set 842# CONFIG_DEBUG_MUTEXES is not set
836# CONFIG_DEBUG_LOCK_ALLOC is not set 843# CONFIG_DEBUG_LOCK_ALLOC is not set
@@ -847,10 +854,12 @@ CONFIG_DEBUG_INFO=y
847# CONFIG_DEBUG_LIST is not set 854# CONFIG_DEBUG_LIST is not set
848# CONFIG_DEBUG_SG is not set 855# CONFIG_DEBUG_SG is not set
849# CONFIG_DEBUG_NOTIFIERS is not set 856# CONFIG_DEBUG_NOTIFIERS is not set
857# CONFIG_DEBUG_CREDENTIALS is not set
850# CONFIG_RCU_TORTURE_TEST is not set 858# CONFIG_RCU_TORTURE_TEST is not set
851# CONFIG_RCU_CPU_STALL_DETECTOR is not set 859# CONFIG_RCU_CPU_STALL_DETECTOR is not set
852# CONFIG_BACKTRACE_SELF_TEST is not set 860# CONFIG_BACKTRACE_SELF_TEST is not set
853# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 861# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
862# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
854# CONFIG_FAULT_INJECTION is not set 863# CONFIG_FAULT_INJECTION is not set
855# CONFIG_LATENCYTOP is not set 864# CONFIG_LATENCYTOP is not set
856# CONFIG_DEBUG_PAGEALLOC is not set 865# CONFIG_DEBUG_PAGEALLOC is not set
@@ -872,10 +881,10 @@ CONFIG_BRANCH_PROFILE_NONE=y
872# CONFIG_KMEMTRACE is not set 881# CONFIG_KMEMTRACE is not set
873# CONFIG_WORKQUEUE_TRACER is not set 882# CONFIG_WORKQUEUE_TRACER is not set
874# CONFIG_BLK_DEV_IO_TRACE is not set 883# CONFIG_BLK_DEV_IO_TRACE is not set
884# CONFIG_DMA_API_DEBUG is not set
875# CONFIG_SAMPLES is not set 885# CONFIG_SAMPLES is not set
876CONFIG_HAVE_ARCH_KGDB=y 886CONFIG_HAVE_ARCH_KGDB=y
877# CONFIG_KGDB is not set 887# CONFIG_KGDB is not set
878# CONFIG_KMEMCHECK is not set
879# CONFIG_PPC_DISABLE_WERROR is not set 888# CONFIG_PPC_DISABLE_WERROR is not set
880CONFIG_PPC_WERROR=y 889CONFIG_PPC_WERROR=y
881CONFIG_PRINT_STACK_DEPTH=64 890CONFIG_PRINT_STACK_DEPTH=64
diff --git a/arch/powerpc/configs/pasemi_defconfig b/arch/powerpc/configs/pasemi_defconfig
index 4f8681cc8d77..20ba0cfff8ba 100644
--- a/arch/powerpc/configs/pasemi_defconfig
+++ b/arch/powerpc/configs/pasemi_defconfig
@@ -1,49 +1,58 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26-rc3 3# Linux kernel version: 2.6.32-rc3
4# Tue May 27 16:08:06 2008 4# Tue Oct 6 10:27:18 2009
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7 7
8# 8#
9# Processor support 9# Processor support
10# 10#
11CONFIG_PPC_BOOK3S_64=y
12# CONFIG_PPC_BOOK3E_64 is not set
13CONFIG_PPC_BOOK3S=y
11CONFIG_POWER4_ONLY=y 14CONFIG_POWER4_ONLY=y
12CONFIG_POWER4=y 15CONFIG_POWER4=y
13# CONFIG_TUNE_CELL is not set 16# CONFIG_TUNE_CELL is not set
14CONFIG_PPC_FPU=y 17CONFIG_PPC_FPU=y
15CONFIG_ALTIVEC=y 18CONFIG_ALTIVEC=y
19# CONFIG_VSX is not set
16CONFIG_PPC_STD_MMU=y 20CONFIG_PPC_STD_MMU=y
21CONFIG_PPC_STD_MMU_64=y
17CONFIG_PPC_MM_SLICES=y 22CONFIG_PPC_MM_SLICES=y
18# CONFIG_VIRT_CPU_ACCOUNTING is not set 23# CONFIG_VIRT_CPU_ACCOUNTING is not set
24CONFIG_PPC_HAVE_PMU_SUPPORT=y
25CONFIG_PPC_PERF_CTRS=y
19CONFIG_SMP=y 26CONFIG_SMP=y
20CONFIG_NR_CPUS=2 27CONFIG_NR_CPUS=2
21CONFIG_64BIT=y 28CONFIG_64BIT=y
22CONFIG_WORD_SIZE=64 29CONFIG_WORD_SIZE=64
23CONFIG_PPC_MERGE=y 30CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
24CONFIG_MMU=y 31CONFIG_MMU=y
25CONFIG_GENERIC_CMOS_UPDATE=y 32CONFIG_GENERIC_CMOS_UPDATE=y
26CONFIG_GENERIC_TIME=y 33CONFIG_GENERIC_TIME=y
27CONFIG_GENERIC_TIME_VSYSCALL=y 34CONFIG_GENERIC_TIME_VSYSCALL=y
28CONFIG_GENERIC_CLOCKEVENTS=y 35CONFIG_GENERIC_CLOCKEVENTS=y
29CONFIG_GENERIC_HARDIRQS=y 36CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
30CONFIG_HAVE_SETUP_PER_CPU_AREA=y 38CONFIG_HAVE_SETUP_PER_CPU_AREA=y
39CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
31CONFIG_IRQ_PER_CPU=y 40CONFIG_IRQ_PER_CPU=y
32CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
33CONFIG_TRACE_IRQFLAGS_SUPPORT=y 43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
34CONFIG_LOCKDEP_SUPPORT=y 44CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 45CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 46CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_ARCH_HAS_ILOG2_U64=y 47CONFIG_ARCH_HAS_ILOG2_U64=y
38CONFIG_GENERIC_HWEIGHT=y 48CONFIG_GENERIC_HWEIGHT=y
39CONFIG_GENERIC_CALIBRATE_DELAY=y
40CONFIG_GENERIC_FIND_NEXT_BIT=y 49CONFIG_GENERIC_FIND_NEXT_BIT=y
41CONFIG_ARCH_NO_VIRT_TO_BUS=y 50CONFIG_ARCH_NO_VIRT_TO_BUS=y
42CONFIG_PPC=y 51CONFIG_PPC=y
43CONFIG_EARLY_PRINTK=y 52CONFIG_EARLY_PRINTK=y
44CONFIG_COMPAT=y 53CONFIG_COMPAT=y
45CONFIG_SYSVIPC_COMPAT=y 54CONFIG_SYSVIPC_COMPAT=y
46CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 55CONFIG_SCHED_OMIT_FRAME_POINTER=y
47CONFIG_ARCH_MAY_HAVE_PC_FDC=y 56CONFIG_ARCH_MAY_HAVE_PC_FDC=y
48CONFIG_PPC_OF=y 57CONFIG_PPC_OF=y
49CONFIG_OF=y 58CONFIG_OF=y
@@ -51,11 +60,14 @@ CONFIG_PPC_UDBG_16550=y
51# CONFIG_GENERIC_TBSYNC is not set 60# CONFIG_GENERIC_TBSYNC is not set
52CONFIG_AUDIT_ARCH=y 61CONFIG_AUDIT_ARCH=y
53CONFIG_GENERIC_BUG=y 62CONFIG_GENERIC_BUG=y
63CONFIG_DTC=y
54# CONFIG_DEFAULT_UIMAGE is not set 64# CONFIG_DEFAULT_UIMAGE is not set
55# CONFIG_PPC_DCR_NATIVE is not set 65# CONFIG_PPC_DCR_NATIVE is not set
56# CONFIG_PPC_DCR_MMIO is not set 66# CONFIG_PPC_DCR_MMIO is not set
57# CONFIG_PPC_OF_PLATFORM_PCI is not set 67# CONFIG_PPC_OF_PLATFORM_PCI is not set
68CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
58CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 69CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
70CONFIG_CONSTRUCTORS=y
59 71
60# 72#
61# General setup 73# General setup
@@ -72,10 +84,20 @@ CONFIG_SYSVIPC_SYSCTL=y
72# CONFIG_BSD_PROCESS_ACCT is not set 84# CONFIG_BSD_PROCESS_ACCT is not set
73# CONFIG_TASKSTATS is not set 85# CONFIG_TASKSTATS is not set
74# CONFIG_AUDIT is not set 86# CONFIG_AUDIT is not set
87
88#
89# RCU Subsystem
90#
91CONFIG_TREE_RCU=y
92# CONFIG_TREE_PREEMPT_RCU is not set
93# CONFIG_RCU_TRACE is not set
94CONFIG_RCU_FANOUT=64
95# CONFIG_RCU_FANOUT_EXACT is not set
96# CONFIG_TREE_RCU_TRACE is not set
75# CONFIG_IKCONFIG is not set 97# CONFIG_IKCONFIG is not set
76CONFIG_LOG_BUF_SHIFT=17 98CONFIG_LOG_BUF_SHIFT=17
77# CONFIG_CGROUPS is not set
78# CONFIG_GROUP_SCHED is not set 99# CONFIG_GROUP_SCHED is not set
100# CONFIG_CGROUPS is not set
79CONFIG_SYSFS_DEPRECATED=y 101CONFIG_SYSFS_DEPRECATED=y
80CONFIG_SYSFS_DEPRECATED_V2=y 102CONFIG_SYSFS_DEPRECATED_V2=y
81# CONFIG_RELAY is not set 103# CONFIG_RELAY is not set
@@ -84,13 +106,17 @@ CONFIG_NAMESPACES=y
84# CONFIG_IPC_NS is not set 106# CONFIG_IPC_NS is not set
85# CONFIG_USER_NS is not set 107# CONFIG_USER_NS is not set
86# CONFIG_PID_NS is not set 108# CONFIG_PID_NS is not set
109# CONFIG_NET_NS is not set
87CONFIG_BLK_DEV_INITRD=y 110CONFIG_BLK_DEV_INITRD=y
88CONFIG_INITRAMFS_SOURCE="" 111CONFIG_INITRAMFS_SOURCE=""
112CONFIG_RD_GZIP=y
113CONFIG_RD_BZIP2=y
114CONFIG_RD_LZMA=y
89# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 115# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
90CONFIG_SYSCTL=y 116CONFIG_SYSCTL=y
117CONFIG_ANON_INODES=y
91# CONFIG_EMBEDDED is not set 118# CONFIG_EMBEDDED is not set
92CONFIG_SYSCTL_SYSCALL=y 119CONFIG_SYSCTL_SYSCALL=y
93CONFIG_SYSCTL_SYSCALL_CHECK=y
94CONFIG_KALLSYMS=y 120CONFIG_KALLSYMS=y
95# CONFIG_KALLSYMS_ALL is not set 121# CONFIG_KALLSYMS_ALL is not set
96# CONFIG_KALLSYMS_EXTRA_PASS is not set 122# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -98,32 +124,52 @@ CONFIG_HOTPLUG=y
98CONFIG_PRINTK=y 124CONFIG_PRINTK=y
99CONFIG_BUG=y 125CONFIG_BUG=y
100CONFIG_ELF_CORE=y 126CONFIG_ELF_CORE=y
101CONFIG_COMPAT_BRK=y
102CONFIG_BASE_FULL=y 127CONFIG_BASE_FULL=y
103CONFIG_FUTEX=y 128CONFIG_FUTEX=y
104CONFIG_ANON_INODES=y
105CONFIG_EPOLL=y 129CONFIG_EPOLL=y
106CONFIG_SIGNALFD=y 130CONFIG_SIGNALFD=y
107CONFIG_TIMERFD=y 131CONFIG_TIMERFD=y
108CONFIG_EVENTFD=y 132CONFIG_EVENTFD=y
109CONFIG_SHMEM=y 133CONFIG_SHMEM=y
134CONFIG_AIO=y
135CONFIG_HAVE_PERF_EVENTS=y
136
137#
138# Kernel Performance Events And Counters
139#
140CONFIG_PERF_EVENTS=y
141CONFIG_EVENT_PROFILE=y
142# CONFIG_PERF_COUNTERS is not set
110CONFIG_VM_EVENT_COUNTERS=y 143CONFIG_VM_EVENT_COUNTERS=y
144CONFIG_PCI_QUIRKS=y
111CONFIG_SLUB_DEBUG=y 145CONFIG_SLUB_DEBUG=y
146CONFIG_COMPAT_BRK=y
112# CONFIG_SLAB is not set 147# CONFIG_SLAB is not set
113CONFIG_SLUB=y 148CONFIG_SLUB=y
114# CONFIG_SLOB is not set 149# CONFIG_SLOB is not set
115CONFIG_PROFILING=y 150CONFIG_PROFILING=y
116# CONFIG_MARKERS is not set 151CONFIG_TRACEPOINTS=y
117CONFIG_OPROFILE=y 152CONFIG_OPROFILE=y
118CONFIG_HAVE_OPROFILE=y 153CONFIG_HAVE_OPROFILE=y
119# CONFIG_KPROBES is not set 154# CONFIG_KPROBES is not set
155CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
156CONFIG_HAVE_SYSCALL_WRAPPERS=y
157CONFIG_HAVE_IOREMAP_PROT=y
120CONFIG_HAVE_KPROBES=y 158CONFIG_HAVE_KPROBES=y
121CONFIG_HAVE_KRETPROBES=y 159CONFIG_HAVE_KRETPROBES=y
122# CONFIG_HAVE_DMA_ATTRS is not set 160CONFIG_HAVE_ARCH_TRACEHOOK=y
123CONFIG_PROC_PAGE_MONITOR=y 161CONFIG_HAVE_DMA_ATTRS=y
162CONFIG_USE_GENERIC_SMP_HELPERS=y
163CONFIG_HAVE_DMA_API_DEBUG=y
164
165#
166# GCOV-based kernel profiling
167#
168# CONFIG_GCOV_KERNEL is not set
169# CONFIG_SLOW_WORK is not set
170# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
124CONFIG_SLABINFO=y 171CONFIG_SLABINFO=y
125CONFIG_RT_MUTEXES=y 172CONFIG_RT_MUTEXES=y
126# CONFIG_TINY_SHMEM is not set
127CONFIG_BASE_SMALL=0 173CONFIG_BASE_SMALL=0
128CONFIG_MODULES=y 174CONFIG_MODULES=y
129# CONFIG_MODULE_FORCE_LOAD is not set 175# CONFIG_MODULE_FORCE_LOAD is not set
@@ -131,11 +177,10 @@ CONFIG_MODULE_UNLOAD=y
131# CONFIG_MODULE_FORCE_UNLOAD is not set 177# CONFIG_MODULE_FORCE_UNLOAD is not set
132# CONFIG_MODVERSIONS is not set 178# CONFIG_MODVERSIONS is not set
133# CONFIG_MODULE_SRCVERSION_ALL is not set 179# CONFIG_MODULE_SRCVERSION_ALL is not set
134# CONFIG_KMOD is not set
135CONFIG_STOP_MACHINE=y 180CONFIG_STOP_MACHINE=y
136CONFIG_BLOCK=y 181CONFIG_BLOCK=y
137# CONFIG_BLK_DEV_IO_TRACE is not set
138# CONFIG_BLK_DEV_BSG is not set 182# CONFIG_BLK_DEV_BSG is not set
183# CONFIG_BLK_DEV_INTEGRITY is not set
139CONFIG_BLOCK_COMPAT=y 184CONFIG_BLOCK_COMPAT=y
140 185
141# 186#
@@ -150,19 +195,14 @@ CONFIG_DEFAULT_AS=y
150# CONFIG_DEFAULT_CFQ is not set 195# CONFIG_DEFAULT_CFQ is not set
151# CONFIG_DEFAULT_NOOP is not set 196# CONFIG_DEFAULT_NOOP is not set
152CONFIG_DEFAULT_IOSCHED="anticipatory" 197CONFIG_DEFAULT_IOSCHED="anticipatory"
153CONFIG_CLASSIC_RCU=y 198# CONFIG_FREEZER is not set
199CONFIG_PPC_MSI_BITMAP=y
154 200
155# 201#
156# Platform support 202# Platform support
157# 203#
158CONFIG_PPC_MULTIPLATFORM=y
159# CONFIG_PPC_82xx is not set
160# CONFIG_PPC_83xx is not set
161# CONFIG_PPC_86xx is not set
162# CONFIG_PPC_PSERIES is not set 204# CONFIG_PPC_PSERIES is not set
163# CONFIG_PPC_ISERIES is not set 205# CONFIG_PPC_ISERIES is not set
164# CONFIG_PPC_MPC512x is not set
165# CONFIG_PPC_MPC5121 is not set
166# CONFIG_PPC_PMAC is not set 206# CONFIG_PPC_PMAC is not set
167# CONFIG_PPC_MAPLE is not set 207# CONFIG_PPC_MAPLE is not set
168CONFIG_PPC_PASEMI=y 208CONFIG_PPC_PASEMI=y
@@ -178,8 +218,10 @@ CONFIG_PPC_PASEMI_MDIO=y
178# CONFIG_PPC_CELL_NATIVE is not set 218# CONFIG_PPC_CELL_NATIVE is not set
179# CONFIG_PPC_IBM_CELL_BLADE is not set 219# CONFIG_PPC_IBM_CELL_BLADE is not set
180# CONFIG_PPC_CELLEB is not set 220# CONFIG_PPC_CELLEB is not set
221# CONFIG_PPC_CELL_QPACE is not set
181# CONFIG_PQ2ADS is not set 222# CONFIG_PQ2ADS is not set
182CONFIG_PPC_NATIVE=y 223CONFIG_PPC_NATIVE=y
224CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
183# CONFIG_IPIC is not set 225# CONFIG_IPIC is not set
184CONFIG_MPIC=y 226CONFIG_MPIC=y
185# CONFIG_MPIC_WEIRD is not set 227# CONFIG_MPIC_WEIRD is not set
@@ -213,6 +255,7 @@ CONFIG_CPU_FREQ_GOV_ONDEMAND=y
213# 255#
214CONFIG_PPC_PASEMI_CPUFREQ=y 256CONFIG_PPC_PASEMI_CPUFREQ=y
215# CONFIG_FSL_ULI1575 is not set 257# CONFIG_FSL_ULI1575 is not set
258# CONFIG_SIMPLE_GPIO is not set
216 259
217# 260#
218# Kernel options 261# Kernel options
@@ -226,16 +269,19 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
226# CONFIG_HZ_300 is not set 269# CONFIG_HZ_300 is not set
227CONFIG_HZ_1000=y 270CONFIG_HZ_1000=y
228CONFIG_HZ=1000 271CONFIG_HZ=1000
229# CONFIG_SCHED_HRTICK is not set 272CONFIG_SCHED_HRTICK=y
230CONFIG_PREEMPT_NONE=y 273CONFIG_PREEMPT_NONE=y
231# CONFIG_PREEMPT_VOLUNTARY is not set 274# CONFIG_PREEMPT_VOLUNTARY is not set
232# CONFIG_PREEMPT is not set 275# CONFIG_PREEMPT is not set
233CONFIG_BINFMT_ELF=y 276CONFIG_BINFMT_ELF=y
234CONFIG_COMPAT_BINFMT_ELF=y 277CONFIG_COMPAT_BINFMT_ELF=y
278# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
279# CONFIG_HAVE_AOUT is not set
235# CONFIG_BINFMT_MISC is not set 280# CONFIG_BINFMT_MISC is not set
236CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y 281CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y
237CONFIG_IOMMU_VMERGE=y 282CONFIG_IOMMU_VMERGE=y
238CONFIG_IOMMU_HELPER=y 283CONFIG_IOMMU_HELPER=y
284# CONFIG_SWIOTLB is not set
239CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 285CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
240CONFIG_ARCH_HAS_WALK_MEMORY=y 286CONFIG_ARCH_HAS_WALK_MEMORY=y
241CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 287CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
@@ -243,6 +289,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
243# CONFIG_CRASH_DUMP is not set 289# CONFIG_CRASH_DUMP is not set
244# CONFIG_IRQ_ALL_CPUS is not set 290# CONFIG_IRQ_ALL_CPUS is not set
245# CONFIG_NUMA is not set 291# CONFIG_NUMA is not set
292CONFIG_MAX_ACTIVE_REGIONS=256
246CONFIG_ARCH_SELECT_MEMORY_MODEL=y 293CONFIG_ARCH_SELECT_MEMORY_MODEL=y
247CONFIG_ARCH_FLATMEM_ENABLE=y 294CONFIG_ARCH_FLATMEM_ENABLE=y
248CONFIG_ARCH_SPARSEMEM_ENABLE=y 295CONFIG_ARCH_SPARSEMEM_ENABLE=y
@@ -253,20 +300,28 @@ CONFIG_FLATMEM_MANUAL=y
253# CONFIG_SPARSEMEM_MANUAL is not set 300# CONFIG_SPARSEMEM_MANUAL is not set
254CONFIG_FLATMEM=y 301CONFIG_FLATMEM=y
255CONFIG_FLAT_NODE_MEM_MAP=y 302CONFIG_FLAT_NODE_MEM_MAP=y
256# CONFIG_SPARSEMEM_STATIC is not set
257CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y 303CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
258CONFIG_PAGEFLAGS_EXTENDED=y 304CONFIG_PAGEFLAGS_EXTENDED=y
259CONFIG_SPLIT_PTLOCK_CPUS=4 305CONFIG_SPLIT_PTLOCK_CPUS=4
260CONFIG_RESOURCES_64BIT=y 306CONFIG_MIGRATION=y
307CONFIG_PHYS_ADDR_T_64BIT=y
261CONFIG_ZONE_DMA_FLAG=1 308CONFIG_ZONE_DMA_FLAG=1
262CONFIG_BOUNCE=y 309CONFIG_BOUNCE=y
310CONFIG_HAVE_MLOCK=y
311CONFIG_HAVE_MLOCKED_PAGE_BIT=y
312# CONFIG_KSM is not set
313CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
263CONFIG_PPC_HAS_HASH_64K=y 314CONFIG_PPC_HAS_HASH_64K=y
315# CONFIG_PPC_4K_PAGES is not set
316# CONFIG_PPC_16K_PAGES is not set
264CONFIG_PPC_64K_PAGES=y 317CONFIG_PPC_64K_PAGES=y
318# CONFIG_PPC_256K_PAGES is not set
265CONFIG_FORCE_MAX_ZONEORDER=9 319CONFIG_FORCE_MAX_ZONEORDER=9
266# CONFIG_PPC_SUBPAGE_PROT is not set 320# CONFIG_PPC_SUBPAGE_PROT is not set
267# CONFIG_SCHED_SMT is not set 321# CONFIG_SCHED_SMT is not set
268CONFIG_PROC_DEVICETREE=y 322CONFIG_PROC_DEVICETREE=y
269# CONFIG_CMDLINE_BOOL is not set 323# CONFIG_CMDLINE_BOOL is not set
324CONFIG_EXTRA_TARGETS=""
270# CONFIG_PM is not set 325# CONFIG_PM is not set
271# CONFIG_SECCOMP is not set 326# CONFIG_SECCOMP is not set
272CONFIG_ISA_DMA_API=y 327CONFIG_ISA_DMA_API=y
@@ -285,6 +340,8 @@ CONFIG_ARCH_SUPPORTS_MSI=y
285CONFIG_PCI_MSI=y 340CONFIG_PCI_MSI=y
286CONFIG_PCI_LEGACY=y 341CONFIG_PCI_LEGACY=y
287# CONFIG_PCI_DEBUG is not set 342# CONFIG_PCI_DEBUG is not set
343# CONFIG_PCI_STUB is not set
344# CONFIG_PCI_IOV is not set
288CONFIG_PCCARD=y 345CONFIG_PCCARD=y
289CONFIG_PCMCIA_DEBUG=y 346CONFIG_PCMCIA_DEBUG=y
290CONFIG_PCMCIA=y 347CONFIG_PCMCIA=y
@@ -301,13 +358,10 @@ CONFIG_CARDBUS=y
301CONFIG_ELECTRA_CF=y 358CONFIG_ELECTRA_CF=y
302# CONFIG_HOTPLUG_PCI is not set 359# CONFIG_HOTPLUG_PCI is not set
303# CONFIG_HAS_RAPIDIO is not set 360# CONFIG_HAS_RAPIDIO is not set
361# CONFIG_RELOCATABLE is not set
304CONFIG_PAGE_OFFSET=0xc000000000000000 362CONFIG_PAGE_OFFSET=0xc000000000000000
305CONFIG_KERNEL_START=0xc000000000000000 363CONFIG_KERNEL_START=0xc000000000000000
306CONFIG_PHYSICAL_START=0x00000000 364CONFIG_PHYSICAL_START=0x00000000
307
308#
309# Networking
310#
311CONFIG_NET=y 365CONFIG_NET=y
312 366
313# 367#
@@ -356,9 +410,11 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
356# CONFIG_NETFILTER is not set 410# CONFIG_NETFILTER is not set
357# CONFIG_IP_DCCP is not set 411# CONFIG_IP_DCCP is not set
358# CONFIG_IP_SCTP is not set 412# CONFIG_IP_SCTP is not set
413# CONFIG_RDS is not set
359# CONFIG_TIPC is not set 414# CONFIG_TIPC is not set
360# CONFIG_ATM is not set 415# CONFIG_ATM is not set
361# CONFIG_BRIDGE is not set 416# CONFIG_BRIDGE is not set
417# CONFIG_NET_DSA is not set
362# CONFIG_VLAN_8021Q is not set 418# CONFIG_VLAN_8021Q is not set
363# CONFIG_DECNET is not set 419# CONFIG_DECNET is not set
364# CONFIG_LLC2 is not set 420# CONFIG_LLC2 is not set
@@ -368,25 +424,32 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
368# CONFIG_LAPB is not set 424# CONFIG_LAPB is not set
369# CONFIG_ECONET is not set 425# CONFIG_ECONET is not set
370# CONFIG_WAN_ROUTER is not set 426# CONFIG_WAN_ROUTER is not set
427# CONFIG_PHONET is not set
428# CONFIG_IEEE802154 is not set
371# CONFIG_NET_SCHED is not set 429# CONFIG_NET_SCHED is not set
430# CONFIG_DCB is not set
372 431
373# 432#
374# Network testing 433# Network testing
375# 434#
376# CONFIG_NET_PKTGEN is not set 435# CONFIG_NET_PKTGEN is not set
436# CONFIG_NET_DROP_MONITOR is not set
377# CONFIG_HAMRADIO is not set 437# CONFIG_HAMRADIO is not set
378# CONFIG_CAN is not set 438# CONFIG_CAN is not set
379# CONFIG_IRDA is not set 439# CONFIG_IRDA is not set
380# CONFIG_BT is not set 440# CONFIG_BT is not set
381# CONFIG_AF_RXRPC is not set 441# CONFIG_AF_RXRPC is not set
442CONFIG_WIRELESS=y
443# CONFIG_CFG80211 is not set
444CONFIG_CFG80211_DEFAULT_PS_VALUE=0
445# CONFIG_WIRELESS_OLD_REGULATORY is not set
446# CONFIG_WIRELESS_EXT is not set
447# CONFIG_LIB80211 is not set
382 448
383# 449#
384# Wireless 450# CFG80211 needs to be enabled for MAC80211
385# 451#
386# CONFIG_CFG80211 is not set 452# CONFIG_WIMAX is not set
387# CONFIG_WIRELESS_EXT is not set
388# CONFIG_MAC80211 is not set
389# CONFIG_IEEE80211 is not set
390# CONFIG_RFKILL is not set 453# CONFIG_RFKILL is not set
391# CONFIG_NET_9P is not set 454# CONFIG_NET_9P is not set
392 455
@@ -398,15 +461,19 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
398# Generic Driver Options 461# Generic Driver Options
399# 462#
400CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 463CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
464# CONFIG_DEVTMPFS is not set
401CONFIG_STANDALONE=y 465CONFIG_STANDALONE=y
402CONFIG_PREVENT_FIRMWARE_BUILD=y 466CONFIG_PREVENT_FIRMWARE_BUILD=y
403CONFIG_FW_LOADER=y 467CONFIG_FW_LOADER=y
468CONFIG_FIRMWARE_IN_KERNEL=y
469CONFIG_EXTRA_FIRMWARE=""
404# CONFIG_DEBUG_DRIVER is not set 470# CONFIG_DEBUG_DRIVER is not set
405# CONFIG_DEBUG_DEVRES is not set 471# CONFIG_DEBUG_DEVRES is not set
406# CONFIG_SYS_HYPERVISOR is not set 472# CONFIG_SYS_HYPERVISOR is not set
407# CONFIG_CONNECTOR is not set 473# CONFIG_CONNECTOR is not set
408CONFIG_MTD=y 474CONFIG_MTD=y
409# CONFIG_MTD_DEBUG is not set 475# CONFIG_MTD_DEBUG is not set
476# CONFIG_MTD_TESTS is not set
410CONFIG_MTD_CONCAT=y 477CONFIG_MTD_CONCAT=y
411# CONFIG_MTD_PARTITIONS is not set 478# CONFIG_MTD_PARTITIONS is not set
412 479
@@ -478,11 +545,17 @@ CONFIG_MTD_NAND_PASEMI=y
478# CONFIG_MTD_ONENAND is not set 545# CONFIG_MTD_ONENAND is not set
479 546
480# 547#
548# LPDDR flash memory drivers
549#
550# CONFIG_MTD_LPDDR is not set
551
552#
481# UBI - Unsorted block images 553# UBI - Unsorted block images
482# 554#
483# CONFIG_MTD_UBI is not set 555# CONFIG_MTD_UBI is not set
484CONFIG_OF_DEVICE=y 556CONFIG_OF_DEVICE=y
485CONFIG_OF_I2C=y 557CONFIG_OF_I2C=y
558CONFIG_OF_MDIO=y
486# CONFIG_PARPORT is not set 559# CONFIG_PARPORT is not set
487CONFIG_BLK_DEV=y 560CONFIG_BLK_DEV=y
488# CONFIG_BLK_DEV_FD is not set 561# CONFIG_BLK_DEV_FD is not set
@@ -501,29 +574,41 @@ CONFIG_BLK_DEV_RAM_SIZE=16384
501# CONFIG_BLK_DEV_XIP is not set 574# CONFIG_BLK_DEV_XIP is not set
502# CONFIG_CDROM_PKTCDVD is not set 575# CONFIG_CDROM_PKTCDVD is not set
503# CONFIG_ATA_OVER_ETH is not set 576# CONFIG_ATA_OVER_ETH is not set
577# CONFIG_BLK_DEV_HD is not set
504CONFIG_MISC_DEVICES=y 578CONFIG_MISC_DEVICES=y
505# CONFIG_PHANTOM is not set 579# CONFIG_PHANTOM is not set
506# CONFIG_EEPROM_93CX6 is not set
507# CONFIG_SGI_IOC4 is not set 580# CONFIG_SGI_IOC4 is not set
508# CONFIG_TIFM_CORE is not set 581# CONFIG_TIFM_CORE is not set
582# CONFIG_ICS932S401 is not set
509# CONFIG_ENCLOSURE_SERVICES is not set 583# CONFIG_ENCLOSURE_SERVICES is not set
584# CONFIG_HP_ILO is not set
585# CONFIG_ISL29003 is not set
586# CONFIG_C2PORT is not set
587
588#
589# EEPROM support
590#
591# CONFIG_EEPROM_AT24 is not set
592CONFIG_EEPROM_LEGACY=y
593# CONFIG_EEPROM_MAX6875 is not set
594# CONFIG_EEPROM_93CX6 is not set
595# CONFIG_CB710_CORE is not set
510CONFIG_HAVE_IDE=y 596CONFIG_HAVE_IDE=y
511CONFIG_IDE=y 597CONFIG_IDE=y
512CONFIG_BLK_DEV_IDE=y
513 598
514# 599#
515# Please see Documentation/ide/ide.txt for help/info on IDE drives 600# Please see Documentation/ide/ide.txt for help/info on IDE drives
516# 601#
602CONFIG_IDE_ATAPI=y
517# CONFIG_BLK_DEV_IDE_SATA is not set 603# CONFIG_BLK_DEV_IDE_SATA is not set
518CONFIG_BLK_DEV_IDEDISK=y 604CONFIG_IDE_GD=y
519CONFIG_IDEDISK_MULTI_MODE=y 605CONFIG_IDE_GD_ATA=y
606# CONFIG_IDE_GD_ATAPI is not set
520# CONFIG_BLK_DEV_IDECS is not set 607# CONFIG_BLK_DEV_IDECS is not set
521# CONFIG_BLK_DEV_DELKIN is not set 608# CONFIG_BLK_DEV_DELKIN is not set
522CONFIG_BLK_DEV_IDECD=y 609CONFIG_BLK_DEV_IDECD=y
523CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 610CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
524# CONFIG_BLK_DEV_IDETAPE is not set 611# CONFIG_BLK_DEV_IDETAPE is not set
525# CONFIG_BLK_DEV_IDEFLOPPY is not set
526CONFIG_BLK_DEV_IDESCSI=y
527CONFIG_IDE_TASK_IOCTL=y 612CONFIG_IDE_TASK_IOCTL=y
528CONFIG_IDE_PROC_FS=y 613CONFIG_IDE_PROC_FS=y
529 614
@@ -542,14 +627,13 @@ CONFIG_IDE_PROC_FS=y
542# CONFIG_BLK_DEV_AMD74XX is not set 627# CONFIG_BLK_DEV_AMD74XX is not set
543# CONFIG_BLK_DEV_CMD64X is not set 628# CONFIG_BLK_DEV_CMD64X is not set
544# CONFIG_BLK_DEV_TRIFLEX is not set 629# CONFIG_BLK_DEV_TRIFLEX is not set
545# CONFIG_BLK_DEV_CY82C693 is not set
546# CONFIG_BLK_DEV_CS5520 is not set 630# CONFIG_BLK_DEV_CS5520 is not set
547# CONFIG_BLK_DEV_CS5530 is not set 631# CONFIG_BLK_DEV_CS5530 is not set
548# CONFIG_BLK_DEV_HPT34X is not set
549# CONFIG_BLK_DEV_HPT366 is not set 632# CONFIG_BLK_DEV_HPT366 is not set
550# CONFIG_BLK_DEV_JMICRON is not set 633# CONFIG_BLK_DEV_JMICRON is not set
551# CONFIG_BLK_DEV_SC1200 is not set 634# CONFIG_BLK_DEV_SC1200 is not set
552# CONFIG_BLK_DEV_PIIX is not set 635# CONFIG_BLK_DEV_PIIX is not set
636# CONFIG_BLK_DEV_IT8172 is not set
553# CONFIG_BLK_DEV_IT8213 is not set 637# CONFIG_BLK_DEV_IT8213 is not set
554# CONFIG_BLK_DEV_IT821X is not set 638# CONFIG_BLK_DEV_IT821X is not set
555# CONFIG_BLK_DEV_NS87415 is not set 639# CONFIG_BLK_DEV_NS87415 is not set
@@ -563,8 +647,6 @@ CONFIG_IDE_PROC_FS=y
563# CONFIG_BLK_DEV_VIA82CXXX is not set 647# CONFIG_BLK_DEV_VIA82CXXX is not set
564# CONFIG_BLK_DEV_TC86C001 is not set 648# CONFIG_BLK_DEV_TC86C001 is not set
565# CONFIG_BLK_DEV_IDEDMA is not set 649# CONFIG_BLK_DEV_IDEDMA is not set
566# CONFIG_BLK_DEV_HD_ONLY is not set
567# CONFIG_BLK_DEV_HD is not set
568 650
569# 651#
570# SCSI device support 652# SCSI device support
@@ -586,10 +668,6 @@ CONFIG_BLK_DEV_SR=y
586CONFIG_BLK_DEV_SR_VENDOR=y 668CONFIG_BLK_DEV_SR_VENDOR=y
587CONFIG_CHR_DEV_SG=y 669CONFIG_CHR_DEV_SG=y
588CONFIG_CHR_DEV_SCH=y 670CONFIG_CHR_DEV_SCH=y
589
590#
591# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
592#
593CONFIG_SCSI_MULTI_LUN=y 671CONFIG_SCSI_MULTI_LUN=y
594CONFIG_SCSI_CONSTANTS=y 672CONFIG_SCSI_CONSTANTS=y
595CONFIG_SCSI_LOGGING=y 673CONFIG_SCSI_LOGGING=y
@@ -606,6 +684,8 @@ CONFIG_SCSI_WAIT_SCAN=m
606# CONFIG_SCSI_SRP_ATTRS is not set 684# CONFIG_SCSI_SRP_ATTRS is not set
607CONFIG_SCSI_LOWLEVEL=y 685CONFIG_SCSI_LOWLEVEL=y
608# CONFIG_ISCSI_TCP is not set 686# CONFIG_ISCSI_TCP is not set
687# CONFIG_SCSI_CXGB3_ISCSI is not set
688# CONFIG_SCSI_BNX2_ISCSI is not set
609# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 689# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
610# CONFIG_SCSI_3W_9XXX is not set 690# CONFIG_SCSI_3W_9XXX is not set
611# CONFIG_SCSI_ACARD is not set 691# CONFIG_SCSI_ACARD is not set
@@ -614,11 +694,16 @@ CONFIG_SCSI_LOWLEVEL=y
614# CONFIG_SCSI_AIC7XXX_OLD is not set 694# CONFIG_SCSI_AIC7XXX_OLD is not set
615# CONFIG_SCSI_AIC79XX is not set 695# CONFIG_SCSI_AIC79XX is not set
616# CONFIG_SCSI_AIC94XX is not set 696# CONFIG_SCSI_AIC94XX is not set
697# CONFIG_SCSI_MVSAS is not set
617# CONFIG_SCSI_ARCMSR is not set 698# CONFIG_SCSI_ARCMSR is not set
618# CONFIG_MEGARAID_NEWGEN is not set 699# CONFIG_MEGARAID_NEWGEN is not set
619# CONFIG_MEGARAID_LEGACY is not set 700# CONFIG_MEGARAID_LEGACY is not set
620# CONFIG_MEGARAID_SAS is not set 701# CONFIG_MEGARAID_SAS is not set
702# CONFIG_SCSI_MPT2SAS is not set
621# CONFIG_SCSI_HPTIOP is not set 703# CONFIG_SCSI_HPTIOP is not set
704# CONFIG_LIBFC is not set
705# CONFIG_LIBFCOE is not set
706# CONFIG_FCOE is not set
622# CONFIG_SCSI_DMX3191D is not set 707# CONFIG_SCSI_DMX3191D is not set
623# CONFIG_SCSI_EATA is not set 708# CONFIG_SCSI_EATA is not set
624# CONFIG_SCSI_FUTURE_DOMAIN is not set 709# CONFIG_SCSI_FUTURE_DOMAIN is not set
@@ -626,7 +711,6 @@ CONFIG_SCSI_LOWLEVEL=y
626# CONFIG_SCSI_IPS is not set 711# CONFIG_SCSI_IPS is not set
627# CONFIG_SCSI_INITIO is not set 712# CONFIG_SCSI_INITIO is not set
628# CONFIG_SCSI_INIA100 is not set 713# CONFIG_SCSI_INIA100 is not set
629# CONFIG_SCSI_MVSAS is not set
630# CONFIG_SCSI_STEX is not set 714# CONFIG_SCSI_STEX is not set
631# CONFIG_SCSI_SYM53C8XX_2 is not set 715# CONFIG_SCSI_SYM53C8XX_2 is not set
632# CONFIG_SCSI_IPR is not set 716# CONFIG_SCSI_IPR is not set
@@ -637,10 +721,14 @@ CONFIG_SCSI_LOWLEVEL=y
637# CONFIG_SCSI_DC395x is not set 721# CONFIG_SCSI_DC395x is not set
638# CONFIG_SCSI_DC390T is not set 722# CONFIG_SCSI_DC390T is not set
639# CONFIG_SCSI_DEBUG is not set 723# CONFIG_SCSI_DEBUG is not set
724# CONFIG_SCSI_PMCRAID is not set
640# CONFIG_SCSI_SRP is not set 725# CONFIG_SCSI_SRP is not set
641# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 726# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
727# CONFIG_SCSI_DH is not set
728# CONFIG_SCSI_OSD_INITIATOR is not set
642CONFIG_ATA=y 729CONFIG_ATA=y
643# CONFIG_ATA_NONSTANDARD is not set 730# CONFIG_ATA_NONSTANDARD is not set
731CONFIG_ATA_VERBOSE_ERROR=y
644CONFIG_SATA_PMP=y 732CONFIG_SATA_PMP=y
645# CONFIG_SATA_AHCI is not set 733# CONFIG_SATA_AHCI is not set
646CONFIG_SATA_SIL24=y 734CONFIG_SATA_SIL24=y
@@ -662,6 +750,7 @@ CONFIG_SATA_MV=y
662# CONFIG_PATA_ALI is not set 750# CONFIG_PATA_ALI is not set
663# CONFIG_PATA_AMD is not set 751# CONFIG_PATA_AMD is not set
664# CONFIG_PATA_ARTOP is not set 752# CONFIG_PATA_ARTOP is not set
753# CONFIG_PATA_ATP867X is not set
665# CONFIG_PATA_ATIIXP is not set 754# CONFIG_PATA_ATIIXP is not set
666# CONFIG_PATA_CMD640_PCI is not set 755# CONFIG_PATA_CMD640_PCI is not set
667# CONFIG_PATA_CMD64X is not set 756# CONFIG_PATA_CMD64X is not set
@@ -690,6 +779,7 @@ CONFIG_ATA_GENERIC=y
690CONFIG_PATA_PCMCIA=y 779CONFIG_PATA_PCMCIA=y
691# CONFIG_PATA_PDC_OLD is not set 780# CONFIG_PATA_PDC_OLD is not set
692# CONFIG_PATA_RADISYS is not set 781# CONFIG_PATA_RADISYS is not set
782# CONFIG_PATA_RDC is not set
693# CONFIG_PATA_RZ1000 is not set 783# CONFIG_PATA_RZ1000 is not set
694# CONFIG_PATA_SC1200 is not set 784# CONFIG_PATA_SC1200 is not set
695# CONFIG_PATA_SERVERWORKS is not set 785# CONFIG_PATA_SERVERWORKS is not set
@@ -703,12 +793,15 @@ CONFIG_PATA_OF_PLATFORM=y
703# CONFIG_PATA_SCH is not set 793# CONFIG_PATA_SCH is not set
704CONFIG_MD=y 794CONFIG_MD=y
705CONFIG_BLK_DEV_MD=y 795CONFIG_BLK_DEV_MD=y
796CONFIG_MD_AUTODETECT=y
706CONFIG_MD_LINEAR=y 797CONFIG_MD_LINEAR=y
707CONFIG_MD_RAID0=y 798CONFIG_MD_RAID0=y
708CONFIG_MD_RAID1=y 799CONFIG_MD_RAID1=y
709CONFIG_MD_RAID10=y 800CONFIG_MD_RAID10=y
710CONFIG_MD_RAID456=y 801CONFIG_MD_RAID456=y
711CONFIG_MD_RAID5_RESHAPE=y 802# CONFIG_MULTICORE_RAID456 is not set
803CONFIG_MD_RAID6_PQ=y
804# CONFIG_ASYNC_RAID6_TEST is not set
712# CONFIG_MD_MULTIPATH is not set 805# CONFIG_MD_MULTIPATH is not set
713# CONFIG_MD_FAULTY is not set 806# CONFIG_MD_FAULTY is not set
714CONFIG_BLK_DEV_DM=y 807CONFIG_BLK_DEV_DM=y
@@ -725,12 +818,19 @@ CONFIG_DM_CRYPT=y
725# 818#
726# IEEE 1394 (FireWire) support 819# IEEE 1394 (FireWire) support
727# 820#
821
822#
823# You can enable one or both FireWire driver stacks.
824#
825
826#
827# See the help texts for more information.
828#
728# CONFIG_FIREWIRE is not set 829# CONFIG_FIREWIRE is not set
729# CONFIG_IEEE1394 is not set 830# CONFIG_IEEE1394 is not set
730# CONFIG_I2O is not set 831# CONFIG_I2O is not set
731# CONFIG_MACINTOSH_DRIVERS is not set 832# CONFIG_MACINTOSH_DRIVERS is not set
732CONFIG_NETDEVICES=y 833CONFIG_NETDEVICES=y
733# CONFIG_NETDEVICES_MULTIQUEUE is not set
734CONFIG_DUMMY=y 834CONFIG_DUMMY=y
735# CONFIG_BONDING is not set 835# CONFIG_BONDING is not set
736# CONFIG_MACVLAN is not set 836# CONFIG_MACVLAN is not set
@@ -753,6 +853,9 @@ CONFIG_MARVELL_PHY=y
753# CONFIG_BROADCOM_PHY is not set 853# CONFIG_BROADCOM_PHY is not set
754# CONFIG_ICPLUS_PHY is not set 854# CONFIG_ICPLUS_PHY is not set
755# CONFIG_REALTEK_PHY is not set 855# CONFIG_REALTEK_PHY is not set
856# CONFIG_NATIONAL_PHY is not set
857# CONFIG_STE10XP is not set
858# CONFIG_LSI_ET1011C_PHY is not set
756# CONFIG_FIXED_PHY is not set 859# CONFIG_FIXED_PHY is not set
757# CONFIG_MDIO_BITBANG is not set 860# CONFIG_MDIO_BITBANG is not set
758CONFIG_NET_ETHERNET=y 861CONFIG_NET_ETHERNET=y
@@ -761,19 +864,23 @@ CONFIG_MII=y
761# CONFIG_SUNGEM is not set 864# CONFIG_SUNGEM is not set
762# CONFIG_CASSINI is not set 865# CONFIG_CASSINI is not set
763# CONFIG_NET_VENDOR_3COM is not set 866# CONFIG_NET_VENDOR_3COM is not set
867# CONFIG_ETHOC is not set
868# CONFIG_DNET is not set
764# CONFIG_NET_TULIP is not set 869# CONFIG_NET_TULIP is not set
765# CONFIG_HP100 is not set 870# CONFIG_HP100 is not set
766# CONFIG_IBM_NEW_EMAC_ZMII is not set 871# CONFIG_IBM_NEW_EMAC_ZMII is not set
767# CONFIG_IBM_NEW_EMAC_RGMII is not set 872# CONFIG_IBM_NEW_EMAC_RGMII is not set
768# CONFIG_IBM_NEW_EMAC_TAH is not set 873# CONFIG_IBM_NEW_EMAC_TAH is not set
769# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 874# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
875# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
876# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
877# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
770CONFIG_NET_PCI=y 878CONFIG_NET_PCI=y
771# CONFIG_PCNET32 is not set 879# CONFIG_PCNET32 is not set
772# CONFIG_AMD8111_ETH is not set 880# CONFIG_AMD8111_ETH is not set
773# CONFIG_ADAPTEC_STARFIRE is not set 881# CONFIG_ADAPTEC_STARFIRE is not set
774# CONFIG_B44 is not set 882# CONFIG_B44 is not set
775# CONFIG_FORCEDETH is not set 883# CONFIG_FORCEDETH is not set
776# CONFIG_EEPRO100 is not set
777# CONFIG_E100 is not set 884# CONFIG_E100 is not set
778# CONFIG_FEALNX is not set 885# CONFIG_FEALNX is not set
779# CONFIG_NATSEMI is not set 886# CONFIG_NATSEMI is not set
@@ -783,19 +890,22 @@ CONFIG_NET_PCI=y
783# CONFIG_R6040 is not set 890# CONFIG_R6040 is not set
784# CONFIG_SIS900 is not set 891# CONFIG_SIS900 is not set
785# CONFIG_EPIC100 is not set 892# CONFIG_EPIC100 is not set
893# CONFIG_SMSC9420 is not set
786# CONFIG_SUNDANCE is not set 894# CONFIG_SUNDANCE is not set
895# CONFIG_TLAN is not set
896# CONFIG_KS8842 is not set
897# CONFIG_KS8851_MLL is not set
787# CONFIG_VIA_RHINE is not set 898# CONFIG_VIA_RHINE is not set
788# CONFIG_SC92031 is not set 899# CONFIG_SC92031 is not set
900# CONFIG_ATL2 is not set
789CONFIG_NETDEV_1000=y 901CONFIG_NETDEV_1000=y
790# CONFIG_ACENIC is not set 902# CONFIG_ACENIC is not set
791# CONFIG_DL2K is not set 903# CONFIG_DL2K is not set
792CONFIG_E1000=y 904CONFIG_E1000=y
793CONFIG_E1000_NAPI=y
794# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
795# CONFIG_E1000E is not set 905# CONFIG_E1000E is not set
796# CONFIG_E1000E_ENABLED is not set
797# CONFIG_IP1000 is not set 906# CONFIG_IP1000 is not set
798# CONFIG_IGB is not set 907# CONFIG_IGB is not set
908# CONFIG_IGBVF is not set
799# CONFIG_NS83820 is not set 909# CONFIG_NS83820 is not set
800# CONFIG_HAMACHI is not set 910# CONFIG_HAMACHI is not set
801# CONFIG_YELLOWFIN is not set 911# CONFIG_YELLOWFIN is not set
@@ -806,30 +916,40 @@ CONFIG_E1000_NAPI=y
806# CONFIG_VIA_VELOCITY is not set 916# CONFIG_VIA_VELOCITY is not set
807CONFIG_TIGON3=y 917CONFIG_TIGON3=y
808# CONFIG_BNX2 is not set 918# CONFIG_BNX2 is not set
919# CONFIG_CNIC is not set
809# CONFIG_QLA3XXX is not set 920# CONFIG_QLA3XXX is not set
810# CONFIG_ATL1 is not set 921# CONFIG_ATL1 is not set
922# CONFIG_ATL1E is not set
923# CONFIG_ATL1C is not set
924# CONFIG_JME is not set
811CONFIG_NETDEV_10000=y 925CONFIG_NETDEV_10000=y
812# CONFIG_CHELSIO_T1 is not set 926# CONFIG_CHELSIO_T1 is not set
927CONFIG_CHELSIO_T3_DEPENDS=y
813# CONFIG_CHELSIO_T3 is not set 928# CONFIG_CHELSIO_T3 is not set
929# CONFIG_ENIC is not set
814# CONFIG_IXGBE is not set 930# CONFIG_IXGBE is not set
815# CONFIG_IXGB is not set 931# CONFIG_IXGB is not set
816# CONFIG_S2IO is not set 932# CONFIG_S2IO is not set
933# CONFIG_VXGE is not set
817# CONFIG_MYRI10GE is not set 934# CONFIG_MYRI10GE is not set
818# CONFIG_NETXEN_NIC is not set 935# CONFIG_NETXEN_NIC is not set
819# CONFIG_NIU is not set 936# CONFIG_NIU is not set
820CONFIG_PASEMI_MAC=y 937CONFIG_PASEMI_MAC=y
938# CONFIG_MLX4_EN is not set
821# CONFIG_MLX4_CORE is not set 939# CONFIG_MLX4_CORE is not set
822# CONFIG_TEHUTI is not set 940# CONFIG_TEHUTI is not set
823# CONFIG_BNX2X is not set 941# CONFIG_BNX2X is not set
942# CONFIG_QLGE is not set
824# CONFIG_SFC is not set 943# CONFIG_SFC is not set
944# CONFIG_BE2NET is not set
825# CONFIG_TR is not set 945# CONFIG_TR is not set
946CONFIG_WLAN=y
947# CONFIG_WLAN_PRE80211 is not set
948# CONFIG_WLAN_80211 is not set
826 949
827# 950#
828# Wireless LAN 951# Enable WiMAX (Networking options) to see the WiMAX drivers
829# 952#
830# CONFIG_WLAN_PRE80211 is not set
831# CONFIG_WLAN_80211 is not set
832# CONFIG_IWLWIFI_LEDS is not set
833 953
834# 954#
835# USB Network Adapters 955# USB Network Adapters
@@ -874,17 +994,23 @@ CONFIG_INPUT_EVDEV=y
874# Input Device Drivers 994# Input Device Drivers
875# 995#
876CONFIG_INPUT_KEYBOARD=y 996CONFIG_INPUT_KEYBOARD=y
997# CONFIG_KEYBOARD_ADP5588 is not set
877# CONFIG_KEYBOARD_ATKBD is not set 998# CONFIG_KEYBOARD_ATKBD is not set
878# CONFIG_KEYBOARD_SUNKBD is not set 999# CONFIG_QT2160 is not set
879# CONFIG_KEYBOARD_LKKBD is not set 1000# CONFIG_KEYBOARD_LKKBD is not set
880# CONFIG_KEYBOARD_XTKBD is not set 1001# CONFIG_KEYBOARD_MAX7359 is not set
881# CONFIG_KEYBOARD_NEWTON is not set 1002# CONFIG_KEYBOARD_NEWTON is not set
1003# CONFIG_KEYBOARD_OPENCORES is not set
882# CONFIG_KEYBOARD_STOWAWAY is not set 1004# CONFIG_KEYBOARD_STOWAWAY is not set
1005# CONFIG_KEYBOARD_SUNKBD is not set
1006# CONFIG_KEYBOARD_XTKBD is not set
883CONFIG_INPUT_MOUSE=y 1007CONFIG_INPUT_MOUSE=y
884# CONFIG_MOUSE_PS2 is not set 1008# CONFIG_MOUSE_PS2 is not set
885# CONFIG_MOUSE_SERIAL is not set 1009# CONFIG_MOUSE_SERIAL is not set
886# CONFIG_MOUSE_APPLETOUCH is not set 1010# CONFIG_MOUSE_APPLETOUCH is not set
1011# CONFIG_MOUSE_BCM5974 is not set
887# CONFIG_MOUSE_VSXXXAA is not set 1012# CONFIG_MOUSE_VSXXXAA is not set
1013# CONFIG_MOUSE_SYNAPTICS_I2C is not set
888# CONFIG_INPUT_JOYSTICK is not set 1014# CONFIG_INPUT_JOYSTICK is not set
889# CONFIG_INPUT_TABLET is not set 1015# CONFIG_INPUT_TABLET is not set
890# CONFIG_INPUT_TOUCHSCREEN is not set 1016# CONFIG_INPUT_TOUCHSCREEN is not set
@@ -900,6 +1026,7 @@ CONFIG_INPUT_MOUSE=y
900# Character devices 1026# Character devices
901# 1027#
902CONFIG_VT=y 1028CONFIG_VT=y
1029CONFIG_CONSOLE_TRANSLATIONS=y
903CONFIG_VT_CONSOLE=y 1030CONFIG_VT_CONSOLE=y
904CONFIG_HW_CONSOLE=y 1031CONFIG_HW_CONSOLE=y
905# CONFIG_VT_HW_CONSOLE_BINDING is not set 1032# CONFIG_VT_HW_CONSOLE_BINDING is not set
@@ -926,10 +1053,13 @@ CONFIG_SERIAL_CORE_CONSOLE=y
926# CONFIG_SERIAL_JSM is not set 1053# CONFIG_SERIAL_JSM is not set
927# CONFIG_SERIAL_OF_PLATFORM is not set 1054# CONFIG_SERIAL_OF_PLATFORM is not set
928CONFIG_UNIX98_PTYS=y 1055CONFIG_UNIX98_PTYS=y
1056# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
929CONFIG_LEGACY_PTYS=y 1057CONFIG_LEGACY_PTYS=y
930CONFIG_LEGACY_PTY_COUNT=4 1058CONFIG_LEGACY_PTY_COUNT=4
1059# CONFIG_HVC_UDBG is not set
931# CONFIG_IPMI_HANDLER is not set 1060# CONFIG_IPMI_HANDLER is not set
932CONFIG_HW_RANDOM=y 1061CONFIG_HW_RANDOM=y
1062# CONFIG_HW_RANDOM_TIMERIOMEM is not set
933CONFIG_HW_RANDOM_PASEMI=y 1063CONFIG_HW_RANDOM_PASEMI=y
934# CONFIG_R3964 is not set 1064# CONFIG_R3964 is not set
935# CONFIG_APPLICOM is not set 1065# CONFIG_APPLICOM is not set
@@ -948,57 +1078,85 @@ CONFIG_MAX_RAW_DEVS=256
948CONFIG_DEVPORT=y 1078CONFIG_DEVPORT=y
949CONFIG_I2C=y 1079CONFIG_I2C=y
950CONFIG_I2C_BOARDINFO=y 1080CONFIG_I2C_BOARDINFO=y
1081CONFIG_I2C_COMPAT=y
951CONFIG_I2C_CHARDEV=y 1082CONFIG_I2C_CHARDEV=y
1083CONFIG_I2C_HELPER_AUTO=y
952CONFIG_I2C_ALGOBIT=y 1084CONFIG_I2C_ALGOBIT=y
953 1085
954# 1086#
955# I2C Hardware Bus support 1087# I2C Hardware Bus support
956# 1088#
1089
1090#
1091# PC SMBus host controller drivers
1092#
957# CONFIG_I2C_ALI1535 is not set 1093# CONFIG_I2C_ALI1535 is not set
958# CONFIG_I2C_ALI1563 is not set 1094# CONFIG_I2C_ALI1563 is not set
959# CONFIG_I2C_ALI15X3 is not set 1095# CONFIG_I2C_ALI15X3 is not set
960# CONFIG_I2C_AMD756 is not set 1096# CONFIG_I2C_AMD756 is not set
961# CONFIG_I2C_AMD8111 is not set 1097# CONFIG_I2C_AMD8111 is not set
962# CONFIG_I2C_I801 is not set 1098# CONFIG_I2C_I801 is not set
963# CONFIG_I2C_I810 is not set 1099# CONFIG_I2C_ISCH is not set
964# CONFIG_I2C_PIIX4 is not set 1100# CONFIG_I2C_PIIX4 is not set
965# CONFIG_I2C_NFORCE2 is not set 1101# CONFIG_I2C_NFORCE2 is not set
966# CONFIG_I2C_OCORES is not set
967# CONFIG_I2C_PARPORT_LIGHT is not set
968CONFIG_I2C_PASEMI=y
969# CONFIG_I2C_PROSAVAGE is not set
970# CONFIG_I2C_SAVAGE4 is not set
971# CONFIG_I2C_SIMTEC is not set
972# CONFIG_I2C_SIS5595 is not set 1102# CONFIG_I2C_SIS5595 is not set
973# CONFIG_I2C_SIS630 is not set 1103# CONFIG_I2C_SIS630 is not set
974# CONFIG_I2C_SIS96X is not set 1104# CONFIG_I2C_SIS96X is not set
975# CONFIG_I2C_TAOS_EVM is not set
976# CONFIG_I2C_STUB is not set
977# CONFIG_I2C_TINY_USB is not set
978# CONFIG_I2C_VIA is not set 1105# CONFIG_I2C_VIA is not set
979# CONFIG_I2C_VIAPRO is not set 1106# CONFIG_I2C_VIAPRO is not set
1107
1108#
1109# I2C system bus drivers (mostly embedded / system-on-chip)
1110#
1111# CONFIG_I2C_OCORES is not set
1112CONFIG_I2C_PASEMI=y
1113# CONFIG_I2C_SIMTEC is not set
1114
1115#
1116# External I2C/SMBus adapter drivers
1117#
1118# CONFIG_I2C_PARPORT_LIGHT is not set
1119# CONFIG_I2C_TAOS_EVM is not set
1120# CONFIG_I2C_TINY_USB is not set
1121
1122#
1123# Graphics adapter I2C/DDC channel drivers
1124#
980# CONFIG_I2C_VOODOO3 is not set 1125# CONFIG_I2C_VOODOO3 is not set
1126
1127#
1128# Other I2C/SMBus bus drivers
1129#
981# CONFIG_I2C_PCA_PLATFORM is not set 1130# CONFIG_I2C_PCA_PLATFORM is not set
1131# CONFIG_I2C_STUB is not set
982 1132
983# 1133#
984# Miscellaneous I2C Chip support 1134# Miscellaneous I2C Chip support
985# 1135#
986# CONFIG_DS1682 is not set 1136# CONFIG_DS1682 is not set
987CONFIG_EEPROM_LEGACY=y
988# CONFIG_SENSORS_PCF8574 is not set
989# CONFIG_PCF8575 is not set
990# CONFIG_SENSORS_PCF8591 is not set
991# CONFIG_SENSORS_MAX6875 is not set
992# CONFIG_SENSORS_TSL2550 is not set 1137# CONFIG_SENSORS_TSL2550 is not set
993# CONFIG_I2C_DEBUG_CORE is not set 1138# CONFIG_I2C_DEBUG_CORE is not set
994# CONFIG_I2C_DEBUG_ALGO is not set 1139# CONFIG_I2C_DEBUG_ALGO is not set
995# CONFIG_I2C_DEBUG_BUS is not set 1140# CONFIG_I2C_DEBUG_BUS is not set
996# CONFIG_I2C_DEBUG_CHIP is not set 1141# CONFIG_I2C_DEBUG_CHIP is not set
997# CONFIG_SPI is not set 1142# CONFIG_SPI is not set
1143
1144#
1145# PPS support
1146#
1147# CONFIG_PPS is not set
1148CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
1149# CONFIG_GPIOLIB is not set
998# CONFIG_W1 is not set 1150# CONFIG_W1 is not set
999# CONFIG_POWER_SUPPLY is not set 1151# CONFIG_POWER_SUPPLY is not set
1000CONFIG_HWMON=y 1152CONFIG_HWMON=y
1001CONFIG_HWMON_VID=y 1153CONFIG_HWMON_VID=y
1154# CONFIG_HWMON_DEBUG_CHIP is not set
1155
1156#
1157# Native drivers
1158#
1159# CONFIG_SENSORS_AD7414 is not set
1002# CONFIG_SENSORS_AD7418 is not set 1160# CONFIG_SENSORS_AD7418 is not set
1003# CONFIG_SENSORS_ADM1021 is not set 1161# CONFIG_SENSORS_ADM1021 is not set
1004# CONFIG_SENSORS_ADM1025 is not set 1162# CONFIG_SENSORS_ADM1025 is not set
@@ -1006,14 +1164,17 @@ CONFIG_HWMON_VID=y
1006# CONFIG_SENSORS_ADM1029 is not set 1164# CONFIG_SENSORS_ADM1029 is not set
1007# CONFIG_SENSORS_ADM1031 is not set 1165# CONFIG_SENSORS_ADM1031 is not set
1008# CONFIG_SENSORS_ADM9240 is not set 1166# CONFIG_SENSORS_ADM9240 is not set
1167# CONFIG_SENSORS_ADT7462 is not set
1009# CONFIG_SENSORS_ADT7470 is not set 1168# CONFIG_SENSORS_ADT7470 is not set
1010# CONFIG_SENSORS_ADT7473 is not set 1169# CONFIG_SENSORS_ADT7473 is not set
1170# CONFIG_SENSORS_ADT7475 is not set
1011# CONFIG_SENSORS_ATXP1 is not set 1171# CONFIG_SENSORS_ATXP1 is not set
1012# CONFIG_SENSORS_DS1621 is not set 1172# CONFIG_SENSORS_DS1621 is not set
1013# CONFIG_SENSORS_I5K_AMB is not set 1173# CONFIG_SENSORS_I5K_AMB is not set
1014# CONFIG_SENSORS_F71805F is not set 1174# CONFIG_SENSORS_F71805F is not set
1015# CONFIG_SENSORS_F71882FG is not set 1175# CONFIG_SENSORS_F71882FG is not set
1016# CONFIG_SENSORS_F75375S is not set 1176# CONFIG_SENSORS_F75375S is not set
1177# CONFIG_SENSORS_G760A is not set
1017# CONFIG_SENSORS_GL518SM is not set 1178# CONFIG_SENSORS_GL518SM is not set
1018# CONFIG_SENSORS_GL520SM is not set 1179# CONFIG_SENSORS_GL520SM is not set
1019# CONFIG_SENSORS_IT87 is not set 1180# CONFIG_SENSORS_IT87 is not set
@@ -1028,10 +1189,14 @@ CONFIG_SENSORS_LM85=y
1028CONFIG_SENSORS_LM90=y 1189CONFIG_SENSORS_LM90=y
1029# CONFIG_SENSORS_LM92 is not set 1190# CONFIG_SENSORS_LM92 is not set
1030# CONFIG_SENSORS_LM93 is not set 1191# CONFIG_SENSORS_LM93 is not set
1192# CONFIG_SENSORS_LTC4215 is not set
1193# CONFIG_SENSORS_LTC4245 is not set
1194# CONFIG_SENSORS_LM95241 is not set
1031# CONFIG_SENSORS_MAX1619 is not set 1195# CONFIG_SENSORS_MAX1619 is not set
1032# CONFIG_SENSORS_MAX6650 is not set 1196# CONFIG_SENSORS_MAX6650 is not set
1033# CONFIG_SENSORS_PC87360 is not set 1197# CONFIG_SENSORS_PC87360 is not set
1034# CONFIG_SENSORS_PC87427 is not set 1198# CONFIG_SENSORS_PC87427 is not set
1199# CONFIG_SENSORS_PCF8591 is not set
1035# CONFIG_SENSORS_SIS5595 is not set 1200# CONFIG_SENSORS_SIS5595 is not set
1036# CONFIG_SENSORS_DME1737 is not set 1201# CONFIG_SENSORS_DME1737 is not set
1037# CONFIG_SENSORS_SMSC47M1 is not set 1202# CONFIG_SENSORS_SMSC47M1 is not set
@@ -1039,6 +1204,8 @@ CONFIG_SENSORS_LM90=y
1039# CONFIG_SENSORS_SMSC47B397 is not set 1204# CONFIG_SENSORS_SMSC47B397 is not set
1040# CONFIG_SENSORS_ADS7828 is not set 1205# CONFIG_SENSORS_ADS7828 is not set
1041# CONFIG_SENSORS_THMC50 is not set 1206# CONFIG_SENSORS_THMC50 is not set
1207# CONFIG_SENSORS_TMP401 is not set
1208# CONFIG_SENSORS_TMP421 is not set
1042# CONFIG_SENSORS_VIA686A is not set 1209# CONFIG_SENSORS_VIA686A is not set
1043# CONFIG_SENSORS_VT1211 is not set 1210# CONFIG_SENSORS_VT1211 is not set
1044# CONFIG_SENSORS_VT8231 is not set 1211# CONFIG_SENSORS_VT8231 is not set
@@ -1050,44 +1217,40 @@ CONFIG_SENSORS_LM90=y
1050# CONFIG_SENSORS_W83L786NG is not set 1217# CONFIG_SENSORS_W83L786NG is not set
1051# CONFIG_SENSORS_W83627HF is not set 1218# CONFIG_SENSORS_W83627HF is not set
1052# CONFIG_SENSORS_W83627EHF is not set 1219# CONFIG_SENSORS_W83627EHF is not set
1053# CONFIG_HWMON_DEBUG_CHIP is not set
1054# CONFIG_THERMAL is not set 1220# CONFIG_THERMAL is not set
1055# CONFIG_WATCHDOG is not set 1221# CONFIG_WATCHDOG is not set
1222CONFIG_SSB_POSSIBLE=y
1056 1223
1057# 1224#
1058# Sonics Silicon Backplane 1225# Sonics Silicon Backplane
1059# 1226#
1060CONFIG_SSB_POSSIBLE=y
1061# CONFIG_SSB is not set 1227# CONFIG_SSB is not set
1062 1228
1063# 1229#
1064# Multifunction device drivers 1230# Multifunction device drivers
1065# 1231#
1232# CONFIG_MFD_CORE is not set
1066# CONFIG_MFD_SM501 is not set 1233# CONFIG_MFD_SM501 is not set
1067# CONFIG_HTC_PASIC3 is not set 1234# CONFIG_HTC_PASIC3 is not set
1068 1235# CONFIG_TWL4030_CORE is not set
1069# 1236# CONFIG_MFD_TMIO is not set
1070# Multimedia devices 1237# CONFIG_PMIC_DA903X is not set
1071# 1238# CONFIG_MFD_WM8400 is not set
1072 1239# CONFIG_MFD_WM831X is not set
1073# 1240# CONFIG_MFD_WM8350_I2C is not set
1074# Multimedia core support 1241# CONFIG_MFD_PCF50633 is not set
1075# 1242# CONFIG_AB3100_CORE is not set
1076# CONFIG_VIDEO_DEV is not set 1243# CONFIG_REGULATOR is not set
1077# CONFIG_DVB_CORE is not set 1244# CONFIG_MEDIA_SUPPORT is not set
1078# CONFIG_VIDEO_MEDIA is not set
1079
1080#
1081# Multimedia drivers
1082#
1083CONFIG_DAB=y
1084# CONFIG_USB_DABUSB is not set
1085 1245
1086# 1246#
1087# Graphics support 1247# Graphics support
1088# 1248#
1089# CONFIG_AGP is not set 1249# CONFIG_AGP is not set
1250CONFIG_VGA_ARB=y
1090CONFIG_DRM=y 1251CONFIG_DRM=y
1252CONFIG_DRM_KMS_HELPER=y
1253CONFIG_DRM_TTM=y
1091# CONFIG_DRM_TDFX is not set 1254# CONFIG_DRM_TDFX is not set
1092# CONFIG_DRM_R128 is not set 1255# CONFIG_DRM_R128 is not set
1093CONFIG_DRM_RADEON=y 1256CONFIG_DRM_RADEON=y
@@ -1099,6 +1262,7 @@ CONFIG_VGASTATE=y
1099CONFIG_FB=y 1262CONFIG_FB=y
1100CONFIG_FIRMWARE_EDID=y 1263CONFIG_FIRMWARE_EDID=y
1101CONFIG_FB_DDC=y 1264CONFIG_FB_DDC=y
1265# CONFIG_FB_BOOT_VESA_SUPPORT is not set
1102CONFIG_FB_CFB_FILLRECT=y 1266CONFIG_FB_CFB_FILLRECT=y
1103CONFIG_FB_CFB_COPYAREA=y 1267CONFIG_FB_CFB_COPYAREA=y
1104CONFIG_FB_CFB_IMAGEBLIT=y 1268CONFIG_FB_CFB_IMAGEBLIT=y
@@ -1140,6 +1304,7 @@ CONFIG_FB_RADEON_BACKLIGHT=y
1140# CONFIG_FB_S3 is not set 1304# CONFIG_FB_S3 is not set
1141# CONFIG_FB_SAVAGE is not set 1305# CONFIG_FB_SAVAGE is not set
1142# CONFIG_FB_SIS is not set 1306# CONFIG_FB_SIS is not set
1307# CONFIG_FB_VIA is not set
1143# CONFIG_FB_NEOMAGIC is not set 1308# CONFIG_FB_NEOMAGIC is not set
1144# CONFIG_FB_KYRO is not set 1309# CONFIG_FB_KYRO is not set
1145# CONFIG_FB_3DFX is not set 1310# CONFIG_FB_3DFX is not set
@@ -1148,12 +1313,16 @@ CONFIG_FB_RADEON_BACKLIGHT=y
1148# CONFIG_FB_TRIDENT is not set 1313# CONFIG_FB_TRIDENT is not set
1149# CONFIG_FB_ARK is not set 1314# CONFIG_FB_ARK is not set
1150# CONFIG_FB_PM3 is not set 1315# CONFIG_FB_PM3 is not set
1316# CONFIG_FB_CARMINE is not set
1151# CONFIG_FB_IBM_GXT4500 is not set 1317# CONFIG_FB_IBM_GXT4500 is not set
1152# CONFIG_FB_VIRTUAL is not set 1318# CONFIG_FB_VIRTUAL is not set
1319# CONFIG_FB_METRONOME is not set
1320# CONFIG_FB_MB862XX is not set
1321# CONFIG_FB_BROADSHEET is not set
1153CONFIG_BACKLIGHT_LCD_SUPPORT=y 1322CONFIG_BACKLIGHT_LCD_SUPPORT=y
1154# CONFIG_LCD_CLASS_DEVICE is not set 1323# CONFIG_LCD_CLASS_DEVICE is not set
1155CONFIG_BACKLIGHT_CLASS_DEVICE=y 1324CONFIG_BACKLIGHT_CLASS_DEVICE=y
1156# CONFIG_BACKLIGHT_CORGI is not set 1325CONFIG_BACKLIGHT_GENERIC=y
1157 1326
1158# 1327#
1159# Display device support 1328# Display device support
@@ -1177,15 +1346,9 @@ CONFIG_LOGO=y
1177CONFIG_LOGO_LINUX_MONO=y 1346CONFIG_LOGO_LINUX_MONO=y
1178CONFIG_LOGO_LINUX_VGA16=y 1347CONFIG_LOGO_LINUX_VGA16=y
1179CONFIG_LOGO_LINUX_CLUT224=y 1348CONFIG_LOGO_LINUX_CLUT224=y
1180
1181#
1182# Sound
1183#
1184CONFIG_SOUND=y 1349CONFIG_SOUND=y
1185 1350CONFIG_SOUND_OSS_CORE=y
1186# 1351CONFIG_SOUND_OSS_CORE_PRECLAIM=y
1187# Advanced Linux Sound Architecture
1188#
1189CONFIG_SND=y 1352CONFIG_SND=y
1190CONFIG_SND_TIMER=y 1353CONFIG_SND_TIMER=y
1191CONFIG_SND_PCM=y 1354CONFIG_SND_PCM=y
@@ -1198,24 +1361,24 @@ CONFIG_SND_MIXER_OSS=y
1198CONFIG_SND_PCM_OSS=y 1361CONFIG_SND_PCM_OSS=y
1199CONFIG_SND_PCM_OSS_PLUGINS=y 1362CONFIG_SND_PCM_OSS_PLUGINS=y
1200CONFIG_SND_SEQUENCER_OSS=y 1363CONFIG_SND_SEQUENCER_OSS=y
1364# CONFIG_SND_HRTIMER is not set
1201# CONFIG_SND_DYNAMIC_MINORS is not set 1365# CONFIG_SND_DYNAMIC_MINORS is not set
1202CONFIG_SND_SUPPORT_OLD_API=y 1366CONFIG_SND_SUPPORT_OLD_API=y
1203CONFIG_SND_VERBOSE_PROCFS=y 1367CONFIG_SND_VERBOSE_PROCFS=y
1204# CONFIG_SND_VERBOSE_PRINTK is not set 1368# CONFIG_SND_VERBOSE_PRINTK is not set
1205# CONFIG_SND_DEBUG is not set 1369# CONFIG_SND_DEBUG is not set
1206 1370CONFIG_SND_RAWMIDI_SEQ=y
1207# 1371# CONFIG_SND_OPL3_LIB_SEQ is not set
1208# Generic devices 1372# CONFIG_SND_OPL4_LIB_SEQ is not set
1209# 1373# CONFIG_SND_SBAWE_SEQ is not set
1374# CONFIG_SND_EMU10K1_SEQ is not set
1375CONFIG_SND_DRIVERS=y
1210# CONFIG_SND_DUMMY is not set 1376# CONFIG_SND_DUMMY is not set
1211# CONFIG_SND_VIRMIDI is not set 1377# CONFIG_SND_VIRMIDI is not set
1212# CONFIG_SND_MTPAV is not set 1378# CONFIG_SND_MTPAV is not set
1213# CONFIG_SND_SERIAL_U16550 is not set 1379# CONFIG_SND_SERIAL_U16550 is not set
1214# CONFIG_SND_MPU401 is not set 1380# CONFIG_SND_MPU401 is not set
1215 1381CONFIG_SND_PCI=y
1216#
1217# PCI devices
1218#
1219# CONFIG_SND_AD1889 is not set 1382# CONFIG_SND_AD1889 is not set
1220# CONFIG_SND_ALS300 is not set 1383# CONFIG_SND_ALS300 is not set
1221# CONFIG_SND_ALS4000 is not set 1384# CONFIG_SND_ALS4000 is not set
@@ -1234,6 +1397,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
1234# CONFIG_SND_CS4281 is not set 1397# CONFIG_SND_CS4281 is not set
1235# CONFIG_SND_CS46XX is not set 1398# CONFIG_SND_CS46XX is not set
1236# CONFIG_SND_CS5530 is not set 1399# CONFIG_SND_CS5530 is not set
1400# CONFIG_SND_CTXFI is not set
1237# CONFIG_SND_DARLA20 is not set 1401# CONFIG_SND_DARLA20 is not set
1238# CONFIG_SND_GINA20 is not set 1402# CONFIG_SND_GINA20 is not set
1239# CONFIG_SND_LAYLA20 is not set 1403# CONFIG_SND_LAYLA20 is not set
@@ -1246,6 +1410,8 @@ CONFIG_SND_VERBOSE_PROCFS=y
1246# CONFIG_SND_INDIGO is not set 1410# CONFIG_SND_INDIGO is not set
1247# CONFIG_SND_INDIGOIO is not set 1411# CONFIG_SND_INDIGOIO is not set
1248# CONFIG_SND_INDIGODJ is not set 1412# CONFIG_SND_INDIGODJ is not set
1413# CONFIG_SND_INDIGOIOX is not set
1414# CONFIG_SND_INDIGODJX is not set
1249# CONFIG_SND_EMU10K1 is not set 1415# CONFIG_SND_EMU10K1 is not set
1250# CONFIG_SND_EMU10K1X is not set 1416# CONFIG_SND_EMU10K1X is not set
1251# CONFIG_SND_ENS1370 is not set 1417# CONFIG_SND_ENS1370 is not set
@@ -1262,6 +1428,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
1262# CONFIG_SND_INTEL8X0 is not set 1428# CONFIG_SND_INTEL8X0 is not set
1263# CONFIG_SND_INTEL8X0M is not set 1429# CONFIG_SND_INTEL8X0M is not set
1264# CONFIG_SND_KORG1212 is not set 1430# CONFIG_SND_KORG1212 is not set
1431# CONFIG_SND_LX6464ES is not set
1265# CONFIG_SND_MAESTRO3 is not set 1432# CONFIG_SND_MAESTRO3 is not set
1266# CONFIG_SND_MIXART is not set 1433# CONFIG_SND_MIXART is not set
1267# CONFIG_SND_NM256 is not set 1434# CONFIG_SND_NM256 is not set
@@ -1277,57 +1444,64 @@ CONFIG_SND_VERBOSE_PROCFS=y
1277# CONFIG_SND_VIRTUOSO is not set 1444# CONFIG_SND_VIRTUOSO is not set
1278# CONFIG_SND_VX222 is not set 1445# CONFIG_SND_VX222 is not set
1279# CONFIG_SND_YMFPCI is not set 1446# CONFIG_SND_YMFPCI is not set
1280 1447CONFIG_SND_PPC=y
1281# 1448CONFIG_SND_USB=y
1282# ALSA PowerMac devices
1283#
1284
1285#
1286# ALSA PowerPC devices
1287#
1288
1289#
1290# USB devices
1291#
1292CONFIG_SND_USB_AUDIO=y 1449CONFIG_SND_USB_AUDIO=y
1293CONFIG_SND_USB_USX2Y=y 1450CONFIG_SND_USB_USX2Y=y
1294# CONFIG_SND_USB_CAIAQ is not set 1451# CONFIG_SND_USB_CAIAQ is not set
1295 1452CONFIG_SND_PCMCIA=y
1296#
1297# PCMCIA devices
1298#
1299# CONFIG_SND_VXPOCKET is not set 1453# CONFIG_SND_VXPOCKET is not set
1300# CONFIG_SND_PDAUDIOCF is not set 1454# CONFIG_SND_PDAUDIOCF is not set
1301
1302#
1303# System on Chip audio support
1304#
1305# CONFIG_SND_SOC is not set 1455# CONFIG_SND_SOC is not set
1306
1307#
1308# ALSA SoC audio for Freescale SOCs
1309#
1310
1311#
1312# SoC Audio for the Texas Instruments OMAP
1313#
1314
1315#
1316# Open Sound System
1317#
1318# CONFIG_SOUND_PRIME is not set 1456# CONFIG_SOUND_PRIME is not set
1319CONFIG_HID_SUPPORT=y 1457CONFIG_HID_SUPPORT=y
1320CONFIG_HID=y 1458CONFIG_HID=y
1321# CONFIG_HID_DEBUG is not set
1322# CONFIG_HIDRAW is not set 1459# CONFIG_HIDRAW is not set
1323 1460
1324# 1461#
1325# USB Input Devices 1462# USB Input Devices
1326# 1463#
1327CONFIG_USB_HID=y 1464CONFIG_USB_HID=y
1328# CONFIG_USB_HIDINPUT_POWERBOOK is not set 1465# CONFIG_HID_PID is not set
1329# CONFIG_HID_FF is not set
1330# CONFIG_USB_HIDDEV is not set 1466# CONFIG_USB_HIDDEV is not set
1467
1468#
1469# Special HID drivers
1470#
1471CONFIG_HID_A4TECH=y
1472CONFIG_HID_APPLE=y
1473CONFIG_HID_BELKIN=y
1474CONFIG_HID_CHERRY=y
1475CONFIG_HID_CHICONY=y
1476CONFIG_HID_CYPRESS=y
1477CONFIG_HID_DRAGONRISE=y
1478# CONFIG_DRAGONRISE_FF is not set
1479CONFIG_HID_EZKEY=y
1480CONFIG_HID_KYE=y
1481CONFIG_HID_GYRATION=y
1482CONFIG_HID_TWINHAN=y
1483CONFIG_HID_KENSINGTON=y
1484CONFIG_HID_LOGITECH=y
1485# CONFIG_LOGITECH_FF is not set
1486# CONFIG_LOGIRUMBLEPAD2_FF is not set
1487CONFIG_HID_MICROSOFT=y
1488CONFIG_HID_MONTEREY=y
1489CONFIG_HID_NTRIG=y
1490CONFIG_HID_PANTHERLORD=y
1491# CONFIG_PANTHERLORD_FF is not set
1492CONFIG_HID_PETALYNX=y
1493CONFIG_HID_SAMSUNG=y
1494CONFIG_HID_SONY=y
1495CONFIG_HID_SUNPLUS=y
1496CONFIG_HID_GREENASIA=y
1497# CONFIG_GREENASIA_FF is not set
1498CONFIG_HID_SMARTJOYPLUS=y
1499# CONFIG_SMARTJOYPLUS_FF is not set
1500CONFIG_HID_TOPSEED=y
1501CONFIG_HID_THRUSTMASTER=y
1502# CONFIG_THRUSTMASTER_FF is not set
1503CONFIG_HID_ZEROPLUS=y
1504# CONFIG_ZEROPLUS_FF is not set
1331CONFIG_USB_SUPPORT=y 1505CONFIG_USB_SUPPORT=y
1332CONFIG_USB_ARCH_HAS_HCD=y 1506CONFIG_USB_ARCH_HAS_HCD=y
1333CONFIG_USB_ARCH_HAS_OHCI=y 1507CONFIG_USB_ARCH_HAS_OHCI=y
@@ -1343,18 +1517,26 @@ CONFIG_USB_DEVICEFS=y
1343# CONFIG_USB_DEVICE_CLASS is not set 1517# CONFIG_USB_DEVICE_CLASS is not set
1344# CONFIG_USB_DYNAMIC_MINORS is not set 1518# CONFIG_USB_DYNAMIC_MINORS is not set
1345# CONFIG_USB_OTG is not set 1519# CONFIG_USB_OTG is not set
1520# CONFIG_USB_MON is not set
1521# CONFIG_USB_WUSB is not set
1522# CONFIG_USB_WUSB_CBAF is not set
1346 1523
1347# 1524#
1348# USB Host Controller Drivers 1525# USB Host Controller Drivers
1349# 1526#
1350# CONFIG_USB_C67X00_HCD is not set 1527# CONFIG_USB_C67X00_HCD is not set
1528# CONFIG_USB_XHCI_HCD is not set
1351CONFIG_USB_EHCI_HCD=y 1529CONFIG_USB_EHCI_HCD=y
1352# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1530# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1353# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1531# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1354CONFIG_USB_EHCI_HCD_PPC_OF=y 1532CONFIG_USB_EHCI_HCD_PPC_OF=y
1533# CONFIG_USB_OXU210HP_HCD is not set
1355# CONFIG_USB_ISP116X_HCD is not set 1534# CONFIG_USB_ISP116X_HCD is not set
1356# CONFIG_USB_ISP1760_HCD is not set 1535# CONFIG_USB_ISP1760_HCD is not set
1536# CONFIG_USB_ISP1362_HCD is not set
1357CONFIG_USB_OHCI_HCD=y 1537CONFIG_USB_OHCI_HCD=y
1538# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set
1539# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
1358# CONFIG_USB_OHCI_HCD_PPC_OF is not set 1540# CONFIG_USB_OHCI_HCD_PPC_OF is not set
1359# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 1541# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
1360# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 1542# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
@@ -1363,6 +1545,8 @@ CONFIG_USB_UHCI_HCD=y
1363CONFIG_USB_SL811_HCD=y 1545CONFIG_USB_SL811_HCD=y
1364# CONFIG_USB_SL811_CS is not set 1546# CONFIG_USB_SL811_CS is not set
1365# CONFIG_USB_R8A66597_HCD is not set 1547# CONFIG_USB_R8A66597_HCD is not set
1548# CONFIG_USB_WHCI_HCD is not set
1549# CONFIG_USB_HWA_HCD is not set
1366 1550
1367# 1551#
1368# USB Device Class drivers 1552# USB Device Class drivers
@@ -1370,20 +1554,20 @@ CONFIG_USB_SL811_HCD=y
1370# CONFIG_USB_ACM is not set 1554# CONFIG_USB_ACM is not set
1371# CONFIG_USB_PRINTER is not set 1555# CONFIG_USB_PRINTER is not set
1372# CONFIG_USB_WDM is not set 1556# CONFIG_USB_WDM is not set
1557# CONFIG_USB_TMC is not set
1373 1558
1374# 1559#
1375# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1560# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
1376# 1561#
1377 1562
1378# 1563#
1379# may also be needed; see USB_STORAGE Help for more information 1564# also be needed; see USB_STORAGE Help for more info
1380# 1565#
1381CONFIG_USB_STORAGE=y 1566CONFIG_USB_STORAGE=y
1382# CONFIG_USB_STORAGE_DEBUG is not set 1567# CONFIG_USB_STORAGE_DEBUG is not set
1383# CONFIG_USB_STORAGE_DATAFAB is not set 1568# CONFIG_USB_STORAGE_DATAFAB is not set
1384# CONFIG_USB_STORAGE_FREECOM is not set 1569# CONFIG_USB_STORAGE_FREECOM is not set
1385# CONFIG_USB_STORAGE_ISD200 is not set 1570# CONFIG_USB_STORAGE_ISD200 is not set
1386# CONFIG_USB_STORAGE_DPCM is not set
1387# CONFIG_USB_STORAGE_USBAT is not set 1571# CONFIG_USB_STORAGE_USBAT is not set
1388# CONFIG_USB_STORAGE_SDDR09 is not set 1572# CONFIG_USB_STORAGE_SDDR09 is not set
1389# CONFIG_USB_STORAGE_SDDR55 is not set 1573# CONFIG_USB_STORAGE_SDDR55 is not set
@@ -1399,7 +1583,6 @@ CONFIG_USB_LIBUSUAL=y
1399# 1583#
1400# CONFIG_USB_MDC800 is not set 1584# CONFIG_USB_MDC800 is not set
1401# CONFIG_USB_MICROTEK is not set 1585# CONFIG_USB_MICROTEK is not set
1402# CONFIG_USB_MON is not set
1403 1586
1404# 1587#
1405# USB port drivers 1588# USB port drivers
@@ -1412,7 +1595,7 @@ CONFIG_USB_LIBUSUAL=y
1412# CONFIG_USB_EMI62 is not set 1595# CONFIG_USB_EMI62 is not set
1413# CONFIG_USB_EMI26 is not set 1596# CONFIG_USB_EMI26 is not set
1414# CONFIG_USB_ADUTUX is not set 1597# CONFIG_USB_ADUTUX is not set
1415# CONFIG_USB_AUERSWALD is not set 1598# CONFIG_USB_SEVSEG is not set
1416# CONFIG_USB_RIO500 is not set 1599# CONFIG_USB_RIO500 is not set
1417# CONFIG_USB_LEGOTOWER is not set 1600# CONFIG_USB_LEGOTOWER is not set
1418# CONFIG_USB_LCD is not set 1601# CONFIG_USB_LCD is not set
@@ -1420,7 +1603,6 @@ CONFIG_USB_LIBUSUAL=y
1420# CONFIG_USB_LED is not set 1603# CONFIG_USB_LED is not set
1421# CONFIG_USB_CYPRESS_CY7C63 is not set 1604# CONFIG_USB_CYPRESS_CY7C63 is not set
1422# CONFIG_USB_CYTHERM is not set 1605# CONFIG_USB_CYTHERM is not set
1423# CONFIG_USB_PHIDGET is not set
1424# CONFIG_USB_IDMOUSE is not set 1606# CONFIG_USB_IDMOUSE is not set
1425# CONFIG_USB_FTDI_ELAN is not set 1607# CONFIG_USB_FTDI_ELAN is not set
1426# CONFIG_USB_APPLEDISPLAY is not set 1608# CONFIG_USB_APPLEDISPLAY is not set
@@ -1429,7 +1611,15 @@ CONFIG_USB_LIBUSUAL=y
1429# CONFIG_USB_TRANCEVIBRATOR is not set 1611# CONFIG_USB_TRANCEVIBRATOR is not set
1430# CONFIG_USB_IOWARRIOR is not set 1612# CONFIG_USB_IOWARRIOR is not set
1431# CONFIG_USB_TEST is not set 1613# CONFIG_USB_TEST is not set
1614# CONFIG_USB_ISIGHTFW is not set
1615# CONFIG_USB_VST is not set
1432# CONFIG_USB_GADGET is not set 1616# CONFIG_USB_GADGET is not set
1617
1618#
1619# OTG and related infrastructure
1620#
1621# CONFIG_NOP_USB_XCEIV is not set
1622# CONFIG_UWB is not set
1433# CONFIG_MMC is not set 1623# CONFIG_MMC is not set
1434# CONFIG_MEMSTICK is not set 1624# CONFIG_MEMSTICK is not set
1435# CONFIG_NEW_LEDS is not set 1625# CONFIG_NEW_LEDS is not set
@@ -1443,6 +1633,7 @@ CONFIG_EDAC=y
1443# CONFIG_EDAC_DEBUG is not set 1633# CONFIG_EDAC_DEBUG is not set
1444CONFIG_EDAC_MM_EDAC=y 1634CONFIG_EDAC_MM_EDAC=y
1445CONFIG_EDAC_PASEMI=y 1635CONFIG_EDAC_PASEMI=y
1636# CONFIG_EDAC_CPC925 is not set
1446CONFIG_RTC_LIB=y 1637CONFIG_RTC_LIB=y
1447CONFIG_RTC_CLASS=y 1638CONFIG_RTC_CLASS=y
1448CONFIG_RTC_HCTOSYS=y 1639CONFIG_RTC_HCTOSYS=y
@@ -1472,6 +1663,9 @@ CONFIG_RTC_DRV_DS1307=y
1472# CONFIG_RTC_DRV_PCF8583 is not set 1663# CONFIG_RTC_DRV_PCF8583 is not set
1473# CONFIG_RTC_DRV_M41T80 is not set 1664# CONFIG_RTC_DRV_M41T80 is not set
1474# CONFIG_RTC_DRV_S35390A is not set 1665# CONFIG_RTC_DRV_S35390A is not set
1666# CONFIG_RTC_DRV_FM3130 is not set
1667# CONFIG_RTC_DRV_RX8581 is not set
1668# CONFIG_RTC_DRV_RX8025 is not set
1475 1669
1476# 1670#
1477# SPI RTC drivers 1671# SPI RTC drivers
@@ -1481,21 +1675,31 @@ CONFIG_RTC_DRV_DS1307=y
1481# Platform RTC drivers 1675# Platform RTC drivers
1482# 1676#
1483# CONFIG_RTC_DRV_CMOS is not set 1677# CONFIG_RTC_DRV_CMOS is not set
1678# CONFIG_RTC_DRV_DS1286 is not set
1484# CONFIG_RTC_DRV_DS1511 is not set 1679# CONFIG_RTC_DRV_DS1511 is not set
1485# CONFIG_RTC_DRV_DS1553 is not set 1680# CONFIG_RTC_DRV_DS1553 is not set
1486# CONFIG_RTC_DRV_DS1742 is not set 1681# CONFIG_RTC_DRV_DS1742 is not set
1487# CONFIG_RTC_DRV_STK17TA8 is not set 1682# CONFIG_RTC_DRV_STK17TA8 is not set
1488# CONFIG_RTC_DRV_M48T86 is not set 1683# CONFIG_RTC_DRV_M48T86 is not set
1684# CONFIG_RTC_DRV_M48T35 is not set
1489# CONFIG_RTC_DRV_M48T59 is not set 1685# CONFIG_RTC_DRV_M48T59 is not set
1686# CONFIG_RTC_DRV_BQ4802 is not set
1490# CONFIG_RTC_DRV_V3020 is not set 1687# CONFIG_RTC_DRV_V3020 is not set
1491 1688
1492# 1689#
1493# on-CPU RTC drivers 1690# on-CPU RTC drivers
1494# 1691#
1692# CONFIG_RTC_DRV_GENERIC is not set
1495# CONFIG_DMADEVICES is not set 1693# CONFIG_DMADEVICES is not set
1694# CONFIG_AUXDISPLAY is not set
1496# CONFIG_UIO is not set 1695# CONFIG_UIO is not set
1497 1696
1498# 1697#
1698# TI VLYNQ
1699#
1700# CONFIG_STAGING is not set
1701
1702#
1499# File systems 1703# File systems
1500# 1704#
1501CONFIG_EXT2_FS=y 1705CONFIG_EXT2_FS=y
@@ -1504,11 +1708,13 @@ CONFIG_EXT2_FS_POSIX_ACL=y
1504# CONFIG_EXT2_FS_SECURITY is not set 1708# CONFIG_EXT2_FS_SECURITY is not set
1505# CONFIG_EXT2_FS_XIP is not set 1709# CONFIG_EXT2_FS_XIP is not set
1506CONFIG_EXT3_FS=y 1710CONFIG_EXT3_FS=y
1711# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
1507CONFIG_EXT3_FS_XATTR=y 1712CONFIG_EXT3_FS_XATTR=y
1508# CONFIG_EXT3_FS_POSIX_ACL is not set 1713# CONFIG_EXT3_FS_POSIX_ACL is not set
1509# CONFIG_EXT3_FS_SECURITY is not set 1714# CONFIG_EXT3_FS_SECURITY is not set
1510# CONFIG_EXT4DEV_FS is not set 1715# CONFIG_EXT4_FS is not set
1511CONFIG_JBD=y 1716CONFIG_JBD=y
1717# CONFIG_JBD_DEBUG is not set
1512CONFIG_FS_MBCACHE=y 1718CONFIG_FS_MBCACHE=y
1513# CONFIG_REISERFS_FS is not set 1719# CONFIG_REISERFS_FS is not set
1514# CONFIG_JFS_FS is not set 1720# CONFIG_JFS_FS is not set
@@ -1516,6 +1722,10 @@ CONFIG_FS_POSIX_ACL=y
1516# CONFIG_XFS_FS is not set 1722# CONFIG_XFS_FS is not set
1517# CONFIG_GFS2_FS is not set 1723# CONFIG_GFS2_FS is not set
1518# CONFIG_OCFS2_FS is not set 1724# CONFIG_OCFS2_FS is not set
1725# CONFIG_BTRFS_FS is not set
1726# CONFIG_NILFS2_FS is not set
1727CONFIG_FILE_LOCKING=y
1728CONFIG_FSNOTIFY=y
1519CONFIG_DNOTIFY=y 1729CONFIG_DNOTIFY=y
1520CONFIG_INOTIFY=y 1730CONFIG_INOTIFY=y
1521CONFIG_INOTIFY_USER=y 1731CONFIG_INOTIFY_USER=y
@@ -1525,6 +1735,11 @@ CONFIG_AUTOFS4_FS=y
1525# CONFIG_FUSE_FS is not set 1735# CONFIG_FUSE_FS is not set
1526 1736
1527# 1737#
1738# Caches
1739#
1740# CONFIG_FSCACHE is not set
1741
1742#
1528# CD-ROM/DVD Filesystems 1743# CD-ROM/DVD Filesystems
1529# 1744#
1530CONFIG_ISO9660_FS=y 1745CONFIG_ISO9660_FS=y
@@ -1549,16 +1764,14 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1549CONFIG_PROC_FS=y 1764CONFIG_PROC_FS=y
1550CONFIG_PROC_KCORE=y 1765CONFIG_PROC_KCORE=y
1551CONFIG_PROC_SYSCTL=y 1766CONFIG_PROC_SYSCTL=y
1767CONFIG_PROC_PAGE_MONITOR=y
1552CONFIG_SYSFS=y 1768CONFIG_SYSFS=y
1553CONFIG_TMPFS=y 1769CONFIG_TMPFS=y
1554# CONFIG_TMPFS_POSIX_ACL is not set 1770# CONFIG_TMPFS_POSIX_ACL is not set
1555CONFIG_HUGETLBFS=y 1771CONFIG_HUGETLBFS=y
1556CONFIG_HUGETLB_PAGE=y 1772CONFIG_HUGETLB_PAGE=y
1557CONFIG_CONFIGFS_FS=y 1773CONFIG_CONFIGFS_FS=y
1558 1774CONFIG_MISC_FILESYSTEMS=y
1559#
1560# Miscellaneous filesystems
1561#
1562# CONFIG_ADFS_FS is not set 1775# CONFIG_ADFS_FS is not set
1563# CONFIG_AFFS_FS is not set 1776# CONFIG_AFFS_FS is not set
1564# CONFIG_HFS_FS is not set 1777# CONFIG_HFS_FS is not set
@@ -1578,8 +1791,10 @@ CONFIG_JFFS2_ZLIB=y
1578CONFIG_JFFS2_RTIME=y 1791CONFIG_JFFS2_RTIME=y
1579# CONFIG_JFFS2_RUBIN is not set 1792# CONFIG_JFFS2_RUBIN is not set
1580# CONFIG_CRAMFS is not set 1793# CONFIG_CRAMFS is not set
1794# CONFIG_SQUASHFS is not set
1581# CONFIG_VXFS_FS is not set 1795# CONFIG_VXFS_FS is not set
1582# CONFIG_MINIX_FS is not set 1796# CONFIG_MINIX_FS is not set
1797# CONFIG_OMFS_FS is not set
1583# CONFIG_HPFS_FS is not set 1798# CONFIG_HPFS_FS is not set
1584# CONFIG_QNX4FS_FS is not set 1799# CONFIG_QNX4FS_FS is not set
1585# CONFIG_ROMFS_FS is not set 1800# CONFIG_ROMFS_FS is not set
@@ -1590,18 +1805,17 @@ CONFIG_NFS_FS=y
1590CONFIG_NFS_V3=y 1805CONFIG_NFS_V3=y
1591# CONFIG_NFS_V3_ACL is not set 1806# CONFIG_NFS_V3_ACL is not set
1592# CONFIG_NFS_V4 is not set 1807# CONFIG_NFS_V4 is not set
1808CONFIG_ROOT_NFS=y
1593CONFIG_NFSD=y 1809CONFIG_NFSD=y
1594CONFIG_NFSD_V3=y 1810CONFIG_NFSD_V3=y
1595# CONFIG_NFSD_V3_ACL is not set 1811# CONFIG_NFSD_V3_ACL is not set
1596CONFIG_NFSD_V4=y 1812CONFIG_NFSD_V4=y
1597CONFIG_ROOT_NFS=y
1598CONFIG_LOCKD=y 1813CONFIG_LOCKD=y
1599CONFIG_LOCKD_V4=y 1814CONFIG_LOCKD_V4=y
1600CONFIG_EXPORTFS=y 1815CONFIG_EXPORTFS=y
1601CONFIG_NFS_COMMON=y 1816CONFIG_NFS_COMMON=y
1602CONFIG_SUNRPC=y 1817CONFIG_SUNRPC=y
1603CONFIG_SUNRPC_GSS=y 1818CONFIG_SUNRPC_GSS=y
1604# CONFIG_SUNRPC_BIND34 is not set
1605CONFIG_RPCSEC_GSS_KRB5=y 1819CONFIG_RPCSEC_GSS_KRB5=y
1606# CONFIG_RPCSEC_GSS_SPKM3 is not set 1820# CONFIG_RPCSEC_GSS_SPKM3 is not set
1607# CONFIG_SMB_FS is not set 1821# CONFIG_SMB_FS is not set
@@ -1672,25 +1886,30 @@ CONFIG_NLS_ISO8859_1=y
1672# CONFIG_NLS_KOI8_U is not set 1886# CONFIG_NLS_KOI8_U is not set
1673# CONFIG_NLS_UTF8 is not set 1887# CONFIG_NLS_UTF8 is not set
1674# CONFIG_DLM is not set 1888# CONFIG_DLM is not set
1889CONFIG_BINARY_PRINTF=y
1675 1890
1676# 1891#
1677# Library routines 1892# Library routines
1678# 1893#
1679CONFIG_BITREVERSE=y 1894CONFIG_BITREVERSE=y
1680# CONFIG_GENERIC_FIND_FIRST_BIT is not set 1895CONFIG_GENERIC_FIND_LAST_BIT=y
1681CONFIG_CRC_CCITT=y 1896CONFIG_CRC_CCITT=y
1682# CONFIG_CRC16 is not set 1897# CONFIG_CRC16 is not set
1898# CONFIG_CRC_T10DIF is not set
1683CONFIG_CRC_ITU_T=y 1899CONFIG_CRC_ITU_T=y
1684CONFIG_CRC32=y 1900CONFIG_CRC32=y
1685# CONFIG_CRC7 is not set 1901# CONFIG_CRC7 is not set
1686CONFIG_LIBCRC32C=m 1902# CONFIG_LIBCRC32C is not set
1687CONFIG_ZLIB_INFLATE=y 1903CONFIG_ZLIB_INFLATE=y
1688CONFIG_ZLIB_DEFLATE=y 1904CONFIG_ZLIB_DEFLATE=y
1689CONFIG_PLIST=y 1905CONFIG_DECOMPRESS_GZIP=y
1906CONFIG_DECOMPRESS_BZIP2=y
1907CONFIG_DECOMPRESS_LZMA=y
1690CONFIG_HAS_IOMEM=y 1908CONFIG_HAS_IOMEM=y
1691CONFIG_HAS_IOPORT=y 1909CONFIG_HAS_IOPORT=y
1692CONFIG_HAS_DMA=y 1910CONFIG_HAS_DMA=y
1693CONFIG_HAVE_LMB=y 1911CONFIG_HAVE_LMB=y
1912CONFIG_NLATTR=y
1694 1913
1695# 1914#
1696# Kernel hacking 1915# Kernel hacking
@@ -1700,18 +1919,25 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1700CONFIG_ENABLE_MUST_CHECK=y 1919CONFIG_ENABLE_MUST_CHECK=y
1701CONFIG_FRAME_WARN=2048 1920CONFIG_FRAME_WARN=2048
1702CONFIG_MAGIC_SYSRQ=y 1921CONFIG_MAGIC_SYSRQ=y
1922# CONFIG_STRIP_ASM_SYMS is not set
1703# CONFIG_UNUSED_SYMBOLS is not set 1923# CONFIG_UNUSED_SYMBOLS is not set
1704# CONFIG_DEBUG_FS is not set 1924CONFIG_DEBUG_FS=y
1705# CONFIG_HEADERS_CHECK is not set 1925# CONFIG_HEADERS_CHECK is not set
1706CONFIG_DEBUG_KERNEL=y 1926CONFIG_DEBUG_KERNEL=y
1707# CONFIG_DEBUG_SHIRQ is not set 1927# CONFIG_DEBUG_SHIRQ is not set
1708CONFIG_DETECT_SOFTLOCKUP=y 1928CONFIG_DETECT_SOFTLOCKUP=y
1929# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1930CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1931CONFIG_DETECT_HUNG_TASK=y
1932# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1933CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1709# CONFIG_SCHED_DEBUG is not set 1934# CONFIG_SCHED_DEBUG is not set
1710# CONFIG_SCHEDSTATS is not set 1935# CONFIG_SCHEDSTATS is not set
1711# CONFIG_TIMER_STATS is not set 1936# CONFIG_TIMER_STATS is not set
1712# CONFIG_DEBUG_OBJECTS is not set 1937# CONFIG_DEBUG_OBJECTS is not set
1713# CONFIG_SLUB_DEBUG_ON is not set 1938# CONFIG_SLUB_DEBUG_ON is not set
1714# CONFIG_SLUB_STATS is not set 1939# CONFIG_SLUB_STATS is not set
1940# CONFIG_DEBUG_KMEMLEAK is not set
1715# CONFIG_DEBUG_RT_MUTEXES is not set 1941# CONFIG_DEBUG_RT_MUTEXES is not set
1716# CONFIG_RT_MUTEX_TESTER is not set 1942# CONFIG_RT_MUTEX_TESTER is not set
1717# CONFIG_DEBUG_SPINLOCK is not set 1943# CONFIG_DEBUG_SPINLOCK is not set
@@ -1721,26 +1947,71 @@ CONFIG_DETECT_SOFTLOCKUP=y
1721# CONFIG_LOCK_STAT is not set 1947# CONFIG_LOCK_STAT is not set
1722# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1948# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1723# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1949# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1950CONFIG_STACKTRACE=y
1724# CONFIG_DEBUG_KOBJECT is not set 1951# CONFIG_DEBUG_KOBJECT is not set
1725CONFIG_DEBUG_BUGVERBOSE=y 1952CONFIG_DEBUG_BUGVERBOSE=y
1726# CONFIG_DEBUG_INFO is not set 1953# CONFIG_DEBUG_INFO is not set
1727# CONFIG_DEBUG_VM is not set 1954# CONFIG_DEBUG_VM is not set
1728# CONFIG_DEBUG_WRITECOUNT is not set 1955# CONFIG_DEBUG_WRITECOUNT is not set
1956CONFIG_DEBUG_MEMORY_INIT=y
1729# CONFIG_DEBUG_LIST is not set 1957# CONFIG_DEBUG_LIST is not set
1730# CONFIG_DEBUG_SG is not set 1958# CONFIG_DEBUG_SG is not set
1731# CONFIG_BOOT_PRINTK_DELAY is not set 1959# CONFIG_DEBUG_NOTIFIERS is not set
1960# CONFIG_DEBUG_CREDENTIALS is not set
1732# CONFIG_RCU_TORTURE_TEST is not set 1961# CONFIG_RCU_TORTURE_TEST is not set
1962# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1733# CONFIG_BACKTRACE_SELF_TEST is not set 1963# CONFIG_BACKTRACE_SELF_TEST is not set
1964# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1965# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1734# CONFIG_FAULT_INJECTION is not set 1966# CONFIG_FAULT_INJECTION is not set
1967# CONFIG_LATENCYTOP is not set
1968CONFIG_SYSCTL_SYSCALL_CHECK=y
1969# CONFIG_DEBUG_PAGEALLOC is not set
1970CONFIG_NOP_TRACER=y
1971CONFIG_HAVE_FUNCTION_TRACER=y
1972CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1973CONFIG_HAVE_DYNAMIC_FTRACE=y
1974CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1975CONFIG_RING_BUFFER=y
1976CONFIG_EVENT_TRACING=y
1977CONFIG_CONTEXT_SWITCH_TRACER=y
1978CONFIG_RING_BUFFER_ALLOW_SWAP=y
1979CONFIG_TRACING=y
1980CONFIG_TRACING_SUPPORT=y
1981CONFIG_FTRACE=y
1982# CONFIG_FUNCTION_TRACER is not set
1983# CONFIG_IRQSOFF_TRACER is not set
1984# CONFIG_SCHED_TRACER is not set
1985# CONFIG_ENABLE_DEFAULT_TRACERS is not set
1986# CONFIG_BOOT_TRACER is not set
1987CONFIG_BRANCH_PROFILE_NONE=y
1988# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1989# CONFIG_PROFILE_ALL_BRANCHES is not set
1990# CONFIG_STACK_TRACER is not set
1991# CONFIG_KMEMTRACE is not set
1992# CONFIG_WORKQUEUE_TRACER is not set
1993# CONFIG_BLK_DEV_IO_TRACE is not set
1994# CONFIG_RING_BUFFER_BENCHMARK is not set
1995# CONFIG_DYNAMIC_DEBUG is not set
1996# CONFIG_DMA_API_DEBUG is not set
1735# CONFIG_SAMPLES is not set 1997# CONFIG_SAMPLES is not set
1998CONFIG_HAVE_ARCH_KGDB=y
1999# CONFIG_KGDB is not set
2000# CONFIG_PPC_DISABLE_WERROR is not set
2001CONFIG_PPC_WERROR=y
2002CONFIG_PRINT_STACK_DEPTH=64
1736# CONFIG_DEBUG_STACKOVERFLOW is not set 2003# CONFIG_DEBUG_STACKOVERFLOW is not set
1737# CONFIG_DEBUG_STACK_USAGE is not set 2004# CONFIG_DEBUG_STACK_USAGE is not set
1738# CONFIG_DEBUG_PAGEALLOC is not set 2005# CONFIG_PPC_EMULATED_STATS is not set
1739CONFIG_DEBUGGER=y 2006# CONFIG_CODE_PATCHING_SELFTEST is not set
2007# CONFIG_FTR_FIXUP_SELFTEST is not set
2008# CONFIG_MSI_BITMAP_SELFTEST is not set
1740CONFIG_XMON=y 2009CONFIG_XMON=y
1741CONFIG_XMON_DEFAULT=y 2010CONFIG_XMON_DEFAULT=y
1742CONFIG_XMON_DISASSEMBLY=y 2011CONFIG_XMON_DISASSEMBLY=y
2012CONFIG_DEBUGGER=y
1743# CONFIG_IRQSTACKS is not set 2013# CONFIG_IRQSTACKS is not set
2014# CONFIG_VIRQ_DEBUG is not set
1744# CONFIG_BOOTX_TEXT is not set 2015# CONFIG_BOOTX_TEXT is not set
1745# CONFIG_PPC_EARLY_DEBUG is not set 2016# CONFIG_PPC_EARLY_DEBUG is not set
1746 2017
@@ -1749,23 +2020,34 @@ CONFIG_XMON_DISASSEMBLY=y
1749# 2020#
1750# CONFIG_KEYS is not set 2021# CONFIG_KEYS is not set
1751# CONFIG_SECURITY is not set 2022# CONFIG_SECURITY is not set
2023# CONFIG_SECURITYFS is not set
1752# CONFIG_SECURITY_FILE_CAPABILITIES is not set 2024# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1753CONFIG_XOR_BLOCKS=y 2025CONFIG_XOR_BLOCKS=y
1754CONFIG_ASYNC_CORE=y 2026CONFIG_ASYNC_CORE=y
1755CONFIG_ASYNC_MEMCPY=y 2027CONFIG_ASYNC_MEMCPY=y
1756CONFIG_ASYNC_XOR=y 2028CONFIG_ASYNC_XOR=y
2029CONFIG_ASYNC_PQ=y
2030CONFIG_ASYNC_RAID6_RECOV=y
1757CONFIG_CRYPTO=y 2031CONFIG_CRYPTO=y
1758 2032
1759# 2033#
1760# Crypto core or helper 2034# Crypto core or helper
1761# 2035#
1762CONFIG_CRYPTO_ALGAPI=y 2036CONFIG_CRYPTO_ALGAPI=y
2037CONFIG_CRYPTO_ALGAPI2=y
1763CONFIG_CRYPTO_AEAD=y 2038CONFIG_CRYPTO_AEAD=y
2039CONFIG_CRYPTO_AEAD2=y
1764CONFIG_CRYPTO_BLKCIPHER=y 2040CONFIG_CRYPTO_BLKCIPHER=y
2041CONFIG_CRYPTO_BLKCIPHER2=y
1765CONFIG_CRYPTO_HASH=y 2042CONFIG_CRYPTO_HASH=y
2043CONFIG_CRYPTO_HASH2=y
2044CONFIG_CRYPTO_RNG2=y
2045CONFIG_CRYPTO_PCOMP=y
1766CONFIG_CRYPTO_MANAGER=y 2046CONFIG_CRYPTO_MANAGER=y
2047CONFIG_CRYPTO_MANAGER2=y
1767# CONFIG_CRYPTO_GF128MUL is not set 2048# CONFIG_CRYPTO_GF128MUL is not set
1768# CONFIG_CRYPTO_NULL is not set 2049# CONFIG_CRYPTO_NULL is not set
2050CONFIG_CRYPTO_WORKQUEUE=y
1769# CONFIG_CRYPTO_CRYPTD is not set 2051# CONFIG_CRYPTO_CRYPTD is not set
1770CONFIG_CRYPTO_AUTHENC=y 2052CONFIG_CRYPTO_AUTHENC=y
1771# CONFIG_CRYPTO_TEST is not set 2053# CONFIG_CRYPTO_TEST is not set
@@ -1793,14 +2075,20 @@ CONFIG_CRYPTO_CBC=y
1793# 2075#
1794CONFIG_CRYPTO_HMAC=y 2076CONFIG_CRYPTO_HMAC=y
1795# CONFIG_CRYPTO_XCBC is not set 2077# CONFIG_CRYPTO_XCBC is not set
2078# CONFIG_CRYPTO_VMAC is not set
1796 2079
1797# 2080#
1798# Digest 2081# Digest
1799# 2082#
1800# CONFIG_CRYPTO_CRC32C is not set 2083# CONFIG_CRYPTO_CRC32C is not set
2084# CONFIG_CRYPTO_GHASH is not set
1801CONFIG_CRYPTO_MD4=y 2085CONFIG_CRYPTO_MD4=y
1802CONFIG_CRYPTO_MD5=y 2086CONFIG_CRYPTO_MD5=y
1803# CONFIG_CRYPTO_MICHAEL_MIC is not set 2087# CONFIG_CRYPTO_MICHAEL_MIC is not set
2088# CONFIG_CRYPTO_RMD128 is not set
2089# CONFIG_CRYPTO_RMD160 is not set
2090# CONFIG_CRYPTO_RMD256 is not set
2091# CONFIG_CRYPTO_RMD320 is not set
1804CONFIG_CRYPTO_SHA1=y 2092CONFIG_CRYPTO_SHA1=y
1805CONFIG_CRYPTO_SHA256=y 2093CONFIG_CRYPTO_SHA256=y
1806CONFIG_CRYPTO_SHA512=y 2094CONFIG_CRYPTO_SHA512=y
@@ -1830,7 +2118,13 @@ CONFIG_CRYPTO_DES=y
1830# Compression 2118# Compression
1831# 2119#
1832# CONFIG_CRYPTO_DEFLATE is not set 2120# CONFIG_CRYPTO_DEFLATE is not set
2121# CONFIG_CRYPTO_ZLIB is not set
1833# CONFIG_CRYPTO_LZO is not set 2122# CONFIG_CRYPTO_LZO is not set
2123
2124#
2125# Random Number Generation
2126#
2127# CONFIG_CRYPTO_ANSI_CPRNG is not set
1834CONFIG_CRYPTO_HW=y 2128CONFIG_CRYPTO_HW=y
1835# CONFIG_CRYPTO_DEV_HIFN_795X is not set 2129# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1836# CONFIG_PPC_CLOCK is not set 2130# CONFIG_PPC_CLOCK is not set
diff --git a/arch/powerpc/configs/ppc64e_defconfig b/arch/powerpc/configs/ppc64e_defconfig
new file mode 100644
index 000000000000..18af46036258
--- /dev/null
+++ b/arch/powerpc/configs/ppc64e_defconfig
@@ -0,0 +1,2199 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.32-rc5
4# Fri Oct 16 11:37:15 2009
5#
6CONFIG_PPC64=y
7
8#
9# Processor support
10#
11# CONFIG_PPC_BOOK3S_64 is not set
12CONFIG_PPC_BOOK3E_64=y
13CONFIG_PPC_BOOK3E=y
14CONFIG_PPC_FPU=y
15CONFIG_BOOKE=y
16CONFIG_PPC_MMU_NOHASH=y
17CONFIG_PPC_MMU_NOHASH_64=y
18CONFIG_PPC_BOOK3E_MMU=y
19# CONFIG_PPC_MM_SLICES is not set
20CONFIG_VIRT_CPU_ACCOUNTING=y
21CONFIG_PPC_HAVE_PMU_SUPPORT=y
22CONFIG_PPC_PERF_CTRS=y
23CONFIG_SMP=y
24CONFIG_NR_CPUS=32
25CONFIG_64BIT=y
26CONFIG_WORD_SIZE=64
27CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
28CONFIG_MMU=y
29CONFIG_GENERIC_CMOS_UPDATE=y
30CONFIG_GENERIC_TIME=y
31CONFIG_GENERIC_TIME_VSYSCALL=y
32CONFIG_GENERIC_CLOCKEVENTS=y
33CONFIG_GENERIC_HARDIRQS=y
34CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
35CONFIG_HAVE_SETUP_PER_CPU_AREA=y
36CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
37CONFIG_IRQ_PER_CPU=y
38CONFIG_STACKTRACE_SUPPORT=y
39CONFIG_HAVE_LATENCYTOP_SUPPORT=y
40CONFIG_TRACE_IRQFLAGS_SUPPORT=y
41CONFIG_LOCKDEP_SUPPORT=y
42CONFIG_RWSEM_XCHGADD_ALGORITHM=y
43CONFIG_ARCH_HAS_ILOG2_U32=y
44CONFIG_ARCH_HAS_ILOG2_U64=y
45CONFIG_GENERIC_HWEIGHT=y
46CONFIG_GENERIC_FIND_NEXT_BIT=y
47CONFIG_ARCH_NO_VIRT_TO_BUS=y
48CONFIG_PPC=y
49CONFIG_EARLY_PRINTK=y
50CONFIG_COMPAT=y
51CONFIG_SYSVIPC_COMPAT=y
52CONFIG_SCHED_OMIT_FRAME_POINTER=y
53CONFIG_ARCH_MAY_HAVE_PC_FDC=y
54CONFIG_PPC_OF=y
55CONFIG_OF=y
56# CONFIG_PPC_UDBG_16550 is not set
57# CONFIG_GENERIC_TBSYNC is not set
58CONFIG_AUDIT_ARCH=y
59CONFIG_GENERIC_BUG=y
60CONFIG_DTC=y
61# CONFIG_DEFAULT_UIMAGE is not set
62# CONFIG_PPC_DCR_NATIVE is not set
63# CONFIG_PPC_DCR_MMIO is not set
64# CONFIG_PPC_OF_PLATFORM_PCI is not set
65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
66CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
67CONFIG_CONSTRUCTORS=y
68
69#
70# General setup
71#
72CONFIG_EXPERIMENTAL=y
73CONFIG_LOCK_KERNEL=y
74CONFIG_INIT_ENV_ARG_LIMIT=32
75CONFIG_LOCALVERSION=""
76CONFIG_LOCALVERSION_AUTO=y
77CONFIG_SWAP=y
78CONFIG_SYSVIPC=y
79CONFIG_SYSVIPC_SYSCTL=y
80CONFIG_POSIX_MQUEUE=y
81CONFIG_POSIX_MQUEUE_SYSCTL=y
82# CONFIG_BSD_PROCESS_ACCT is not set
83CONFIG_TASKSTATS=y
84CONFIG_TASK_DELAY_ACCT=y
85# CONFIG_TASK_XACCT is not set
86# CONFIG_AUDIT is not set
87
88#
89# RCU Subsystem
90#
91CONFIG_TREE_RCU=y
92# CONFIG_TREE_PREEMPT_RCU is not set
93# CONFIG_RCU_TRACE is not set
94CONFIG_RCU_FANOUT=64
95# CONFIG_RCU_FANOUT_EXACT is not set
96# CONFIG_TREE_RCU_TRACE is not set
97CONFIG_IKCONFIG=y
98CONFIG_IKCONFIG_PROC=y
99CONFIG_LOG_BUF_SHIFT=17
100# CONFIG_GROUP_SCHED is not set
101CONFIG_CGROUPS=y
102# CONFIG_CGROUP_DEBUG is not set
103# CONFIG_CGROUP_NS is not set
104# CONFIG_CGROUP_FREEZER is not set
105# CONFIG_CGROUP_DEVICE is not set
106CONFIG_CPUSETS=y
107CONFIG_PROC_PID_CPUSET=y
108# CONFIG_CGROUP_CPUACCT is not set
109# CONFIG_RESOURCE_COUNTERS is not set
110CONFIG_SYSFS_DEPRECATED=y
111CONFIG_SYSFS_DEPRECATED_V2=y
112CONFIG_RELAY=y
113CONFIG_NAMESPACES=y
114# CONFIG_UTS_NS is not set
115# CONFIG_IPC_NS is not set
116# CONFIG_USER_NS is not set
117# CONFIG_PID_NS is not set
118# CONFIG_NET_NS is not set
119CONFIG_BLK_DEV_INITRD=y
120CONFIG_INITRAMFS_SOURCE=""
121CONFIG_RD_GZIP=y
122CONFIG_RD_BZIP2=y
123CONFIG_RD_LZMA=y
124CONFIG_CC_OPTIMIZE_FOR_SIZE=y
125CONFIG_SYSCTL=y
126CONFIG_ANON_INODES=y
127# CONFIG_EMBEDDED is not set
128CONFIG_SYSCTL_SYSCALL=y
129CONFIG_KALLSYMS=y
130CONFIG_KALLSYMS_ALL=y
131# CONFIG_KALLSYMS_EXTRA_PASS is not set
132CONFIG_HOTPLUG=y
133CONFIG_PRINTK=y
134CONFIG_BUG=y
135CONFIG_ELF_CORE=y
136CONFIG_BASE_FULL=y
137CONFIG_FUTEX=y
138CONFIG_EPOLL=y
139CONFIG_SIGNALFD=y
140CONFIG_TIMERFD=y
141CONFIG_EVENTFD=y
142CONFIG_SHMEM=y
143CONFIG_AIO=y
144CONFIG_HAVE_PERF_EVENTS=y
145
146#
147# Kernel Performance Events And Counters
148#
149CONFIG_PERF_EVENTS=y
150CONFIG_EVENT_PROFILE=y
151# CONFIG_PERF_COUNTERS is not set
152# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
153CONFIG_VM_EVENT_COUNTERS=y
154CONFIG_PCI_QUIRKS=y
155CONFIG_SLUB_DEBUG=y
156# CONFIG_COMPAT_BRK is not set
157# CONFIG_SLAB is not set
158CONFIG_SLUB=y
159# CONFIG_SLOB is not set
160CONFIG_PROFILING=y
161CONFIG_TRACEPOINTS=y
162CONFIG_OPROFILE=y
163CONFIG_HAVE_OPROFILE=y
164# CONFIG_KPROBES is not set
165CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
166CONFIG_HAVE_SYSCALL_WRAPPERS=y
167CONFIG_HAVE_IOREMAP_PROT=y
168CONFIG_HAVE_KPROBES=y
169CONFIG_HAVE_KRETPROBES=y
170CONFIG_HAVE_ARCH_TRACEHOOK=y
171CONFIG_HAVE_DMA_ATTRS=y
172CONFIG_USE_GENERIC_SMP_HELPERS=y
173CONFIG_HAVE_DMA_API_DEBUG=y
174
175#
176# GCOV-based kernel profiling
177#
178# CONFIG_GCOV_KERNEL is not set
179CONFIG_SLOW_WORK=y
180# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
181CONFIG_SLABINFO=y
182CONFIG_RT_MUTEXES=y
183CONFIG_BASE_SMALL=0
184CONFIG_MODULES=y
185# CONFIG_MODULE_FORCE_LOAD is not set
186CONFIG_MODULE_UNLOAD=y
187# CONFIG_MODULE_FORCE_UNLOAD is not set
188CONFIG_MODVERSIONS=y
189CONFIG_MODULE_SRCVERSION_ALL=y
190CONFIG_STOP_MACHINE=y
191CONFIG_BLOCK=y
192CONFIG_BLK_DEV_BSG=y
193# CONFIG_BLK_DEV_INTEGRITY is not set
194CONFIG_BLOCK_COMPAT=y
195
196#
197# IO Schedulers
198#
199CONFIG_IOSCHED_NOOP=y
200CONFIG_IOSCHED_AS=y
201CONFIG_IOSCHED_DEADLINE=y
202CONFIG_IOSCHED_CFQ=y
203CONFIG_DEFAULT_AS=y
204# CONFIG_DEFAULT_DEADLINE is not set
205# CONFIG_DEFAULT_CFQ is not set
206# CONFIG_DEFAULT_NOOP is not set
207CONFIG_DEFAULT_IOSCHED="anticipatory"
208# CONFIG_FREEZER is not set
209
210#
211# Platform support
212#
213# CONFIG_PPC_CELL is not set
214# CONFIG_PPC_CELL_NATIVE is not set
215# CONFIG_PQ2ADS is not set
216CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
217# CONFIG_IPIC is not set
218# CONFIG_MPIC is not set
219# CONFIG_MPIC_WEIRD is not set
220# CONFIG_PPC_I8259 is not set
221# CONFIG_U3_DART is not set
222# CONFIG_PPC_RTAS is not set
223# CONFIG_MMIO_NVRAM is not set
224# CONFIG_PPC_MPC106 is not set
225# CONFIG_PPC_970_NAP is not set
226# CONFIG_PPC_INDIRECT_IO is not set
227# CONFIG_GENERIC_IOMAP is not set
228CONFIG_CPU_FREQ=y
229CONFIG_CPU_FREQ_TABLE=y
230# CONFIG_CPU_FREQ_DEBUG is not set
231CONFIG_CPU_FREQ_STAT=y
232# CONFIG_CPU_FREQ_STAT_DETAILS is not set
233CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
234# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
235# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
236# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
237# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
238CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
239CONFIG_CPU_FREQ_GOV_POWERSAVE=y
240CONFIG_CPU_FREQ_GOV_USERSPACE=y
241# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
242# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
243
244#
245# CPU Frequency drivers
246#
247# CONFIG_FSL_ULI1575 is not set
248# CONFIG_SIMPLE_GPIO is not set
249
250#
251# Kernel options
252#
253CONFIG_TICK_ONESHOT=y
254CONFIG_NO_HZ=y
255CONFIG_HIGH_RES_TIMERS=y
256CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
257# CONFIG_HZ_100 is not set
258CONFIG_HZ_250=y
259# CONFIG_HZ_300 is not set
260# CONFIG_HZ_1000 is not set
261CONFIG_HZ=250
262CONFIG_SCHED_HRTICK=y
263CONFIG_PREEMPT_NONE=y
264# CONFIG_PREEMPT_VOLUNTARY is not set
265# CONFIG_PREEMPT is not set
266CONFIG_BINFMT_ELF=y
267CONFIG_COMPAT_BINFMT_ELF=y
268# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
269# CONFIG_HAVE_AOUT is not set
270CONFIG_BINFMT_MISC=m
271CONFIG_IOMMU_VMERGE=y
272CONFIG_IOMMU_HELPER=y
273# CONFIG_SWIOTLB is not set
274CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
275CONFIG_ARCH_HAS_WALK_MEMORY=y
276CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
277# CONFIG_CRASH_DUMP is not set
278CONFIG_IRQ_ALL_CPUS=y
279# CONFIG_NUMA is not set
280CONFIG_MAX_ACTIVE_REGIONS=256
281CONFIG_ARCH_SELECT_MEMORY_MODEL=y
282CONFIG_ARCH_FLATMEM_ENABLE=y
283CONFIG_ARCH_SPARSEMEM_ENABLE=y
284CONFIG_ARCH_POPULATES_NODE_MAP=y
285CONFIG_SELECT_MEMORY_MODEL=y
286# CONFIG_FLATMEM_MANUAL is not set
287# CONFIG_DISCONTIGMEM_MANUAL is not set
288CONFIG_SPARSEMEM_MANUAL=y
289CONFIG_SPARSEMEM=y
290CONFIG_HAVE_MEMORY_PRESENT=y
291CONFIG_SPARSEMEM_EXTREME=y
292CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
293CONFIG_SPARSEMEM_VMEMMAP=y
294# CONFIG_MEMORY_HOTPLUG is not set
295CONFIG_PAGEFLAGS_EXTENDED=y
296CONFIG_SPLIT_PTLOCK_CPUS=4
297CONFIG_MIGRATION=y
298CONFIG_PHYS_ADDR_T_64BIT=y
299CONFIG_ZONE_DMA_FLAG=1
300CONFIG_BOUNCE=y
301CONFIG_HAVE_MLOCK=y
302CONFIG_HAVE_MLOCKED_PAGE_BIT=y
303# CONFIG_KSM is not set
304CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
305# CONFIG_PPC_HAS_HASH_64K is not set
306CONFIG_PPC_4K_PAGES=y
307# CONFIG_PPC_16K_PAGES is not set
308# CONFIG_PPC_64K_PAGES is not set
309# CONFIG_PPC_256K_PAGES is not set
310CONFIG_FORCE_MAX_ZONEORDER=13
311# CONFIG_SCHED_SMT is not set
312CONFIG_PROC_DEVICETREE=y
313# CONFIG_CMDLINE_BOOL is not set
314CONFIG_EXTRA_TARGETS=""
315# CONFIG_PM is not set
316CONFIG_SECCOMP=y
317CONFIG_ISA_DMA_API=y
318
319#
320# Bus options
321#
322CONFIG_ZONE_DMA=y
323CONFIG_GENERIC_ISA_DMA=y
324# CONFIG_PPC_INDIRECT_PCI is not set
325CONFIG_PCI=y
326CONFIG_PCI_DOMAINS=y
327CONFIG_PCI_SYSCALL=y
328# CONFIG_PCIEPORTBUS is not set
329CONFIG_ARCH_SUPPORTS_MSI=y
330CONFIG_PCI_MSI=y
331# CONFIG_PCI_LEGACY is not set
332# CONFIG_PCI_DEBUG is not set
333# CONFIG_PCI_STUB is not set
334# CONFIG_PCI_IOV is not set
335CONFIG_PCCARD=y
336# CONFIG_PCMCIA_DEBUG is not set
337CONFIG_PCMCIA=y
338CONFIG_PCMCIA_LOAD_CIS=y
339CONFIG_PCMCIA_IOCTL=y
340CONFIG_CARDBUS=y
341
342#
343# PC-card bridges
344#
345# CONFIG_YENTA is not set
346# CONFIG_PD6729 is not set
347# CONFIG_I82092 is not set
348CONFIG_HOTPLUG_PCI=m
349# CONFIG_HOTPLUG_PCI_FAKE is not set
350# CONFIG_HOTPLUG_PCI_CPCI is not set
351# CONFIG_HOTPLUG_PCI_SHPC is not set
352# CONFIG_HAS_RAPIDIO is not set
353# CONFIG_RELOCATABLE is not set
354CONFIG_PAGE_OFFSET=0xc000000000000000
355CONFIG_KERNEL_START=0xc000000000000000
356CONFIG_PHYSICAL_START=0x00000000
357CONFIG_NET=y
358CONFIG_COMPAT_NETLINK_MESSAGES=y
359
360#
361# Networking options
362#
363CONFIG_PACKET=y
364# CONFIG_PACKET_MMAP is not set
365CONFIG_UNIX=y
366CONFIG_XFRM=y
367CONFIG_XFRM_USER=m
368# CONFIG_XFRM_SUB_POLICY is not set
369# CONFIG_XFRM_MIGRATE is not set
370# CONFIG_XFRM_STATISTICS is not set
371CONFIG_XFRM_IPCOMP=m
372CONFIG_NET_KEY=m
373# CONFIG_NET_KEY_MIGRATE is not set
374CONFIG_INET=y
375CONFIG_IP_MULTICAST=y
376# CONFIG_IP_ADVANCED_ROUTER is not set
377CONFIG_IP_FIB_HASH=y
378CONFIG_IP_PNP=y
379CONFIG_IP_PNP_DHCP=y
380CONFIG_IP_PNP_BOOTP=y
381# CONFIG_IP_PNP_RARP is not set
382CONFIG_NET_IPIP=y
383# CONFIG_NET_IPGRE is not set
384# CONFIG_IP_MROUTE is not set
385# CONFIG_ARPD is not set
386CONFIG_SYN_COOKIES=y
387CONFIG_INET_AH=m
388CONFIG_INET_ESP=m
389CONFIG_INET_IPCOMP=m
390CONFIG_INET_XFRM_TUNNEL=m
391CONFIG_INET_TUNNEL=y
392CONFIG_INET_XFRM_MODE_TRANSPORT=y
393CONFIG_INET_XFRM_MODE_TUNNEL=y
394CONFIG_INET_XFRM_MODE_BEET=y
395CONFIG_INET_LRO=y
396CONFIG_INET_DIAG=y
397CONFIG_INET_TCP_DIAG=y
398# CONFIG_TCP_CONG_ADVANCED is not set
399CONFIG_TCP_CONG_CUBIC=y
400CONFIG_DEFAULT_TCP_CONG="cubic"
401# CONFIG_TCP_MD5SIG is not set
402# CONFIG_IPV6 is not set
403# CONFIG_NETWORK_SECMARK is not set
404CONFIG_NETFILTER=y
405# CONFIG_NETFILTER_DEBUG is not set
406CONFIG_NETFILTER_ADVANCED=y
407
408#
409# Core Netfilter Configuration
410#
411CONFIG_NETFILTER_NETLINK=m
412CONFIG_NETFILTER_NETLINK_QUEUE=m
413CONFIG_NETFILTER_NETLINK_LOG=m
414CONFIG_NF_CONNTRACK=m
415CONFIG_NF_CT_ACCT=y
416CONFIG_NF_CONNTRACK_MARK=y
417CONFIG_NF_CONNTRACK_EVENTS=y
418# CONFIG_NF_CT_PROTO_DCCP is not set
419CONFIG_NF_CT_PROTO_GRE=m
420CONFIG_NF_CT_PROTO_SCTP=m
421# CONFIG_NF_CT_PROTO_UDPLITE is not set
422CONFIG_NF_CONNTRACK_AMANDA=m
423CONFIG_NF_CONNTRACK_FTP=m
424CONFIG_NF_CONNTRACK_H323=m
425CONFIG_NF_CONNTRACK_IRC=m
426CONFIG_NF_CONNTRACK_NETBIOS_NS=m
427CONFIG_NF_CONNTRACK_PPTP=m
428# CONFIG_NF_CONNTRACK_SANE is not set
429CONFIG_NF_CONNTRACK_SIP=m
430CONFIG_NF_CONNTRACK_TFTP=m
431CONFIG_NF_CT_NETLINK=m
432CONFIG_NETFILTER_TPROXY=m
433CONFIG_NETFILTER_XTABLES=m
434CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
435CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
436CONFIG_NETFILTER_XT_TARGET_DSCP=m
437CONFIG_NETFILTER_XT_TARGET_HL=m
438CONFIG_NETFILTER_XT_TARGET_MARK=m
439CONFIG_NETFILTER_XT_TARGET_NFLOG=m
440CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
441CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
442CONFIG_NETFILTER_XT_TARGET_RATEEST=m
443CONFIG_NETFILTER_XT_TARGET_TPROXY=m
444CONFIG_NETFILTER_XT_TARGET_TRACE=m
445CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
446CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
447# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set
448CONFIG_NETFILTER_XT_MATCH_COMMENT=m
449CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
450CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
451CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
452CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
453CONFIG_NETFILTER_XT_MATCH_DCCP=m
454CONFIG_NETFILTER_XT_MATCH_DSCP=m
455CONFIG_NETFILTER_XT_MATCH_ESP=m
456CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
457CONFIG_NETFILTER_XT_MATCH_HELPER=m
458CONFIG_NETFILTER_XT_MATCH_HL=m
459CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
460CONFIG_NETFILTER_XT_MATCH_LENGTH=m
461CONFIG_NETFILTER_XT_MATCH_LIMIT=m
462CONFIG_NETFILTER_XT_MATCH_MAC=m
463CONFIG_NETFILTER_XT_MATCH_MARK=m
464CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
465CONFIG_NETFILTER_XT_MATCH_OWNER=m
466CONFIG_NETFILTER_XT_MATCH_POLICY=m
467CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
468CONFIG_NETFILTER_XT_MATCH_QUOTA=m
469CONFIG_NETFILTER_XT_MATCH_RATEEST=m
470CONFIG_NETFILTER_XT_MATCH_REALM=m
471CONFIG_NETFILTER_XT_MATCH_RECENT=m
472# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
473CONFIG_NETFILTER_XT_MATCH_SCTP=m
474CONFIG_NETFILTER_XT_MATCH_SOCKET=m
475CONFIG_NETFILTER_XT_MATCH_STATE=m
476CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
477CONFIG_NETFILTER_XT_MATCH_STRING=m
478CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
479# CONFIG_NETFILTER_XT_MATCH_TIME is not set
480CONFIG_NETFILTER_XT_MATCH_U32=m
481# CONFIG_NETFILTER_XT_MATCH_OSF is not set
482# CONFIG_IP_VS is not set
483
484#
485# IP: Netfilter Configuration
486#
487CONFIG_NF_DEFRAG_IPV4=m
488CONFIG_NF_CONNTRACK_IPV4=m
489CONFIG_NF_CONNTRACK_PROC_COMPAT=y
490CONFIG_IP_NF_QUEUE=m
491CONFIG_IP_NF_IPTABLES=m
492CONFIG_IP_NF_MATCH_ADDRTYPE=m
493CONFIG_IP_NF_MATCH_AH=m
494CONFIG_IP_NF_MATCH_ECN=m
495CONFIG_IP_NF_MATCH_TTL=m
496CONFIG_IP_NF_FILTER=m
497CONFIG_IP_NF_TARGET_REJECT=m
498CONFIG_IP_NF_TARGET_LOG=m
499CONFIG_IP_NF_TARGET_ULOG=m
500CONFIG_NF_NAT=m
501CONFIG_NF_NAT_NEEDED=y
502CONFIG_IP_NF_TARGET_MASQUERADE=m
503CONFIG_IP_NF_TARGET_NETMAP=m
504CONFIG_IP_NF_TARGET_REDIRECT=m
505CONFIG_NF_NAT_SNMP_BASIC=m
506CONFIG_NF_NAT_PROTO_GRE=m
507CONFIG_NF_NAT_PROTO_SCTP=m
508CONFIG_NF_NAT_FTP=m
509CONFIG_NF_NAT_IRC=m
510CONFIG_NF_NAT_TFTP=m
511CONFIG_NF_NAT_AMANDA=m
512CONFIG_NF_NAT_PPTP=m
513CONFIG_NF_NAT_H323=m
514CONFIG_NF_NAT_SIP=m
515CONFIG_IP_NF_MANGLE=m
516CONFIG_IP_NF_TARGET_CLUSTERIP=m
517CONFIG_IP_NF_TARGET_ECN=m
518CONFIG_IP_NF_TARGET_TTL=m
519CONFIG_IP_NF_RAW=m
520CONFIG_IP_NF_ARPTABLES=m
521CONFIG_IP_NF_ARPFILTER=m
522CONFIG_IP_NF_ARP_MANGLE=m
523# CONFIG_IP_DCCP is not set
524# CONFIG_IP_SCTP is not set
525# CONFIG_RDS is not set
526# CONFIG_TIPC is not set
527# CONFIG_ATM is not set
528# CONFIG_BRIDGE is not set
529# CONFIG_NET_DSA is not set
530# CONFIG_VLAN_8021Q is not set
531# CONFIG_DECNET is not set
532CONFIG_LLC=y
533# CONFIG_LLC2 is not set
534# CONFIG_IPX is not set
535# CONFIG_ATALK is not set
536# CONFIG_X25 is not set
537# CONFIG_LAPB is not set
538# CONFIG_ECONET is not set
539# CONFIG_WAN_ROUTER is not set
540# CONFIG_PHONET is not set
541# CONFIG_IEEE802154 is not set
542# CONFIG_NET_SCHED is not set
543CONFIG_NET_CLS_ROUTE=y
544# CONFIG_DCB is not set
545
546#
547# Network testing
548#
549# CONFIG_NET_PKTGEN is not set
550# CONFIG_NET_DROP_MONITOR is not set
551# CONFIG_HAMRADIO is not set
552# CONFIG_CAN is not set
553# CONFIG_IRDA is not set
554# CONFIG_BT is not set
555# CONFIG_AF_RXRPC is not set
556CONFIG_WIRELESS=y
557# CONFIG_CFG80211 is not set
558CONFIG_CFG80211_DEFAULT_PS_VALUE=0
559CONFIG_WIRELESS_OLD_REGULATORY=y
560CONFIG_WIRELESS_EXT=y
561CONFIG_WIRELESS_EXT_SYSFS=y
562# CONFIG_LIB80211 is not set
563
564#
565# CFG80211 needs to be enabled for MAC80211
566#
567# CONFIG_WIMAX is not set
568# CONFIG_RFKILL is not set
569# CONFIG_NET_9P is not set
570
571#
572# Device Drivers
573#
574
575#
576# Generic Driver Options
577#
578CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
579# CONFIG_DEVTMPFS is not set
580CONFIG_STANDALONE=y
581CONFIG_PREVENT_FIRMWARE_BUILD=y
582CONFIG_FW_LOADER=y
583CONFIG_FIRMWARE_IN_KERNEL=y
584CONFIG_EXTRA_FIRMWARE=""
585# CONFIG_DEBUG_DRIVER is not set
586# CONFIG_DEBUG_DEVRES is not set
587# CONFIG_SYS_HYPERVISOR is not set
588# CONFIG_CONNECTOR is not set
589# CONFIG_MTD is not set
590CONFIG_OF_DEVICE=y
591CONFIG_OF_I2C=y
592CONFIG_OF_MDIO=y
593# CONFIG_PARPORT is not set
594CONFIG_BLK_DEV=y
595CONFIG_BLK_DEV_FD=y
596# CONFIG_BLK_CPQ_CISS_DA is not set
597# CONFIG_BLK_DEV_DAC960 is not set
598# CONFIG_BLK_DEV_UMEM is not set
599# CONFIG_BLK_DEV_COW_COMMON is not set
600CONFIG_BLK_DEV_LOOP=y
601# CONFIG_BLK_DEV_CRYPTOLOOP is not set
602CONFIG_BLK_DEV_NBD=m
603# CONFIG_BLK_DEV_SX8 is not set
604# CONFIG_BLK_DEV_UB is not set
605CONFIG_BLK_DEV_RAM=y
606CONFIG_BLK_DEV_RAM_COUNT=16
607CONFIG_BLK_DEV_RAM_SIZE=65536
608# CONFIG_BLK_DEV_XIP is not set
609# CONFIG_CDROM_PKTCDVD is not set
610# CONFIG_ATA_OVER_ETH is not set
611# CONFIG_BLK_DEV_HD is not set
612CONFIG_MISC_DEVICES=y
613# CONFIG_PHANTOM is not set
614# CONFIG_SGI_IOC4 is not set
615# CONFIG_TIFM_CORE is not set
616# CONFIG_ICS932S401 is not set
617# CONFIG_ENCLOSURE_SERVICES is not set
618# CONFIG_HP_ILO is not set
619# CONFIG_ISL29003 is not set
620# CONFIG_C2PORT is not set
621
622#
623# EEPROM support
624#
625# CONFIG_EEPROM_AT24 is not set
626# CONFIG_EEPROM_LEGACY is not set
627# CONFIG_EEPROM_MAX6875 is not set
628# CONFIG_EEPROM_93CX6 is not set
629# CONFIG_CB710_CORE is not set
630CONFIG_HAVE_IDE=y
631CONFIG_IDE=y
632
633#
634# Please see Documentation/ide/ide.txt for help/info on IDE drives
635#
636CONFIG_IDE_XFER_MODE=y
637CONFIG_IDE_TIMINGS=y
638CONFIG_IDE_ATAPI=y
639# CONFIG_BLK_DEV_IDE_SATA is not set
640CONFIG_IDE_GD=y
641CONFIG_IDE_GD_ATA=y
642# CONFIG_IDE_GD_ATAPI is not set
643# CONFIG_BLK_DEV_IDECS is not set
644# CONFIG_BLK_DEV_DELKIN is not set
645CONFIG_BLK_DEV_IDECD=y
646CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
647# CONFIG_BLK_DEV_IDETAPE is not set
648# CONFIG_IDE_TASK_IOCTL is not set
649CONFIG_IDE_PROC_FS=y
650
651#
652# IDE chipset support/bugfixes
653#
654# CONFIG_BLK_DEV_PLATFORM is not set
655CONFIG_BLK_DEV_IDEDMA_SFF=y
656
657#
658# PCI IDE chipsets support
659#
660CONFIG_BLK_DEV_IDEPCI=y
661CONFIG_IDEPCI_PCIBUS_ORDER=y
662# CONFIG_BLK_DEV_OFFBOARD is not set
663CONFIG_BLK_DEV_GENERIC=y
664# CONFIG_BLK_DEV_OPTI621 is not set
665CONFIG_BLK_DEV_IDEDMA_PCI=y
666# CONFIG_BLK_DEV_AEC62XX is not set
667# CONFIG_BLK_DEV_ALI15X3 is not set
668CONFIG_BLK_DEV_AMD74XX=y
669# CONFIG_BLK_DEV_CMD64X is not set
670# CONFIG_BLK_DEV_TRIFLEX is not set
671# CONFIG_BLK_DEV_CS5520 is not set
672# CONFIG_BLK_DEV_CS5530 is not set
673# CONFIG_BLK_DEV_HPT366 is not set
674# CONFIG_BLK_DEV_JMICRON is not set
675# CONFIG_BLK_DEV_SC1200 is not set
676# CONFIG_BLK_DEV_PIIX is not set
677# CONFIG_BLK_DEV_IT8172 is not set
678# CONFIG_BLK_DEV_IT8213 is not set
679# CONFIG_BLK_DEV_IT821X is not set
680# CONFIG_BLK_DEV_NS87415 is not set
681# CONFIG_BLK_DEV_PDC202XX_OLD is not set
682# CONFIG_BLK_DEV_PDC202XX_NEW is not set
683# CONFIG_BLK_DEV_SVWKS is not set
684# CONFIG_BLK_DEV_SIIMAGE is not set
685# CONFIG_BLK_DEV_SL82C105 is not set
686# CONFIG_BLK_DEV_SLC90E66 is not set
687# CONFIG_BLK_DEV_TRM290 is not set
688# CONFIG_BLK_DEV_VIA82CXXX is not set
689# CONFIG_BLK_DEV_TC86C001 is not set
690CONFIG_BLK_DEV_IDEDMA=y
691
692#
693# SCSI device support
694#
695# CONFIG_RAID_ATTRS is not set
696CONFIG_SCSI=y
697CONFIG_SCSI_DMA=y
698# CONFIG_SCSI_TGT is not set
699CONFIG_SCSI_NETLINK=y
700CONFIG_SCSI_PROC_FS=y
701
702#
703# SCSI support type (disk, tape, CD-ROM)
704#
705CONFIG_BLK_DEV_SD=y
706CONFIG_CHR_DEV_ST=y
707# CONFIG_CHR_DEV_OSST is not set
708CONFIG_BLK_DEV_SR=y
709CONFIG_BLK_DEV_SR_VENDOR=y
710CONFIG_CHR_DEV_SG=y
711# CONFIG_CHR_DEV_SCH is not set
712CONFIG_SCSI_MULTI_LUN=y
713CONFIG_SCSI_CONSTANTS=y
714# CONFIG_SCSI_LOGGING is not set
715# CONFIG_SCSI_SCAN_ASYNC is not set
716CONFIG_SCSI_WAIT_SCAN=m
717
718#
719# SCSI Transports
720#
721CONFIG_SCSI_SPI_ATTRS=y
722CONFIG_SCSI_FC_ATTRS=y
723CONFIG_SCSI_ISCSI_ATTRS=m
724# CONFIG_SCSI_SAS_ATTRS is not set
725# CONFIG_SCSI_SAS_LIBSAS is not set
726CONFIG_SCSI_SRP_ATTRS=y
727CONFIG_SCSI_LOWLEVEL=y
728# CONFIG_ISCSI_TCP is not set
729# CONFIG_SCSI_CXGB3_ISCSI is not set
730# CONFIG_SCSI_BNX2_ISCSI is not set
731# CONFIG_BE2ISCSI is not set
732# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
733# CONFIG_SCSI_3W_9XXX is not set
734# CONFIG_SCSI_ACARD is not set
735# CONFIG_SCSI_AACRAID is not set
736# CONFIG_SCSI_AIC7XXX is not set
737# CONFIG_SCSI_AIC7XXX_OLD is not set
738# CONFIG_SCSI_AIC79XX is not set
739# CONFIG_SCSI_AIC94XX is not set
740# CONFIG_SCSI_MVSAS is not set
741# CONFIG_SCSI_ARCMSR is not set
742# CONFIG_MEGARAID_NEWGEN is not set
743# CONFIG_MEGARAID_LEGACY is not set
744# CONFIG_MEGARAID_SAS is not set
745# CONFIG_SCSI_MPT2SAS is not set
746# CONFIG_SCSI_HPTIOP is not set
747# CONFIG_LIBFC is not set
748# CONFIG_LIBFCOE is not set
749# CONFIG_FCOE is not set
750# CONFIG_SCSI_DMX3191D is not set
751# CONFIG_SCSI_EATA is not set
752# CONFIG_SCSI_FUTURE_DOMAIN is not set
753# CONFIG_SCSI_GDTH is not set
754# CONFIG_SCSI_IPS is not set
755# CONFIG_SCSI_INITIO is not set
756# CONFIG_SCSI_INIA100 is not set
757# CONFIG_SCSI_STEX is not set
758CONFIG_SCSI_SYM53C8XX_2=y
759CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
760CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
761CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
762CONFIG_SCSI_SYM53C8XX_MMIO=y
763CONFIG_SCSI_IPR=y
764CONFIG_SCSI_IPR_TRACE=y
765CONFIG_SCSI_IPR_DUMP=y
766# CONFIG_SCSI_QLOGIC_1280 is not set
767# CONFIG_SCSI_QLA_FC is not set
768# CONFIG_SCSI_QLA_ISCSI is not set
769CONFIG_SCSI_LPFC=m
770# CONFIG_SCSI_LPFC_DEBUG_FS is not set
771# CONFIG_SCSI_DC395x is not set
772# CONFIG_SCSI_DC390T is not set
773CONFIG_SCSI_DEBUG=m
774# CONFIG_SCSI_PMCRAID is not set
775# CONFIG_SCSI_SRP is not set
776# CONFIG_SCSI_BFA_FC is not set
777# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
778# CONFIG_SCSI_DH is not set
779# CONFIG_SCSI_OSD_INITIATOR is not set
780CONFIG_ATA=y
781# CONFIG_ATA_NONSTANDARD is not set
782CONFIG_ATA_VERBOSE_ERROR=y
783CONFIG_SATA_PMP=y
784# CONFIG_SATA_AHCI is not set
785CONFIG_SATA_SIL24=y
786CONFIG_ATA_SFF=y
787CONFIG_SATA_SVW=y
788# CONFIG_ATA_PIIX is not set
789# CONFIG_SATA_MV is not set
790# CONFIG_SATA_NV is not set
791# CONFIG_PDC_ADMA is not set
792# CONFIG_SATA_QSTOR is not set
793# CONFIG_SATA_PROMISE is not set
794# CONFIG_SATA_SX4 is not set
795# CONFIG_SATA_SIL is not set
796# CONFIG_SATA_SIS is not set
797# CONFIG_SATA_ULI is not set
798# CONFIG_SATA_VIA is not set
799# CONFIG_SATA_VITESSE is not set
800# CONFIG_SATA_INIC162X is not set
801# CONFIG_PATA_ALI is not set
802# CONFIG_PATA_AMD is not set
803# CONFIG_PATA_ARTOP is not set
804# CONFIG_PATA_ATP867X is not set
805# CONFIG_PATA_ATIIXP is not set
806# CONFIG_PATA_CMD640_PCI is not set
807# CONFIG_PATA_CMD64X is not set
808# CONFIG_PATA_CS5520 is not set
809# CONFIG_PATA_CS5530 is not set
810# CONFIG_PATA_CYPRESS is not set
811# CONFIG_PATA_EFAR is not set
812# CONFIG_ATA_GENERIC is not set
813# CONFIG_PATA_HPT366 is not set
814# CONFIG_PATA_HPT37X is not set
815# CONFIG_PATA_HPT3X2N is not set
816# CONFIG_PATA_HPT3X3 is not set
817# CONFIG_PATA_IT821X is not set
818# CONFIG_PATA_IT8213 is not set
819# CONFIG_PATA_JMICRON is not set
820# CONFIG_PATA_TRIFLEX is not set
821# CONFIG_PATA_MARVELL is not set
822# CONFIG_PATA_MPIIX is not set
823# CONFIG_PATA_OLDPIIX is not set
824# CONFIG_PATA_NETCELL is not set
825# CONFIG_PATA_NINJA32 is not set
826# CONFIG_PATA_NS87410 is not set
827# CONFIG_PATA_NS87415 is not set
828# CONFIG_PATA_OPTI is not set
829# CONFIG_PATA_OPTIDMA is not set
830# CONFIG_PATA_PCMCIA is not set
831# CONFIG_PATA_PDC_OLD is not set
832# CONFIG_PATA_RADISYS is not set
833# CONFIG_PATA_RDC is not set
834# CONFIG_PATA_RZ1000 is not set
835# CONFIG_PATA_SC1200 is not set
836# CONFIG_PATA_SERVERWORKS is not set
837# CONFIG_PATA_PDC2027X is not set
838# CONFIG_PATA_SIL680 is not set
839# CONFIG_PATA_SIS is not set
840# CONFIG_PATA_VIA is not set
841# CONFIG_PATA_WINBOND is not set
842# CONFIG_PATA_PLATFORM is not set
843# CONFIG_PATA_SCH is not set
844CONFIG_MD=y
845CONFIG_BLK_DEV_MD=y
846CONFIG_MD_AUTODETECT=y
847CONFIG_MD_LINEAR=y
848CONFIG_MD_RAID0=y
849CONFIG_MD_RAID1=y
850CONFIG_MD_RAID10=y
851CONFIG_MD_RAID456=y
852# CONFIG_MULTICORE_RAID456 is not set
853CONFIG_MD_RAID6_PQ=y
854# CONFIG_ASYNC_RAID6_TEST is not set
855CONFIG_MD_MULTIPATH=m
856CONFIG_MD_FAULTY=m
857CONFIG_BLK_DEV_DM=y
858# CONFIG_DM_DEBUG is not set
859CONFIG_DM_CRYPT=m
860CONFIG_DM_SNAPSHOT=m
861CONFIG_DM_MIRROR=m
862# CONFIG_DM_LOG_USERSPACE is not set
863CONFIG_DM_ZERO=m
864CONFIG_DM_MULTIPATH=m
865# CONFIG_DM_MULTIPATH_QL is not set
866# CONFIG_DM_MULTIPATH_ST is not set
867# CONFIG_DM_DELAY is not set
868# CONFIG_DM_UEVENT is not set
869# CONFIG_FUSION is not set
870
871#
872# IEEE 1394 (FireWire) support
873#
874
875#
876# You can enable one or both FireWire driver stacks.
877#
878
879#
880# See the help texts for more information.
881#
882# CONFIG_FIREWIRE is not set
883CONFIG_IEEE1394=y
884CONFIG_IEEE1394_OHCI1394=y
885# CONFIG_IEEE1394_PCILYNX is not set
886CONFIG_IEEE1394_SBP2=m
887CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
888CONFIG_IEEE1394_ETH1394=m
889CONFIG_IEEE1394_RAWIO=y
890CONFIG_IEEE1394_VIDEO1394=m
891CONFIG_IEEE1394_DV1394=m
892# CONFIG_IEEE1394_VERBOSEDEBUG is not set
893# CONFIG_I2O is not set
894CONFIG_MACINTOSH_DRIVERS=y
895# CONFIG_MAC_EMUMOUSEBTN is not set
896CONFIG_WINDFARM=y
897CONFIG_NETDEVICES=y
898CONFIG_DUMMY=m
899CONFIG_BONDING=m
900# CONFIG_MACVLAN is not set
901# CONFIG_EQUALIZER is not set
902CONFIG_TUN=m
903# CONFIG_VETH is not set
904# CONFIG_ARCNET is not set
905CONFIG_PHYLIB=y
906
907#
908# MII PHY device drivers
909#
910CONFIG_MARVELL_PHY=y
911# CONFIG_DAVICOM_PHY is not set
912# CONFIG_QSEMI_PHY is not set
913# CONFIG_LXT_PHY is not set
914# CONFIG_CICADA_PHY is not set
915# CONFIG_VITESSE_PHY is not set
916# CONFIG_SMSC_PHY is not set
917CONFIG_BROADCOM_PHY=m
918# CONFIG_ICPLUS_PHY is not set
919# CONFIG_REALTEK_PHY is not set
920# CONFIG_NATIONAL_PHY is not set
921# CONFIG_STE10XP is not set
922# CONFIG_LSI_ET1011C_PHY is not set
923# CONFIG_FIXED_PHY is not set
924# CONFIG_MDIO_BITBANG is not set
925CONFIG_NET_ETHERNET=y
926CONFIG_MII=y
927# CONFIG_HAPPYMEAL is not set
928CONFIG_SUNGEM=y
929# CONFIG_CASSINI is not set
930CONFIG_NET_VENDOR_3COM=y
931CONFIG_VORTEX=y
932# CONFIG_TYPHOON is not set
933# CONFIG_ETHOC is not set
934# CONFIG_DNET is not set
935# CONFIG_NET_TULIP is not set
936# CONFIG_HP100 is not set
937# CONFIG_IBM_NEW_EMAC_ZMII is not set
938# CONFIG_IBM_NEW_EMAC_RGMII is not set
939# CONFIG_IBM_NEW_EMAC_TAH is not set
940# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
941# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
942# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
943# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
944CONFIG_NET_PCI=y
945CONFIG_PCNET32=y
946# CONFIG_AMD8111_ETH is not set
947# CONFIG_ADAPTEC_STARFIRE is not set
948# CONFIG_B44 is not set
949# CONFIG_FORCEDETH is not set
950CONFIG_E100=y
951# CONFIG_FEALNX is not set
952# CONFIG_NATSEMI is not set
953# CONFIG_NE2K_PCI is not set
954# CONFIG_8139CP is not set
955# CONFIG_8139TOO is not set
956# CONFIG_R6040 is not set
957# CONFIG_SIS900 is not set
958# CONFIG_EPIC100 is not set
959# CONFIG_SMSC9420 is not set
960# CONFIG_SUNDANCE is not set
961# CONFIG_TLAN is not set
962# CONFIG_KS8842 is not set
963# CONFIG_KS8851_MLL is not set
964# CONFIG_VIA_RHINE is not set
965# CONFIG_SC92031 is not set
966# CONFIG_ATL2 is not set
967CONFIG_NETDEV_1000=y
968CONFIG_ACENIC=y
969CONFIG_ACENIC_OMIT_TIGON_I=y
970# CONFIG_DL2K is not set
971CONFIG_E1000=y
972# CONFIG_E1000E is not set
973# CONFIG_IP1000 is not set
974# CONFIG_IGB is not set
975# CONFIG_IGBVF is not set
976# CONFIG_NS83820 is not set
977# CONFIG_HAMACHI is not set
978# CONFIG_YELLOWFIN is not set
979# CONFIG_R8169 is not set
980# CONFIG_SIS190 is not set
981# CONFIG_SKGE is not set
982# CONFIG_SKY2 is not set
983# CONFIG_VIA_VELOCITY is not set
984CONFIG_TIGON3=y
985# CONFIG_BNX2 is not set
986# CONFIG_CNIC is not set
987# CONFIG_QLA3XXX is not set
988# CONFIG_ATL1 is not set
989# CONFIG_ATL1E is not set
990# CONFIG_ATL1C is not set
991# CONFIG_JME is not set
992CONFIG_NETDEV_10000=y
993# CONFIG_CHELSIO_T1 is not set
994CONFIG_CHELSIO_T3_DEPENDS=y
995# CONFIG_CHELSIO_T3 is not set
996# CONFIG_ENIC is not set
997# CONFIG_IXGBE is not set
998CONFIG_IXGB=m
999# CONFIG_S2IO is not set
1000# CONFIG_VXGE is not set
1001# CONFIG_MYRI10GE is not set
1002# CONFIG_NETXEN_NIC is not set
1003# CONFIG_NIU is not set
1004# CONFIG_MLX4_EN is not set
1005# CONFIG_MLX4_CORE is not set
1006# CONFIG_TEHUTI is not set
1007# CONFIG_BNX2X is not set
1008# CONFIG_QLGE is not set
1009# CONFIG_SFC is not set
1010# CONFIG_BE2NET is not set
1011CONFIG_TR=y
1012CONFIG_IBMOL=y
1013# CONFIG_3C359 is not set
1014# CONFIG_TMS380TR is not set
1015CONFIG_WLAN=y
1016# CONFIG_WLAN_PRE80211 is not set
1017# CONFIG_WLAN_80211 is not set
1018
1019#
1020# Enable WiMAX (Networking options) to see the WiMAX drivers
1021#
1022
1023#
1024# USB Network Adapters
1025#
1026# CONFIG_USB_CATC is not set
1027# CONFIG_USB_KAWETH is not set
1028# CONFIG_USB_PEGASUS is not set
1029# CONFIG_USB_RTL8150 is not set
1030# CONFIG_USB_USBNET is not set
1031# CONFIG_NET_PCMCIA is not set
1032# CONFIG_WAN is not set
1033# CONFIG_FDDI is not set
1034# CONFIG_HIPPI is not set
1035CONFIG_PPP=m
1036# CONFIG_PPP_MULTILINK is not set
1037# CONFIG_PPP_FILTER is not set
1038CONFIG_PPP_ASYNC=m
1039CONFIG_PPP_SYNC_TTY=m
1040CONFIG_PPP_DEFLATE=m
1041CONFIG_PPP_BSDCOMP=m
1042# CONFIG_PPP_MPPE is not set
1043CONFIG_PPPOE=m
1044# CONFIG_PPPOL2TP is not set
1045# CONFIG_SLIP is not set
1046CONFIG_SLHC=m
1047# CONFIG_NET_FC is not set
1048CONFIG_NETCONSOLE=y
1049# CONFIG_NETCONSOLE_DYNAMIC is not set
1050CONFIG_NETPOLL=y
1051CONFIG_NETPOLL_TRAP=y
1052CONFIG_NET_POLL_CONTROLLER=y
1053# CONFIG_ISDN is not set
1054# CONFIG_PHONE is not set
1055
1056#
1057# Input device support
1058#
1059CONFIG_INPUT=y
1060# CONFIG_INPUT_FF_MEMLESS is not set
1061# CONFIG_INPUT_POLLDEV is not set
1062
1063#
1064# Userland interfaces
1065#
1066CONFIG_INPUT_MOUSEDEV=y
1067# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
1068CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
1069CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
1070# CONFIG_INPUT_JOYDEV is not set
1071CONFIG_INPUT_EVDEV=m
1072# CONFIG_INPUT_EVBUG is not set
1073
1074#
1075# Input Device Drivers
1076#
1077CONFIG_INPUT_KEYBOARD=y
1078# CONFIG_KEYBOARD_ADP5588 is not set
1079CONFIG_KEYBOARD_ATKBD=y
1080# CONFIG_QT2160 is not set
1081# CONFIG_KEYBOARD_LKKBD is not set
1082# CONFIG_KEYBOARD_MAX7359 is not set
1083# CONFIG_KEYBOARD_NEWTON is not set
1084# CONFIG_KEYBOARD_OPENCORES is not set
1085# CONFIG_KEYBOARD_STOWAWAY is not set
1086# CONFIG_KEYBOARD_SUNKBD is not set
1087# CONFIG_KEYBOARD_XTKBD is not set
1088CONFIG_INPUT_MOUSE=y
1089CONFIG_MOUSE_PS2=y
1090CONFIG_MOUSE_PS2_ALPS=y
1091CONFIG_MOUSE_PS2_LOGIPS2PP=y
1092CONFIG_MOUSE_PS2_SYNAPTICS=y
1093CONFIG_MOUSE_PS2_TRACKPOINT=y
1094# CONFIG_MOUSE_PS2_ELANTECH is not set
1095# CONFIG_MOUSE_PS2_SENTELIC is not set
1096# CONFIG_MOUSE_PS2_TOUCHKIT is not set
1097# CONFIG_MOUSE_SERIAL is not set
1098# CONFIG_MOUSE_APPLETOUCH is not set
1099# CONFIG_MOUSE_BCM5974 is not set
1100# CONFIG_MOUSE_VSXXXAA is not set
1101# CONFIG_MOUSE_SYNAPTICS_I2C is not set
1102# CONFIG_INPUT_JOYSTICK is not set
1103# CONFIG_INPUT_TABLET is not set
1104# CONFIG_INPUT_TOUCHSCREEN is not set
1105CONFIG_INPUT_MISC=y
1106# CONFIG_INPUT_ATI_REMOTE is not set
1107# CONFIG_INPUT_ATI_REMOTE2 is not set
1108# CONFIG_INPUT_KEYSPAN_REMOTE is not set
1109# CONFIG_INPUT_POWERMATE is not set
1110# CONFIG_INPUT_YEALINK is not set
1111# CONFIG_INPUT_CM109 is not set
1112# CONFIG_INPUT_UINPUT is not set
1113
1114#
1115# Hardware I/O ports
1116#
1117CONFIG_SERIO=y
1118CONFIG_SERIO_I8042=y
1119# CONFIG_SERIO_SERPORT is not set
1120# CONFIG_SERIO_PCIPS2 is not set
1121CONFIG_SERIO_LIBPS2=y
1122# CONFIG_SERIO_RAW is not set
1123# CONFIG_SERIO_XILINX_XPS_PS2 is not set
1124# CONFIG_GAMEPORT is not set
1125
1126#
1127# Character devices
1128#
1129CONFIG_VT=y
1130CONFIG_CONSOLE_TRANSLATIONS=y
1131CONFIG_VT_CONSOLE=y
1132CONFIG_HW_CONSOLE=y
1133CONFIG_VT_HW_CONSOLE_BINDING=y
1134CONFIG_DEVKMEM=y
1135# CONFIG_SERIAL_NONSTANDARD is not set
1136# CONFIG_NOZOMI is not set
1137
1138#
1139# Serial drivers
1140#
1141CONFIG_SERIAL_8250=y
1142CONFIG_SERIAL_8250_CONSOLE=y
1143CONFIG_SERIAL_8250_PCI=y
1144# CONFIG_SERIAL_8250_CS is not set
1145CONFIG_SERIAL_8250_NR_UARTS=4
1146CONFIG_SERIAL_8250_RUNTIME_UARTS=4
1147# CONFIG_SERIAL_8250_EXTENDED is not set
1148
1149#
1150# Non-8250 serial port support
1151#
1152CONFIG_SERIAL_CORE=y
1153CONFIG_SERIAL_CORE_CONSOLE=y
1154# CONFIG_SERIAL_JSM is not set
1155# CONFIG_SERIAL_OF_PLATFORM is not set
1156CONFIG_UNIX98_PTYS=y
1157# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
1158CONFIG_LEGACY_PTYS=y
1159CONFIG_LEGACY_PTY_COUNT=256
1160# CONFIG_HVC_UDBG is not set
1161# CONFIG_IPMI_HANDLER is not set
1162# CONFIG_HW_RANDOM is not set
1163# CONFIG_R3964 is not set
1164# CONFIG_APPLICOM is not set
1165
1166#
1167# PCMCIA character devices
1168#
1169# CONFIG_SYNCLINK_CS is not set
1170# CONFIG_CARDMAN_4000 is not set
1171# CONFIG_CARDMAN_4040 is not set
1172# CONFIG_IPWIRELESS is not set
1173CONFIG_RAW_DRIVER=y
1174CONFIG_MAX_RAW_DEVS=256
1175# CONFIG_HANGCHECK_TIMER is not set
1176# CONFIG_TCG_TPM is not set
1177CONFIG_DEVPORT=y
1178CONFIG_I2C=y
1179CONFIG_I2C_BOARDINFO=y
1180CONFIG_I2C_COMPAT=y
1181CONFIG_I2C_CHARDEV=y
1182CONFIG_I2C_HELPER_AUTO=y
1183CONFIG_I2C_ALGOBIT=y
1184
1185#
1186# I2C Hardware Bus support
1187#
1188
1189#
1190# PC SMBus host controller drivers
1191#
1192# CONFIG_I2C_ALI1535 is not set
1193# CONFIG_I2C_ALI1563 is not set
1194# CONFIG_I2C_ALI15X3 is not set
1195# CONFIG_I2C_AMD756 is not set
1196CONFIG_I2C_AMD8111=y
1197# CONFIG_I2C_I801 is not set
1198# CONFIG_I2C_ISCH is not set
1199# CONFIG_I2C_PIIX4 is not set
1200# CONFIG_I2C_NFORCE2 is not set
1201# CONFIG_I2C_SIS5595 is not set
1202# CONFIG_I2C_SIS630 is not set
1203# CONFIG_I2C_SIS96X is not set
1204# CONFIG_I2C_VIA is not set
1205# CONFIG_I2C_VIAPRO is not set
1206
1207#
1208# I2C system bus drivers (mostly embedded / system-on-chip)
1209#
1210# CONFIG_I2C_OCORES is not set
1211# CONFIG_I2C_SIMTEC is not set
1212
1213#
1214# External I2C/SMBus adapter drivers
1215#
1216# CONFIG_I2C_PARPORT_LIGHT is not set
1217# CONFIG_I2C_TAOS_EVM is not set
1218# CONFIG_I2C_TINY_USB is not set
1219
1220#
1221# Graphics adapter I2C/DDC channel drivers
1222#
1223# CONFIG_I2C_VOODOO3 is not set
1224
1225#
1226# Other I2C/SMBus bus drivers
1227#
1228# CONFIG_I2C_PCA_PLATFORM is not set
1229# CONFIG_I2C_STUB is not set
1230
1231#
1232# Miscellaneous I2C Chip support
1233#
1234# CONFIG_DS1682 is not set
1235# CONFIG_SENSORS_TSL2550 is not set
1236# CONFIG_I2C_DEBUG_CORE is not set
1237# CONFIG_I2C_DEBUG_ALGO is not set
1238# CONFIG_I2C_DEBUG_BUS is not set
1239# CONFIG_I2C_DEBUG_CHIP is not set
1240# CONFIG_SPI is not set
1241
1242#
1243# PPS support
1244#
1245# CONFIG_PPS is not set
1246CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
1247# CONFIG_GPIOLIB is not set
1248# CONFIG_W1 is not set
1249# CONFIG_POWER_SUPPLY is not set
1250# CONFIG_HWMON is not set
1251# CONFIG_THERMAL is not set
1252# CONFIG_WATCHDOG is not set
1253CONFIG_SSB_POSSIBLE=y
1254
1255#
1256# Sonics Silicon Backplane
1257#
1258# CONFIG_SSB is not set
1259
1260#
1261# Multifunction device drivers
1262#
1263# CONFIG_MFD_CORE is not set
1264# CONFIG_MFD_SM501 is not set
1265# CONFIG_HTC_PASIC3 is not set
1266# CONFIG_TWL4030_CORE is not set
1267# CONFIG_MFD_TMIO is not set
1268# CONFIG_PMIC_DA903X is not set
1269# CONFIG_MFD_WM8400 is not set
1270# CONFIG_MFD_WM831X is not set
1271# CONFIG_MFD_WM8350_I2C is not set
1272# CONFIG_MFD_PCF50633 is not set
1273# CONFIG_AB3100_CORE is not set
1274# CONFIG_REGULATOR is not set
1275# CONFIG_MEDIA_SUPPORT is not set
1276
1277#
1278# Graphics support
1279#
1280# CONFIG_AGP is not set
1281CONFIG_VGA_ARB=y
1282# CONFIG_DRM is not set
1283# CONFIG_VGASTATE is not set
1284CONFIG_VIDEO_OUTPUT_CONTROL=m
1285CONFIG_FB=y
1286CONFIG_FIRMWARE_EDID=y
1287CONFIG_FB_DDC=y
1288# CONFIG_FB_BOOT_VESA_SUPPORT is not set
1289CONFIG_FB_CFB_FILLRECT=y
1290CONFIG_FB_CFB_COPYAREA=y
1291CONFIG_FB_CFB_IMAGEBLIT=y
1292# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
1293# CONFIG_FB_SYS_FILLRECT is not set
1294# CONFIG_FB_SYS_COPYAREA is not set
1295# CONFIG_FB_SYS_IMAGEBLIT is not set
1296# CONFIG_FB_FOREIGN_ENDIAN is not set
1297# CONFIG_FB_SYS_FOPS is not set
1298# CONFIG_FB_SVGALIB is not set
1299CONFIG_FB_MACMODES=y
1300CONFIG_FB_BACKLIGHT=y
1301CONFIG_FB_MODE_HELPERS=y
1302CONFIG_FB_TILEBLITTING=y
1303
1304#
1305# Frame buffer hardware drivers
1306#
1307# CONFIG_FB_CIRRUS is not set
1308# CONFIG_FB_PM2 is not set
1309# CONFIG_FB_CYBER2000 is not set
1310CONFIG_FB_OF=y
1311# CONFIG_FB_ASILIANT is not set
1312# CONFIG_FB_IMSTT is not set
1313# CONFIG_FB_VGA16 is not set
1314# CONFIG_FB_S1D13XXX is not set
1315# CONFIG_FB_NVIDIA is not set
1316# CONFIG_FB_RIVA is not set
1317CONFIG_FB_MATROX=y
1318CONFIG_FB_MATROX_MILLENIUM=y
1319CONFIG_FB_MATROX_MYSTIQUE=y
1320CONFIG_FB_MATROX_G=y
1321CONFIG_FB_MATROX_I2C=m
1322CONFIG_FB_MATROX_MAVEN=m
1323CONFIG_FB_RADEON=y
1324CONFIG_FB_RADEON_I2C=y
1325CONFIG_FB_RADEON_BACKLIGHT=y
1326# CONFIG_FB_RADEON_DEBUG is not set
1327# CONFIG_FB_ATY128 is not set
1328# CONFIG_FB_ATY is not set
1329# CONFIG_FB_S3 is not set
1330# CONFIG_FB_SAVAGE is not set
1331# CONFIG_FB_SIS is not set
1332# CONFIG_FB_VIA is not set
1333# CONFIG_FB_NEOMAGIC is not set
1334# CONFIG_FB_KYRO is not set
1335# CONFIG_FB_3DFX is not set
1336# CONFIG_FB_VOODOO1 is not set
1337# CONFIG_FB_VT8623 is not set
1338# CONFIG_FB_TRIDENT is not set
1339# CONFIG_FB_ARK is not set
1340# CONFIG_FB_PM3 is not set
1341# CONFIG_FB_CARMINE is not set
1342CONFIG_FB_IBM_GXT4500=y
1343# CONFIG_FB_VIRTUAL is not set
1344# CONFIG_FB_METRONOME is not set
1345# CONFIG_FB_MB862XX is not set
1346# CONFIG_FB_BROADSHEET is not set
1347CONFIG_BACKLIGHT_LCD_SUPPORT=y
1348CONFIG_LCD_CLASS_DEVICE=y
1349# CONFIG_LCD_ILI9320 is not set
1350# CONFIG_LCD_PLATFORM is not set
1351CONFIG_BACKLIGHT_CLASS_DEVICE=y
1352CONFIG_BACKLIGHT_GENERIC=y
1353
1354#
1355# Display device support
1356#
1357CONFIG_DISPLAY_SUPPORT=y
1358
1359#
1360# Display hardware drivers
1361#
1362
1363#
1364# Console display driver support
1365#
1366# CONFIG_VGA_CONSOLE is not set
1367CONFIG_DUMMY_CONSOLE=y
1368CONFIG_FRAMEBUFFER_CONSOLE=y
1369# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
1370# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
1371# CONFIG_FONTS is not set
1372CONFIG_FONT_8x8=y
1373CONFIG_FONT_8x16=y
1374CONFIG_LOGO=y
1375CONFIG_LOGO_LINUX_MONO=y
1376CONFIG_LOGO_LINUX_VGA16=y
1377CONFIG_LOGO_LINUX_CLUT224=y
1378CONFIG_SOUND=m
1379CONFIG_SOUND_OSS_CORE=y
1380CONFIG_SOUND_OSS_CORE_PRECLAIM=y
1381CONFIG_SND=m
1382CONFIG_SND_TIMER=m
1383CONFIG_SND_PCM=m
1384CONFIG_SND_SEQUENCER=m
1385CONFIG_SND_SEQ_DUMMY=m
1386CONFIG_SND_OSSEMUL=y
1387CONFIG_SND_MIXER_OSS=m
1388CONFIG_SND_PCM_OSS=m
1389CONFIG_SND_PCM_OSS_PLUGINS=y
1390CONFIG_SND_SEQUENCER_OSS=y
1391# CONFIG_SND_HRTIMER is not set
1392# CONFIG_SND_DYNAMIC_MINORS is not set
1393CONFIG_SND_SUPPORT_OLD_API=y
1394CONFIG_SND_VERBOSE_PROCFS=y
1395# CONFIG_SND_VERBOSE_PRINTK is not set
1396# CONFIG_SND_DEBUG is not set
1397# CONFIG_SND_RAWMIDI_SEQ is not set
1398# CONFIG_SND_OPL3_LIB_SEQ is not set
1399# CONFIG_SND_OPL4_LIB_SEQ is not set
1400# CONFIG_SND_SBAWE_SEQ is not set
1401# CONFIG_SND_EMU10K1_SEQ is not set
1402CONFIG_SND_DRIVERS=y
1403# CONFIG_SND_DUMMY is not set
1404# CONFIG_SND_VIRMIDI is not set
1405# CONFIG_SND_MTPAV is not set
1406# CONFIG_SND_SERIAL_U16550 is not set
1407# CONFIG_SND_MPU401 is not set
1408CONFIG_SND_PCI=y
1409# CONFIG_SND_AD1889 is not set
1410# CONFIG_SND_ALS300 is not set
1411# CONFIG_SND_ALS4000 is not set
1412# CONFIG_SND_ALI5451 is not set
1413# CONFIG_SND_ATIIXP is not set
1414# CONFIG_SND_ATIIXP_MODEM is not set
1415# CONFIG_SND_AU8810 is not set
1416# CONFIG_SND_AU8820 is not set
1417# CONFIG_SND_AU8830 is not set
1418# CONFIG_SND_AW2 is not set
1419# CONFIG_SND_AZT3328 is not set
1420# CONFIG_SND_BT87X is not set
1421# CONFIG_SND_CA0106 is not set
1422# CONFIG_SND_CMIPCI is not set
1423# CONFIG_SND_OXYGEN is not set
1424# CONFIG_SND_CS4281 is not set
1425# CONFIG_SND_CS46XX is not set
1426# CONFIG_SND_CS5530 is not set
1427# CONFIG_SND_CTXFI is not set
1428# CONFIG_SND_DARLA20 is not set
1429# CONFIG_SND_GINA20 is not set
1430# CONFIG_SND_LAYLA20 is not set
1431# CONFIG_SND_DARLA24 is not set
1432# CONFIG_SND_GINA24 is not set
1433# CONFIG_SND_LAYLA24 is not set
1434# CONFIG_SND_MONA is not set
1435# CONFIG_SND_MIA is not set
1436# CONFIG_SND_ECHO3G is not set
1437# CONFIG_SND_INDIGO is not set
1438# CONFIG_SND_INDIGOIO is not set
1439# CONFIG_SND_INDIGODJ is not set
1440# CONFIG_SND_INDIGOIOX is not set
1441# CONFIG_SND_INDIGODJX is not set
1442# CONFIG_SND_EMU10K1 is not set
1443# CONFIG_SND_EMU10K1X is not set
1444# CONFIG_SND_ENS1370 is not set
1445# CONFIG_SND_ENS1371 is not set
1446# CONFIG_SND_ES1938 is not set
1447# CONFIG_SND_ES1968 is not set
1448# CONFIG_SND_FM801 is not set
1449# CONFIG_SND_HDA_INTEL is not set
1450# CONFIG_SND_HDSP is not set
1451# CONFIG_SND_HDSPM is not set
1452# CONFIG_SND_HIFIER is not set
1453# CONFIG_SND_ICE1712 is not set
1454# CONFIG_SND_ICE1724 is not set
1455# CONFIG_SND_INTEL8X0 is not set
1456# CONFIG_SND_INTEL8X0M is not set
1457# CONFIG_SND_KORG1212 is not set
1458# CONFIG_SND_LX6464ES is not set
1459# CONFIG_SND_MAESTRO3 is not set
1460# CONFIG_SND_MIXART is not set
1461# CONFIG_SND_NM256 is not set
1462# CONFIG_SND_PCXHR is not set
1463# CONFIG_SND_RIPTIDE is not set
1464# CONFIG_SND_RME32 is not set
1465# CONFIG_SND_RME96 is not set
1466# CONFIG_SND_RME9652 is not set
1467# CONFIG_SND_SONICVIBES is not set
1468# CONFIG_SND_TRIDENT is not set
1469# CONFIG_SND_VIA82XX is not set
1470# CONFIG_SND_VIA82XX_MODEM is not set
1471# CONFIG_SND_VIRTUOSO is not set
1472# CONFIG_SND_VX222 is not set
1473# CONFIG_SND_YMFPCI is not set
1474CONFIG_SND_PPC=y
1475CONFIG_SND_USB=y
1476# CONFIG_SND_USB_AUDIO is not set
1477# CONFIG_SND_USB_USX2Y is not set
1478# CONFIG_SND_USB_CAIAQ is not set
1479CONFIG_SND_PCMCIA=y
1480# CONFIG_SND_VXPOCKET is not set
1481# CONFIG_SND_PDAUDIOCF is not set
1482# CONFIG_SND_SOC is not set
1483# CONFIG_SOUND_PRIME is not set
1484CONFIG_HID_SUPPORT=y
1485CONFIG_HID=y
1486# CONFIG_HIDRAW is not set
1487
1488#
1489# USB Input Devices
1490#
1491CONFIG_USB_HID=y
1492# CONFIG_HID_PID is not set
1493CONFIG_USB_HIDDEV=y
1494
1495#
1496# Special HID drivers
1497#
1498CONFIG_HID_A4TECH=y
1499CONFIG_HID_APPLE=y
1500CONFIG_HID_BELKIN=y
1501CONFIG_HID_CHERRY=y
1502CONFIG_HID_CHICONY=y
1503CONFIG_HID_CYPRESS=y
1504CONFIG_HID_DRAGONRISE=y
1505# CONFIG_DRAGONRISE_FF is not set
1506CONFIG_HID_EZKEY=y
1507CONFIG_HID_KYE=y
1508CONFIG_HID_GYRATION=y
1509CONFIG_HID_TWINHAN=y
1510CONFIG_HID_KENSINGTON=y
1511CONFIG_HID_LOGITECH=y
1512# CONFIG_LOGITECH_FF is not set
1513# CONFIG_LOGIRUMBLEPAD2_FF is not set
1514CONFIG_HID_MICROSOFT=y
1515CONFIG_HID_MONTEREY=y
1516CONFIG_HID_NTRIG=y
1517CONFIG_HID_PANTHERLORD=y
1518# CONFIG_PANTHERLORD_FF is not set
1519CONFIG_HID_PETALYNX=y
1520CONFIG_HID_SAMSUNG=y
1521CONFIG_HID_SONY=y
1522CONFIG_HID_SUNPLUS=y
1523CONFIG_HID_GREENASIA=y
1524# CONFIG_GREENASIA_FF is not set
1525CONFIG_HID_SMARTJOYPLUS=y
1526# CONFIG_SMARTJOYPLUS_FF is not set
1527CONFIG_HID_TOPSEED=y
1528CONFIG_HID_THRUSTMASTER=y
1529# CONFIG_THRUSTMASTER_FF is not set
1530CONFIG_HID_ZEROPLUS=y
1531# CONFIG_ZEROPLUS_FF is not set
1532CONFIG_USB_SUPPORT=y
1533CONFIG_USB_ARCH_HAS_HCD=y
1534CONFIG_USB_ARCH_HAS_OHCI=y
1535CONFIG_USB_ARCH_HAS_EHCI=y
1536CONFIG_USB=y
1537# CONFIG_USB_DEBUG is not set
1538# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1539
1540#
1541# Miscellaneous USB options
1542#
1543CONFIG_USB_DEVICEFS=y
1544CONFIG_USB_DEVICE_CLASS=y
1545# CONFIG_USB_DYNAMIC_MINORS is not set
1546# CONFIG_USB_OTG is not set
1547# CONFIG_USB_MON is not set
1548# CONFIG_USB_WUSB is not set
1549# CONFIG_USB_WUSB_CBAF is not set
1550
1551#
1552# USB Host Controller Drivers
1553#
1554# CONFIG_USB_C67X00_HCD is not set
1555# CONFIG_USB_XHCI_HCD is not set
1556CONFIG_USB_EHCI_HCD=y
1557# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1558CONFIG_USB_EHCI_TT_NEWSCHED=y
1559# CONFIG_USB_EHCI_HCD_PPC_OF is not set
1560# CONFIG_USB_OXU210HP_HCD is not set
1561# CONFIG_USB_ISP116X_HCD is not set
1562# CONFIG_USB_ISP1760_HCD is not set
1563# CONFIG_USB_ISP1362_HCD is not set
1564CONFIG_USB_OHCI_HCD=y
1565# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set
1566# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
1567# CONFIG_USB_OHCI_HCD_PPC_OF is not set
1568# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
1569# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
1570CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1571# CONFIG_USB_UHCI_HCD is not set
1572# CONFIG_USB_SL811_HCD is not set
1573# CONFIG_USB_R8A66597_HCD is not set
1574# CONFIG_USB_WHCI_HCD is not set
1575# CONFIG_USB_HWA_HCD is not set
1576
1577#
1578# USB Device Class drivers
1579#
1580# CONFIG_USB_ACM is not set
1581# CONFIG_USB_PRINTER is not set
1582# CONFIG_USB_WDM is not set
1583# CONFIG_USB_TMC is not set
1584
1585#
1586# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
1587#
1588
1589#
1590# also be needed; see USB_STORAGE Help for more info
1591#
1592CONFIG_USB_STORAGE=m
1593# CONFIG_USB_STORAGE_DEBUG is not set
1594# CONFIG_USB_STORAGE_DATAFAB is not set
1595# CONFIG_USB_STORAGE_FREECOM is not set
1596# CONFIG_USB_STORAGE_ISD200 is not set
1597# CONFIG_USB_STORAGE_USBAT is not set
1598# CONFIG_USB_STORAGE_SDDR09 is not set
1599# CONFIG_USB_STORAGE_SDDR55 is not set
1600# CONFIG_USB_STORAGE_JUMPSHOT is not set
1601# CONFIG_USB_STORAGE_ALAUDA is not set
1602# CONFIG_USB_STORAGE_ONETOUCH is not set
1603# CONFIG_USB_STORAGE_KARMA is not set
1604# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1605# CONFIG_USB_LIBUSUAL is not set
1606
1607#
1608# USB Imaging devices
1609#
1610# CONFIG_USB_MDC800 is not set
1611# CONFIG_USB_MICROTEK is not set
1612
1613#
1614# USB port drivers
1615#
1616# CONFIG_USB_SERIAL is not set
1617
1618#
1619# USB Miscellaneous drivers
1620#
1621# CONFIG_USB_EMI62 is not set
1622# CONFIG_USB_EMI26 is not set
1623# CONFIG_USB_ADUTUX is not set
1624# CONFIG_USB_SEVSEG is not set
1625# CONFIG_USB_RIO500 is not set
1626# CONFIG_USB_LEGOTOWER is not set
1627# CONFIG_USB_LCD is not set
1628# CONFIG_USB_BERRY_CHARGE is not set
1629# CONFIG_USB_LED is not set
1630# CONFIG_USB_CYPRESS_CY7C63 is not set
1631# CONFIG_USB_CYTHERM is not set
1632# CONFIG_USB_IDMOUSE is not set
1633# CONFIG_USB_FTDI_ELAN is not set
1634CONFIG_USB_APPLEDISPLAY=m
1635# CONFIG_USB_SISUSBVGA is not set
1636# CONFIG_USB_LD is not set
1637# CONFIG_USB_TRANCEVIBRATOR is not set
1638# CONFIG_USB_IOWARRIOR is not set
1639# CONFIG_USB_TEST is not set
1640# CONFIG_USB_ISIGHTFW is not set
1641# CONFIG_USB_VST is not set
1642# CONFIG_USB_GADGET is not set
1643
1644#
1645# OTG and related infrastructure
1646#
1647# CONFIG_NOP_USB_XCEIV is not set
1648# CONFIG_UWB is not set
1649# CONFIG_MMC is not set
1650# CONFIG_MEMSTICK is not set
1651# CONFIG_NEW_LEDS is not set
1652# CONFIG_ACCESSIBILITY is not set
1653CONFIG_INFINIBAND=m
1654# CONFIG_INFINIBAND_USER_MAD is not set
1655# CONFIG_INFINIBAND_USER_ACCESS is not set
1656CONFIG_INFINIBAND_ADDR_TRANS=y
1657CONFIG_INFINIBAND_MTHCA=m
1658CONFIG_INFINIBAND_MTHCA_DEBUG=y
1659# CONFIG_INFINIBAND_IPATH is not set
1660# CONFIG_INFINIBAND_AMSO1100 is not set
1661# CONFIG_MLX4_INFINIBAND is not set
1662# CONFIG_INFINIBAND_NES is not set
1663CONFIG_INFINIBAND_IPOIB=m
1664# CONFIG_INFINIBAND_IPOIB_CM is not set
1665CONFIG_INFINIBAND_IPOIB_DEBUG=y
1666# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
1667# CONFIG_INFINIBAND_SRP is not set
1668CONFIG_INFINIBAND_ISER=m
1669CONFIG_EDAC=y
1670
1671#
1672# Reporting subsystems
1673#
1674# CONFIG_EDAC_DEBUG is not set
1675CONFIG_EDAC_MM_EDAC=y
1676# CONFIG_EDAC_CPC925 is not set
1677CONFIG_RTC_LIB=y
1678CONFIG_RTC_CLASS=y
1679CONFIG_RTC_HCTOSYS=y
1680CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1681# CONFIG_RTC_DEBUG is not set
1682
1683#
1684# RTC interfaces
1685#
1686CONFIG_RTC_INTF_SYSFS=y
1687CONFIG_RTC_INTF_PROC=y
1688CONFIG_RTC_INTF_DEV=y
1689# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1690# CONFIG_RTC_DRV_TEST is not set
1691
1692#
1693# I2C RTC drivers
1694#
1695CONFIG_RTC_DRV_DS1307=y
1696# CONFIG_RTC_DRV_DS1374 is not set
1697# CONFIG_RTC_DRV_DS1672 is not set
1698# CONFIG_RTC_DRV_MAX6900 is not set
1699# CONFIG_RTC_DRV_RS5C372 is not set
1700# CONFIG_RTC_DRV_ISL1208 is not set
1701# CONFIG_RTC_DRV_X1205 is not set
1702# CONFIG_RTC_DRV_PCF8563 is not set
1703# CONFIG_RTC_DRV_PCF8583 is not set
1704# CONFIG_RTC_DRV_M41T80 is not set
1705# CONFIG_RTC_DRV_S35390A is not set
1706# CONFIG_RTC_DRV_FM3130 is not set
1707# CONFIG_RTC_DRV_RX8581 is not set
1708# CONFIG_RTC_DRV_RX8025 is not set
1709
1710#
1711# SPI RTC drivers
1712#
1713
1714#
1715# Platform RTC drivers
1716#
1717# CONFIG_RTC_DRV_CMOS is not set
1718# CONFIG_RTC_DRV_DS1286 is not set
1719# CONFIG_RTC_DRV_DS1511 is not set
1720# CONFIG_RTC_DRV_DS1553 is not set
1721# CONFIG_RTC_DRV_DS1742 is not set
1722# CONFIG_RTC_DRV_STK17TA8 is not set
1723# CONFIG_RTC_DRV_M48T86 is not set
1724# CONFIG_RTC_DRV_M48T35 is not set
1725# CONFIG_RTC_DRV_M48T59 is not set
1726# CONFIG_RTC_DRV_BQ4802 is not set
1727# CONFIG_RTC_DRV_V3020 is not set
1728
1729#
1730# on-CPU RTC drivers
1731#
1732# CONFIG_RTC_DRV_GENERIC is not set
1733# CONFIG_DMADEVICES is not set
1734# CONFIG_AUXDISPLAY is not set
1735# CONFIG_UIO is not set
1736
1737#
1738# TI VLYNQ
1739#
1740# CONFIG_STAGING is not set
1741
1742#
1743# File systems
1744#
1745CONFIG_EXT2_FS=y
1746CONFIG_EXT2_FS_XATTR=y
1747CONFIG_EXT2_FS_POSIX_ACL=y
1748CONFIG_EXT2_FS_SECURITY=y
1749CONFIG_EXT2_FS_XIP=y
1750CONFIG_EXT3_FS=y
1751# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
1752CONFIG_EXT3_FS_XATTR=y
1753CONFIG_EXT3_FS_POSIX_ACL=y
1754CONFIG_EXT3_FS_SECURITY=y
1755CONFIG_EXT4_FS=y
1756CONFIG_EXT4_FS_XATTR=y
1757CONFIG_EXT4_FS_POSIX_ACL=y
1758CONFIG_EXT4_FS_SECURITY=y
1759# CONFIG_EXT4_DEBUG is not set
1760CONFIG_FS_XIP=y
1761CONFIG_JBD=y
1762# CONFIG_JBD_DEBUG is not set
1763CONFIG_JBD2=y
1764# CONFIG_JBD2_DEBUG is not set
1765CONFIG_FS_MBCACHE=y
1766CONFIG_REISERFS_FS=y
1767# CONFIG_REISERFS_CHECK is not set
1768# CONFIG_REISERFS_PROC_INFO is not set
1769CONFIG_REISERFS_FS_XATTR=y
1770CONFIG_REISERFS_FS_POSIX_ACL=y
1771CONFIG_REISERFS_FS_SECURITY=y
1772CONFIG_JFS_FS=y
1773CONFIG_JFS_POSIX_ACL=y
1774CONFIG_JFS_SECURITY=y
1775# CONFIG_JFS_DEBUG is not set
1776# CONFIG_JFS_STATISTICS is not set
1777CONFIG_FS_POSIX_ACL=y
1778CONFIG_XFS_FS=m
1779# CONFIG_XFS_QUOTA is not set
1780CONFIG_XFS_POSIX_ACL=y
1781# CONFIG_XFS_RT is not set
1782# CONFIG_XFS_DEBUG is not set
1783# CONFIG_GFS2_FS is not set
1784# CONFIG_OCFS2_FS is not set
1785# CONFIG_BTRFS_FS is not set
1786# CONFIG_NILFS2_FS is not set
1787CONFIG_FILE_LOCKING=y
1788CONFIG_FSNOTIFY=y
1789CONFIG_DNOTIFY=y
1790CONFIG_INOTIFY=y
1791CONFIG_INOTIFY_USER=y
1792# CONFIG_QUOTA is not set
1793# CONFIG_AUTOFS_FS is not set
1794CONFIG_AUTOFS4_FS=m
1795# CONFIG_FUSE_FS is not set
1796
1797#
1798# Caches
1799#
1800# CONFIG_FSCACHE is not set
1801
1802#
1803# CD-ROM/DVD Filesystems
1804#
1805CONFIG_ISO9660_FS=y
1806# CONFIG_JOLIET is not set
1807# CONFIG_ZISOFS is not set
1808CONFIG_UDF_FS=m
1809CONFIG_UDF_NLS=y
1810
1811#
1812# DOS/FAT/NT Filesystems
1813#
1814CONFIG_FAT_FS=y
1815CONFIG_MSDOS_FS=y
1816CONFIG_VFAT_FS=y
1817CONFIG_FAT_DEFAULT_CODEPAGE=437
1818CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1819# CONFIG_NTFS_FS is not set
1820
1821#
1822# Pseudo filesystems
1823#
1824CONFIG_PROC_FS=y
1825CONFIG_PROC_KCORE=y
1826CONFIG_PROC_SYSCTL=y
1827CONFIG_PROC_PAGE_MONITOR=y
1828CONFIG_SYSFS=y
1829CONFIG_TMPFS=y
1830# CONFIG_TMPFS_POSIX_ACL is not set
1831# CONFIG_HUGETLBFS is not set
1832# CONFIG_HUGETLB_PAGE is not set
1833# CONFIG_CONFIGFS_FS is not set
1834CONFIG_MISC_FILESYSTEMS=y
1835# CONFIG_ADFS_FS is not set
1836# CONFIG_AFFS_FS is not set
1837CONFIG_HFS_FS=m
1838CONFIG_HFSPLUS_FS=m
1839# CONFIG_BEFS_FS is not set
1840# CONFIG_BFS_FS is not set
1841# CONFIG_EFS_FS is not set
1842CONFIG_CRAMFS=y
1843# CONFIG_SQUASHFS is not set
1844# CONFIG_VXFS_FS is not set
1845# CONFIG_MINIX_FS is not set
1846# CONFIG_OMFS_FS is not set
1847# CONFIG_HPFS_FS is not set
1848# CONFIG_QNX4FS_FS is not set
1849# CONFIG_ROMFS_FS is not set
1850# CONFIG_SYSV_FS is not set
1851# CONFIG_UFS_FS is not set
1852CONFIG_NETWORK_FILESYSTEMS=y
1853CONFIG_NFS_FS=y
1854CONFIG_NFS_V3=y
1855CONFIG_NFS_V3_ACL=y
1856CONFIG_NFS_V4=y
1857# CONFIG_NFS_V4_1 is not set
1858CONFIG_ROOT_NFS=y
1859CONFIG_NFSD=m
1860CONFIG_NFSD_V2_ACL=y
1861CONFIG_NFSD_V3=y
1862CONFIG_NFSD_V3_ACL=y
1863CONFIG_NFSD_V4=y
1864CONFIG_LOCKD=y
1865CONFIG_LOCKD_V4=y
1866CONFIG_EXPORTFS=m
1867CONFIG_NFS_ACL_SUPPORT=y
1868CONFIG_NFS_COMMON=y
1869CONFIG_SUNRPC=y
1870CONFIG_SUNRPC_GSS=y
1871CONFIG_SUNRPC_XPRT_RDMA=m
1872CONFIG_RPCSEC_GSS_KRB5=y
1873CONFIG_RPCSEC_GSS_SPKM3=m
1874# CONFIG_SMB_FS is not set
1875CONFIG_CIFS=m
1876# CONFIG_CIFS_STATS is not set
1877# CONFIG_CIFS_WEAK_PW_HASH is not set
1878CONFIG_CIFS_XATTR=y
1879CONFIG_CIFS_POSIX=y
1880# CONFIG_CIFS_DEBUG2 is not set
1881# CONFIG_CIFS_EXPERIMENTAL is not set
1882# CONFIG_NCP_FS is not set
1883# CONFIG_CODA_FS is not set
1884# CONFIG_AFS_FS is not set
1885
1886#
1887# Partition Types
1888#
1889CONFIG_PARTITION_ADVANCED=y
1890# CONFIG_ACORN_PARTITION is not set
1891# CONFIG_OSF_PARTITION is not set
1892# CONFIG_AMIGA_PARTITION is not set
1893# CONFIG_ATARI_PARTITION is not set
1894CONFIG_MAC_PARTITION=y
1895CONFIG_MSDOS_PARTITION=y
1896# CONFIG_BSD_DISKLABEL is not set
1897# CONFIG_MINIX_SUBPARTITION is not set
1898# CONFIG_SOLARIS_X86_PARTITION is not set
1899# CONFIG_UNIXWARE_DISKLABEL is not set
1900# CONFIG_LDM_PARTITION is not set
1901# CONFIG_SGI_PARTITION is not set
1902# CONFIG_ULTRIX_PARTITION is not set
1903# CONFIG_SUN_PARTITION is not set
1904# CONFIG_KARMA_PARTITION is not set
1905# CONFIG_EFI_PARTITION is not set
1906# CONFIG_SYSV68_PARTITION is not set
1907CONFIG_NLS=y
1908CONFIG_NLS_DEFAULT="iso8859-1"
1909CONFIG_NLS_CODEPAGE_437=y
1910CONFIG_NLS_CODEPAGE_737=m
1911CONFIG_NLS_CODEPAGE_775=m
1912CONFIG_NLS_CODEPAGE_850=m
1913CONFIG_NLS_CODEPAGE_852=m
1914CONFIG_NLS_CODEPAGE_855=m
1915CONFIG_NLS_CODEPAGE_857=m
1916CONFIG_NLS_CODEPAGE_860=m
1917CONFIG_NLS_CODEPAGE_861=m
1918CONFIG_NLS_CODEPAGE_862=m
1919CONFIG_NLS_CODEPAGE_863=m
1920CONFIG_NLS_CODEPAGE_864=m
1921CONFIG_NLS_CODEPAGE_865=m
1922CONFIG_NLS_CODEPAGE_866=m
1923CONFIG_NLS_CODEPAGE_869=m
1924CONFIG_NLS_CODEPAGE_936=m
1925CONFIG_NLS_CODEPAGE_950=m
1926CONFIG_NLS_CODEPAGE_932=m
1927CONFIG_NLS_CODEPAGE_949=m
1928CONFIG_NLS_CODEPAGE_874=m
1929CONFIG_NLS_ISO8859_8=m
1930CONFIG_NLS_CODEPAGE_1250=m
1931CONFIG_NLS_CODEPAGE_1251=m
1932CONFIG_NLS_ASCII=m
1933CONFIG_NLS_ISO8859_1=y
1934CONFIG_NLS_ISO8859_2=m
1935CONFIG_NLS_ISO8859_3=m
1936CONFIG_NLS_ISO8859_4=m
1937CONFIG_NLS_ISO8859_5=m
1938CONFIG_NLS_ISO8859_6=m
1939CONFIG_NLS_ISO8859_7=m
1940CONFIG_NLS_ISO8859_9=m
1941CONFIG_NLS_ISO8859_13=m
1942CONFIG_NLS_ISO8859_14=m
1943CONFIG_NLS_ISO8859_15=m
1944CONFIG_NLS_KOI8_R=m
1945CONFIG_NLS_KOI8_U=m
1946CONFIG_NLS_UTF8=m
1947# CONFIG_DLM is not set
1948CONFIG_BINARY_PRINTF=y
1949
1950#
1951# Library routines
1952#
1953CONFIG_BITREVERSE=y
1954CONFIG_GENERIC_FIND_LAST_BIT=y
1955CONFIG_CRC_CCITT=m
1956CONFIG_CRC16=y
1957CONFIG_CRC_T10DIF=y
1958CONFIG_CRC_ITU_T=m
1959CONFIG_CRC32=y
1960# CONFIG_CRC7 is not set
1961CONFIG_LIBCRC32C=m
1962CONFIG_ZLIB_INFLATE=y
1963CONFIG_ZLIB_DEFLATE=m
1964CONFIG_LZO_COMPRESS=m
1965CONFIG_LZO_DECOMPRESS=m
1966CONFIG_DECOMPRESS_GZIP=y
1967CONFIG_DECOMPRESS_BZIP2=y
1968CONFIG_DECOMPRESS_LZMA=y
1969CONFIG_TEXTSEARCH=y
1970CONFIG_TEXTSEARCH_KMP=m
1971CONFIG_TEXTSEARCH_BM=m
1972CONFIG_TEXTSEARCH_FSM=m
1973CONFIG_HAS_IOMEM=y
1974CONFIG_HAS_IOPORT=y
1975CONFIG_HAS_DMA=y
1976CONFIG_HAVE_LMB=y
1977CONFIG_NLATTR=y
1978
1979#
1980# Kernel hacking
1981#
1982# CONFIG_PRINTK_TIME is not set
1983CONFIG_ENABLE_WARN_DEPRECATED=y
1984CONFIG_ENABLE_MUST_CHECK=y
1985CONFIG_FRAME_WARN=2048
1986CONFIG_MAGIC_SYSRQ=y
1987# CONFIG_STRIP_ASM_SYMS is not set
1988# CONFIG_UNUSED_SYMBOLS is not set
1989CONFIG_DEBUG_FS=y
1990# CONFIG_HEADERS_CHECK is not set
1991CONFIG_DEBUG_KERNEL=y
1992# CONFIG_DEBUG_SHIRQ is not set
1993CONFIG_DETECT_SOFTLOCKUP=y
1994# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1995CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1996CONFIG_DETECT_HUNG_TASK=y
1997# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1998CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1999CONFIG_SCHED_DEBUG=y
2000CONFIG_SCHEDSTATS=y
2001# CONFIG_TIMER_STATS is not set
2002# CONFIG_DEBUG_OBJECTS is not set
2003# CONFIG_SLUB_DEBUG_ON is not set
2004# CONFIG_SLUB_STATS is not set
2005# CONFIG_DEBUG_KMEMLEAK is not set
2006# CONFIG_DEBUG_RT_MUTEXES is not set
2007# CONFIG_RT_MUTEX_TESTER is not set
2008# CONFIG_DEBUG_SPINLOCK is not set
2009CONFIG_DEBUG_MUTEXES=y
2010# CONFIG_DEBUG_LOCK_ALLOC is not set
2011# CONFIG_PROVE_LOCKING is not set
2012# CONFIG_LOCK_STAT is not set
2013CONFIG_TRACE_IRQFLAGS=y
2014# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
2015# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
2016CONFIG_STACKTRACE=y
2017# CONFIG_DEBUG_KOBJECT is not set
2018CONFIG_DEBUG_BUGVERBOSE=y
2019# CONFIG_DEBUG_INFO is not set
2020# CONFIG_DEBUG_VM is not set
2021# CONFIG_DEBUG_WRITECOUNT is not set
2022CONFIG_DEBUG_MEMORY_INIT=y
2023# CONFIG_DEBUG_LIST is not set
2024# CONFIG_DEBUG_SG is not set
2025# CONFIG_DEBUG_NOTIFIERS is not set
2026# CONFIG_DEBUG_CREDENTIALS is not set
2027# CONFIG_RCU_TORTURE_TEST is not set
2028# CONFIG_RCU_CPU_STALL_DETECTOR is not set
2029# CONFIG_BACKTRACE_SELF_TEST is not set
2030# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
2031# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
2032# CONFIG_FAULT_INJECTION is not set
2033CONFIG_LATENCYTOP=y
2034CONFIG_SYSCTL_SYSCALL_CHECK=y
2035# CONFIG_DEBUG_PAGEALLOC is not set
2036CONFIG_NOP_TRACER=y
2037CONFIG_HAVE_FUNCTION_TRACER=y
2038CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
2039CONFIG_HAVE_DYNAMIC_FTRACE=y
2040CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
2041CONFIG_TRACER_MAX_TRACE=y
2042CONFIG_RING_BUFFER=y
2043CONFIG_EVENT_TRACING=y
2044CONFIG_CONTEXT_SWITCH_TRACER=y
2045CONFIG_RING_BUFFER_ALLOW_SWAP=y
2046CONFIG_TRACING=y
2047CONFIG_GENERIC_TRACER=y
2048CONFIG_TRACING_SUPPORT=y
2049CONFIG_FTRACE=y
2050# CONFIG_FUNCTION_TRACER is not set
2051CONFIG_IRQSOFF_TRACER=y
2052CONFIG_SCHED_TRACER=y
2053# CONFIG_BOOT_TRACER is not set
2054CONFIG_BRANCH_PROFILE_NONE=y
2055# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
2056# CONFIG_PROFILE_ALL_BRANCHES is not set
2057# CONFIG_STACK_TRACER is not set
2058# CONFIG_KMEMTRACE is not set
2059# CONFIG_WORKQUEUE_TRACER is not set
2060CONFIG_BLK_DEV_IO_TRACE=y
2061# CONFIG_FTRACE_STARTUP_TEST is not set
2062# CONFIG_RING_BUFFER_BENCHMARK is not set
2063# CONFIG_DYNAMIC_DEBUG is not set
2064# CONFIG_DMA_API_DEBUG is not set
2065# CONFIG_SAMPLES is not set
2066CONFIG_HAVE_ARCH_KGDB=y
2067# CONFIG_KGDB is not set
2068# CONFIG_PPC_DISABLE_WERROR is not set
2069CONFIG_PPC_WERROR=y
2070CONFIG_PRINT_STACK_DEPTH=64
2071CONFIG_DEBUG_STACKOVERFLOW=y
2072CONFIG_DEBUG_STACK_USAGE=y
2073# CONFIG_PPC_EMULATED_STATS is not set
2074CONFIG_CODE_PATCHING_SELFTEST=y
2075CONFIG_FTR_FIXUP_SELFTEST=y
2076CONFIG_MSI_BITMAP_SELFTEST=y
2077CONFIG_XMON=y
2078# CONFIG_XMON_DEFAULT is not set
2079CONFIG_XMON_DISASSEMBLY=y
2080CONFIG_DEBUGGER=y
2081CONFIG_IRQSTACKS=y
2082# CONFIG_VIRQ_DEBUG is not set
2083# CONFIG_PPC_EARLY_DEBUG is not set
2084
2085#
2086# Security options
2087#
2088# CONFIG_KEYS is not set
2089# CONFIG_SECURITY is not set
2090# CONFIG_SECURITYFS is not set
2091# CONFIG_SECURITY_FILE_CAPABILITIES is not set
2092CONFIG_XOR_BLOCKS=y
2093CONFIG_ASYNC_CORE=y
2094CONFIG_ASYNC_MEMCPY=y
2095CONFIG_ASYNC_XOR=y
2096CONFIG_ASYNC_PQ=y
2097CONFIG_ASYNC_RAID6_RECOV=y
2098CONFIG_CRYPTO=y
2099
2100#
2101# Crypto core or helper
2102#
2103CONFIG_CRYPTO_ALGAPI=y
2104CONFIG_CRYPTO_ALGAPI2=y
2105CONFIG_CRYPTO_AEAD=m
2106CONFIG_CRYPTO_AEAD2=y
2107CONFIG_CRYPTO_BLKCIPHER=y
2108CONFIG_CRYPTO_BLKCIPHER2=y
2109CONFIG_CRYPTO_HASH=y
2110CONFIG_CRYPTO_HASH2=y
2111CONFIG_CRYPTO_RNG=m
2112CONFIG_CRYPTO_RNG2=y
2113CONFIG_CRYPTO_PCOMP=y
2114CONFIG_CRYPTO_MANAGER=y
2115CONFIG_CRYPTO_MANAGER2=y
2116CONFIG_CRYPTO_GF128MUL=m
2117CONFIG_CRYPTO_NULL=m
2118CONFIG_CRYPTO_WORKQUEUE=y
2119# CONFIG_CRYPTO_CRYPTD is not set
2120CONFIG_CRYPTO_AUTHENC=m
2121CONFIG_CRYPTO_TEST=m
2122
2123#
2124# Authenticated Encryption with Associated Data
2125#
2126CONFIG_CRYPTO_CCM=m
2127CONFIG_CRYPTO_GCM=m
2128CONFIG_CRYPTO_SEQIV=m
2129
2130#
2131# Block modes
2132#
2133CONFIG_CRYPTO_CBC=y
2134CONFIG_CRYPTO_CTR=m
2135# CONFIG_CRYPTO_CTS is not set
2136CONFIG_CRYPTO_ECB=m
2137# CONFIG_CRYPTO_LRW is not set
2138CONFIG_CRYPTO_PCBC=m
2139# CONFIG_CRYPTO_XTS is not set
2140
2141#
2142# Hash modes
2143#
2144CONFIG_CRYPTO_HMAC=y
2145# CONFIG_CRYPTO_XCBC is not set
2146# CONFIG_CRYPTO_VMAC is not set
2147
2148#
2149# Digest
2150#
2151CONFIG_CRYPTO_CRC32C=m
2152CONFIG_CRYPTO_GHASH=m
2153CONFIG_CRYPTO_MD4=m
2154CONFIG_CRYPTO_MD5=y
2155CONFIG_CRYPTO_MICHAEL_MIC=m
2156# CONFIG_CRYPTO_RMD128 is not set
2157# CONFIG_CRYPTO_RMD160 is not set
2158# CONFIG_CRYPTO_RMD256 is not set
2159# CONFIG_CRYPTO_RMD320 is not set
2160CONFIG_CRYPTO_SHA1=m
2161CONFIG_CRYPTO_SHA256=m
2162CONFIG_CRYPTO_SHA512=m
2163CONFIG_CRYPTO_TGR192=m
2164CONFIG_CRYPTO_WP512=m
2165
2166#
2167# Ciphers
2168#
2169CONFIG_CRYPTO_AES=m
2170CONFIG_CRYPTO_ANUBIS=m
2171CONFIG_CRYPTO_ARC4=m
2172CONFIG_CRYPTO_BLOWFISH=m
2173# CONFIG_CRYPTO_CAMELLIA is not set
2174CONFIG_CRYPTO_CAST5=m
2175CONFIG_CRYPTO_CAST6=m
2176CONFIG_CRYPTO_DES=y
2177# CONFIG_CRYPTO_FCRYPT is not set
2178CONFIG_CRYPTO_KHAZAD=m
2179CONFIG_CRYPTO_SALSA20=m
2180# CONFIG_CRYPTO_SEED is not set
2181CONFIG_CRYPTO_SERPENT=m
2182CONFIG_CRYPTO_TEA=m
2183CONFIG_CRYPTO_TWOFISH=m
2184CONFIG_CRYPTO_TWOFISH_COMMON=m
2185
2186#
2187# Compression
2188#
2189CONFIG_CRYPTO_DEFLATE=m
2190# CONFIG_CRYPTO_ZLIB is not set
2191CONFIG_CRYPTO_LZO=m
2192
2193#
2194# Random Number Generation
2195#
2196# CONFIG_CRYPTO_ANSI_CPRNG is not set
2197# CONFIG_CRYPTO_HW is not set
2198# CONFIG_PPC_CLOCK is not set
2199# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/pq2fads_defconfig b/arch/powerpc/configs/pq2fads_defconfig
index ff96bb43c32d..b7911216af78 100644
--- a/arch/powerpc/configs/pq2fads_defconfig
+++ b/arch/powerpc/configs/pq2fads_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:00 2009 4# Thu Nov 5 08:20:17 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -34,6 +34,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
34CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
37CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
38CONFIG_STACKTRACE_SUPPORT=y 39CONFIG_STACKTRACE_SUPPORT=y
39CONFIG_HAVE_LATENCYTOP_SUPPORT=y 40CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -82,11 +83,12 @@ CONFIG_SYSVIPC_SYSCTL=y
82# 83#
83# RCU Subsystem 84# RCU Subsystem
84# 85#
85CONFIG_CLASSIC_RCU=y 86CONFIG_TREE_RCU=y
86# CONFIG_TREE_RCU is not set 87# CONFIG_TREE_PREEMPT_RCU is not set
87# CONFIG_PREEMPT_RCU is not set 88# CONFIG_RCU_TRACE is not set
89CONFIG_RCU_FANOUT=32
90# CONFIG_RCU_FANOUT_EXACT is not set
88# CONFIG_TREE_RCU_TRACE is not set 91# CONFIG_TREE_RCU_TRACE is not set
89# CONFIG_PREEMPT_RCU_TRACE is not set
90CONFIG_IKCONFIG=y 92CONFIG_IKCONFIG=y
91CONFIG_IKCONFIG_PROC=y 93CONFIG_IKCONFIG_PROC=y
92CONFIG_LOG_BUF_SHIFT=14 94CONFIG_LOG_BUF_SHIFT=14
@@ -120,29 +122,30 @@ CONFIG_TIMERFD=y
120CONFIG_EVENTFD=y 122CONFIG_EVENTFD=y
121CONFIG_SHMEM=y 123CONFIG_SHMEM=y
122CONFIG_AIO=y 124CONFIG_AIO=y
123CONFIG_HAVE_PERF_COUNTERS=y 125CONFIG_HAVE_PERF_EVENTS=y
124 126
125# 127#
126# Performance Counters 128# Kernel Performance Events And Counters
127# 129#
130# CONFIG_PERF_EVENTS is not set
128# CONFIG_PERF_COUNTERS is not set 131# CONFIG_PERF_COUNTERS is not set
129CONFIG_VM_EVENT_COUNTERS=y 132CONFIG_VM_EVENT_COUNTERS=y
130CONFIG_PCI_QUIRKS=y 133CONFIG_PCI_QUIRKS=y
131CONFIG_SLUB_DEBUG=y 134CONFIG_SLUB_DEBUG=y
132# CONFIG_STRIP_ASM_SYMS is not set
133CONFIG_COMPAT_BRK=y 135CONFIG_COMPAT_BRK=y
134# CONFIG_SLAB is not set 136# CONFIG_SLAB is not set
135CONFIG_SLUB=y 137CONFIG_SLUB=y
136# CONFIG_SLOB is not set 138# CONFIG_SLOB is not set
137# CONFIG_PROFILING is not set 139# CONFIG_PROFILING is not set
138# CONFIG_MARKERS is not set
139CONFIG_HAVE_OPROFILE=y 140CONFIG_HAVE_OPROFILE=y
140CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 141CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
141CONFIG_HAVE_IOREMAP_PROT=y 142CONFIG_HAVE_IOREMAP_PROT=y
142CONFIG_HAVE_KPROBES=y 143CONFIG_HAVE_KPROBES=y
143CONFIG_HAVE_KRETPROBES=y 144CONFIG_HAVE_KRETPROBES=y
144CONFIG_HAVE_ARCH_TRACEHOOK=y 145CONFIG_HAVE_ARCH_TRACEHOOK=y
146CONFIG_HAVE_DMA_ATTRS=y
145CONFIG_HAVE_CLK=y 147CONFIG_HAVE_CLK=y
148CONFIG_HAVE_DMA_API_DEBUG=y
146 149
147# 150#
148# GCOV-based kernel profiling 151# GCOV-based kernel profiling
@@ -155,6 +158,7 @@ CONFIG_BASE_SMALL=0
155# CONFIG_MODULES is not set 158# CONFIG_MODULES is not set
156CONFIG_BLOCK=y 159CONFIG_BLOCK=y
157CONFIG_LBDAF=y 160CONFIG_LBDAF=y
161CONFIG_BLK_DEV_BSG=y
158# CONFIG_BLK_DEV_INTEGRITY is not set 162# CONFIG_BLK_DEV_INTEGRITY is not set
159 163
160# 164#
@@ -239,6 +243,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
239CONFIG_ARCH_HAS_WALK_MEMORY=y 243CONFIG_ARCH_HAS_WALK_MEMORY=y
240CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 244CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
241# CONFIG_CRASH_DUMP is not set 245# CONFIG_CRASH_DUMP is not set
246CONFIG_MAX_ACTIVE_REGIONS=32
242CONFIG_ARCH_FLATMEM_ENABLE=y 247CONFIG_ARCH_FLATMEM_ENABLE=y
243CONFIG_ARCH_POPULATES_NODE_MAP=y 248CONFIG_ARCH_POPULATES_NODE_MAP=y
244CONFIG_FLATMEM=y 249CONFIG_FLATMEM=y
@@ -252,6 +257,7 @@ CONFIG_BOUNCE=y
252CONFIG_VIRT_TO_BUS=y 257CONFIG_VIRT_TO_BUS=y
253CONFIG_HAVE_MLOCK=y 258CONFIG_HAVE_MLOCK=y
254CONFIG_HAVE_MLOCKED_PAGE_BIT=y 259CONFIG_HAVE_MLOCKED_PAGE_BIT=y
260# CONFIG_KSM is not set
255CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 261CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
256CONFIG_PPC_4K_PAGES=y 262CONFIG_PPC_4K_PAGES=y
257# CONFIG_PPC_16K_PAGES is not set 263# CONFIG_PPC_16K_PAGES is not set
@@ -401,6 +407,7 @@ CONFIG_NETFILTER_ADVANCED=y
401# CONFIG_BT is not set 407# CONFIG_BT is not set
402CONFIG_WIRELESS=y 408CONFIG_WIRELESS=y
403# CONFIG_CFG80211 is not set 409# CONFIG_CFG80211 is not set
410CONFIG_CFG80211_DEFAULT_PS_VALUE=0
404CONFIG_WIRELESS_OLD_REGULATORY=y 411CONFIG_WIRELESS_OLD_REGULATORY=y
405# CONFIG_WIRELESS_EXT is not set 412# CONFIG_WIRELESS_EXT is not set
406# CONFIG_LIB80211 is not set 413# CONFIG_LIB80211 is not set
@@ -408,7 +415,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
408# 415#
409# CFG80211 needs to be enabled for MAC80211 416# CFG80211 needs to be enabled for MAC80211
410# 417#
411CONFIG_MAC80211_DEFAULT_PS_VALUE=0
412# CONFIG_WIMAX is not set 418# CONFIG_WIMAX is not set
413# CONFIG_RFKILL is not set 419# CONFIG_RFKILL is not set
414 420
@@ -420,6 +426,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
420# Generic Driver Options 426# Generic Driver Options
421# 427#
422CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 428CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
429# CONFIG_DEVTMPFS is not set
423CONFIG_STANDALONE=y 430CONFIG_STANDALONE=y
424CONFIG_PREVENT_FIRMWARE_BUILD=y 431CONFIG_PREVENT_FIRMWARE_BUILD=y
425# CONFIG_FW_LOADER is not set 432# CONFIG_FW_LOADER is not set
@@ -481,7 +488,6 @@ CONFIG_MTD_CFI_UTIL=y
481# CONFIG_MTD_COMPLEX_MAPPINGS is not set 488# CONFIG_MTD_COMPLEX_MAPPINGS is not set
482# CONFIG_MTD_PHYSMAP is not set 489# CONFIG_MTD_PHYSMAP is not set
483CONFIG_MTD_PHYSMAP_OF=y 490CONFIG_MTD_PHYSMAP_OF=y
484# CONFIG_MTD_SBC8240 is not set
485# CONFIG_MTD_INTEL_VR_NOR is not set 491# CONFIG_MTD_INTEL_VR_NOR is not set
486# CONFIG_MTD_PLATRAM is not set 492# CONFIG_MTD_PLATRAM is not set
487 493
@@ -664,7 +670,9 @@ CONFIG_MII=y
664# CONFIG_NET_PCI is not set 670# CONFIG_NET_PCI is not set
665# CONFIG_B44 is not set 671# CONFIG_B44 is not set
666# CONFIG_KS8842 is not set 672# CONFIG_KS8842 is not set
673# CONFIG_KS8851_MLL is not set
667# CONFIG_ATL2 is not set 674# CONFIG_ATL2 is not set
675# CONFIG_XILINX_EMACLITE is not set
668CONFIG_FS_ENET=y 676CONFIG_FS_ENET=y
669# CONFIG_FS_ENET_HAS_SCC is not set 677# CONFIG_FS_ENET_HAS_SCC is not set
670CONFIG_FS_ENET_HAS_FCC=y 678CONFIG_FS_ENET_HAS_FCC=y
@@ -712,10 +720,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
712# CONFIG_SFC is not set 720# CONFIG_SFC is not set
713# CONFIG_BE2NET is not set 721# CONFIG_BE2NET is not set
714# CONFIG_TR is not set 722# CONFIG_TR is not set
715 723CONFIG_WLAN=y
716#
717# Wireless LAN
718#
719# CONFIG_WLAN_PRE80211 is not set 724# CONFIG_WLAN_PRE80211 is not set
720# CONFIG_WLAN_80211 is not set 725# CONFIG_WLAN_80211 is not set
721 726
@@ -764,6 +769,7 @@ CONFIG_KEYBOARD_ATKBD=y
764# CONFIG_KEYBOARD_GPIO is not set 769# CONFIG_KEYBOARD_GPIO is not set
765# CONFIG_KEYBOARD_MATRIX is not set 770# CONFIG_KEYBOARD_MATRIX is not set
766# CONFIG_KEYBOARD_NEWTON is not set 771# CONFIG_KEYBOARD_NEWTON is not set
772# CONFIG_KEYBOARD_OPENCORES is not set
767# CONFIG_KEYBOARD_STOWAWAY is not set 773# CONFIG_KEYBOARD_STOWAWAY is not set
768# CONFIG_KEYBOARD_SUNKBD is not set 774# CONFIG_KEYBOARD_SUNKBD is not set
769# CONFIG_KEYBOARD_XTKBD is not set 775# CONFIG_KEYBOARD_XTKBD is not set
@@ -774,6 +780,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
774CONFIG_MOUSE_PS2_SYNAPTICS=y 780CONFIG_MOUSE_PS2_SYNAPTICS=y
775CONFIG_MOUSE_PS2_TRACKPOINT=y 781CONFIG_MOUSE_PS2_TRACKPOINT=y
776# CONFIG_MOUSE_PS2_ELANTECH is not set 782# CONFIG_MOUSE_PS2_ELANTECH is not set
783# CONFIG_MOUSE_PS2_SENTELIC is not set
777# CONFIG_MOUSE_PS2_TOUCHKIT is not set 784# CONFIG_MOUSE_PS2_TOUCHKIT is not set
778# CONFIG_MOUSE_SERIAL is not set 785# CONFIG_MOUSE_SERIAL is not set
779# CONFIG_MOUSE_APPLETOUCH is not set 786# CONFIG_MOUSE_APPLETOUCH is not set
@@ -855,15 +862,19 @@ CONFIG_GPIOLIB=y
855# PCI GPIO expanders: 862# PCI GPIO expanders:
856# 863#
857# CONFIG_GPIO_BT8XX is not set 864# CONFIG_GPIO_BT8XX is not set
865# CONFIG_GPIO_LANGWELL is not set
858 866
859# 867#
860# SPI GPIO expanders: 868# SPI GPIO expanders:
861# 869#
870
871#
872# AC97 GPIO expanders:
873#
862# CONFIG_W1 is not set 874# CONFIG_W1 is not set
863# CONFIG_POWER_SUPPLY is not set 875# CONFIG_POWER_SUPPLY is not set
864# CONFIG_HWMON is not set 876# CONFIG_HWMON is not set
865# CONFIG_THERMAL is not set 877# CONFIG_THERMAL is not set
866# CONFIG_THERMAL_HWMON is not set
867# CONFIG_WATCHDOG is not set 878# CONFIG_WATCHDOG is not set
868CONFIG_SSB_POSSIBLE=y 879CONFIG_SSB_POSSIBLE=y
869 880
@@ -886,6 +897,7 @@ CONFIG_SSB_POSSIBLE=y
886# Graphics support 897# Graphics support
887# 898#
888# CONFIG_AGP is not set 899# CONFIG_AGP is not set
900CONFIG_VGA_ARB=y
889# CONFIG_DRM is not set 901# CONFIG_DRM is not set
890# CONFIG_VGASTATE is not set 902# CONFIG_VGASTATE is not set
891CONFIG_VIDEO_OUTPUT_CONTROL=y 903CONFIG_VIDEO_OUTPUT_CONTROL=y
@@ -905,7 +917,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y
905# CONFIG_USB is not set 917# CONFIG_USB is not set
906# CONFIG_USB_OTG_WHITELIST is not set 918# CONFIG_USB_OTG_WHITELIST is not set
907# CONFIG_USB_OTG_BLACKLIST_HUB is not set 919# CONFIG_USB_OTG_BLACKLIST_HUB is not set
908# CONFIG_USB_MUSB_HDRC is not set
909# CONFIG_USB_GADGET_MUSB_HDRC is not set 920# CONFIG_USB_GADGET_MUSB_HDRC is not set
910 921
911# 922#
@@ -922,6 +933,7 @@ CONFIG_USB_GADGET_SELECTED=y
922# CONFIG_USB_GADGET_LH7A40X is not set 933# CONFIG_USB_GADGET_LH7A40X is not set
923# CONFIG_USB_GADGET_OMAP is not set 934# CONFIG_USB_GADGET_OMAP is not set
924# CONFIG_USB_GADGET_PXA25X is not set 935# CONFIG_USB_GADGET_PXA25X is not set
936# CONFIG_USB_GADGET_R8A66597 is not set
925# CONFIG_USB_GADGET_PXA27X is not set 937# CONFIG_USB_GADGET_PXA27X is not set
926# CONFIG_USB_GADGET_S3C_HSOTG is not set 938# CONFIG_USB_GADGET_S3C_HSOTG is not set
927# CONFIG_USB_GADGET_IMX is not set 939# CONFIG_USB_GADGET_IMX is not set
@@ -940,6 +952,7 @@ CONFIG_USB_GADGET_DUALSPEED=y
940# CONFIG_USB_AUDIO is not set 952# CONFIG_USB_AUDIO is not set
941CONFIG_USB_ETH=y 953CONFIG_USB_ETH=y
942CONFIG_USB_ETH_RNDIS=y 954CONFIG_USB_ETH_RNDIS=y
955# CONFIG_USB_ETH_EEM is not set
943# CONFIG_USB_GADGETFS is not set 956# CONFIG_USB_GADGETFS is not set
944# CONFIG_USB_FILE_STORAGE is not set 957# CONFIG_USB_FILE_STORAGE is not set
945# CONFIG_USB_G_SERIAL is not set 958# CONFIG_USB_G_SERIAL is not set
@@ -1148,6 +1161,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1148CONFIG_ENABLE_MUST_CHECK=y 1161CONFIG_ENABLE_MUST_CHECK=y
1149CONFIG_FRAME_WARN=1024 1162CONFIG_FRAME_WARN=1024
1150CONFIG_MAGIC_SYSRQ=y 1163CONFIG_MAGIC_SYSRQ=y
1164# CONFIG_STRIP_ASM_SYMS is not set
1151# CONFIG_UNUSED_SYMBOLS is not set 1165# CONFIG_UNUSED_SYMBOLS is not set
1152# CONFIG_DEBUG_FS is not set 1166# CONFIG_DEBUG_FS is not set
1153# CONFIG_HEADERS_CHECK is not set 1167# CONFIG_HEADERS_CHECK is not set
@@ -1183,10 +1197,12 @@ CONFIG_DEBUG_INFO=y
1183# CONFIG_DEBUG_LIST is not set 1197# CONFIG_DEBUG_LIST is not set
1184# CONFIG_DEBUG_SG is not set 1198# CONFIG_DEBUG_SG is not set
1185# CONFIG_DEBUG_NOTIFIERS is not set 1199# CONFIG_DEBUG_NOTIFIERS is not set
1200# CONFIG_DEBUG_CREDENTIALS is not set
1186# CONFIG_RCU_TORTURE_TEST is not set 1201# CONFIG_RCU_TORTURE_TEST is not set
1187# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1202# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1188# CONFIG_BACKTRACE_SELF_TEST is not set 1203# CONFIG_BACKTRACE_SELF_TEST is not set
1189# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1204# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1205# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1190# CONFIG_FAULT_INJECTION is not set 1206# CONFIG_FAULT_INJECTION is not set
1191# CONFIG_LATENCYTOP is not set 1207# CONFIG_LATENCYTOP is not set
1192CONFIG_SYSCTL_SYSCALL_CHECK=y 1208CONFIG_SYSCTL_SYSCALL_CHECK=y
@@ -1209,6 +1225,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
1209# CONFIG_KMEMTRACE is not set 1225# CONFIG_KMEMTRACE is not set
1210# CONFIG_WORKQUEUE_TRACER is not set 1226# CONFIG_WORKQUEUE_TRACER is not set
1211# CONFIG_BLK_DEV_IO_TRACE is not set 1227# CONFIG_BLK_DEV_IO_TRACE is not set
1228# CONFIG_DMA_API_DEBUG is not set
1212# CONFIG_SAMPLES is not set 1229# CONFIG_SAMPLES is not set
1213CONFIG_HAVE_ARCH_KGDB=y 1230CONFIG_HAVE_ARCH_KGDB=y
1214# CONFIG_PPC_DISABLE_WERROR is not set 1231# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1237,7 +1254,6 @@ CONFIG_CRYPTO=y
1237# 1254#
1238# Crypto core or helper 1255# Crypto core or helper
1239# 1256#
1240# CONFIG_CRYPTO_FIPS is not set
1241CONFIG_CRYPTO_ALGAPI=y 1257CONFIG_CRYPTO_ALGAPI=y
1242CONFIG_CRYPTO_ALGAPI2=y 1258CONFIG_CRYPTO_ALGAPI2=y
1243CONFIG_CRYPTO_AEAD2=y 1259CONFIG_CRYPTO_AEAD2=y
@@ -1279,6 +1295,7 @@ CONFIG_CRYPTO_PCBC=y
1279# Digest 1295# Digest
1280# 1296#
1281# CONFIG_CRYPTO_CRC32C is not set 1297# CONFIG_CRYPTO_CRC32C is not set
1298# CONFIG_CRYPTO_GHASH is not set
1282# CONFIG_CRYPTO_MD4 is not set 1299# CONFIG_CRYPTO_MD4 is not set
1283CONFIG_CRYPTO_MD5=y 1300CONFIG_CRYPTO_MD5=y
1284# CONFIG_CRYPTO_MICHAEL_MIC is not set 1301# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/prpmc2800_defconfig b/arch/powerpc/configs/prpmc2800_defconfig
index 1293c465d7fa..ef50ce45d50b 100644
--- a/arch/powerpc/configs/prpmc2800_defconfig
+++ b/arch/powerpc/configs/prpmc2800_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:01 2009 4# Thu Nov 5 08:20:18 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -36,6 +36,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y 36CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
39# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
39CONFIG_IRQ_PER_CPU=y 40CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y 41CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y 42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -85,11 +86,12 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
85# 86#
86# RCU Subsystem 87# RCU Subsystem
87# 88#
88CONFIG_CLASSIC_RCU=y 89CONFIG_TREE_RCU=y
89# CONFIG_TREE_RCU is not set 90# CONFIG_TREE_PREEMPT_RCU is not set
90# CONFIG_PREEMPT_RCU is not set 91# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set
91# CONFIG_TREE_RCU_TRACE is not set 94# CONFIG_TREE_RCU_TRACE is not set
92# CONFIG_PREEMPT_RCU_TRACE is not set
93# CONFIG_IKCONFIG is not set 95# CONFIG_IKCONFIG is not set
94CONFIG_LOG_BUF_SHIFT=14 96CONFIG_LOG_BUF_SHIFT=14
95CONFIG_GROUP_SCHED=y 97CONFIG_GROUP_SCHED=y
@@ -131,28 +133,29 @@ CONFIG_TIMERFD=y
131CONFIG_EVENTFD=y 133CONFIG_EVENTFD=y
132CONFIG_SHMEM=y 134CONFIG_SHMEM=y
133CONFIG_AIO=y 135CONFIG_AIO=y
134CONFIG_HAVE_PERF_COUNTERS=y 136CONFIG_HAVE_PERF_EVENTS=y
135 137
136# 138#
137# Performance Counters 139# Kernel Performance Events And Counters
138# 140#
141# CONFIG_PERF_EVENTS is not set
139# CONFIG_PERF_COUNTERS is not set 142# CONFIG_PERF_COUNTERS is not set
140CONFIG_VM_EVENT_COUNTERS=y 143CONFIG_VM_EVENT_COUNTERS=y
141CONFIG_PCI_QUIRKS=y 144CONFIG_PCI_QUIRKS=y
142CONFIG_SLUB_DEBUG=y 145CONFIG_SLUB_DEBUG=y
143# CONFIG_STRIP_ASM_SYMS is not set
144CONFIG_COMPAT_BRK=y 146CONFIG_COMPAT_BRK=y
145# CONFIG_SLAB is not set 147# CONFIG_SLAB is not set
146CONFIG_SLUB=y 148CONFIG_SLUB=y
147# CONFIG_SLOB is not set 149# CONFIG_SLOB is not set
148# CONFIG_PROFILING is not set 150# CONFIG_PROFILING is not set
149# CONFIG_MARKERS is not set
150CONFIG_HAVE_OPROFILE=y 151CONFIG_HAVE_OPROFILE=y
151CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 152CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
152CONFIG_HAVE_IOREMAP_PROT=y 153CONFIG_HAVE_IOREMAP_PROT=y
153CONFIG_HAVE_KPROBES=y 154CONFIG_HAVE_KPROBES=y
154CONFIG_HAVE_KRETPROBES=y 155CONFIG_HAVE_KRETPROBES=y
155CONFIG_HAVE_ARCH_TRACEHOOK=y 156CONFIG_HAVE_ARCH_TRACEHOOK=y
157CONFIG_HAVE_DMA_ATTRS=y
158CONFIG_HAVE_DMA_API_DEBUG=y
156 159
157# 160#
158# GCOV-based kernel profiling 161# GCOV-based kernel profiling
@@ -244,12 +247,12 @@ CONFIG_BINFMT_ELF=y
244CONFIG_BINFMT_MISC=y 247CONFIG_BINFMT_MISC=y
245# CONFIG_IOMMU_HELPER is not set 248# CONFIG_IOMMU_HELPER is not set
246# CONFIG_SWIOTLB is not set 249# CONFIG_SWIOTLB is not set
247CONFIG_PPC_NEED_DMA_SYNC_OPS=y
248CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 250CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
249CONFIG_ARCH_HAS_WALK_MEMORY=y 251CONFIG_ARCH_HAS_WALK_MEMORY=y
250CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 252CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
251# CONFIG_KEXEC is not set 253# CONFIG_KEXEC is not set
252# CONFIG_CRASH_DUMP is not set 254# CONFIG_CRASH_DUMP is not set
255CONFIG_MAX_ACTIVE_REGIONS=32
253CONFIG_ARCH_FLATMEM_ENABLE=y 256CONFIG_ARCH_FLATMEM_ENABLE=y
254CONFIG_ARCH_POPULATES_NODE_MAP=y 257CONFIG_ARCH_POPULATES_NODE_MAP=y
255CONFIG_SELECT_MEMORY_MODEL=y 258CONFIG_SELECT_MEMORY_MODEL=y
@@ -267,6 +270,7 @@ CONFIG_BOUNCE=y
267CONFIG_VIRT_TO_BUS=y 270CONFIG_VIRT_TO_BUS=y
268CONFIG_HAVE_MLOCK=y 271CONFIG_HAVE_MLOCK=y
269CONFIG_HAVE_MLOCKED_PAGE_BIT=y 272CONFIG_HAVE_MLOCKED_PAGE_BIT=y
273# CONFIG_KSM is not set
270CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 274CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
271CONFIG_PPC_4K_PAGES=y 275CONFIG_PPC_4K_PAGES=y
272# CONFIG_PPC_16K_PAGES is not set 276# CONFIG_PPC_16K_PAGES is not set
@@ -360,6 +364,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
360# CONFIG_NETFILTER is not set 364# CONFIG_NETFILTER is not set
361# CONFIG_IP_DCCP is not set 365# CONFIG_IP_DCCP is not set
362# CONFIG_IP_SCTP is not set 366# CONFIG_IP_SCTP is not set
367# CONFIG_RDS is not set
363# CONFIG_TIPC is not set 368# CONFIG_TIPC is not set
364# CONFIG_ATM is not set 369# CONFIG_ATM is not set
365# CONFIG_BRIDGE is not set 370# CONFIG_BRIDGE is not set
@@ -389,6 +394,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
389# CONFIG_AF_RXRPC is not set 394# CONFIG_AF_RXRPC is not set
390CONFIG_WIRELESS=y 395CONFIG_WIRELESS=y
391# CONFIG_CFG80211 is not set 396# CONFIG_CFG80211 is not set
397CONFIG_CFG80211_DEFAULT_PS_VALUE=0
392CONFIG_WIRELESS_OLD_REGULATORY=y 398CONFIG_WIRELESS_OLD_REGULATORY=y
393# CONFIG_WIRELESS_EXT is not set 399# CONFIG_WIRELESS_EXT is not set
394# CONFIG_LIB80211 is not set 400# CONFIG_LIB80211 is not set
@@ -396,7 +402,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
396# 402#
397# CFG80211 needs to be enabled for MAC80211 403# CFG80211 needs to be enabled for MAC80211
398# 404#
399CONFIG_MAC80211_DEFAULT_PS_VALUE=0
400# CONFIG_WIMAX is not set 405# CONFIG_WIMAX is not set
401# CONFIG_RFKILL is not set 406# CONFIG_RFKILL is not set
402# CONFIG_NET_9P is not set 407# CONFIG_NET_9P is not set
@@ -409,6 +414,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
409# Generic Driver Options 414# Generic Driver Options
410# 415#
411CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 416CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
417# CONFIG_DEVTMPFS is not set
412CONFIG_STANDALONE=y 418CONFIG_STANDALONE=y
413CONFIG_PREVENT_FIRMWARE_BUILD=y 419CONFIG_PREVENT_FIRMWARE_BUILD=y
414CONFIG_FW_LOADER=y 420CONFIG_FW_LOADER=y
@@ -633,6 +639,7 @@ CONFIG_SCSI_LOWLEVEL=y
633# CONFIG_ISCSI_TCP is not set 639# CONFIG_ISCSI_TCP is not set
634# CONFIG_SCSI_CXGB3_ISCSI is not set 640# CONFIG_SCSI_CXGB3_ISCSI is not set
635# CONFIG_SCSI_BNX2_ISCSI is not set 641# CONFIG_SCSI_BNX2_ISCSI is not set
642# CONFIG_BE2ISCSI is not set
636# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 643# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
637# CONFIG_SCSI_3W_9XXX is not set 644# CONFIG_SCSI_3W_9XXX is not set
638# CONFIG_SCSI_ACARD is not set 645# CONFIG_SCSI_ACARD is not set
@@ -672,11 +679,14 @@ CONFIG_SCSI_LOWLEVEL=y
672# CONFIG_SCSI_DC390T is not set 679# CONFIG_SCSI_DC390T is not set
673# CONFIG_SCSI_NSP32 is not set 680# CONFIG_SCSI_NSP32 is not set
674# CONFIG_SCSI_DEBUG is not set 681# CONFIG_SCSI_DEBUG is not set
682# CONFIG_SCSI_PMCRAID is not set
675# CONFIG_SCSI_SRP is not set 683# CONFIG_SCSI_SRP is not set
684# CONFIG_SCSI_BFA_FC is not set
676# CONFIG_SCSI_DH is not set 685# CONFIG_SCSI_DH is not set
677# CONFIG_SCSI_OSD_INITIATOR is not set 686# CONFIG_SCSI_OSD_INITIATOR is not set
678CONFIG_ATA=y 687CONFIG_ATA=y
679# CONFIG_ATA_NONSTANDARD is not set 688# CONFIG_ATA_NONSTANDARD is not set
689CONFIG_ATA_VERBOSE_ERROR=y
680CONFIG_SATA_PMP=y 690CONFIG_SATA_PMP=y
681# CONFIG_SATA_AHCI is not set 691# CONFIG_SATA_AHCI is not set
682# CONFIG_SATA_SIL24 is not set 692# CONFIG_SATA_SIL24 is not set
@@ -698,6 +708,7 @@ CONFIG_SATA_MV=y
698# CONFIG_PATA_ALI is not set 708# CONFIG_PATA_ALI is not set
699# CONFIG_PATA_AMD is not set 709# CONFIG_PATA_AMD is not set
700# CONFIG_PATA_ARTOP is not set 710# CONFIG_PATA_ARTOP is not set
711# CONFIG_PATA_ATP867X is not set
701# CONFIG_PATA_ATIIXP is not set 712# CONFIG_PATA_ATIIXP is not set
702# CONFIG_PATA_CMD640_PCI is not set 713# CONFIG_PATA_CMD640_PCI is not set
703# CONFIG_PATA_CMD64X is not set 714# CONFIG_PATA_CMD64X is not set
@@ -725,6 +736,7 @@ CONFIG_SATA_MV=y
725# CONFIG_PATA_OPTIDMA is not set 736# CONFIG_PATA_OPTIDMA is not set
726# CONFIG_PATA_PDC_OLD is not set 737# CONFIG_PATA_PDC_OLD is not set
727# CONFIG_PATA_RADISYS is not set 738# CONFIG_PATA_RADISYS is not set
739# CONFIG_PATA_RDC is not set
728# CONFIG_PATA_RZ1000 is not set 740# CONFIG_PATA_RZ1000 is not set
729# CONFIG_PATA_SC1200 is not set 741# CONFIG_PATA_SC1200 is not set
730# CONFIG_PATA_SERVERWORKS is not set 742# CONFIG_PATA_SERVERWORKS is not set
@@ -823,9 +835,11 @@ CONFIG_8139TOO=y
823# CONFIG_SUNDANCE is not set 835# CONFIG_SUNDANCE is not set
824# CONFIG_TLAN is not set 836# CONFIG_TLAN is not set
825# CONFIG_KS8842 is not set 837# CONFIG_KS8842 is not set
838# CONFIG_KS8851_MLL is not set
826# CONFIG_VIA_RHINE is not set 839# CONFIG_VIA_RHINE is not set
827# CONFIG_SC92031 is not set 840# CONFIG_SC92031 is not set
828# CONFIG_ATL2 is not set 841# CONFIG_ATL2 is not set
842# CONFIG_XILINX_EMACLITE is not set
829CONFIG_NETDEV_1000=y 843CONFIG_NETDEV_1000=y
830# CONFIG_ACENIC is not set 844# CONFIG_ACENIC is not set
831# CONFIG_DL2K is not set 845# CONFIG_DL2K is not set
@@ -871,10 +885,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
871# CONFIG_SFC is not set 885# CONFIG_SFC is not set
872# CONFIG_BE2NET is not set 886# CONFIG_BE2NET is not set
873# CONFIG_TR is not set 887# CONFIG_TR is not set
874 888CONFIG_WLAN=y
875#
876# Wireless LAN
877#
878# CONFIG_WLAN_PRE80211 is not set 889# CONFIG_WLAN_PRE80211 is not set
879# CONFIG_WLAN_80211 is not set 890# CONFIG_WLAN_80211 is not set
880 891
@@ -977,6 +988,7 @@ CONFIG_LEGACY_PTY_COUNT=256
977CONFIG_DEVPORT=y 988CONFIG_DEVPORT=y
978CONFIG_I2C=y 989CONFIG_I2C=y
979CONFIG_I2C_BOARDINFO=y 990CONFIG_I2C_BOARDINFO=y
991CONFIG_I2C_COMPAT=y
980CONFIG_I2C_CHARDEV=y 992CONFIG_I2C_CHARDEV=y
981CONFIG_I2C_HELPER_AUTO=y 993CONFIG_I2C_HELPER_AUTO=y
982 994
@@ -1031,9 +1043,6 @@ CONFIG_I2C_MV64XXX=y
1031# Miscellaneous I2C Chip support 1043# Miscellaneous I2C Chip support
1032# 1044#
1033# CONFIG_DS1682 is not set 1045# CONFIG_DS1682 is not set
1034# CONFIG_SENSORS_PCF8574 is not set
1035# CONFIG_PCF8575 is not set
1036# CONFIG_SENSORS_PCA9539 is not set
1037# CONFIG_SENSORS_TSL2550 is not set 1046# CONFIG_SENSORS_TSL2550 is not set
1038# CONFIG_I2C_DEBUG_CORE is not set 1047# CONFIG_I2C_DEBUG_CORE is not set
1039# CONFIG_I2C_DEBUG_ALGO is not set 1048# CONFIG_I2C_DEBUG_ALGO is not set
@@ -1051,6 +1060,11 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
1051# CONFIG_POWER_SUPPLY is not set 1060# CONFIG_POWER_SUPPLY is not set
1052CONFIG_HWMON=y 1061CONFIG_HWMON=y
1053# CONFIG_HWMON_VID is not set 1062# CONFIG_HWMON_VID is not set
1063# CONFIG_HWMON_DEBUG_CHIP is not set
1064
1065#
1066# Native drivers
1067#
1054# CONFIG_SENSORS_AD7414 is not set 1068# CONFIG_SENSORS_AD7414 is not set
1055# CONFIG_SENSORS_AD7418 is not set 1069# CONFIG_SENSORS_AD7418 is not set
1056# CONFIG_SENSORS_ADM1021 is not set 1070# CONFIG_SENSORS_ADM1021 is not set
@@ -1100,6 +1114,7 @@ CONFIG_HWMON=y
1100# CONFIG_SENSORS_ADS7828 is not set 1114# CONFIG_SENSORS_ADS7828 is not set
1101# CONFIG_SENSORS_THMC50 is not set 1115# CONFIG_SENSORS_THMC50 is not set
1102# CONFIG_SENSORS_TMP401 is not set 1116# CONFIG_SENSORS_TMP401 is not set
1117# CONFIG_SENSORS_TMP421 is not set
1103# CONFIG_SENSORS_VIA686A is not set 1118# CONFIG_SENSORS_VIA686A is not set
1104# CONFIG_SENSORS_VT1211 is not set 1119# CONFIG_SENSORS_VT1211 is not set
1105# CONFIG_SENSORS_VT8231 is not set 1120# CONFIG_SENSORS_VT8231 is not set
@@ -1111,9 +1126,7 @@ CONFIG_HWMON=y
1111# CONFIG_SENSORS_W83L786NG is not set 1126# CONFIG_SENSORS_W83L786NG is not set
1112# CONFIG_SENSORS_W83627HF is not set 1127# CONFIG_SENSORS_W83627HF is not set
1113# CONFIG_SENSORS_W83627EHF is not set 1128# CONFIG_SENSORS_W83627EHF is not set
1114# CONFIG_HWMON_DEBUG_CHIP is not set
1115# CONFIG_THERMAL is not set 1129# CONFIG_THERMAL is not set
1116# CONFIG_THERMAL_HWMON is not set
1117# CONFIG_WATCHDOG is not set 1130# CONFIG_WATCHDOG is not set
1118CONFIG_SSB_POSSIBLE=y 1131CONFIG_SSB_POSSIBLE=y
1119 1132
@@ -1132,6 +1145,7 @@ CONFIG_SSB_POSSIBLE=y
1132# CONFIG_MFD_TMIO is not set 1145# CONFIG_MFD_TMIO is not set
1133# CONFIG_PMIC_DA903X is not set 1146# CONFIG_PMIC_DA903X is not set
1134# CONFIG_MFD_WM8400 is not set 1147# CONFIG_MFD_WM8400 is not set
1148# CONFIG_MFD_WM831X is not set
1135# CONFIG_MFD_WM8350_I2C is not set 1149# CONFIG_MFD_WM8350_I2C is not set
1136# CONFIG_MFD_PCF50633 is not set 1150# CONFIG_MFD_PCF50633 is not set
1137# CONFIG_AB3100_CORE is not set 1151# CONFIG_AB3100_CORE is not set
@@ -1142,6 +1156,7 @@ CONFIG_SSB_POSSIBLE=y
1142# Graphics support 1156# Graphics support
1143# 1157#
1144# CONFIG_AGP is not set 1158# CONFIG_AGP is not set
1159CONFIG_VGA_ARB=y
1145# CONFIG_DRM is not set 1160# CONFIG_DRM is not set
1146# CONFIG_VGASTATE is not set 1161# CONFIG_VGASTATE is not set
1147CONFIG_VIDEO_OUTPUT_CONTROL=y 1162CONFIG_VIDEO_OUTPUT_CONTROL=y
@@ -1162,7 +1177,6 @@ CONFIG_DUMMY_CONSOLE=y
1162# CONFIG_SOUND is not set 1177# CONFIG_SOUND is not set
1163CONFIG_HID_SUPPORT=y 1178CONFIG_HID_SUPPORT=y
1164CONFIG_HID=y 1179CONFIG_HID=y
1165# CONFIG_HID_DEBUG is not set
1166# CONFIG_HIDRAW is not set 1180# CONFIG_HIDRAW is not set
1167 1181
1168# 1182#
@@ -1186,6 +1200,7 @@ CONFIG_HID_DRAGONRISE=y
1186CONFIG_HID_EZKEY=y 1200CONFIG_HID_EZKEY=y
1187CONFIG_HID_KYE=y 1201CONFIG_HID_KYE=y
1188CONFIG_HID_GYRATION=y 1202CONFIG_HID_GYRATION=y
1203CONFIG_HID_TWINHAN=y
1189CONFIG_HID_KENSINGTON=y 1204CONFIG_HID_KENSINGTON=y
1190CONFIG_HID_LOGITECH=y 1205CONFIG_HID_LOGITECH=y
1191# CONFIG_LOGITECH_FF is not set 1206# CONFIG_LOGITECH_FF is not set
@@ -1239,6 +1254,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
1239# CONFIG_USB_OXU210HP_HCD is not set 1254# CONFIG_USB_OXU210HP_HCD is not set
1240# CONFIG_USB_ISP116X_HCD is not set 1255# CONFIG_USB_ISP116X_HCD is not set
1241# CONFIG_USB_ISP1760_HCD is not set 1256# CONFIG_USB_ISP1760_HCD is not set
1257# CONFIG_USB_ISP1362_HCD is not set
1242CONFIG_USB_OHCI_HCD=y 1258CONFIG_USB_OHCI_HCD=y
1243# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set 1259# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set
1244# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 1260# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
@@ -1404,6 +1420,7 @@ CONFIG_FS_MBCACHE=y
1404# CONFIG_GFS2_FS is not set 1420# CONFIG_GFS2_FS is not set
1405# CONFIG_OCFS2_FS is not set 1421# CONFIG_OCFS2_FS is not set
1406# CONFIG_BTRFS_FS is not set 1422# CONFIG_BTRFS_FS is not set
1423# CONFIG_NILFS2_FS is not set
1407CONFIG_FILE_LOCKING=y 1424CONFIG_FILE_LOCKING=y
1408CONFIG_FSNOTIFY=y 1425CONFIG_FSNOTIFY=y
1409CONFIG_DNOTIFY=y 1426CONFIG_DNOTIFY=y
@@ -1463,7 +1480,6 @@ CONFIG_MISC_FILESYSTEMS=y
1463# CONFIG_ROMFS_FS is not set 1480# CONFIG_ROMFS_FS is not set
1464# CONFIG_SYSV_FS is not set 1481# CONFIG_SYSV_FS is not set
1465# CONFIG_UFS_FS is not set 1482# CONFIG_UFS_FS is not set
1466# CONFIG_NILFS2_FS is not set
1467CONFIG_NETWORK_FILESYSTEMS=y 1483CONFIG_NETWORK_FILESYSTEMS=y
1468CONFIG_NFS_FS=y 1484CONFIG_NFS_FS=y
1469# CONFIG_NFS_V3 is not set 1485# CONFIG_NFS_V3 is not set
@@ -1576,6 +1592,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
1576CONFIG_ENABLE_MUST_CHECK=y 1592CONFIG_ENABLE_MUST_CHECK=y
1577CONFIG_FRAME_WARN=1024 1593CONFIG_FRAME_WARN=1024
1578# CONFIG_MAGIC_SYSRQ is not set 1594# CONFIG_MAGIC_SYSRQ is not set
1595# CONFIG_STRIP_ASM_SYMS is not set
1579# CONFIG_UNUSED_SYMBOLS is not set 1596# CONFIG_UNUSED_SYMBOLS is not set
1580# CONFIG_DEBUG_FS is not set 1597# CONFIG_DEBUG_FS is not set
1581# CONFIG_HEADERS_CHECK is not set 1598# CONFIG_HEADERS_CHECK is not set
@@ -1593,6 +1610,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1593CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1610CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1594CONFIG_TRACING_SUPPORT=y 1611CONFIG_TRACING_SUPPORT=y
1595# CONFIG_FTRACE is not set 1612# CONFIG_FTRACE is not set
1613# CONFIG_DMA_API_DEBUG is not set
1596# CONFIG_SAMPLES is not set 1614# CONFIG_SAMPLES is not set
1597CONFIG_HAVE_ARCH_KGDB=y 1615CONFIG_HAVE_ARCH_KGDB=y
1598# CONFIG_PPC_DISABLE_WERROR is not set 1616# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1614,7 +1632,6 @@ CONFIG_CRYPTO=y
1614# 1632#
1615# Crypto core or helper 1633# Crypto core or helper
1616# 1634#
1617# CONFIG_CRYPTO_FIPS is not set
1618# CONFIG_CRYPTO_MANAGER is not set 1635# CONFIG_CRYPTO_MANAGER is not set
1619# CONFIG_CRYPTO_MANAGER2 is not set 1636# CONFIG_CRYPTO_MANAGER2 is not set
1620# CONFIG_CRYPTO_GF128MUL is not set 1637# CONFIG_CRYPTO_GF128MUL is not set
@@ -1645,11 +1662,13 @@ CONFIG_CRYPTO=y
1645# 1662#
1646# CONFIG_CRYPTO_HMAC is not set 1663# CONFIG_CRYPTO_HMAC is not set
1647# CONFIG_CRYPTO_XCBC is not set 1664# CONFIG_CRYPTO_XCBC is not set
1665# CONFIG_CRYPTO_VMAC is not set
1648 1666
1649# 1667#
1650# Digest 1668# Digest
1651# 1669#
1652# CONFIG_CRYPTO_CRC32C is not set 1670# CONFIG_CRYPTO_CRC32C is not set
1671# CONFIG_CRYPTO_GHASH is not set
1653# CONFIG_CRYPTO_MD4 is not set 1672# CONFIG_CRYPTO_MD4 is not set
1654# CONFIG_CRYPTO_MD5 is not set 1673# CONFIG_CRYPTO_MD5 is not set
1655# CONFIG_CRYPTO_MICHAEL_MIC is not set 1674# CONFIG_CRYPTO_MICHAEL_MIC is not set
diff --git a/arch/powerpc/configs/storcenter_defconfig b/arch/powerpc/configs/storcenter_defconfig
index 28384dc01003..524263158fc0 100644
--- a/arch/powerpc/configs/storcenter_defconfig
+++ b/arch/powerpc/configs/storcenter_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.31-rc4 3# Linux kernel version: 2.6.32-rc5
4# Wed Jul 29 23:32:01 2009 4# Thu Nov 5 08:20:19 2009
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -34,6 +34,7 @@ CONFIG_GENERIC_CLOCKEVENTS=y
34CONFIG_GENERIC_HARDIRQS=y 34CONFIG_GENERIC_HARDIRQS=y
35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 35CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 36# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
37# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
37CONFIG_IRQ_PER_CPU=y 38CONFIG_IRQ_PER_CPU=y
38CONFIG_STACKTRACE_SUPPORT=y 39CONFIG_STACKTRACE_SUPPORT=y
39CONFIG_HAVE_LATENCYTOP_SUPPORT=y 40CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -82,11 +83,12 @@ CONFIG_SYSVIPC_SYSCTL=y
82# 83#
83# RCU Subsystem 84# RCU Subsystem
84# 85#
85CONFIG_CLASSIC_RCU=y 86CONFIG_TREE_RCU=y
86# CONFIG_TREE_RCU is not set 87# CONFIG_TREE_PREEMPT_RCU is not set
87# CONFIG_PREEMPT_RCU is not set 88# CONFIG_RCU_TRACE is not set
89CONFIG_RCU_FANOUT=32
90# CONFIG_RCU_FANOUT_EXACT is not set
88# CONFIG_TREE_RCU_TRACE is not set 91# CONFIG_TREE_RCU_TRACE is not set
89# CONFIG_PREEMPT_RCU_TRACE is not set
90# CONFIG_IKCONFIG is not set 92# CONFIG_IKCONFIG is not set
91CONFIG_LOG_BUF_SHIFT=14 93CONFIG_LOG_BUF_SHIFT=14
92CONFIG_GROUP_SCHED=y 94CONFIG_GROUP_SCHED=y
@@ -118,28 +120,29 @@ CONFIG_TIMERFD=y
118CONFIG_EVENTFD=y 120CONFIG_EVENTFD=y
119CONFIG_SHMEM=y 121CONFIG_SHMEM=y
120CONFIG_AIO=y 122CONFIG_AIO=y
121CONFIG_HAVE_PERF_COUNTERS=y 123CONFIG_HAVE_PERF_EVENTS=y
122 124
123# 125#
124# Performance Counters 126# Kernel Performance Events And Counters
125# 127#
128# CONFIG_PERF_EVENTS is not set
126# CONFIG_PERF_COUNTERS is not set 129# CONFIG_PERF_COUNTERS is not set
127CONFIG_VM_EVENT_COUNTERS=y 130CONFIG_VM_EVENT_COUNTERS=y
128CONFIG_PCI_QUIRKS=y 131CONFIG_PCI_QUIRKS=y
129CONFIG_SLUB_DEBUG=y 132CONFIG_SLUB_DEBUG=y
130# CONFIG_STRIP_ASM_SYMS is not set
131CONFIG_COMPAT_BRK=y 133CONFIG_COMPAT_BRK=y
132# CONFIG_SLAB is not set 134# CONFIG_SLAB is not set
133CONFIG_SLUB=y 135CONFIG_SLUB=y
134# CONFIG_SLOB is not set 136# CONFIG_SLOB is not set
135# CONFIG_PROFILING is not set 137# CONFIG_PROFILING is not set
136# CONFIG_MARKERS is not set
137CONFIG_HAVE_OPROFILE=y 138CONFIG_HAVE_OPROFILE=y
138CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 139CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
139CONFIG_HAVE_IOREMAP_PROT=y 140CONFIG_HAVE_IOREMAP_PROT=y
140CONFIG_HAVE_KPROBES=y 141CONFIG_HAVE_KPROBES=y
141CONFIG_HAVE_KRETPROBES=y 142CONFIG_HAVE_KRETPROBES=y
142CONFIG_HAVE_ARCH_TRACEHOOK=y 143CONFIG_HAVE_ARCH_TRACEHOOK=y
144CONFIG_HAVE_DMA_ATTRS=y
145CONFIG_HAVE_DMA_API_DEBUG=y
143 146
144# 147#
145# GCOV-based kernel profiling 148# GCOV-based kernel profiling
@@ -243,6 +246,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y
243CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y 246CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
244# CONFIG_KEXEC is not set 247# CONFIG_KEXEC is not set
245# CONFIG_CRASH_DUMP is not set 248# CONFIG_CRASH_DUMP is not set
249CONFIG_MAX_ACTIVE_REGIONS=32
246CONFIG_ARCH_FLATMEM_ENABLE=y 250CONFIG_ARCH_FLATMEM_ENABLE=y
247CONFIG_ARCH_POPULATES_NODE_MAP=y 251CONFIG_ARCH_POPULATES_NODE_MAP=y
248CONFIG_SELECT_MEMORY_MODEL=y 252CONFIG_SELECT_MEMORY_MODEL=y
@@ -260,6 +264,7 @@ CONFIG_BOUNCE=y
260CONFIG_VIRT_TO_BUS=y 264CONFIG_VIRT_TO_BUS=y
261CONFIG_HAVE_MLOCK=y 265CONFIG_HAVE_MLOCK=y
262CONFIG_HAVE_MLOCKED_PAGE_BIT=y 266CONFIG_HAVE_MLOCKED_PAGE_BIT=y
267# CONFIG_KSM is not set
263CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 268CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
264CONFIG_PPC_4K_PAGES=y 269CONFIG_PPC_4K_PAGES=y
265# CONFIG_PPC_16K_PAGES is not set 270# CONFIG_PPC_16K_PAGES is not set
@@ -349,6 +354,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
349# CONFIG_NETFILTER is not set 354# CONFIG_NETFILTER is not set
350# CONFIG_IP_DCCP is not set 355# CONFIG_IP_DCCP is not set
351# CONFIG_IP_SCTP is not set 356# CONFIG_IP_SCTP is not set
357# CONFIG_RDS is not set
352# CONFIG_TIPC is not set 358# CONFIG_TIPC is not set
353# CONFIG_ATM is not set 359# CONFIG_ATM is not set
354# CONFIG_BRIDGE is not set 360# CONFIG_BRIDGE is not set
@@ -378,6 +384,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
378# CONFIG_AF_RXRPC is not set 384# CONFIG_AF_RXRPC is not set
379CONFIG_WIRELESS=y 385CONFIG_WIRELESS=y
380# CONFIG_CFG80211 is not set 386# CONFIG_CFG80211 is not set
387CONFIG_CFG80211_DEFAULT_PS_VALUE=0
381CONFIG_WIRELESS_OLD_REGULATORY=y 388CONFIG_WIRELESS_OLD_REGULATORY=y
382# CONFIG_WIRELESS_EXT is not set 389# CONFIG_WIRELESS_EXT is not set
383# CONFIG_LIB80211 is not set 390# CONFIG_LIB80211 is not set
@@ -385,7 +392,6 @@ CONFIG_WIRELESS_OLD_REGULATORY=y
385# 392#
386# CFG80211 needs to be enabled for MAC80211 393# CFG80211 needs to be enabled for MAC80211
387# 394#
388CONFIG_MAC80211_DEFAULT_PS_VALUE=0
389# CONFIG_WIMAX is not set 395# CONFIG_WIMAX is not set
390# CONFIG_RFKILL is not set 396# CONFIG_RFKILL is not set
391# CONFIG_NET_9P is not set 397# CONFIG_NET_9P is not set
@@ -398,6 +404,7 @@ CONFIG_MAC80211_DEFAULT_PS_VALUE=0
398# Generic Driver Options 404# Generic Driver Options
399# 405#
400CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 406CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
407# CONFIG_DEVTMPFS is not set
401CONFIG_STANDALONE=y 408CONFIG_STANDALONE=y
402CONFIG_PREVENT_FIRMWARE_BUILD=y 409CONFIG_PREVENT_FIRMWARE_BUILD=y
403# CONFIG_FW_LOADER is not set 410# CONFIG_FW_LOADER is not set
@@ -405,9 +412,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
405# CONFIG_CONNECTOR is not set 412# CONFIG_CONNECTOR is not set
406CONFIG_MTD=y 413CONFIG_MTD=y
407# CONFIG_MTD_DEBUG is not set 414# CONFIG_MTD_DEBUG is not set
415# CONFIG_MTD_TESTS is not set
408# CONFIG_MTD_CONCAT is not set 416# CONFIG_MTD_CONCAT is not set
409CONFIG_MTD_PARTITIONS=y 417CONFIG_MTD_PARTITIONS=y
410# CONFIG_MTD_TESTS is not set
411# CONFIG_MTD_REDBOOT_PARTS is not set 418# CONFIG_MTD_REDBOOT_PARTS is not set
412CONFIG_MTD_CMDLINE_PARTS=y 419CONFIG_MTD_CMDLINE_PARTS=y
413CONFIG_MTD_OF_PARTS=y 420CONFIG_MTD_OF_PARTS=y
@@ -619,6 +626,7 @@ CONFIG_SCSI_SPI_ATTRS=y
619CONFIG_SCSI_LOWLEVEL=y 626CONFIG_SCSI_LOWLEVEL=y
620# CONFIG_ISCSI_TCP is not set 627# CONFIG_ISCSI_TCP is not set
621# CONFIG_SCSI_BNX2_ISCSI is not set 628# CONFIG_SCSI_BNX2_ISCSI is not set
629# CONFIG_BE2ISCSI is not set
622# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 630# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
623# CONFIG_SCSI_3W_9XXX is not set 631# CONFIG_SCSI_3W_9XXX is not set
624# CONFIG_SCSI_ACARD is not set 632# CONFIG_SCSI_ACARD is not set
@@ -657,7 +665,9 @@ CONFIG_SCSI_LOWLEVEL=y
657# CONFIG_SCSI_DC390T is not set 665# CONFIG_SCSI_DC390T is not set
658# CONFIG_SCSI_NSP32 is not set 666# CONFIG_SCSI_NSP32 is not set
659# CONFIG_SCSI_DEBUG is not set 667# CONFIG_SCSI_DEBUG is not set
668# CONFIG_SCSI_PMCRAID is not set
660# CONFIG_SCSI_SRP is not set 669# CONFIG_SCSI_SRP is not set
670# CONFIG_SCSI_BFA_FC is not set
661# CONFIG_SCSI_DH is not set 671# CONFIG_SCSI_DH is not set
662# CONFIG_SCSI_OSD_INITIATOR is not set 672# CONFIG_SCSI_OSD_INITIATOR is not set
663# CONFIG_ATA is not set 673# CONFIG_ATA is not set
@@ -670,6 +680,7 @@ CONFIG_MD_RAID1=y
670# CONFIG_MD_RAID10 is not set 680# CONFIG_MD_RAID10 is not set
671CONFIG_MD_RAID456=y 681CONFIG_MD_RAID456=y
672CONFIG_MD_RAID6_PQ=y 682CONFIG_MD_RAID6_PQ=y
683# CONFIG_ASYNC_RAID6_TEST is not set
673# CONFIG_MD_MULTIPATH is not set 684# CONFIG_MD_MULTIPATH is not set
674# CONFIG_MD_FAULTY is not set 685# CONFIG_MD_FAULTY is not set
675# CONFIG_BLK_DEV_DM is not set 686# CONFIG_BLK_DEV_DM is not set
@@ -729,10 +740,7 @@ CONFIG_R8169=y
729# CONFIG_JME is not set 740# CONFIG_JME is not set
730# CONFIG_NETDEV_10000 is not set 741# CONFIG_NETDEV_10000 is not set
731# CONFIG_TR is not set 742# CONFIG_TR is not set
732 743CONFIG_WLAN=y
733#
734# Wireless LAN
735#
736# CONFIG_WLAN_PRE80211 is not set 744# CONFIG_WLAN_PRE80211 is not set
737# CONFIG_WLAN_80211 is not set 745# CONFIG_WLAN_80211 is not set
738 746
@@ -813,6 +821,7 @@ CONFIG_NVRAM=y
813CONFIG_DEVPORT=y 821CONFIG_DEVPORT=y
814CONFIG_I2C=y 822CONFIG_I2C=y
815CONFIG_I2C_BOARDINFO=y 823CONFIG_I2C_BOARDINFO=y
824CONFIG_I2C_COMPAT=y
816CONFIG_I2C_CHARDEV=y 825CONFIG_I2C_CHARDEV=y
817CONFIG_I2C_HELPER_AUTO=y 826CONFIG_I2C_HELPER_AUTO=y
818 827
@@ -867,9 +876,6 @@ CONFIG_I2C_MPC=y
867# Miscellaneous I2C Chip support 876# Miscellaneous I2C Chip support
868# 877#
869# CONFIG_DS1682 is not set 878# CONFIG_DS1682 is not set
870# CONFIG_SENSORS_PCF8574 is not set
871# CONFIG_PCF8575 is not set
872# CONFIG_SENSORS_PCA9539 is not set
873# CONFIG_SENSORS_TSL2550 is not set 879# CONFIG_SENSORS_TSL2550 is not set
874# CONFIG_I2C_DEBUG_CORE is not set 880# CONFIG_I2C_DEBUG_CORE is not set
875# CONFIG_I2C_DEBUG_ALGO is not set 881# CONFIG_I2C_DEBUG_ALGO is not set
@@ -887,7 +893,6 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
887# CONFIG_POWER_SUPPLY is not set 893# CONFIG_POWER_SUPPLY is not set
888# CONFIG_HWMON is not set 894# CONFIG_HWMON is not set
889# CONFIG_THERMAL is not set 895# CONFIG_THERMAL is not set
890# CONFIG_THERMAL_HWMON is not set
891# CONFIG_WATCHDOG is not set 896# CONFIG_WATCHDOG is not set
892CONFIG_SSB_POSSIBLE=y 897CONFIG_SSB_POSSIBLE=y
893 898
@@ -906,6 +911,7 @@ CONFIG_SSB_POSSIBLE=y
906# CONFIG_MFD_TMIO is not set 911# CONFIG_MFD_TMIO is not set
907# CONFIG_PMIC_DA903X is not set 912# CONFIG_PMIC_DA903X is not set
908# CONFIG_MFD_WM8400 is not set 913# CONFIG_MFD_WM8400 is not set
914# CONFIG_MFD_WM831X is not set
909# CONFIG_MFD_WM8350_I2C is not set 915# CONFIG_MFD_WM8350_I2C is not set
910# CONFIG_MFD_PCF50633 is not set 916# CONFIG_MFD_PCF50633 is not set
911# CONFIG_AB3100_CORE is not set 917# CONFIG_AB3100_CORE is not set
@@ -916,6 +922,7 @@ CONFIG_SSB_POSSIBLE=y
916# Graphics support 922# Graphics support
917# 923#
918# CONFIG_AGP is not set 924# CONFIG_AGP is not set
925CONFIG_VGA_ARB=y
919# CONFIG_DRM is not set 926# CONFIG_DRM is not set
920# CONFIG_VGASTATE is not set 927# CONFIG_VGASTATE is not set
921# CONFIG_VIDEO_OUTPUT_CONTROL is not set 928# CONFIG_VIDEO_OUTPUT_CONTROL is not set
@@ -961,6 +968,7 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y
961# CONFIG_USB_OXU210HP_HCD is not set 968# CONFIG_USB_OXU210HP_HCD is not set
962# CONFIG_USB_ISP116X_HCD is not set 969# CONFIG_USB_ISP116X_HCD is not set
963# CONFIG_USB_ISP1760_HCD is not set 970# CONFIG_USB_ISP1760_HCD is not set
971# CONFIG_USB_ISP1362_HCD is not set
964CONFIG_USB_OHCI_HCD=y 972CONFIG_USB_OHCI_HCD=y
965# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set 973# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set
966# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set 974# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
@@ -1141,6 +1149,7 @@ CONFIG_XFS_FS=m
1141# CONFIG_GFS2_FS is not set 1149# CONFIG_GFS2_FS is not set
1142# CONFIG_OCFS2_FS is not set 1150# CONFIG_OCFS2_FS is not set
1143# CONFIG_BTRFS_FS is not set 1151# CONFIG_BTRFS_FS is not set
1152# CONFIG_NILFS2_FS is not set
1144CONFIG_FILE_LOCKING=y 1153CONFIG_FILE_LOCKING=y
1145CONFIG_FSNOTIFY=y 1154CONFIG_FSNOTIFY=y
1146CONFIG_DNOTIFY=y 1155CONFIG_DNOTIFY=y
@@ -1210,7 +1219,6 @@ CONFIG_JFFS2_RTIME=y
1210# CONFIG_ROMFS_FS is not set 1219# CONFIG_ROMFS_FS is not set
1211# CONFIG_SYSV_FS is not set 1220# CONFIG_SYSV_FS is not set
1212# CONFIG_UFS_FS is not set 1221# CONFIG_UFS_FS is not set
1213# CONFIG_NILFS2_FS is not set
1214# CONFIG_NETWORK_FILESYSTEMS is not set 1222# CONFIG_NETWORK_FILESYSTEMS is not set
1215CONFIG_EXPORTFS=m 1223CONFIG_EXPORTFS=m
1216 1224
@@ -1307,6 +1315,7 @@ CONFIG_GENERIC_ATOMIC64=y
1307# CONFIG_ENABLE_MUST_CHECK is not set 1315# CONFIG_ENABLE_MUST_CHECK is not set
1308CONFIG_FRAME_WARN=1024 1316CONFIG_FRAME_WARN=1024
1309# CONFIG_MAGIC_SYSRQ is not set 1317# CONFIG_MAGIC_SYSRQ is not set
1318# CONFIG_STRIP_ASM_SYMS is not set
1310# CONFIG_UNUSED_SYMBOLS is not set 1319# CONFIG_UNUSED_SYMBOLS is not set
1311# CONFIG_DEBUG_FS is not set 1320# CONFIG_DEBUG_FS is not set
1312# CONFIG_HEADERS_CHECK is not set 1321# CONFIG_HEADERS_CHECK is not set
@@ -1324,6 +1333,7 @@ CONFIG_HAVE_DYNAMIC_FTRACE=y
1324CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1333CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1325CONFIG_TRACING_SUPPORT=y 1334CONFIG_TRACING_SUPPORT=y
1326# CONFIG_FTRACE is not set 1335# CONFIG_FTRACE is not set
1336# CONFIG_DMA_API_DEBUG is not set
1327# CONFIG_SAMPLES is not set 1337# CONFIG_SAMPLES is not set
1328CONFIG_HAVE_ARCH_KGDB=y 1338CONFIG_HAVE_ARCH_KGDB=y
1329# CONFIG_PPC_DISABLE_WERROR is not set 1339# CONFIG_PPC_DISABLE_WERROR is not set
@@ -1344,6 +1354,8 @@ CONFIG_XOR_BLOCKS=y
1344CONFIG_ASYNC_CORE=y 1354CONFIG_ASYNC_CORE=y
1345CONFIG_ASYNC_MEMCPY=y 1355CONFIG_ASYNC_MEMCPY=y
1346CONFIG_ASYNC_XOR=y 1356CONFIG_ASYNC_XOR=y
1357CONFIG_ASYNC_PQ=y
1358CONFIG_ASYNC_RAID6_RECOV=y
1347# CONFIG_CRYPTO is not set 1359# CONFIG_CRYPTO is not set
1348# CONFIG_PPC_CLOCK is not set 1360# CONFIG_PPC_CLOCK is not set
1349# CONFIG_VIRTUALIZATION is not set 1361# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/include/asm/kmap_types.h b/arch/powerpc/include/asm/kmap_types.h
index b6bac6f61c16..916369575c97 100644
--- a/arch/powerpc/include/asm/kmap_types.h
+++ b/arch/powerpc/include/asm/kmap_types.h
@@ -29,5 +29,16 @@ enum km_type {
29 KM_TYPE_NR 29 KM_TYPE_NR
30}; 30};
31 31
32/*
33 * This is a temporary build fix that (so they say on lkml....) should no longer
34 * be required after 2.6.33, because of changes planned to the kmap code.
35 * Let's try to remove this cruft then.
36 */
37#ifdef CONFIG_DEBUG_HIGHMEM
38#define KM_NMI (-1)
39#define KM_NMI_PTE (-1)
40#define KM_IRQ_PTE (-1)
41#endif
42
32#endif /* __KERNEL__ */ 43#endif /* __KERNEL__ */
33#endif /* _ASM_POWERPC_KMAP_TYPES_H */ 44#endif /* _ASM_POWERPC_KMAP_TYPES_H */
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index f9fd54bfcc84..9763267e38b4 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -658,42 +658,43 @@ do_work:
658 cmpdi r0,0 658 cmpdi r0,0
659 crandc eq,cr1*4+eq,eq 659 crandc eq,cr1*4+eq,eq
660 bne restore 660 bne restore
661 /* here we are preempting the current task */ 661
6621: 662 /* Here we are preempting the current task.
663#ifdef CONFIG_TRACE_IRQFLAGS 663 *
664 bl .trace_hardirqs_on 664 * Ensure interrupts are soft-disabled. We also properly mark
665 /* Note: we just clobbered r10 which used to contain the previous 665 * the PACA to reflect the fact that they are hard-disabled
666 * MSR before the hard-disabling done by the caller of do_work. 666 * and trace the change
667 * We don't have that value anymore, but it doesn't matter as
668 * we will hard-enable unconditionally, we can just reload the
669 * current MSR into r10
670 */ 667 */
671 mfmsr r10 668 li r0,0
672#endif /* CONFIG_TRACE_IRQFLAGS */
673 li r0,1
674 stb r0,PACASOFTIRQEN(r13) 669 stb r0,PACASOFTIRQEN(r13)
675 stb r0,PACAHARDIRQEN(r13) 670 stb r0,PACAHARDIRQEN(r13)
671 TRACE_DISABLE_INTS
672
673 /* Call the scheduler with soft IRQs off */
6741: bl .preempt_schedule_irq
675
676 /* Hard-disable interrupts again (and update PACA) */
676#ifdef CONFIG_PPC_BOOK3E 677#ifdef CONFIG_PPC_BOOK3E
677 wrteei 1
678 bl .preempt_schedule
679 wrteei 0 678 wrteei 0
680#else 679#else
681 ori r10,r10,MSR_EE
682 mtmsrd r10,1 /* reenable interrupts */
683 bl .preempt_schedule
684 mfmsr r10 680 mfmsr r10
685 clrrdi r9,r1,THREAD_SHIFT 681 rldicl r10,r10,48,1
686 rldicl r10,r10,48,1 /* disable interrupts again */
687 rotldi r10,r10,16 682 rotldi r10,r10,16
688 mtmsrd r10,1 683 mtmsrd r10,1
689#endif /* CONFIG_PPC_BOOK3E */ 684#endif /* CONFIG_PPC_BOOK3E */
685 li r0,0
686 stb r0,PACAHARDIRQEN(r13)
687
688 /* Re-test flags and eventually loop */
689 clrrdi r9,r1,THREAD_SHIFT
690 ld r4,TI_FLAGS(r9) 690 ld r4,TI_FLAGS(r9)
691 andi. r0,r4,_TIF_NEED_RESCHED 691 andi. r0,r4,_TIF_NEED_RESCHED
692 bne 1b 692 bne 1b
693 b restore 693 b restore
694 694
695user_work: 695user_work:
696#endif 696#endif /* CONFIG_PREEMPT */
697
697 /* Enable interrupts */ 698 /* Enable interrupts */
698#ifdef CONFIG_PPC_BOOK3E 699#ifdef CONFIG_PPC_BOOK3E
699 wrteei 1 700 wrteei 1
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c
index ba949a2c93ac..ccf56ac92de5 100644
--- a/arch/powerpc/kernel/pci_64.c
+++ b/arch/powerpc/kernel/pci_64.c
@@ -97,7 +97,9 @@ int pcibios_unmap_io_space(struct pci_bus *bus)
97 * to do an appropriate TLB flush here too 97 * to do an appropriate TLB flush here too
98 */ 98 */
99 if (bus->self) { 99 if (bus->self) {
100#ifdef CONFIG_PPC_STD_MMU_64
100 struct resource *res = bus->resource[0]; 101 struct resource *res = bus->resource[0];
102#endif
101 103
102 pr_debug("IO unmapping for PCI-PCI bridge %s\n", 104 pr_debug("IO unmapping for PCI-PCI bridge %s\n",
103 pci_name(bus->self)); 105 pci_name(bus->self));
diff --git a/arch/powerpc/kernel/perf_event.c b/arch/powerpc/kernel/perf_event.c
index bbcbae183e92..87f1663584b0 100644
--- a/arch/powerpc/kernel/perf_event.c
+++ b/arch/powerpc/kernel/perf_event.c
@@ -116,20 +116,23 @@ static inline void perf_get_data_addr(struct pt_regs *regs, u64 *addrp)
116static inline u32 perf_get_misc_flags(struct pt_regs *regs) 116static inline u32 perf_get_misc_flags(struct pt_regs *regs)
117{ 117{
118 unsigned long mmcra = regs->dsisr; 118 unsigned long mmcra = regs->dsisr;
119 unsigned long sihv = MMCRA_SIHV;
120 unsigned long sipr = MMCRA_SIPR;
119 121
120 if (TRAP(regs) != 0xf00) 122 if (TRAP(regs) != 0xf00)
121 return 0; /* not a PMU interrupt */ 123 return 0; /* not a PMU interrupt */
122 124
123 if (ppmu->flags & PPMU_ALT_SIPR) { 125 if (ppmu->flags & PPMU_ALT_SIPR) {
124 if (mmcra & POWER6_MMCRA_SIHV) 126 sihv = POWER6_MMCRA_SIHV;
125 return PERF_RECORD_MISC_HYPERVISOR; 127 sipr = POWER6_MMCRA_SIPR;
126 return (mmcra & POWER6_MMCRA_SIPR) ?
127 PERF_RECORD_MISC_USER : PERF_RECORD_MISC_KERNEL;
128 } 128 }
129 if (mmcra & MMCRA_SIHV) 129
130 /* PR has priority over HV, so order below is important */
131 if (mmcra & sipr)
132 return PERF_RECORD_MISC_USER;
133 if ((mmcra & sihv) && (freeze_events_kernel != MMCR0_FCHV))
130 return PERF_RECORD_MISC_HYPERVISOR; 134 return PERF_RECORD_MISC_HYPERVISOR;
131 return (mmcra & MMCRA_SIPR) ? PERF_RECORD_MISC_USER : 135 return PERF_RECORD_MISC_KERNEL;
132 PERF_RECORD_MISC_KERNEL;
133} 136}
134 137
135/* 138/*
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index 2ec1eaed19ca..c930ac38e59f 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -1172,7 +1172,7 @@ unsigned long arch_randomize_brk(struct mm_struct *mm)
1172 unsigned long base = mm->brk; 1172 unsigned long base = mm->brk;
1173 unsigned long ret; 1173 unsigned long ret;
1174 1174
1175#ifdef CONFIG_PPC64 1175#ifdef CONFIG_PPC_STD_MMU_64
1176 /* 1176 /*
1177 * If we are using 1TB segments and we are allowed to randomise 1177 * If we are using 1TB segments and we are allowed to randomise
1178 * the heap, we can put it above 1TB so it is backed by a 1TB 1178 * the heap, we can put it above 1TB so it is backed by a 1TB
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
index 797ea95aae2e..04f638d82fb3 100644
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -57,7 +57,6 @@
57#include <asm/cache.h> 57#include <asm/cache.h>
58#include <asm/page.h> 58#include <asm/page.h>
59#include <asm/mmu.h> 59#include <asm/mmu.h>
60#include <asm/mmu-hash64.h>
61#include <asm/firmware.h> 60#include <asm/firmware.h>
62#include <asm/xmon.h> 61#include <asm/xmon.h>
63#include <asm/udbg.h> 62#include <asm/udbg.h>
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 92dc844299b6..a136a11c490d 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -777,7 +777,7 @@ int update_persistent_clock(struct timespec now)
777 return ppc_md.set_rtc_time(&tm); 777 return ppc_md.set_rtc_time(&tm);
778} 778}
779 779
780void read_persistent_clock(struct timespec *ts) 780static void __read_persistent_clock(struct timespec *ts)
781{ 781{
782 struct rtc_time tm; 782 struct rtc_time tm;
783 static int first = 1; 783 static int first = 1;
@@ -800,10 +800,23 @@ void read_persistent_clock(struct timespec *ts)
800 return; 800 return;
801 } 801 }
802 ppc_md.get_rtc_time(&tm); 802 ppc_md.get_rtc_time(&tm);
803
803 ts->tv_sec = mktime(tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday, 804 ts->tv_sec = mktime(tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday,
804 tm.tm_hour, tm.tm_min, tm.tm_sec); 805 tm.tm_hour, tm.tm_min, tm.tm_sec);
805} 806}
806 807
808void read_persistent_clock(struct timespec *ts)
809{
810 __read_persistent_clock(ts);
811
812 /* Sanitize it in case real time clock is set below EPOCH */
813 if (ts->tv_sec < 0) {
814 ts->tv_sec = 0;
815 ts->tv_nsec = 0;
816 }
817
818}
819
807/* clocksource code */ 820/* clocksource code */
808static cycle_t rtc_read(struct clocksource *cs) 821static cycle_t rtc_read(struct clocksource *cs)
809{ 822{
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
index 94e2df3cae07..137dc22afa42 100644
--- a/arch/powerpc/kernel/vdso.c
+++ b/arch/powerpc/kernel/vdso.c
@@ -50,6 +50,9 @@
50/* Max supported size for symbol names */ 50/* Max supported size for symbol names */
51#define MAX_SYMNAME 64 51#define MAX_SYMNAME 64
52 52
53/* The alignment of the vDSO */
54#define VDSO_ALIGNMENT (1 << 16)
55
53extern char vdso32_start, vdso32_end; 56extern char vdso32_start, vdso32_end;
54static void *vdso32_kbase = &vdso32_start; 57static void *vdso32_kbase = &vdso32_start;
55static unsigned int vdso32_pages; 58static unsigned int vdso32_pages;
@@ -231,15 +234,21 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
231 * pick a base address for the vDSO in process space. We try to put it 234 * pick a base address for the vDSO in process space. We try to put it
232 * at vdso_base which is the "natural" base for it, but we might fail 235 * at vdso_base which is the "natural" base for it, but we might fail
233 * and end up putting it elsewhere. 236 * and end up putting it elsewhere.
237 * Add enough to the size so that the result can be aligned.
234 */ 238 */
235 down_write(&mm->mmap_sem); 239 down_write(&mm->mmap_sem);
236 vdso_base = get_unmapped_area(NULL, vdso_base, 240 vdso_base = get_unmapped_area(NULL, vdso_base,
237 vdso_pages << PAGE_SHIFT, 0, 0); 241 (vdso_pages << PAGE_SHIFT) +
242 ((VDSO_ALIGNMENT - 1) & PAGE_MASK),
243 0, 0);
238 if (IS_ERR_VALUE(vdso_base)) { 244 if (IS_ERR_VALUE(vdso_base)) {
239 rc = vdso_base; 245 rc = vdso_base;
240 goto fail_mmapsem; 246 goto fail_mmapsem;
241 } 247 }
242 248
249 /* Add required alignment. */
250 vdso_base = ALIGN(vdso_base, VDSO_ALIGNMENT);
251
243 /* 252 /*
244 * Put vDSO base into mm struct. We need to do this before calling 253 * Put vDSO base into mm struct. We need to do this before calling
245 * install_special_mapping or the perf counter mmap tracking code 254 * install_special_mapping or the perf counter mmap tracking code
diff --git a/arch/powerpc/kernel/vdso32/vdso32.lds.S b/arch/powerpc/kernel/vdso32/vdso32.lds.S
index 904ef1360dd7..0546bcd49cd0 100644
--- a/arch/powerpc/kernel/vdso32/vdso32.lds.S
+++ b/arch/powerpc/kernel/vdso32/vdso32.lds.S
@@ -25,7 +25,7 @@ SECTIONS
25 . = ALIGN(16); 25 . = ALIGN(16);
26 .text : { 26 .text : {
27 *(.text .stub .text.* .gnu.linkonce.t.* __ftr_alt_*) 27 *(.text .stub .text.* .gnu.linkonce.t.* __ftr_alt_*)
28 } 28 } :text
29 PROVIDE(__etext = .); 29 PROVIDE(__etext = .);
30 PROVIDE(_etext = .); 30 PROVIDE(_etext = .);
31 PROVIDE(etext = .); 31 PROVIDE(etext = .);
@@ -56,7 +56,7 @@ SECTIONS
56 .fixup : { *(.fixup) } 56 .fixup : { *(.fixup) }
57 57
58 .dynamic : { *(.dynamic) } :text :dynamic 58 .dynamic : { *(.dynamic) } :text :dynamic
59 .got : { *(.got) } 59 .got : { *(.got) } :text
60 .plt : { *(.plt) } 60 .plt : { *(.plt) }
61 61
62 _end = .; 62 _end = .;
diff --git a/arch/powerpc/kvm/timing.h b/arch/powerpc/kvm/timing.h
index bb13b1f3cd5a..806ef67868bd 100644
--- a/arch/powerpc/kvm/timing.h
+++ b/arch/powerpc/kvm/timing.h
@@ -48,7 +48,11 @@ static inline void kvmppc_set_exit_type(struct kvm_vcpu *vcpu, int type) {}
48static inline void kvmppc_account_exit_stat(struct kvm_vcpu *vcpu, int type) 48static inline void kvmppc_account_exit_stat(struct kvm_vcpu *vcpu, int type)
49{ 49{
50 /* type has to be known at build time for optimization */ 50 /* type has to be known at build time for optimization */
51
52 /* The BUILD_BUG_ON below breaks in funny ways, commented out
53 * for now ... -BenH
51 BUILD_BUG_ON(__builtin_constant_p(type)); 54 BUILD_BUG_ON(__builtin_constant_p(type));
55 */
52 switch (type) { 56 switch (type) {
53 case EXT_INTR_EXITS: 57 case EXT_INTR_EXITS:
54 vcpu->stat.ext_intr_exits++; 58 vcpu->stat.ext_intr_exits++;
diff --git a/arch/powerpc/mm/mmu_context_nohash.c b/arch/powerpc/mm/mmu_context_nohash.c
index c2f93dc470e6..be4f34c30a0b 100644
--- a/arch/powerpc/mm/mmu_context_nohash.c
+++ b/arch/powerpc/mm/mmu_context_nohash.c
@@ -25,8 +25,8 @@
25 * also clear mm->cpu_vm_mask bits when processes are migrated 25 * also clear mm->cpu_vm_mask bits when processes are migrated
26 */ 26 */
27 27
28#define DEBUG_MAP_CONSISTENCY 28//#define DEBUG_MAP_CONSISTENCY
29#define DEBUG_CLAMP_LAST_CONTEXT 31 29//#define DEBUG_CLAMP_LAST_CONTEXT 31
30//#define DEBUG_HARDER 30//#define DEBUG_HARDER
31 31
32/* We don't use DEBUG because it tends to be compiled in always nowadays 32/* We don't use DEBUG because it tends to be compiled in always nowadays
diff --git a/arch/powerpc/platforms/52xx/mpc5200_simple.c b/arch/powerpc/platforms/52xx/mpc5200_simple.c
index c31e5b534f0a..d45be5b5ad49 100644
--- a/arch/powerpc/platforms/52xx/mpc5200_simple.c
+++ b/arch/powerpc/platforms/52xx/mpc5200_simple.c
@@ -51,6 +51,8 @@ static void __init mpc5200_simple_setup_arch(void)
51/* list of the supported boards */ 51/* list of the supported boards */
52static char *board[] __initdata = { 52static char *board[] __initdata = {
53 "intercontrol,digsy-mtc", 53 "intercontrol,digsy-mtc",
54 "manroland,mucmc52",
55 "manroland,uc101",
54 "phytec,pcm030", 56 "phytec,pcm030",
55 "phytec,pcm032", 57 "phytec,pcm032",
56 "promess,motionpro", 58 "promess,motionpro",
diff --git a/arch/powerpc/platforms/82xx/ep8248e.c b/arch/powerpc/platforms/82xx/ep8248e.c
index 51fcae41f08a..f9aee182e6f7 100644
--- a/arch/powerpc/platforms/82xx/ep8248e.c
+++ b/arch/powerpc/platforms/82xx/ep8248e.c
@@ -132,12 +132,25 @@ static int __devinit ep8248e_mdio_probe(struct of_device *ofdev,
132 return -ENOMEM; 132 return -ENOMEM;
133 133
134 bus->irq = kmalloc(sizeof(int) * PHY_MAX_ADDR, GFP_KERNEL); 134 bus->irq = kmalloc(sizeof(int) * PHY_MAX_ADDR, GFP_KERNEL);
135 if (bus->irq == NULL) {
136 ret = -ENOMEM;
137 goto err_free_bus;
138 }
135 139
136 bus->name = "ep8248e-mdio-bitbang"; 140 bus->name = "ep8248e-mdio-bitbang";
137 bus->parent = &ofdev->dev; 141 bus->parent = &ofdev->dev;
138 snprintf(bus->id, MII_BUS_ID_SIZE, "%x", res.start); 142 snprintf(bus->id, MII_BUS_ID_SIZE, "%x", res.start);
139 143
140 return of_mdiobus_register(bus, ofdev->node); 144 ret = of_mdiobus_register(bus, ofdev->node);
145 if (ret)
146 goto err_free_irq;
147
148 return 0;
149err_free_irq:
150 kfree(bus->irq);
151err_free_bus:
152 free_mdio_bitbang(bus);
153 return ret;
141} 154}
142 155
143static int ep8248e_mdio_remove(struct of_device *ofdev) 156static int ep8248e_mdio_remove(struct of_device *ofdev)
diff --git a/arch/powerpc/platforms/iseries/Makefile b/arch/powerpc/platforms/iseries/Makefile
index cc7161ff1666..ce014928d460 100644
--- a/arch/powerpc/platforms/iseries/Makefile
+++ b/arch/powerpc/platforms/iseries/Makefile
@@ -1,18 +1,9 @@
1EXTRA_CFLAGS += -mno-minimal-toc 1EXTRA_CFLAGS += -mno-minimal-toc
2 2
3extra-y += dt.o
4
5obj-y += exception.o 3obj-y += exception.o
6obj-y += hvlog.o hvlpconfig.o lpardata.o setup.o dt_mod.o mf.o lpevents.o \ 4obj-y += hvlog.o hvlpconfig.o lpardata.o setup.o dt.o mf.o lpevents.o \
7 hvcall.o proc.o htab.o iommu.o misc.o irq.o 5 hvcall.o proc.o htab.o iommu.o misc.o irq.o
8obj-$(CONFIG_PCI) += pci.o 6obj-$(CONFIG_PCI) += pci.o
9obj-$(CONFIG_SMP) += smp.o 7obj-$(CONFIG_SMP) += smp.o
10obj-$(CONFIG_VIOPATH) += viopath.o vio.o 8obj-$(CONFIG_VIOPATH) += viopath.o vio.o
11obj-$(CONFIG_MODULES) += ksyms.o 9obj-$(CONFIG_MODULES) += ksyms.o
12
13quiet_cmd_dt_strings = DT_STR $@
14 cmd_dt_strings = $(OBJCOPY) --rename-section .rodata.str1.8=.dt_strings \
15 $< $@
16
17$(obj)/dt_mod.o: $(obj)/dt.o
18 $(call if_changed,dt_strings)
diff --git a/arch/powerpc/platforms/iseries/dt.c b/arch/powerpc/platforms/iseries/dt.c
index c5a87a72057b..7f45a51fe793 100644
--- a/arch/powerpc/platforms/iseries/dt.c
+++ b/arch/powerpc/platforms/iseries/dt.c
@@ -51,11 +51,16 @@
51 51
52/* 52/*
53 * These are created by the linker script at the start and end 53 * These are created by the linker script at the start and end
54 * of the section containing all the strings from this file. 54 * of the section containing all the strings marked with the DS macro.
55 */ 55 */
56extern char __dt_strings_start[]; 56extern char __dt_strings_start[];
57extern char __dt_strings_end[]; 57extern char __dt_strings_end[];
58 58
59#define DS(s) ({ \
60 static const char __s[] __attribute__((section(".dt_strings"))) = s; \
61 __s; \
62})
63
59struct iseries_flat_dt { 64struct iseries_flat_dt {
60 struct boot_param_header header; 65 struct boot_param_header header;
61 u64 reserve_map[2]; 66 u64 reserve_map[2];
@@ -64,9 +69,8 @@ struct iseries_flat_dt {
64static void * __initdata dt_data; 69static void * __initdata dt_data;
65 70
66/* 71/*
67 * Putting these strings here keeps them out of the section 72 * Putting these strings here keeps them out of the .dt_strings section
68 * that we rename to .dt_strings using objcopy and capture 73 * that we capture for the strings blob of the flattened device tree.
69 * for the strings blob of the flattened device tree.
70 */ 74 */
71static char __initdata device_type_cpu[] = "cpu"; 75static char __initdata device_type_cpu[] = "cpu";
72static char __initdata device_type_memory[] = "memory"; 76static char __initdata device_type_memory[] = "memory";
@@ -173,7 +177,7 @@ static void __init dt_start_node(struct iseries_flat_dt *dt, const char *name)
173 177
174#define dt_end_node(dt) dt_push_u32(dt, OF_DT_END_NODE) 178#define dt_end_node(dt) dt_push_u32(dt, OF_DT_END_NODE)
175 179
176static void __init dt_prop(struct iseries_flat_dt *dt, const char *name, 180static void __init __dt_prop(struct iseries_flat_dt *dt, const char *name,
177 const void *data, int len) 181 const void *data, int len)
178{ 182{
179 unsigned long offset; 183 unsigned long offset;
@@ -191,44 +195,32 @@ static void __init dt_prop(struct iseries_flat_dt *dt, const char *name,
191 /* The actual data. */ 195 /* The actual data. */
192 dt_push_bytes(dt, data, len); 196 dt_push_bytes(dt, data, len);
193} 197}
198#define dt_prop(dt, name, data, len) __dt_prop((dt), DS(name), (data), (len))
194 199
195static void __init dt_prop_str(struct iseries_flat_dt *dt, const char *name, 200#define dt_prop_str(dt, name, data) \
196 const char *data) 201 dt_prop((dt), name, (data), strlen((data)) + 1); /* + 1 for NULL */
197{
198 dt_prop(dt, name, data, strlen(data) + 1); /* + 1 for NULL */
199}
200 202
201static void __init dt_prop_u32(struct iseries_flat_dt *dt, const char *name, 203static void __init __dt_prop_u32(struct iseries_flat_dt *dt, const char *name,
202 u32 data) 204 u32 data)
203{ 205{
204 dt_prop(dt, name, &data, sizeof(u32)); 206 __dt_prop(dt, name, &data, sizeof(u32));
205} 207}
208#define dt_prop_u32(dt, name, data) __dt_prop_u32((dt), DS(name), (data))
206 209
207static void __init __maybe_unused dt_prop_u64(struct iseries_flat_dt *dt, 210static void __init __maybe_unused __dt_prop_u64(struct iseries_flat_dt *dt,
208 const char *name, 211 const char *name, u64 data)
209 u64 data)
210{ 212{
211 dt_prop(dt, name, &data, sizeof(u64)); 213 __dt_prop(dt, name, &data, sizeof(u64));
212} 214}
215#define dt_prop_u64(dt, name, data) __dt_prop_u64((dt), DS(name), (data))
213 216
214static void __init dt_prop_u64_list(struct iseries_flat_dt *dt, 217#define dt_prop_u64_list(dt, name, data, n) \
215 const char *name, u64 *data, int n) 218 dt_prop((dt), name, (data), sizeof(u64) * (n))
216{
217 dt_prop(dt, name, data, sizeof(u64) * n);
218}
219 219
220static void __init dt_prop_u32_list(struct iseries_flat_dt *dt, 220#define dt_prop_u32_list(dt, name, data, n) \
221 const char *name, u32 *data, int n) 221 dt_prop((dt), name, (data), sizeof(u32) * (n))
222{
223 dt_prop(dt, name, data, sizeof(u32) * n);
224}
225 222
226#ifdef notyet 223#define dt_prop_empty(dt, name) dt_prop((dt), name, NULL, 0)
227static void __init dt_prop_empty(struct iseries_flat_dt *dt, const char *name)
228{
229 dt_prop(dt, name, NULL, 0);
230}
231#endif
232 224
233static void __init dt_cpus(struct iseries_flat_dt *dt) 225static void __init dt_cpus(struct iseries_flat_dt *dt)
234{ 226{
diff --git a/arch/powerpc/platforms/pseries/msi.c b/arch/powerpc/platforms/pseries/msi.c
index bf2e1ac41308..1164c3430f2c 100644
--- a/arch/powerpc/platforms/pseries/msi.c
+++ b/arch/powerpc/platforms/pseries/msi.c
@@ -432,8 +432,6 @@ static int rtas_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
432 /* Read config space back so we can restore after reset */ 432 /* Read config space back so we can restore after reset */
433 read_msi_msg(virq, &msg); 433 read_msi_msg(virq, &msg);
434 entry->msg = msg; 434 entry->msg = msg;
435
436 unmask_msi_irq(virq);
437 } 435 }
438 436
439 return 0; 437 return 0;
diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c
index 419f8a637ffe..b9bf0eedccf2 100644
--- a/arch/powerpc/platforms/pseries/xics.c
+++ b/arch/powerpc/platforms/pseries/xics.c
@@ -18,6 +18,7 @@
18#include <linux/init.h> 18#include <linux/init.h>
19#include <linux/radix-tree.h> 19#include <linux/radix-tree.h>
20#include <linux/cpu.h> 20#include <linux/cpu.h>
21#include <linux/msi.h>
21#include <linux/of.h> 22#include <linux/of.h>
22 23
23#include <asm/firmware.h> 24#include <asm/firmware.h>
@@ -219,6 +220,14 @@ static void xics_unmask_irq(unsigned int virq)
219 220
220static unsigned int xics_startup(unsigned int virq) 221static unsigned int xics_startup(unsigned int virq)
221{ 222{
223 /*
224 * The generic MSI code returns with the interrupt disabled on the
225 * card, using the MSI mask bits. Firmware doesn't appear to unmask
226 * at that level, so we do it here by hand.
227 */
228 if (irq_to_desc(virq)->msi_desc)
229 unmask_msi_irq(virq);
230
222 /* unmask it */ 231 /* unmask it */
223 xics_unmask_irq(virq); 232 xics_unmask_irq(virq);
224 return 0; 233 return 0;
diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
index c6f0a71b405e..bdbe96c8a7e4 100644
--- a/arch/powerpc/xmon/xmon.c
+++ b/arch/powerpc/xmon/xmon.c
@@ -517,6 +517,15 @@ static int xmon_core(struct pt_regs *regs, int fromipi)
517 in_xmon = 0; 517 in_xmon = 0;
518#endif 518#endif
519 519
520#ifdef CONFIG_BOOKE
521 if (regs->msr & MSR_DE) {
522 bp = at_breakpoint(regs->nip);
523 if (bp != NULL) {
524 regs->nip = (unsigned long) &bp->instr[0];
525 atomic_inc(&bp->ref_count);
526 }
527 }
528#else
520 if ((regs->msr & (MSR_IR|MSR_PR|MSR_SF)) == (MSR_IR|MSR_SF)) { 529 if ((regs->msr & (MSR_IR|MSR_PR|MSR_SF)) == (MSR_IR|MSR_SF)) {
521 bp = at_breakpoint(regs->nip); 530 bp = at_breakpoint(regs->nip);
522 if (bp != NULL) { 531 if (bp != NULL) {
@@ -530,7 +539,7 @@ static int xmon_core(struct pt_regs *regs, int fromipi)
530 } 539 }
531 } 540 }
532 } 541 }
533 542#endif
534 insert_cpu_bpts(); 543 insert_cpu_bpts();
535 544
536 local_irq_restore(flags); 545 local_irq_restore(flags);
@@ -894,6 +903,14 @@ cmds(struct pt_regs *excp)
894 } 903 }
895} 904}
896 905
906#ifdef CONFIG_BOOKE
907static int do_step(struct pt_regs *regs)
908{
909 regs->msr |= MSR_DE;
910 mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) | DBCR0_IC | DBCR0_IDM);
911 return 1;
912}
913#else
897/* 914/*
898 * Step a single instruction. 915 * Step a single instruction.
899 * Some instructions we emulate, others we execute with MSR_SE set. 916 * Some instructions we emulate, others we execute with MSR_SE set.
@@ -924,6 +941,7 @@ static int do_step(struct pt_regs *regs)
924 regs->msr |= MSR_SE; 941 regs->msr |= MSR_SE;
925 return 1; 942 return 1;
926} 943}
944#endif
927 945
928static void bootcmds(void) 946static void bootcmds(void)
929{ 947{
diff --git a/arch/s390/include/asm/cputime.h b/arch/s390/include/asm/cputime.h
index 24b1244aadb9..f23961ada7fb 100644
--- a/arch/s390/include/asm/cputime.h
+++ b/arch/s390/include/asm/cputime.h
@@ -78,7 +78,7 @@ cputime64_to_jiffies64(cputime64_t cputime)
78static inline unsigned int 78static inline unsigned int
79cputime_to_msecs(const cputime_t cputime) 79cputime_to_msecs(const cputime_t cputime)
80{ 80{
81 return __div(cputime, 4096000); 81 return cputime_div(cputime, 4096000);
82} 82}
83 83
84static inline cputime_t 84static inline cputime_t
@@ -160,7 +160,7 @@ cputime_to_timeval(const cputime_t cputime, struct timeval *value)
160static inline clock_t 160static inline clock_t
161cputime_to_clock_t(cputime_t cputime) 161cputime_to_clock_t(cputime_t cputime)
162{ 162{
163 return __div(cputime, 4096000000ULL / USER_HZ); 163 return cputime_div(cputime, 4096000000ULL / USER_HZ);
164} 164}
165 165
166static inline cputime_t 166static inline cputime_t
@@ -175,7 +175,7 @@ clock_t_to_cputime(unsigned long x)
175static inline clock_t 175static inline clock_t
176cputime64_to_clock_t(cputime64_t cputime) 176cputime64_to_clock_t(cputime64_t cputime)
177{ 177{
178 return __div(cputime, 4096000000ULL / USER_HZ); 178 return cputime_div(cputime, 4096000000ULL / USER_HZ);
179} 179}
180 180
181struct s390_idle_data { 181struct s390_idle_data {
diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c
index bf8b4ae7ff2d..e49e9e0c69fd 100644
--- a/arch/s390/kernel/early.c
+++ b/arch/s390/kernel/early.c
@@ -55,6 +55,7 @@ static void __init reset_tod_clock(void)
55 disabled_wait(0); 55 disabled_wait(0);
56 56
57 sched_clock_base_cc = TOD_UNIX_EPOCH; 57 sched_clock_base_cc = TOD_UNIX_EPOCH;
58 S390_lowcore.last_update_clock = sched_clock_base_cc;
58} 59}
59 60
60#ifdef CONFIG_SHARED_KERNEL 61#ifdef CONFIG_SHARED_KERNEL
@@ -167,6 +168,14 @@ static noinline __init void create_kernel_nss(void)
167 return; 168 return;
168 } 169 }
169 170
171 /* re-initialize cputime accounting. */
172 sched_clock_base_cc = get_clock();
173 S390_lowcore.last_update_clock = sched_clock_base_cc;
174 S390_lowcore.last_update_timer = 0x7fffffffffffffffULL;
175 S390_lowcore.user_timer = 0;
176 S390_lowcore.system_timer = 0;
177 asm volatile("SPT 0(%0)" : : "a" (&S390_lowcore.last_update_timer));
178
170 /* re-setup boot command line with new ipl vm parms */ 179 /* re-setup boot command line with new ipl vm parms */
171 ipl_update_parameters(); 180 ipl_update_parameters();
172 setup_boot_command_line(); 181 setup_boot_command_line();
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S
index f43d2ee54464..48215d15762b 100644
--- a/arch/s390/kernel/entry.S
+++ b/arch/s390/kernel/entry.S
@@ -565,10 +565,10 @@ pgm_svcper:
565 lh %r7,0x8a # get svc number from lowcore 565 lh %r7,0x8a # get svc number from lowcore
566 l %r9,__LC_THREAD_INFO # load pointer to thread_info struct 566 l %r9,__LC_THREAD_INFO # load pointer to thread_info struct
567 TRACE_IRQS_OFF 567 TRACE_IRQS_OFF
568 l %r1,__TI_task(%r9) 568 l %r8,__TI_task(%r9)
569 mvc __THREAD_per+__PER_atmid(2,%r1),__LC_PER_ATMID 569 mvc __THREAD_per+__PER_atmid(2,%r8),__LC_PER_ATMID
570 mvc __THREAD_per+__PER_address(4,%r1),__LC_PER_ADDRESS 570 mvc __THREAD_per+__PER_address(4,%r8),__LC_PER_ADDRESS
571 mvc __THREAD_per+__PER_access_id(1,%r1),__LC_PER_ACCESS_ID 571 mvc __THREAD_per+__PER_access_id(1,%r8),__LC_PER_ACCESS_ID
572 oi __TI_flags+3(%r9),_TIF_SINGLE_STEP # set TIF_SINGLE_STEP 572 oi __TI_flags+3(%r9),_TIF_SINGLE_STEP # set TIF_SINGLE_STEP
573 TRACE_IRQS_ON 573 TRACE_IRQS_ON
574 stosm __SF_EMPTY(%r15),0x03 # reenable interrupts 574 stosm __SF_EMPTY(%r15),0x03 # reenable interrupts
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S
index a6f7b20df616..9aff1d449b6e 100644
--- a/arch/s390/kernel/entry64.S
+++ b/arch/s390/kernel/entry64.S
@@ -543,10 +543,10 @@ pgm_svcper:
543 mvc __LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER 543 mvc __LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER
544 llgh %r7,__LC_SVC_INT_CODE # get svc number from lowcore 544 llgh %r7,__LC_SVC_INT_CODE # get svc number from lowcore
545 lg %r9,__LC_THREAD_INFO # load pointer to thread_info struct 545 lg %r9,__LC_THREAD_INFO # load pointer to thread_info struct
546 lg %r1,__TI_task(%r9) 546 lg %r8,__TI_task(%r9)
547 mvc __THREAD_per+__PER_atmid(2,%r1),__LC_PER_ATMID 547 mvc __THREAD_per+__PER_atmid(2,%r8),__LC_PER_ATMID
548 mvc __THREAD_per+__PER_address(8,%r1),__LC_PER_ADDRESS 548 mvc __THREAD_per+__PER_address(8,%r8),__LC_PER_ADDRESS
549 mvc __THREAD_per+__PER_access_id(1,%r1),__LC_PER_ACCESS_ID 549 mvc __THREAD_per+__PER_access_id(1,%r8),__LC_PER_ACCESS_ID
550 oi __TI_flags+7(%r9),_TIF_SINGLE_STEP # set TIF_SINGLE_STEP 550 oi __TI_flags+7(%r9),_TIF_SINGLE_STEP # set TIF_SINGLE_STEP
551 TRACE_IRQS_ON 551 TRACE_IRQS_ON
552 stosm __SF_EMPTY(%r15),0x03 # reenable interrupts 552 stosm __SF_EMPTY(%r15),0x03 # reenable interrupts
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
index ee57a42e6e93..4890ac6d7faa 100644
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -1595,10 +1595,9 @@ static void stop_run(struct shutdown_trigger *trigger)
1595{ 1595{
1596 if (strcmp(trigger->name, ON_PANIC_STR) == 0) 1596 if (strcmp(trigger->name, ON_PANIC_STR) == 0)
1597 disabled_wait((unsigned long) __builtin_return_address(0)); 1597 disabled_wait((unsigned long) __builtin_return_address(0));
1598 else { 1598 while (signal_processor(smp_processor_id(), sigp_stop) == sigp_busy)
1599 signal_processor(smp_processor_id(), sigp_stop); 1599 cpu_relax();
1600 for (;;); 1600 for (;;);
1601 }
1602} 1601}
1603 1602
1604static struct shutdown_action stop_action = {SHUTDOWN_ACTION_STOP_STR, 1603static struct shutdown_action stop_action = {SHUTDOWN_ACTION_STOP_STR,
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index c932caa5e850..93e52039321b 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -76,7 +76,6 @@ static int cpu_stopped(int cpu)
76 __u32 status; 76 __u32 status;
77 77
78 switch (signal_processor_ps(&status, 0, cpu, sigp_sense)) { 78 switch (signal_processor_ps(&status, 0, cpu, sigp_sense)) {
79 case sigp_order_code_accepted:
80 case sigp_status_stored: 79 case sigp_status_stored:
81 /* Check for stopped and check stop state */ 80 /* Check for stopped and check stop state */
82 if (status & 0x50) 81 if (status & 0x50)
@@ -638,6 +637,8 @@ void __cpu_die(unsigned int cpu)
638 /* Wait until target cpu is down */ 637 /* Wait until target cpu is down */
639 while (!cpu_stopped(cpu)) 638 while (!cpu_stopped(cpu))
640 cpu_relax(); 639 cpu_relax();
640 while (signal_processor_p(0, cpu, sigp_set_prefix) == sigp_busy)
641 udelay(10);
641 smp_free_lowcore(cpu); 642 smp_free_lowcore(cpu);
642 pr_info("Processor %d stopped\n", cpu); 643 pr_info("Processor %d stopped\n", cpu);
643} 644}
@@ -645,8 +646,8 @@ void __cpu_die(unsigned int cpu)
645void cpu_die(void) 646void cpu_die(void)
646{ 647{
647 idle_task_exit(); 648 idle_task_exit();
648 signal_processor(smp_processor_id(), sigp_stop); 649 while (signal_processor(smp_processor_id(), sigp_stop) == sigp_busy)
649 BUG(); 650 cpu_relax();
650 for (;;); 651 for (;;);
651} 652}
652 653
diff --git a/arch/s390/kernel/swsusp_asm64.S b/arch/s390/kernel/swsusp_asm64.S
index 7c8653e27db6..0c26cc1898ec 100644
--- a/arch/s390/kernel/swsusp_asm64.S
+++ b/arch/s390/kernel/swsusp_asm64.S
@@ -199,6 +199,7 @@ pgm_check_entry:
199 brc 2,4b /* busy, try again */ 199 brc 2,4b /* busy, try again */
2005: 2005:
201 sigp %r9,%r2,__SIGP_STOP /* stop resume (current) CPU */ 201 sigp %r9,%r2,__SIGP_STOP /* stop resume (current) CPU */
202 brc 2,5b /* busy, try again */
2026: j 6b 2036: j 6b
203 204
204restart_suspend: 205restart_suspend:
@@ -206,6 +207,7 @@ restart_suspend:
206 llgh %r2,0(%r1) 207 llgh %r2,0(%r1)
2077: 2087:
208 sigp %r9,%r2,__SIGP_SENSE /* Wait for resume CPU */ 209 sigp %r9,%r2,__SIGP_SENSE /* Wait for resume CPU */
210 brc 8,7b /* accepted, status 0, still running */
209 brc 2,7b /* busy, try again */ 211 brc 2,7b /* busy, try again */
210 tmll %r9,0x40 /* Test if resume CPU is stopped */ 212 tmll %r9,0x40 /* Test if resume CPU is stopped */
211 jz 7b 213 jz 7b
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 0dc7e3cbeffa..88cdeb9f72d9 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -121,6 +121,9 @@ config SYS_SUPPORTS_APM_EMULATION
121 bool 121 bool
122 select ARCH_SUSPEND_POSSIBLE 122 select ARCH_SUSPEND_POSSIBLE
123 123
124config SYS_SUPPORTS_HUGETLBFS
125 bool
126
124config SYS_SUPPORTS_SMP 127config SYS_SUPPORTS_SMP
125 bool 128 bool
126 129
@@ -195,6 +198,7 @@ config CPU_SH4
195 select CPU_HAS_SR_RB 198 select CPU_HAS_SR_RB
196 select CPU_HAS_FPU if !CPU_SH4AL_DSP 199 select CPU_HAS_FPU if !CPU_SH4AL_DSP
197 select SYS_SUPPORTS_TMU 200 select SYS_SUPPORTS_TMU
201 select SYS_SUPPORTS_HUGETLBFS if MMU
198 202
199config CPU_SH4A 203config CPU_SH4A
200 bool 204 bool
@@ -209,6 +213,7 @@ config CPU_SH5
209 bool 213 bool
210 select CPU_HAS_FPU 214 select CPU_HAS_FPU
211 select SYS_SUPPORTS_TMU 215 select SYS_SUPPORTS_TMU
216 select SYS_SUPPORTS_HUGETLBFS if MMU
212 217
213config CPU_SHX2 218config CPU_SHX2
214 bool 219 bool
diff --git a/arch/sh/Makefile b/arch/sh/Makefile
index fc51a918b31a..66e40aabc600 100644
--- a/arch/sh/Makefile
+++ b/arch/sh/Makefile
@@ -199,7 +199,7 @@ endif
199libs-$(CONFIG_SUPERH32) := arch/sh/lib/ $(libs-y) 199libs-$(CONFIG_SUPERH32) := arch/sh/lib/ $(libs-y)
200libs-$(CONFIG_SUPERH64) := arch/sh/lib64/ $(libs-y) 200libs-$(CONFIG_SUPERH64) := arch/sh/lib64/ $(libs-y)
201 201
202BOOT_TARGETS = uImage uImage.bz2 uImage.gz uImage.lzma uImage.srec \ 202BOOT_TARGETS = uImage uImage.bz2 uImage.gz uImage.lzma uImage.srec uImage.bin \
203 zImage vmlinux.srec romImage 203 zImage vmlinux.srec romImage
204PHONY += maketools $(BOOT_TARGETS) FORCE 204PHONY += maketools $(BOOT_TARGETS) FORCE
205 205
@@ -225,6 +225,7 @@ define archhelp
225 @echo ' vmlinux.srec - Create an ELF S-record' 225 @echo ' vmlinux.srec - Create an ELF S-record'
226 @echo '* uImage - Alias to bootable U-Boot image' 226 @echo '* uImage - Alias to bootable U-Boot image'
227 @echo ' uImage.srec - Create an S-record for U-Boot' 227 @echo ' uImage.srec - Create an S-record for U-Boot'
228 @echo ' uImage.bin - Kernel-only image for U-Boot (bin)'
228 @echo '* uImage.gz - Kernel-only image for U-Boot (gzip)' 229 @echo '* uImage.gz - Kernel-only image for U-Boot (gzip)'
229 @echo ' uImage.bz2 - Kernel-only image for U-Boot (bzip2)' 230 @echo ' uImage.bz2 - Kernel-only image for U-Boot (bzip2)'
230 @echo ' uImage.lzma - Kernel-only image for U-Boot (lzma)' 231 @echo ' uImage.lzma - Kernel-only image for U-Boot (lzma)'
diff --git a/arch/sh/boards/mach-rsk/devices-rsk7203.c b/arch/sh/boards/mach-rsk/devices-rsk7203.c
index 4af3a771c058..c37617e63220 100644
--- a/arch/sh/boards/mach-rsk/devices-rsk7203.c
+++ b/arch/sh/boards/mach-rsk/devices-rsk7203.c
@@ -11,10 +11,6 @@
11#include <linux/types.h> 11#include <linux/types.h>
12#include <linux/platform_device.h> 12#include <linux/platform_device.h>
13#include <linux/interrupt.h> 13#include <linux/interrupt.h>
14#include <linux/mtd/mtd.h>
15#include <linux/mtd/partitions.h>
16#include <linux/mtd/physmap.h>
17#include <linux/mtd/map.h>
18#include <linux/smsc911x.h> 14#include <linux/smsc911x.h>
19#include <linux/gpio.h> 15#include <linux/gpio.h>
20#include <linux/leds.h> 16#include <linux/leds.h>
diff --git a/arch/sh/boards/mach-rsk/setup.c b/arch/sh/boards/mach-rsk/setup.c
index af64d030a5c7..a5c0df785bfe 100644
--- a/arch/sh/boards/mach-rsk/setup.c
+++ b/arch/sh/boards/mach-rsk/setup.c
@@ -15,14 +15,12 @@
15#include <linux/mtd/mtd.h> 15#include <linux/mtd/mtd.h>
16#include <linux/mtd/partitions.h> 16#include <linux/mtd/partitions.h>
17#include <linux/mtd/physmap.h> 17#include <linux/mtd/physmap.h>
18#ifdef CONFIG_MTD
18#include <linux/mtd/map.h> 19#include <linux/mtd/map.h>
20#endif
19#include <asm/machvec.h> 21#include <asm/machvec.h>
20#include <asm/io.h> 22#include <asm/io.h>
21 23
22static const char *probes[] = { "cmdlinepart", NULL };
23
24static struct mtd_partition *parsed_partitions;
25
26static struct mtd_partition rsk_partitions[] = { 24static struct mtd_partition rsk_partitions[] = {
27 { 25 {
28 .name = "Bootloader", 26 .name = "Bootloader",
@@ -41,6 +39,8 @@ static struct mtd_partition rsk_partitions[] = {
41}; 39};
42 40
43static struct physmap_flash_data flash_data = { 41static struct physmap_flash_data flash_data = {
42 .parts = rsk_partitions,
43 .nr_parts = ARRAY_SIZE(rsk_partitions),
44 .width = 2, 44 .width = 2,
45}; 45};
46 46
@@ -60,7 +60,8 @@ static struct platform_device flash_device = {
60 }, 60 },
61}; 61};
62 62
63static struct mtd_info *flash_mtd; 63#ifdef CONFIG_MTD
64static const char *probes[] = { "cmdlinepart", NULL };
64 65
65static struct map_info rsk_flash_map = { 66static struct map_info rsk_flash_map = {
66 .name = "RSK+ Flash", 67 .name = "RSK+ Flash",
@@ -68,6 +69,10 @@ static struct map_info rsk_flash_map = {
68 .bankwidth = 2, 69 .bankwidth = 2,
69}; 70};
70 71
72static struct mtd_info *flash_mtd;
73
74static struct mtd_partition *parsed_partitions;
75
71static void __init set_mtd_partitions(void) 76static void __init set_mtd_partitions(void)
72{ 77{
73 int nr_parts = 0; 78 int nr_parts = 0;
@@ -77,14 +82,14 @@ static void __init set_mtd_partitions(void)
77 nr_parts = parse_mtd_partitions(flash_mtd, probes, 82 nr_parts = parse_mtd_partitions(flash_mtd, probes,
78 &parsed_partitions, 0); 83 &parsed_partitions, 0);
79 /* If there is no partition table, used the hard coded table */ 84 /* If there is no partition table, used the hard coded table */
80 if (nr_parts <= 0) { 85 if (nr_parts > 0) {
81 flash_data.parts = rsk_partitions;
82 flash_data.nr_parts = ARRAY_SIZE(rsk_partitions);
83 } else {
84 flash_data.nr_parts = nr_parts; 86 flash_data.nr_parts = nr_parts;
85 flash_data.parts = parsed_partitions; 87 flash_data.parts = parsed_partitions;
86 } 88 }
87} 89}
90#else
91static inline void set_mtd_partitions(void) {}
92#endif
88 93
89static struct platform_device *rsk_devices[] __initdata = { 94static struct platform_device *rsk_devices[] __initdata = {
90 &flash_device, 95 &flash_device,
diff --git a/arch/sh/boot/Makefile b/arch/sh/boot/Makefile
index a1316872be6f..cb8cf5572e79 100644
--- a/arch/sh/boot/Makefile
+++ b/arch/sh/boot/Makefile
@@ -20,11 +20,12 @@ CONFIG_BOOT_LINK_OFFSET ?= 0x00800000
20CONFIG_ZERO_PAGE_OFFSET ?= 0x00001000 20CONFIG_ZERO_PAGE_OFFSET ?= 0x00001000
21CONFIG_ENTRY_OFFSET ?= 0x00001000 21CONFIG_ENTRY_OFFSET ?= 0x00001000
22 22
23suffix-y := bin
23suffix-$(CONFIG_KERNEL_GZIP) := gz 24suffix-$(CONFIG_KERNEL_GZIP) := gz
24suffix-$(CONFIG_KERNEL_BZIP2) := bz2 25suffix-$(CONFIG_KERNEL_BZIP2) := bz2
25suffix-$(CONFIG_KERNEL_LZMA) := lzma 26suffix-$(CONFIG_KERNEL_LZMA) := lzma
26 27
27targets := zImage vmlinux.srec romImage uImage uImage.srec uImage.gz uImage.bz2 uImage.lzma 28targets := zImage vmlinux.srec romImage uImage uImage.srec uImage.gz uImage.bz2 uImage.lzma uImage.bin
28extra-y += vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma 29extra-y += vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma
29subdir- := compressed romimage 30subdir- := compressed romimage
30 31
@@ -88,6 +89,9 @@ $(obj)/uImage.gz: $(obj)/vmlinux.bin.gz
88$(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma 89$(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma
89 $(call if_changed,uimage,lzma) 90 $(call if_changed,uimage,lzma)
90 91
92$(obj)/uImage.bin: $(obj)/vmlinux.bin
93 $(call if_changed,uimage,none)
94
91OBJCOPYFLAGS_vmlinux.srec := -I binary -O srec 95OBJCOPYFLAGS_vmlinux.srec := -I binary -O srec
92$(obj)/vmlinux.srec: $(obj)/compressed/vmlinux 96$(obj)/vmlinux.srec: $(obj)/compressed/vmlinux
93 $(call if_changed,objcopy) 97 $(call if_changed,objcopy)
diff --git a/arch/sh/include/asm/rwsem.h b/arch/sh/include/asm/rwsem.h
index 1987f3ea7f1b..06e2251a5e48 100644
--- a/arch/sh/include/asm/rwsem.h
+++ b/arch/sh/include/asm/rwsem.h
@@ -41,7 +41,7 @@ struct rw_semaphore {
41#endif 41#endif
42 42
43#define __RWSEM_INITIALIZER(name) \ 43#define __RWSEM_INITIALIZER(name) \
44 { RWSEM_UNLOCKED_VALUE, SPIN_LOCK_UNLOCKED, \ 44 { RWSEM_UNLOCKED_VALUE, __SPIN_LOCK_UNLOCKED((name).wait_lock), \
45 LIST_HEAD_INIT((name).wait_list) \ 45 LIST_HEAD_INIT((name).wait_list) \
46 __RWSEM_DEP_MAP_INIT(name) } 46 __RWSEM_DEP_MAP_INIT(name) }
47 47
diff --git a/arch/sh/kernel/cpu/irq/imask.c b/arch/sh/kernel/cpu/irq/imask.c
index 6b5d191eec3a..a351ed84eec5 100644
--- a/arch/sh/kernel/cpu/irq/imask.c
+++ b/arch/sh/kernel/cpu/irq/imask.c
@@ -68,7 +68,7 @@ static void unmask_imask_irq(unsigned int irq)
68} 68}
69 69
70static struct irq_chip imask_irq_chip = { 70static struct irq_chip imask_irq_chip = {
71 .typename = "SR.IMASK", 71 .name = "SR.IMASK",
72 .mask = mask_imask_irq, 72 .mask = mask_imask_irq,
73 .unmask = unmask_imask_irq, 73 .unmask = unmask_imask_irq,
74 .mask_ack = mask_imask_irq, 74 .mask_ack = mask_imask_irq,
diff --git a/arch/sh/kernel/cpu/irq/intc-sh5.c b/arch/sh/kernel/cpu/irq/intc-sh5.c
index 6c092f1f5557..06e7e2959b54 100644
--- a/arch/sh/kernel/cpu/irq/intc-sh5.c
+++ b/arch/sh/kernel/cpu/irq/intc-sh5.c
@@ -85,7 +85,7 @@ static void mask_and_ack_intc(unsigned int);
85static void end_intc_irq(unsigned int irq); 85static void end_intc_irq(unsigned int irq);
86 86
87static struct irq_chip intc_irq_type = { 87static struct irq_chip intc_irq_type = {
88 .typename = "INTC", 88 .name = "INTC",
89 .startup = startup_intc_irq, 89 .startup = startup_intc_irq,
90 .shutdown = shutdown_intc_irq, 90 .shutdown = shutdown_intc_irq,
91 .enable = enable_intc_irq, 91 .enable = enable_intc_irq,
diff --git a/arch/sh/kernel/dwarf.c b/arch/sh/kernel/dwarf.c
index 03b3616c80a5..d76a23170dbb 100644
--- a/arch/sh/kernel/dwarf.c
+++ b/arch/sh/kernel/dwarf.c
@@ -20,6 +20,7 @@
20#include <linux/list.h> 20#include <linux/list.h>
21#include <linux/mempool.h> 21#include <linux/mempool.h>
22#include <linux/mm.h> 22#include <linux/mm.h>
23#include <linux/ftrace.h>
23#include <asm/dwarf.h> 24#include <asm/dwarf.h>
24#include <asm/unwinder.h> 25#include <asm/unwinder.h>
25#include <asm/sections.h> 26#include <asm/sections.h>
@@ -554,9 +555,30 @@ struct dwarf_frame * dwarf_unwind_stack(unsigned long pc,
554 * NOTE: the return address is guaranteed to be setup by the 555 * NOTE: the return address is guaranteed to be setup by the
555 * time this function makes its first function call. 556 * time this function makes its first function call.
556 */ 557 */
557 if (!pc && !prev) 558 if (!pc || !prev)
558 pc = (unsigned long)current_text_addr(); 559 pc = (unsigned long)current_text_addr();
559 560
561#ifdef CONFIG_FUNCTION_GRAPH_TRACER
562 /*
563 * If our stack has been patched by the function graph tracer
564 * then we might see the address of return_to_handler() where we
565 * expected to find the real return address.
566 */
567 if (pc == (unsigned long)&return_to_handler) {
568 int index = current->curr_ret_stack;
569
570 /*
571 * We currently have no way of tracking how many
572 * return_to_handler()'s we've seen. If there is more
573 * than one patched return address on our stack,
574 * complain loudly.
575 */
576 WARN_ON(index > 0);
577
578 pc = current->ret_stack[index].ret;
579 }
580#endif
581
560 frame = mempool_alloc(dwarf_frame_pool, GFP_ATOMIC); 582 frame = mempool_alloc(dwarf_frame_pool, GFP_ATOMIC);
561 if (!frame) { 583 if (!frame) {
562 printk(KERN_ERR "Unable to allocate a dwarf frame\n"); 584 printk(KERN_ERR "Unable to allocate a dwarf frame\n");
diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c
index 7cb933ba4957..eac7da772fc2 100644
--- a/arch/sh/kernel/irq.c
+++ b/arch/sh/kernel/irq.c
@@ -11,6 +11,7 @@
11#include <linux/module.h> 11#include <linux/module.h>
12#include <linux/kernel_stat.h> 12#include <linux/kernel_stat.h>
13#include <linux/seq_file.h> 13#include <linux/seq_file.h>
14#include <linux/ftrace.h>
14#include <asm/processor.h> 15#include <asm/processor.h>
15#include <asm/machvec.h> 16#include <asm/machvec.h>
16#include <asm/uaccess.h> 17#include <asm/uaccess.h>
@@ -106,7 +107,7 @@ static union irq_ctx *hardirq_ctx[NR_CPUS] __read_mostly;
106static union irq_ctx *softirq_ctx[NR_CPUS] __read_mostly; 107static union irq_ctx *softirq_ctx[NR_CPUS] __read_mostly;
107#endif 108#endif
108 109
109asmlinkage int do_IRQ(unsigned int irq, struct pt_regs *regs) 110asmlinkage __irq_entry int do_IRQ(unsigned int irq, struct pt_regs *regs)
110{ 111{
111 struct pt_regs *old_regs = set_irq_regs(regs); 112 struct pt_regs *old_regs = set_irq_regs(regs);
112#ifdef CONFIG_IRQSTACKS 113#ifdef CONFIG_IRQSTACKS
diff --git a/arch/sh/kernel/sh_ksyms_32.c b/arch/sh/kernel/sh_ksyms_32.c
index 86c270428357..444cce3ae921 100644
--- a/arch/sh/kernel/sh_ksyms_32.c
+++ b/arch/sh/kernel/sh_ksyms_32.c
@@ -85,6 +85,20 @@ DECLARE_EXPORT(__movstr_i4_even);
85DECLARE_EXPORT(__movstr_i4_odd); 85DECLARE_EXPORT(__movstr_i4_odd);
86DECLARE_EXPORT(__movstrSI12_i4); 86DECLARE_EXPORT(__movstrSI12_i4);
87DECLARE_EXPORT(__movmem); 87DECLARE_EXPORT(__movmem);
88DECLARE_EXPORT(__movmemSI8);
89DECLARE_EXPORT(__movmemSI12);
90DECLARE_EXPORT(__movmemSI16);
91DECLARE_EXPORT(__movmemSI20);
92DECLARE_EXPORT(__movmemSI24);
93DECLARE_EXPORT(__movmemSI28);
94DECLARE_EXPORT(__movmemSI32);
95DECLARE_EXPORT(__movmemSI36);
96DECLARE_EXPORT(__movmemSI40);
97DECLARE_EXPORT(__movmemSI44);
98DECLARE_EXPORT(__movmemSI48);
99DECLARE_EXPORT(__movmemSI52);
100DECLARE_EXPORT(__movmemSI56);
101DECLARE_EXPORT(__movmemSI60);
88DECLARE_EXPORT(__movmem_i4_even); 102DECLARE_EXPORT(__movmem_i4_even);
89DECLARE_EXPORT(__movmem_i4_odd); 103DECLARE_EXPORT(__movmem_i4_odd);
90DECLARE_EXPORT(__movmemSI12_i4); 104DECLARE_EXPORT(__movmemSI12_i4);
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig
index 64dc1ad59801..7f7b52f9beba 100644
--- a/arch/sh/mm/Kconfig
+++ b/arch/sh/mm/Kconfig
@@ -227,7 +227,7 @@ endchoice
227 227
228choice 228choice
229 prompt "HugeTLB page size" 229 prompt "HugeTLB page size"
230 depends on HUGETLB_PAGE && (CPU_SH4 || CPU_SH5) && MMU 230 depends on HUGETLB_PAGE
231 default HUGETLB_PAGE_SIZE_1MB if PAGE_SIZE_64KB 231 default HUGETLB_PAGE_SIZE_1MB if PAGE_SIZE_64KB
232 default HUGETLB_PAGE_SIZE_64K 232 default HUGETLB_PAGE_SIZE_64K
233 233
diff --git a/arch/sh/mm/cache-sh4.c b/arch/sh/mm/cache-sh4.c
index 519e2d16cd06..b7f235c74d66 100644
--- a/arch/sh/mm/cache-sh4.c
+++ b/arch/sh/mm/cache-sh4.c
@@ -72,6 +72,7 @@ static void __uses_jump_to_uncached sh4_flush_icache_range(void *args)
72 72
73 for (v = start; v < end; v += L1_CACHE_BYTES) { 73 for (v = start; v < end; v += L1_CACHE_BYTES) {
74 unsigned long icacheaddr; 74 unsigned long icacheaddr;
75 int j, n;
75 76
76 __ocbwb(v); 77 __ocbwb(v);
77 78
@@ -79,8 +80,10 @@ static void __uses_jump_to_uncached sh4_flush_icache_range(void *args)
79 cpu_data->icache.entry_mask); 80 cpu_data->icache.entry_mask);
80 81
81 /* Clear i-cache line valid-bit */ 82 /* Clear i-cache line valid-bit */
83 n = boot_cpu_data.icache.n_aliases;
82 for (i = 0; i < cpu_data->icache.ways; i++) { 84 for (i = 0; i < cpu_data->icache.ways; i++) {
83 __raw_writel(0, icacheaddr); 85 for (j = 0; j < n; j++)
86 __raw_writel(0, icacheaddr + (j * PAGE_SIZE));
84 icacheaddr += cpu_data->icache.way_incr; 87 icacheaddr += cpu_data->icache.way_incr;
85 } 88 }
86 } 89 }
diff --git a/arch/sparc/boot/btfixupprep.c b/arch/sparc/boot/btfixupprep.c
index 52a4208fe4f0..bbf91b9c3d39 100644
--- a/arch/sparc/boot/btfixupprep.c
+++ b/arch/sparc/boot/btfixupprep.c
@@ -61,14 +61,14 @@ unsigned long lastfoffset = -1;
61unsigned long lastfrelno; 61unsigned long lastfrelno;
62btfixup *lastf; 62btfixup *lastf;
63 63
64void fatal(void) __attribute__((noreturn)); 64static void fatal(void) __attribute__((noreturn));
65void fatal(void) 65static void fatal(void)
66{ 66{
67 fprintf(stderr, "Malformed output from objdump\n%s\n", buffer); 67 fprintf(stderr, "Malformed output from objdump\n%s\n", buffer);
68 exit(1); 68 exit(1);
69} 69}
70 70
71btfixup *find(int type, char *name) 71static btfixup *find(int type, char *name)
72{ 72{
73 int i; 73 int i;
74 for (i = 0; i < last; i++) { 74 for (i = 0; i < last; i++) {
@@ -88,7 +88,7 @@ btfixup *find(int type, char *name)
88 return array + last - 1; 88 return array + last - 1;
89} 89}
90 90
91void set_mode (char *buffer) 91static void set_mode (char *buffer)
92{ 92{
93 for (mode = 0;; mode++) 93 for (mode = 0;; mode++)
94 if (buffer[mode] < '0' || buffer[mode] > '9') 94 if (buffer[mode] < '0' || buffer[mode] > '9')
diff --git a/arch/sparc/boot/piggyback_32.c b/arch/sparc/boot/piggyback_32.c
index e8dc9adfcd61..ac944aec7301 100644
--- a/arch/sparc/boot/piggyback_32.c
+++ b/arch/sparc/boot/piggyback_32.c
@@ -35,17 +35,17 @@
35 * as PROM looks for a.out image only. 35 * as PROM looks for a.out image only.
36 */ 36 */
37 37
38unsigned short ld2(char *p) 38static unsigned short ld2(char *p)
39{ 39{
40 return (p[0] << 8) | p[1]; 40 return (p[0] << 8) | p[1];
41} 41}
42 42
43unsigned int ld4(char *p) 43static unsigned int ld4(char *p)
44{ 44{
45 return (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]; 45 return (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3];
46} 46}
47 47
48void st4(char *p, unsigned int x) 48static void st4(char *p, unsigned int x)
49{ 49{
50 p[0] = x >> 24; 50 p[0] = x >> 24;
51 p[1] = x >> 16; 51 p[1] = x >> 16;
@@ -53,7 +53,7 @@ void st4(char *p, unsigned int x)
53 p[3] = x; 53 p[3] = x;
54} 54}
55 55
56void usage(void) 56static void usage(void)
57{ 57{
58 /* fs_img.gz is an image of initial ramdisk. */ 58 /* fs_img.gz is an image of initial ramdisk. */
59 fprintf(stderr, "Usage: piggyback vmlinux.aout System.map fs_img.gz\n"); 59 fprintf(stderr, "Usage: piggyback vmlinux.aout System.map fs_img.gz\n");
@@ -61,7 +61,7 @@ void usage(void)
61 exit(1); 61 exit(1);
62} 62}
63 63
64void die(char *str) 64static void die(char *str)
65{ 65{
66 perror (str); 66 perror (str);
67 exit(1); 67 exit(1);
diff --git a/arch/sparc/boot/piggyback_64.c b/arch/sparc/boot/piggyback_64.c
index c63fd1b6bdd4..a26a686cb5aa 100644
--- a/arch/sparc/boot/piggyback_64.c
+++ b/arch/sparc/boot/piggyback_64.c
@@ -32,7 +32,7 @@
32/* Note: run this on an a.out kernel (use elftoaout for it), as PROM looks for a.out image onlly 32/* Note: run this on an a.out kernel (use elftoaout for it), as PROM looks for a.out image onlly
33 usage: piggyback vmlinux System.map tail, where tail is gzipped fs of the initial ramdisk */ 33 usage: piggyback vmlinux System.map tail, where tail is gzipped fs of the initial ramdisk */
34 34
35void die(char *str) 35static void die(char *str)
36{ 36{
37 perror (str); 37 perror (str);
38 exit(1); 38 exit(1);
diff --git a/arch/sparc/include/asm/system_64.h b/arch/sparc/include/asm/system_64.h
index 25e848f0cad7..d47a98e66972 100644
--- a/arch/sparc/include/asm/system_64.h
+++ b/arch/sparc/include/asm/system_64.h
@@ -63,6 +63,10 @@ do { __asm__ __volatile__("ba,pt %%xcc, 1f\n\t" \
63 : : : "memory"); \ 63 : : : "memory"); \
64} while (0) 64} while (0)
65 65
66/* The kernel always executes in TSO memory model these days,
67 * and furthermore most sparc64 chips implement more stringent
68 * memory ordering than required by the specifications.
69 */
66#define mb() membar_safe("#StoreLoad") 70#define mb() membar_safe("#StoreLoad")
67#define rmb() __asm__ __volatile__("":::"memory") 71#define rmb() __asm__ __volatile__("":::"memory")
68#define wmb() __asm__ __volatile__("":::"memory") 72#define wmb() __asm__ __volatile__("":::"memory")
diff --git a/arch/sparc/kernel/prom_common.c b/arch/sparc/kernel/prom_common.c
index 138910c67206..d80a65d9e893 100644
--- a/arch/sparc/kernel/prom_common.c
+++ b/arch/sparc/kernel/prom_common.c
@@ -79,6 +79,7 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
79 79
80 err = -ENODEV; 80 err = -ENODEV;
81 81
82 mutex_lock(&of_set_property_mutex);
82 write_lock(&devtree_lock); 83 write_lock(&devtree_lock);
83 prevp = &dp->properties; 84 prevp = &dp->properties;
84 while (*prevp) { 85 while (*prevp) {
@@ -88,9 +89,7 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
88 void *old_val = prop->value; 89 void *old_val = prop->value;
89 int ret; 90 int ret;
90 91
91 mutex_lock(&of_set_property_mutex);
92 ret = prom_setprop(dp->node, name, val, len); 92 ret = prom_setprop(dp->node, name, val, len);
93 mutex_unlock(&of_set_property_mutex);
94 93
95 err = -EINVAL; 94 err = -EINVAL;
96 if (ret >= 0) { 95 if (ret >= 0) {
@@ -109,6 +108,7 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
109 prevp = &(*prevp)->next; 108 prevp = &(*prevp)->next;
110 } 109 }
111 write_unlock(&devtree_lock); 110 write_unlock(&devtree_lock);
111 mutex_unlock(&of_set_property_mutex);
112 112
113 /* XXX Upate procfs if necessary... */ 113 /* XXX Upate procfs if necessary... */
114 114
diff --git a/arch/sparc/kernel/visemul.c b/arch/sparc/kernel/visemul.c
index b956fd71c131..d231cbd5c526 100644
--- a/arch/sparc/kernel/visemul.c
+++ b/arch/sparc/kernel/visemul.c
@@ -617,7 +617,7 @@ static void pmul(struct pt_regs *regs, unsigned int insn, unsigned int opf)
617 rs2 = fps_regval(f, RS2(insn)); 617 rs2 = fps_regval(f, RS2(insn));
618 618
619 rd_val = 0; 619 rd_val = 0;
620 src2 = (rs2 >> (opf == FMUL8x16AU_OPF) ? 16 : 0); 620 src2 = rs2 >> (opf == FMUL8x16AU_OPF ? 16 : 0);
621 for (byte = 0; byte < 4; byte++) { 621 for (byte = 0; byte < 4; byte++) {
622 u16 src1 = (rs1 >> (byte * 8)) & 0x00ff; 622 u16 src1 = (rs1 >> (byte * 8)) & 0x00ff;
623 u32 prod = src1 * src2; 623 u32 prod = src1 * src2;
diff --git a/arch/sparc/mm/init_64.h b/arch/sparc/mm/init_64.h
index c2f772dbd556..77d1b313e344 100644
--- a/arch/sparc/mm/init_64.h
+++ b/arch/sparc/mm/init_64.h
@@ -45,7 +45,7 @@ extern void free_initmem(void);
45#define VMEMMAP_ALIGN(x) (((x)+VMEMMAP_CHUNK-1UL)&VMEMMAP_CHUNK_MASK) 45#define VMEMMAP_ALIGN(x) (((x)+VMEMMAP_CHUNK-1UL)&VMEMMAP_CHUNK_MASK)
46 46
47#define VMEMMAP_SIZE ((((1UL << MAX_PHYSADDR_BITS) >> PAGE_SHIFT) * \ 47#define VMEMMAP_SIZE ((((1UL << MAX_PHYSADDR_BITS) >> PAGE_SHIFT) * \
48 sizeof(struct page *)) >> VMEMMAP_CHUNK_SHIFT) 48 sizeof(struct page)) >> VMEMMAP_CHUNK_SHIFT)
49extern unsigned long vmemmap_table[VMEMMAP_SIZE]; 49extern unsigned long vmemmap_table[VMEMMAP_SIZE];
50#endif 50#endif
51 51
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 07e01149e3bf..72ace9515a07 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -1443,12 +1443,8 @@ config SECCOMP
1443 1443
1444 If unsure, say Y. Only embedded should say N here. 1444 If unsure, say Y. Only embedded should say N here.
1445 1445
1446config CC_STACKPROTECTOR_ALL
1447 bool
1448
1449config CC_STACKPROTECTOR 1446config CC_STACKPROTECTOR
1450 bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)" 1447 bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
1451 select CC_STACKPROTECTOR_ALL
1452 ---help--- 1448 ---help---
1453 This option turns on the -fstack-protector GCC feature. This 1449 This option turns on the -fstack-protector GCC feature. This
1454 feature puts, at the beginning of functions, a canary value on 1450 feature puts, at the beginning of functions, a canary value on
diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu
index f2824fb8c79c..2649840d888f 100644
--- a/arch/x86/Kconfig.cpu
+++ b/arch/x86/Kconfig.cpu
@@ -400,7 +400,7 @@ config X86_TSC
400 400
401config X86_CMPXCHG64 401config X86_CMPXCHG64
402 def_bool y 402 def_bool y
403 depends on X86_PAE || X86_64 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MATOM 403 depends on !M386 && !M486
404 404
405# this should be set for all -march=.. options where the compiler 405# this should be set for all -march=.. options where the compiler
406# generates cmov. 406# generates cmov.
diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index a012ee8ef803..d2d24c9ee64d 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -76,7 +76,6 @@ ifdef CONFIG_CC_STACKPROTECTOR
76 cc_has_sp := $(srctree)/scripts/gcc-x86_$(BITS)-has-stack-protector.sh 76 cc_has_sp := $(srctree)/scripts/gcc-x86_$(BITS)-has-stack-protector.sh
77 ifeq ($(shell $(CONFIG_SHELL) $(cc_has_sp) $(CC) $(biarch)),y) 77 ifeq ($(shell $(CONFIG_SHELL) $(cc_has_sp) $(CC) $(biarch)),y)
78 stackp-y := -fstack-protector 78 stackp-y := -fstack-protector
79 stackp-$(CONFIG_CC_STACKPROTECTOR_ALL) += -fstack-protector-all
80 KBUILD_CFLAGS += $(stackp-y) 79 KBUILD_CFLAGS += $(stackp-y)
81 else 80 else
82 $(warning stack protector enabled but no compiler support) 81 $(warning stack protector enabled but no compiler support)
diff --git a/arch/x86/boot/setup.ld b/arch/x86/boot/setup.ld
index 0f6ec455a2b1..03c0683636b6 100644
--- a/arch/x86/boot/setup.ld
+++ b/arch/x86/boot/setup.ld
@@ -53,6 +53,9 @@ SECTIONS
53 53
54 /DISCARD/ : { *(.note*) } 54 /DISCARD/ : { *(.note*) }
55 55
56 /*
57 * The ASSERT() sink to . is intentional, for binutils 2.14 compatibility:
58 */
56 . = ASSERT(_end <= 0x8000, "Setup too big!"); 59 . = ASSERT(_end <= 0x8000, "Setup too big!");
57 . = ASSERT(hdr == 0x1f1, "The setup header has the wrong offset!"); 60 . = ASSERT(hdr == 0x1f1, "The setup header has the wrong offset!");
58 /* Necessary for the very-old-loader check to work... */ 61 /* Necessary for the very-old-loader check to work... */
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S
index 1733f9f65e82..581b0568fe19 100644
--- a/arch/x86/ia32/ia32entry.S
+++ b/arch/x86/ia32/ia32entry.S
@@ -204,7 +204,7 @@ sysexit_from_sys_call:
204 movl RDI-ARGOFFSET(%rsp),%r8d /* reload 5th syscall arg */ 204 movl RDI-ARGOFFSET(%rsp),%r8d /* reload 5th syscall arg */
205 .endm 205 .endm
206 206
207 .macro auditsys_exit exit,ebpsave=RBP 207 .macro auditsys_exit exit
208 testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),TI_flags(%r10) 208 testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),TI_flags(%r10)
209 jnz ia32_ret_from_sys_call 209 jnz ia32_ret_from_sys_call
210 TRACE_IRQS_ON 210 TRACE_IRQS_ON
@@ -217,7 +217,6 @@ sysexit_from_sys_call:
217 call audit_syscall_exit 217 call audit_syscall_exit
218 GET_THREAD_INFO(%r10) 218 GET_THREAD_INFO(%r10)
219 movl RAX-ARGOFFSET(%rsp),%eax /* reload syscall return value */ 219 movl RAX-ARGOFFSET(%rsp),%eax /* reload syscall return value */
220 movl \ebpsave-ARGOFFSET(%rsp),%ebp /* reload user register value */
221 movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),%edi 220 movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),%edi
222 cli 221 cli
223 TRACE_IRQS_OFF 222 TRACE_IRQS_OFF
@@ -351,7 +350,7 @@ cstar_auditsys:
351 jmp cstar_dispatch 350 jmp cstar_dispatch
352 351
353sysretl_audit: 352sysretl_audit:
354 auditsys_exit sysretl_from_sys_call, RCX /* user %ebp in RCX slot */ 353 auditsys_exit sysretl_from_sys_call
355#endif 354#endif
356 355
357cstar_tracesys: 356cstar_tracesys:
diff --git a/arch/x86/include/asm/amd_iommu.h b/arch/x86/include/asm/amd_iommu.h
index ac95995b7bad..4b180897e6b5 100644
--- a/arch/x86/include/asm/amd_iommu.h
+++ b/arch/x86/include/asm/amd_iommu.h
@@ -31,6 +31,7 @@ extern irqreturn_t amd_iommu_int_handler(int irq, void *data);
31extern void amd_iommu_flush_all_domains(void); 31extern void amd_iommu_flush_all_domains(void);
32extern void amd_iommu_flush_all_devices(void); 32extern void amd_iommu_flush_all_devices(void);
33extern void amd_iommu_shutdown(void); 33extern void amd_iommu_shutdown(void);
34extern void amd_iommu_apply_erratum_63(u16 devid);
34#else 35#else
35static inline int amd_iommu_init(void) { return -ENODEV; } 36static inline int amd_iommu_init(void) { return -ENODEV; }
36static inline void amd_iommu_detect(void) { } 37static inline void amd_iommu_detect(void) { }
diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
index e8de2f6f5ca5..617bd56b3070 100644
--- a/arch/x86/include/asm/desc.h
+++ b/arch/x86/include/asm/desc.h
@@ -288,7 +288,7 @@ static inline void load_LDT(mm_context_t *pc)
288 288
289static inline unsigned long get_desc_base(const struct desc_struct *desc) 289static inline unsigned long get_desc_base(const struct desc_struct *desc)
290{ 290{
291 return desc->base0 | ((desc->base1) << 16) | ((desc->base2) << 24); 291 return (unsigned)(desc->base0 | ((desc->base1) << 16) | ((desc->base2) << 24));
292} 292}
293 293
294static inline void set_desc_base(struct desc_struct *desc, unsigned long base) 294static inline void set_desc_base(struct desc_struct *desc, unsigned long base)
diff --git a/arch/x86/include/asm/dma-mapping.h b/arch/x86/include/asm/dma-mapping.h
index 0ee770d23d0e..6a25d5d42836 100644
--- a/arch/x86/include/asm/dma-mapping.h
+++ b/arch/x86/include/asm/dma-mapping.h
@@ -14,6 +14,12 @@
14#include <asm/swiotlb.h> 14#include <asm/swiotlb.h>
15#include <asm-generic/dma-coherent.h> 15#include <asm-generic/dma-coherent.h>
16 16
17#ifdef CONFIG_ISA
18# define ISA_DMA_BIT_MASK DMA_BIT_MASK(24)
19#else
20# define ISA_DMA_BIT_MASK DMA_BIT_MASK(32)
21#endif
22
17extern dma_addr_t bad_dma_address; 23extern dma_addr_t bad_dma_address;
18extern int iommu_merge; 24extern int iommu_merge;
19extern struct device x86_dma_fallback_dev; 25extern struct device x86_dma_fallback_dev;
@@ -124,10 +130,8 @@ dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle,
124 if (dma_alloc_from_coherent(dev, size, dma_handle, &memory)) 130 if (dma_alloc_from_coherent(dev, size, dma_handle, &memory))
125 return memory; 131 return memory;
126 132
127 if (!dev) { 133 if (!dev)
128 dev = &x86_dma_fallback_dev; 134 dev = &x86_dma_fallback_dev;
129 gfp |= GFP_DMA;
130 }
131 135
132 if (!is_device_dma_capable(dev)) 136 if (!is_device_dma_capable(dev))
133 return NULL; 137 return NULL;
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index c3429e8b2424..c9786480f0fe 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -1000,7 +1000,7 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
1000#define thread_saved_pc(t) (*(unsigned long *)((t)->thread.sp - 8)) 1000#define thread_saved_pc(t) (*(unsigned long *)((t)->thread.sp - 8))
1001 1001
1002#define task_pt_regs(tsk) ((struct pt_regs *)(tsk)->thread.sp0 - 1) 1002#define task_pt_regs(tsk) ((struct pt_regs *)(tsk)->thread.sp0 - 1)
1003#define KSTK_ESP(tsk) -1 /* sorry. doesn't work for syscall. */ 1003extern unsigned long KSTK_ESP(struct task_struct *task);
1004#endif /* CONFIG_X86_64 */ 1004#endif /* CONFIG_X86_64 */
1005 1005
1006extern void start_thread(struct pt_regs *regs, unsigned long new_ip, 1006extern void start_thread(struct pt_regs *regs, unsigned long new_ip,
diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h
index 25a92842dd99..40e37b10c6c0 100644
--- a/arch/x86/include/asm/topology.h
+++ b/arch/x86/include/asm/topology.h
@@ -143,6 +143,7 @@ extern unsigned long node_remap_size[];
143 | 1*SD_BALANCE_FORK \ 143 | 1*SD_BALANCE_FORK \
144 | 0*SD_BALANCE_WAKE \ 144 | 0*SD_BALANCE_WAKE \
145 | 1*SD_WAKE_AFFINE \ 145 | 1*SD_WAKE_AFFINE \
146 | 0*SD_PREFER_LOCAL \
146 | 0*SD_SHARE_CPUPOWER \ 147 | 0*SD_SHARE_CPUPOWER \
147 | 0*SD_POWERSAVINGS_BALANCE \ 148 | 0*SD_POWERSAVINGS_BALANCE \
148 | 0*SD_SHARE_PKG_RESOURCES \ 149 | 0*SD_SHARE_PKG_RESOURCES \
diff --git a/arch/x86/include/asm/uv/uv_hub.h b/arch/x86/include/asm/uv/uv_hub.h
index 04eb6c958b9d..d1414af98559 100644
--- a/arch/x86/include/asm/uv/uv_hub.h
+++ b/arch/x86/include/asm/uv/uv_hub.h
@@ -19,6 +19,8 @@
19#include <asm/types.h> 19#include <asm/types.h>
20#include <asm/percpu.h> 20#include <asm/percpu.h>
21#include <asm/uv/uv_mmrs.h> 21#include <asm/uv/uv_mmrs.h>
22#include <asm/irq_vectors.h>
23#include <asm/io_apic.h>
22 24
23 25
24/* 26/*
@@ -114,7 +116,7 @@
114/* 116/*
115 * The largest possible NASID of a C or M brick (+ 2) 117 * The largest possible NASID of a C or M brick (+ 2)
116 */ 118 */
117#define UV_MAX_NASID_VALUE (UV_MAX_NUMALINK_NODES * 2) 119#define UV_MAX_NASID_VALUE (UV_MAX_NUMALINK_BLADES * 2)
118 120
119struct uv_scir_s { 121struct uv_scir_s {
120 struct timer_list timer; 122 struct timer_list timer;
@@ -230,6 +232,20 @@ static inline unsigned long uv_gpa(void *v)
230 return uv_soc_phys_ram_to_gpa(__pa(v)); 232 return uv_soc_phys_ram_to_gpa(__pa(v));
231} 233}
232 234
235/* gnode -> pnode */
236static inline unsigned long uv_gpa_to_gnode(unsigned long gpa)
237{
238 return gpa >> uv_hub_info->m_val;
239}
240
241/* gpa -> pnode */
242static inline int uv_gpa_to_pnode(unsigned long gpa)
243{
244 unsigned long n_mask = (1UL << uv_hub_info->n_val) - 1;
245
246 return uv_gpa_to_gnode(gpa) & n_mask;
247}
248
233/* pnode, offset --> socket virtual */ 249/* pnode, offset --> socket virtual */
234static inline void *uv_pnode_offset_to_vaddr(int pnode, unsigned long offset) 250static inline void *uv_pnode_offset_to_vaddr(int pnode, unsigned long offset)
235{ 251{
@@ -421,9 +437,14 @@ static inline void uv_set_cpu_scir_bits(int cpu, unsigned char value)
421static inline void uv_hub_send_ipi(int pnode, int apicid, int vector) 437static inline void uv_hub_send_ipi(int pnode, int apicid, int vector)
422{ 438{
423 unsigned long val; 439 unsigned long val;
440 unsigned long dmode = dest_Fixed;
441
442 if (vector == NMI_VECTOR)
443 dmode = dest_NMI;
424 444
425 val = (1UL << UVH_IPI_INT_SEND_SHFT) | 445 val = (1UL << UVH_IPI_INT_SEND_SHFT) |
426 ((apicid) << UVH_IPI_INT_APIC_ID_SHFT) | 446 ((apicid) << UVH_IPI_INT_APIC_ID_SHFT) |
447 (dmode << UVH_IPI_INT_DELIVERY_MODE_SHFT) |
427 (vector << UVH_IPI_INT_VECTOR_SHFT); 448 (vector << UVH_IPI_INT_VECTOR_SHFT);
428 uv_write_global_mmr64(pnode, UVH_IPI_INT, val); 449 uv_write_global_mmr64(pnode, UVH_IPI_INT, val);
429} 450}
diff --git a/arch/x86/kernel/acpi/processor.c b/arch/x86/kernel/acpi/processor.c
index d296f4a195c9..d85d1b2432ba 100644
--- a/arch/x86/kernel/acpi/processor.c
+++ b/arch/x86/kernel/acpi/processor.c
@@ -79,7 +79,8 @@ void arch_acpi_processor_init_pdc(struct acpi_processor *pr)
79 struct cpuinfo_x86 *c = &cpu_data(pr->id); 79 struct cpuinfo_x86 *c = &cpu_data(pr->id);
80 80
81 pr->pdc = NULL; 81 pr->pdc = NULL;
82 if (c->x86_vendor == X86_VENDOR_INTEL) 82 if (c->x86_vendor == X86_VENDOR_INTEL ||
83 c->x86_vendor == X86_VENDOR_CENTAUR)
83 init_intel_pdc(pr, c); 84 init_intel_pdc(pr, c);
84 85
85 return; 86 return;
diff --git a/arch/x86/kernel/acpi/realmode/wakeup.lds.S b/arch/x86/kernel/acpi/realmode/wakeup.lds.S
index 7da00b799cda..060fff8f5c5b 100644
--- a/arch/x86/kernel/acpi/realmode/wakeup.lds.S
+++ b/arch/x86/kernel/acpi/realmode/wakeup.lds.S
@@ -57,5 +57,8 @@ SECTIONS
57 *(.note*) 57 *(.note*)
58 } 58 }
59 59
60 /*
61 * The ASSERT() sink to . is intentional, for binutils 2.14 compatibility:
62 */
60 . = ASSERT(_end <= WAKEUP_SIZE, "Wakeup too big!"); 63 . = ASSERT(_end <= WAKEUP_SIZE, "Wakeup too big!");
61} 64}
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c
index 98f230f6a28d..0285521e0a99 100644
--- a/arch/x86/kernel/amd_iommu.c
+++ b/arch/x86/kernel/amd_iommu.c
@@ -1220,6 +1220,8 @@ static void __detach_device(struct protection_domain *domain, u16 devid)
1220 amd_iommu_dev_table[devid].data[1] = 0; 1220 amd_iommu_dev_table[devid].data[1] = 0;
1221 amd_iommu_dev_table[devid].data[2] = 0; 1221 amd_iommu_dev_table[devid].data[2] = 0;
1222 1222
1223 amd_iommu_apply_erratum_63(devid);
1224
1223 /* decrease reference counter */ 1225 /* decrease reference counter */
1224 domain->dev_cnt -= 1; 1226 domain->dev_cnt -= 1;
1225 1227
diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c
index b4b61d462dcc..c20001e4f556 100644
--- a/arch/x86/kernel/amd_iommu_init.c
+++ b/arch/x86/kernel/amd_iommu_init.c
@@ -240,7 +240,7 @@ static void iommu_feature_enable(struct amd_iommu *iommu, u8 bit)
240 writel(ctrl, iommu->mmio_base + MMIO_CONTROL_OFFSET); 240 writel(ctrl, iommu->mmio_base + MMIO_CONTROL_OFFSET);
241} 241}
242 242
243static void __init iommu_feature_disable(struct amd_iommu *iommu, u8 bit) 243static void iommu_feature_disable(struct amd_iommu *iommu, u8 bit)
244{ 244{
245 u32 ctrl; 245 u32 ctrl;
246 246
@@ -519,6 +519,26 @@ static void set_dev_entry_bit(u16 devid, u8 bit)
519 amd_iommu_dev_table[devid].data[i] |= (1 << _bit); 519 amd_iommu_dev_table[devid].data[i] |= (1 << _bit);
520} 520}
521 521
522static int get_dev_entry_bit(u16 devid, u8 bit)
523{
524 int i = (bit >> 5) & 0x07;
525 int _bit = bit & 0x1f;
526
527 return (amd_iommu_dev_table[devid].data[i] & (1 << _bit)) >> _bit;
528}
529
530
531void amd_iommu_apply_erratum_63(u16 devid)
532{
533 int sysmgt;
534
535 sysmgt = get_dev_entry_bit(devid, DEV_ENTRY_SYSMGT1) |
536 (get_dev_entry_bit(devid, DEV_ENTRY_SYSMGT2) << 1);
537
538 if (sysmgt == 0x01)
539 set_dev_entry_bit(devid, DEV_ENTRY_IW);
540}
541
522/* Writes the specific IOMMU for a device into the rlookup table */ 542/* Writes the specific IOMMU for a device into the rlookup table */
523static void __init set_iommu_for_device(struct amd_iommu *iommu, u16 devid) 543static void __init set_iommu_for_device(struct amd_iommu *iommu, u16 devid)
524{ 544{
@@ -547,6 +567,8 @@ static void __init set_dev_entry_from_acpi(struct amd_iommu *iommu,
547 if (flags & ACPI_DEVFLAG_LINT1) 567 if (flags & ACPI_DEVFLAG_LINT1)
548 set_dev_entry_bit(devid, DEV_ENTRY_LINT1_PASS); 568 set_dev_entry_bit(devid, DEV_ENTRY_LINT1_PASS);
549 569
570 amd_iommu_apply_erratum_63(devid);
571
550 set_iommu_for_device(iommu, devid); 572 set_iommu_for_device(iommu, devid);
551} 573}
552 574
diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
index f5f5886a6b53..326c25477d3d 100644
--- a/arch/x86/kernel/apic/x2apic_uv_x.c
+++ b/arch/x86/kernel/apic/x2apic_uv_x.c
@@ -352,14 +352,14 @@ static __init void get_lowmem_redirect(unsigned long *base, unsigned long *size)
352 352
353 for (i = 0; i < ARRAY_SIZE(redir_addrs); i++) { 353 for (i = 0; i < ARRAY_SIZE(redir_addrs); i++) {
354 alias.v = uv_read_local_mmr(redir_addrs[i].alias); 354 alias.v = uv_read_local_mmr(redir_addrs[i].alias);
355 if (alias.s.base == 0) { 355 if (alias.s.enable && alias.s.base == 0) {
356 *size = (1UL << alias.s.m_alias); 356 *size = (1UL << alias.s.m_alias);
357 redirect.v = uv_read_local_mmr(redir_addrs[i].redirect); 357 redirect.v = uv_read_local_mmr(redir_addrs[i].redirect);
358 *base = (unsigned long)redirect.s.dest_base << DEST_SHIFT; 358 *base = (unsigned long)redirect.s.dest_base << DEST_SHIFT;
359 return; 359 return;
360 } 360 }
361 } 361 }
362 BUG(); 362 *base = *size = 0;
363} 363}
364 364
365enum map_type {map_wb, map_uc}; 365enum map_type {map_wb, map_uc};
@@ -619,12 +619,12 @@ void __init uv_system_init(void)
619 uv_cpu_hub_info(cpu)->lowmem_remap_base = lowmem_redir_base; 619 uv_cpu_hub_info(cpu)->lowmem_remap_base = lowmem_redir_base;
620 uv_cpu_hub_info(cpu)->lowmem_remap_top = lowmem_redir_size; 620 uv_cpu_hub_info(cpu)->lowmem_remap_top = lowmem_redir_size;
621 uv_cpu_hub_info(cpu)->m_val = m_val; 621 uv_cpu_hub_info(cpu)->m_val = m_val;
622 uv_cpu_hub_info(cpu)->n_val = m_val; 622 uv_cpu_hub_info(cpu)->n_val = n_val;
623 uv_cpu_hub_info(cpu)->numa_blade_id = blade; 623 uv_cpu_hub_info(cpu)->numa_blade_id = blade;
624 uv_cpu_hub_info(cpu)->blade_processor_id = lcpu; 624 uv_cpu_hub_info(cpu)->blade_processor_id = lcpu;
625 uv_cpu_hub_info(cpu)->pnode = pnode; 625 uv_cpu_hub_info(cpu)->pnode = pnode;
626 uv_cpu_hub_info(cpu)->pnode_mask = pnode_mask; 626 uv_cpu_hub_info(cpu)->pnode_mask = pnode_mask;
627 uv_cpu_hub_info(cpu)->gpa_mask = (1 << (m_val + n_val)) - 1; 627 uv_cpu_hub_info(cpu)->gpa_mask = (1UL << (m_val + n_val)) - 1;
628 uv_cpu_hub_info(cpu)->gnode_upper = gnode_upper; 628 uv_cpu_hub_info(cpu)->gnode_upper = gnode_upper;
629 uv_cpu_hub_info(cpu)->gnode_extra = gnode_extra; 629 uv_cpu_hub_info(cpu)->gnode_extra = gnode_extra;
630 uv_cpu_hub_info(cpu)->global_mmr_base = mmr_base; 630 uv_cpu_hub_info(cpu)->global_mmr_base = mmr_base;
diff --git a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
index 7d5c3b0ea8da..8b581d3905cb 100644
--- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
+++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
@@ -526,15 +526,21 @@ static const struct dmi_system_id sw_any_bug_dmi_table[] = {
526 526
527static int acpi_cpufreq_blacklist(struct cpuinfo_x86 *c) 527static int acpi_cpufreq_blacklist(struct cpuinfo_x86 *c)
528{ 528{
529 /* http://www.intel.com/Assets/PDF/specupdate/314554.pdf 529 /* Intel Xeon Processor 7100 Series Specification Update
530 * http://www.intel.com/Assets/PDF/specupdate/314554.pdf
530 * AL30: A Machine Check Exception (MCE) Occurring during an 531 * AL30: A Machine Check Exception (MCE) Occurring during an
531 * Enhanced Intel SpeedStep Technology Ratio Change May Cause 532 * Enhanced Intel SpeedStep Technology Ratio Change May Cause
532 * Both Processor Cores to Lock Up when HT is enabled*/ 533 * Both Processor Cores to Lock Up. */
533 if (c->x86_vendor == X86_VENDOR_INTEL) { 534 if (c->x86_vendor == X86_VENDOR_INTEL) {
534 if ((c->x86 == 15) && 535 if ((c->x86 == 15) &&
535 (c->x86_model == 6) && 536 (c->x86_model == 6) &&
536 (c->x86_mask == 8) && smt_capable()) 537 (c->x86_mask == 8)) {
538 printk(KERN_INFO "acpi-cpufreq: Intel(R) "
539 "Xeon(R) 7100 Errata AL30, processors may "
540 "lock up on frequency changes: disabling "
541 "acpi-cpufreq.\n");
537 return -ENODEV; 542 return -ENODEV;
543 }
538 } 544 }
539 return 0; 545 return 0;
540} 546}
@@ -549,13 +555,18 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
549 unsigned int result = 0; 555 unsigned int result = 0;
550 struct cpuinfo_x86 *c = &cpu_data(policy->cpu); 556 struct cpuinfo_x86 *c = &cpu_data(policy->cpu);
551 struct acpi_processor_performance *perf; 557 struct acpi_processor_performance *perf;
558#ifdef CONFIG_SMP
559 static int blacklisted;
560#endif
552 561
553 dprintk("acpi_cpufreq_cpu_init\n"); 562 dprintk("acpi_cpufreq_cpu_init\n");
554 563
555#ifdef CONFIG_SMP 564#ifdef CONFIG_SMP
556 result = acpi_cpufreq_blacklist(c); 565 if (blacklisted)
557 if (result) 566 return blacklisted;
558 return result; 567 blacklisted = acpi_cpufreq_blacklist(c);
568 if (blacklisted)
569 return blacklisted;
559#endif 570#endif
560 571
561 data = kzalloc(sizeof(struct acpi_cpufreq_data), GFP_KERNEL); 572 data = kzalloc(sizeof(struct acpi_cpufreq_data), GFP_KERNEL);
diff --git a/arch/x86/kernel/cpu/cpufreq/longhaul.c b/arch/x86/kernel/cpu/cpufreq/longhaul.c
index ce2ed3e4aad9..cabd2fa3fc93 100644
--- a/arch/x86/kernel/cpu/cpufreq/longhaul.c
+++ b/arch/x86/kernel/cpu/cpufreq/longhaul.c
@@ -813,7 +813,7 @@ static int __init longhaul_cpu_init(struct cpufreq_policy *policy)
813 memcpy(eblcr, samuel2_eblcr, sizeof(samuel2_eblcr)); 813 memcpy(eblcr, samuel2_eblcr, sizeof(samuel2_eblcr));
814 break; 814 break;
815 case 1 ... 15: 815 case 1 ... 15:
816 longhaul_version = TYPE_LONGHAUL_V1; 816 longhaul_version = TYPE_LONGHAUL_V2;
817 if (c->x86_mask < 8) { 817 if (c->x86_mask < 8) {
818 cpu_model = CPU_SAMUEL2; 818 cpu_model = CPU_SAMUEL2;
819 cpuname = "C3 'Samuel 2' [C5B]"; 819 cpuname = "C3 'Samuel 2' [C5B]";
diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
index 6394aa5c7985..3f12dabeab52 100644
--- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
+++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
@@ -1022,7 +1022,7 @@ static int get_transition_latency(struct powernow_k8_data *data)
1022 * set it to 1 to avoid problems in the future. 1022 * set it to 1 to avoid problems in the future.
1023 * For all others it's a BIOS bug. 1023 * For all others it's a BIOS bug.
1024 */ 1024 */
1025 if (!boot_cpu_data.x86 == 0x11) 1025 if (boot_cpu_data.x86 != 0x11)
1026 printk(KERN_ERR FW_WARN PFX "Invalid zero transition " 1026 printk(KERN_ERR FW_WARN PFX "Invalid zero transition "
1027 "latency\n"); 1027 "latency\n");
1028 max_latency = 1; 1028 max_latency = 1;
diff --git a/arch/x86/kernel/cpu/cpufreq/speedstep-ich.c b/arch/x86/kernel/cpu/cpufreq/speedstep-ich.c
index 6911e91fb4f6..3ae5a7a3a500 100644
--- a/arch/x86/kernel/cpu/cpufreq/speedstep-ich.c
+++ b/arch/x86/kernel/cpu/cpufreq/speedstep-ich.c
@@ -232,28 +232,23 @@ static unsigned int speedstep_detect_chipset(void)
232 return 0; 232 return 0;
233} 233}
234 234
235struct get_freq_data { 235static void get_freq_data(void *_speed)
236 unsigned int speed;
237 unsigned int processor;
238};
239
240static void get_freq_data(void *_data)
241{ 236{
242 struct get_freq_data *data = _data; 237 unsigned int *speed = _speed;
243 238
244 data->speed = speedstep_get_frequency(data->processor); 239 *speed = speedstep_get_frequency(speedstep_processor);
245} 240}
246 241
247static unsigned int speedstep_get(unsigned int cpu) 242static unsigned int speedstep_get(unsigned int cpu)
248{ 243{
249 struct get_freq_data data = { .processor = cpu }; 244 unsigned int speed;
250 245
251 /* You're supposed to ensure CPU is online. */ 246 /* You're supposed to ensure CPU is online. */
252 if (smp_call_function_single(cpu, get_freq_data, &data, 1) != 0) 247 if (smp_call_function_single(cpu, get_freq_data, &speed, 1) != 0)
253 BUG(); 248 BUG();
254 249
255 dprintk("detected %u kHz as current frequency\n", data.speed); 250 dprintk("detected %u kHz as current frequency\n", speed);
256 return data.speed; 251 return speed;
257} 252}
258 253
259/** 254/**
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index b1598a9436d0..721a77ca8115 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -1214,7 +1214,8 @@ static int __cpuinit mce_cap_init(void)
1214 rdmsrl(MSR_IA32_MCG_CAP, cap); 1214 rdmsrl(MSR_IA32_MCG_CAP, cap);
1215 1215
1216 b = cap & MCG_BANKCNT_MASK; 1216 b = cap & MCG_BANKCNT_MASK;
1217 printk(KERN_INFO "mce: CPU supports %d MCE banks\n", b); 1217 if (!banks)
1218 printk(KERN_INFO "mce: CPU supports %d MCE banks\n", b);
1218 1219
1219 if (b > MAX_NR_BANKS) { 1220 if (b > MAX_NR_BANKS) {
1220 printk(KERN_WARNING 1221 printk(KERN_WARNING
diff --git a/arch/x86/kernel/cpu/mtrr/cleanup.c b/arch/x86/kernel/cpu/mtrr/cleanup.c
index 315738c74aad..73c86db5acbe 100644
--- a/arch/x86/kernel/cpu/mtrr/cleanup.c
+++ b/arch/x86/kernel/cpu/mtrr/cleanup.c
@@ -846,7 +846,7 @@ int __init mtrr_cleanup(unsigned address_bits)
846 sort(range, nr_range, sizeof(struct res_range), cmp_range, NULL); 846 sort(range, nr_range, sizeof(struct res_range), cmp_range, NULL);
847 847
848 range_sums = sum_ranges(range, nr_range); 848 range_sums = sum_ranges(range, nr_range);
849 printk(KERN_INFO "total RAM coverred: %ldM\n", 849 printk(KERN_INFO "total RAM covered: %ldM\n",
850 range_sums >> (20 - PAGE_SHIFT)); 850 range_sums >> (20 - PAGE_SHIFT));
851 851
852 if (mtrr_chunk_size && mtrr_gran_size) { 852 if (mtrr_chunk_size && mtrr_gran_size) {
diff --git a/arch/x86/kernel/crash_dump_32.c b/arch/x86/kernel/crash_dump_32.c
index f7cdb3b457aa..cd97ce18c29d 100644
--- a/arch/x86/kernel/crash_dump_32.c
+++ b/arch/x86/kernel/crash_dump_32.c
@@ -16,6 +16,22 @@ static void *kdump_buf_page;
16/* Stores the physical address of elf header of crash image. */ 16/* Stores the physical address of elf header of crash image. */
17unsigned long long elfcorehdr_addr = ELFCORE_ADDR_MAX; 17unsigned long long elfcorehdr_addr = ELFCORE_ADDR_MAX;
18 18
19static inline bool is_crashed_pfn_valid(unsigned long pfn)
20{
21#ifndef CONFIG_X86_PAE
22 /*
23 * non-PAE kdump kernel executed from a PAE one will crop high pte
24 * bits and poke unwanted space counting again from address 0, we
25 * don't want that. pte must fit into unsigned long. In fact the
26 * test checks high 12 bits for being zero (pfn will be shifted left
27 * by PAGE_SHIFT).
28 */
29 return pte_pfn(pfn_pte(pfn, __pgprot(0))) == pfn;
30#else
31 return true;
32#endif
33}
34
19/** 35/**
20 * copy_oldmem_page - copy one page from "oldmem" 36 * copy_oldmem_page - copy one page from "oldmem"
21 * @pfn: page frame number to be copied 37 * @pfn: page frame number to be copied
@@ -41,6 +57,9 @@ ssize_t copy_oldmem_page(unsigned long pfn, char *buf,
41 if (!csize) 57 if (!csize)
42 return 0; 58 return 0;
43 59
60 if (!is_crashed_pfn_valid(pfn))
61 return -EFAULT;
62
44 vaddr = kmap_atomic_pfn(pfn, KM_PTE0); 63 vaddr = kmap_atomic_pfn(pfn, KM_PTE0);
45 64
46 if (!userbuf) { 65 if (!userbuf) {
diff --git a/arch/x86/kernel/efi.c b/arch/x86/kernel/efi.c
index ad5bd988fb79..cdcfb122f256 100644
--- a/arch/x86/kernel/efi.c
+++ b/arch/x86/kernel/efi.c
@@ -454,8 +454,10 @@ void __init efi_init(void)
454 if (add_efi_memmap) 454 if (add_efi_memmap)
455 do_add_efi_memmap(); 455 do_add_efi_memmap();
456 456
457#ifdef CONFIG_X86_32
457 x86_platform.get_wallclock = efi_get_time; 458 x86_platform.get_wallclock = efi_get_time;
458 x86_platform.set_wallclock = efi_set_rtc_mmss; 459 x86_platform.set_wallclock = efi_set_rtc_mmss;
460#endif
459 461
460 /* Setup for EFI runtime service */ 462 /* Setup for EFI runtime service */
461 reboot_type = BOOT_EFI; 463 reboot_type = BOOT_EFI;
diff --git a/arch/x86/kernel/microcode_amd.c b/arch/x86/kernel/microcode_amd.c
index 366baa179913..f4c538b681ca 100644
--- a/arch/x86/kernel/microcode_amd.c
+++ b/arch/x86/kernel/microcode_amd.c
@@ -317,6 +317,12 @@ static enum ucode_state request_microcode_fw(int cpu, struct device *device)
317 return UCODE_NFOUND; 317 return UCODE_NFOUND;
318 } 318 }
319 319
320 if (*(u32 *)firmware->data != UCODE_MAGIC) {
321 printk(KERN_ERR "microcode: invalid UCODE_MAGIC (0x%08x)\n",
322 *(u32 *)firmware->data);
323 return UCODE_ERROR;
324 }
325
320 ret = generic_load_microcode(cpu, firmware->data, firmware->size); 326 ret = generic_load_microcode(cpu, firmware->data, firmware->size);
321 327
322 release_firmware(firmware); 328 release_firmware(firmware);
diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
index b2a71dca5642..a6e804d16c35 100644
--- a/arch/x86/kernel/pci-dma.c
+++ b/arch/x86/kernel/pci-dma.c
@@ -45,12 +45,10 @@ int iommu_pass_through __read_mostly;
45dma_addr_t bad_dma_address __read_mostly = 0; 45dma_addr_t bad_dma_address __read_mostly = 0;
46EXPORT_SYMBOL(bad_dma_address); 46EXPORT_SYMBOL(bad_dma_address);
47 47
48/* Dummy device used for NULL arguments (normally ISA). Better would 48/* Dummy device used for NULL arguments (normally ISA). */
49 be probably a smaller DMA mask, but this is bug-to-bug compatible
50 to older i386. */
51struct device x86_dma_fallback_dev = { 49struct device x86_dma_fallback_dev = {
52 .init_name = "fallback device", 50 .init_name = "fallback device",
53 .coherent_dma_mask = DMA_BIT_MASK(32), 51 .coherent_dma_mask = ISA_DMA_BIT_MASK,
54 .dma_mask = &x86_dma_fallback_dev.coherent_dma_mask, 52 .dma_mask = &x86_dma_fallback_dev.coherent_dma_mask,
55}; 53};
56EXPORT_SYMBOL(x86_dma_fallback_dev); 54EXPORT_SYMBOL(x86_dma_fallback_dev);
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index ad535b683170..eb62cbcaa490 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -664,3 +664,8 @@ long sys_arch_prctl(int code, unsigned long addr)
664 return do_arch_prctl(current, code, addr); 664 return do_arch_prctl(current, code, addr);
665} 665}
666 666
667unsigned long KSTK_ESP(struct task_struct *task)
668{
669 return (test_tsk_thread_flag(task, TIF_IA32)) ?
670 (task_pt_regs(task)->sp) : ((task)->thread.usersp);
671}
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index a1a3cdda06e1..f93078746e00 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -436,6 +436,14 @@ static struct dmi_system_id __initdata pci_reboot_dmi_table[] = {
436 DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro5"), 436 DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro5"),
437 }, 437 },
438 }, 438 },
439 { /* Handle problems with rebooting on Apple Macmini3,1 */
440 .callback = set_pci_reboot,
441 .ident = "Apple Macmini3,1",
442 .matches = {
443 DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
444 DMI_MATCH(DMI_PRODUCT_NAME, "Macmini3,1"),
445 },
446 },
439 { } 447 { }
440}; 448};
441 449
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index e09f0e2c14b5..2a34f9c5be21 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -660,6 +660,13 @@ static struct dmi_system_id __initdata bad_bios_dmi_table[] = {
660 }, 660 },
661 }, 661 },
662 { 662 {
663 .callback = dmi_low_memory_corruption,
664 .ident = "Phoenix/MSC BIOS",
665 .matches = {
666 DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix/MSC"),
667 },
668 },
669 {
663 /* 670 /*
664 * AMI BIOS with low memory corruption was found on Intel DG45ID board. 671 * AMI BIOS with low memory corruption was found on Intel DG45ID board.
665 * It hase different DMI_BIOS_VENDOR = "Intel Corp.", for now we will 672 * It hase different DMI_BIOS_VENDOR = "Intel Corp.", for now we will
diff --git a/arch/x86/kernel/tlb_uv.c b/arch/x86/kernel/tlb_uv.c
index 503c1f2e8835..1740c85e24bb 100644
--- a/arch/x86/kernel/tlb_uv.c
+++ b/arch/x86/kernel/tlb_uv.c
@@ -23,8 +23,6 @@
23static struct bau_control **uv_bau_table_bases __read_mostly; 23static struct bau_control **uv_bau_table_bases __read_mostly;
24static int uv_bau_retry_limit __read_mostly; 24static int uv_bau_retry_limit __read_mostly;
25 25
26/* position of pnode (which is nasid>>1): */
27static int uv_nshift __read_mostly;
28/* base pnode in this partition */ 26/* base pnode in this partition */
29static int uv_partition_base_pnode __read_mostly; 27static int uv_partition_base_pnode __read_mostly;
30 28
@@ -723,7 +721,7 @@ uv_activation_descriptor_init(int node, int pnode)
723 BUG_ON(!adp); 721 BUG_ON(!adp);
724 722
725 pa = uv_gpa(adp); /* need the real nasid*/ 723 pa = uv_gpa(adp); /* need the real nasid*/
726 n = pa >> uv_nshift; 724 n = uv_gpa_to_pnode(pa);
727 m = pa & uv_mmask; 725 m = pa & uv_mmask;
728 726
729 uv_write_global_mmr64(pnode, UVH_LB_BAU_SB_DESCRIPTOR_BASE, 727 uv_write_global_mmr64(pnode, UVH_LB_BAU_SB_DESCRIPTOR_BASE,
@@ -778,7 +776,7 @@ uv_payload_queue_init(int node, int pnode, struct bau_control *bau_tablesp)
778 * need the pnode of where the memory was really allocated 776 * need the pnode of where the memory was really allocated
779 */ 777 */
780 pa = uv_gpa(pqp); 778 pa = uv_gpa(pqp);
781 pn = pa >> uv_nshift; 779 pn = uv_gpa_to_pnode(pa);
782 uv_write_global_mmr64(pnode, 780 uv_write_global_mmr64(pnode,
783 UVH_LB_BAU_INTD_PAYLOAD_QUEUE_FIRST, 781 UVH_LB_BAU_INTD_PAYLOAD_QUEUE_FIRST,
784 ((unsigned long)pn << UV_PAYLOADQ_PNODE_SHIFT) | 782 ((unsigned long)pn << UV_PAYLOADQ_PNODE_SHIFT) |
@@ -843,8 +841,7 @@ static int __init uv_bau_init(void)
843 GFP_KERNEL, cpu_to_node(cur_cpu)); 841 GFP_KERNEL, cpu_to_node(cur_cpu));
844 842
845 uv_bau_retry_limit = 1; 843 uv_bau_retry_limit = 1;
846 uv_nshift = uv_hub_info->n_val; 844 uv_mmask = (1UL << uv_hub_info->m_val) - 1;
847 uv_mmask = (1UL << uv_hub_info->n_val) - 1;
848 nblades = uv_num_possible_blades(); 845 nblades = uv_num_possible_blades();
849 846
850 uv_bau_table_bases = (struct bau_control **) 847 uv_bau_table_bases = (struct bau_control **)
diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
index 92929fb3f9fa..3c68fe2d46cf 100644
--- a/arch/x86/kernel/vmlinux.lds.S
+++ b/arch/x86/kernel/vmlinux.lds.S
@@ -305,6 +305,9 @@ SECTIONS
305 305
306 306
307#ifdef CONFIG_X86_32 307#ifdef CONFIG_X86_32
308/*
309 * The ASSERT() sink to . is intentional, for binutils 2.14 compatibility:
310 */
308. = ASSERT((_end - LOAD_OFFSET <= KERNEL_IMAGE_SIZE), 311. = ASSERT((_end - LOAD_OFFSET <= KERNEL_IMAGE_SIZE),
309 "kernel image bigger than KERNEL_IMAGE_SIZE"); 312 "kernel image bigger than KERNEL_IMAGE_SIZE");
310#else 313#else
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 9b9695322f56..ae07d261527c 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1692,7 +1692,7 @@ static int kvm_vcpu_ioctl_x86_setup_mce(struct kvm_vcpu *vcpu,
1692 unsigned bank_num = mcg_cap & 0xff, bank; 1692 unsigned bank_num = mcg_cap & 0xff, bank;
1693 1693
1694 r = -EINVAL; 1694 r = -EINVAL;
1695 if (!bank_num) 1695 if (!bank_num || bank_num >= KVM_MAX_MCE_BANKS)
1696 goto out; 1696 goto out;
1697 if (mcg_cap & ~(KVM_MCE_CAP_SUPPORTED | 0xff | 0xff0000)) 1697 if (mcg_cap & ~(KVM_MCE_CAP_SUPPORTED | 0xff | 0xff0000))
1698 goto out; 1698 goto out;
@@ -4051,7 +4051,7 @@ static int save_guest_segment_descriptor(struct kvm_vcpu *vcpu, u16 selector,
4051 return kvm_write_guest_virt(dtable.base + index*8, seg_desc, sizeof(*seg_desc), vcpu); 4051 return kvm_write_guest_virt(dtable.base + index*8, seg_desc, sizeof(*seg_desc), vcpu);
4052} 4052}
4053 4053
4054static u32 get_tss_base_addr(struct kvm_vcpu *vcpu, 4054static gpa_t get_tss_base_addr(struct kvm_vcpu *vcpu,
4055 struct desc_struct *seg_desc) 4055 struct desc_struct *seg_desc)
4056{ 4056{
4057 u32 base_addr = get_desc_base(seg_desc); 4057 u32 base_addr = get_desc_base(seg_desc);
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
index 334e63ca7b2b..2feb9bdedaaf 100644
--- a/arch/x86/mm/ioremap.c
+++ b/arch/x86/mm/ioremap.c
@@ -170,8 +170,7 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr,
170 (unsigned long long)phys_addr, 170 (unsigned long long)phys_addr,
171 (unsigned long long)(phys_addr + size), 171 (unsigned long long)(phys_addr + size),
172 prot_val, new_prot_val); 172 prot_val, new_prot_val);
173 free_memtype(phys_addr, phys_addr + size); 173 goto err_free_memtype;
174 return NULL;
175 } 174 }
176 prot_val = new_prot_val; 175 prot_val = new_prot_val;
177 } 176 }
@@ -197,26 +196,25 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr,
197 */ 196 */
198 area = get_vm_area_caller(size, VM_IOREMAP, caller); 197 area = get_vm_area_caller(size, VM_IOREMAP, caller);
199 if (!area) 198 if (!area)
200 return NULL; 199 goto err_free_memtype;
201 area->phys_addr = phys_addr; 200 area->phys_addr = phys_addr;
202 vaddr = (unsigned long) area->addr; 201 vaddr = (unsigned long) area->addr;
203 202
204 if (kernel_map_sync_memtype(phys_addr, size, prot_val)) { 203 if (kernel_map_sync_memtype(phys_addr, size, prot_val))
205 free_memtype(phys_addr, phys_addr + size); 204 goto err_free_area;
206 free_vm_area(area);
207 return NULL;
208 }
209 205
210 if (ioremap_page_range(vaddr, vaddr + size, phys_addr, prot)) { 206 if (ioremap_page_range(vaddr, vaddr + size, phys_addr, prot))
211 free_memtype(phys_addr, phys_addr + size); 207 goto err_free_area;
212 free_vm_area(area);
213 return NULL;
214 }
215 208
216 ret_addr = (void __iomem *) (vaddr + offset); 209 ret_addr = (void __iomem *) (vaddr + offset);
217 mmiotrace_ioremap(unaligned_phys_addr, unaligned_size, ret_addr); 210 mmiotrace_ioremap(unaligned_phys_addr, unaligned_size, ret_addr);
218 211
219 return ret_addr; 212 return ret_addr;
213err_free_area:
214 free_vm_area(area);
215err_free_memtype:
216 free_memtype(phys_addr, phys_addr + size);
217 return NULL;
220} 218}
221 219
222/** 220/**
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index 3439616d69f1..dfbf70e65860 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -178,6 +178,7 @@ static __read_mostly unsigned int cpuid_leaf1_ecx_mask = ~0;
178static void xen_cpuid(unsigned int *ax, unsigned int *bx, 178static void xen_cpuid(unsigned int *ax, unsigned int *bx,
179 unsigned int *cx, unsigned int *dx) 179 unsigned int *cx, unsigned int *dx)
180{ 180{
181 unsigned maskebx = ~0;
181 unsigned maskecx = ~0; 182 unsigned maskecx = ~0;
182 unsigned maskedx = ~0; 183 unsigned maskedx = ~0;
183 184
@@ -185,9 +186,16 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx,
185 * Mask out inconvenient features, to try and disable as many 186 * Mask out inconvenient features, to try and disable as many
186 * unsupported kernel subsystems as possible. 187 * unsupported kernel subsystems as possible.
187 */ 188 */
188 if (*ax == 1) { 189 switch (*ax) {
190 case 1:
189 maskecx = cpuid_leaf1_ecx_mask; 191 maskecx = cpuid_leaf1_ecx_mask;
190 maskedx = cpuid_leaf1_edx_mask; 192 maskedx = cpuid_leaf1_edx_mask;
193 break;
194
195 case 0xb:
196 /* Suppress extended topology stuff */
197 maskebx = 0;
198 break;
191 } 199 }
192 200
193 asm(XEN_EMULATE_PREFIX "cpuid" 201 asm(XEN_EMULATE_PREFIX "cpuid"
@@ -197,6 +205,7 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx,
197 "=d" (*dx) 205 "=d" (*dx)
198 : "0" (*ax), "2" (*cx)); 206 : "0" (*ax), "2" (*cx));
199 207
208 *bx &= maskebx;
200 *cx &= maskecx; 209 *cx &= maskecx;
201 *dx &= maskedx; 210 *dx &= maskedx;
202} 211}
@@ -1075,6 +1084,8 @@ asmlinkage void __init xen_start_kernel(void)
1075 * Set up some pagetable state before starting to set any ptes. 1084 * Set up some pagetable state before starting to set any ptes.
1076 */ 1085 */
1077 1086
1087 xen_init_mmu_ops();
1088
1078 /* Prevent unwanted bits from being set in PTEs. */ 1089 /* Prevent unwanted bits from being set in PTEs. */
1079 __supported_pte_mask &= ~_PAGE_GLOBAL; 1090 __supported_pte_mask &= ~_PAGE_GLOBAL;
1080 if (!xen_initial_domain()) 1091 if (!xen_initial_domain())
@@ -1099,7 +1110,6 @@ asmlinkage void __init xen_start_kernel(void)
1099 */ 1110 */
1100 xen_setup_stackprotector(); 1111 xen_setup_stackprotector();
1101 1112
1102 xen_init_mmu_ops();
1103 xen_init_irq_ops(); 1113 xen_init_irq_ops();
1104 xen_init_cpuid_mask(); 1114 xen_init_cpuid_mask();
1105 1115
diff --git a/block/blk-core.c b/block/blk-core.c
index ac0fa10f8fa5..71da5111120c 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1161,7 +1161,7 @@ static int __make_request(struct request_queue *q, struct bio *bio)
1161 const unsigned int ff = bio->bi_rw & REQ_FAILFAST_MASK; 1161 const unsigned int ff = bio->bi_rw & REQ_FAILFAST_MASK;
1162 int rw_flags; 1162 int rw_flags;
1163 1163
1164 if (bio_rw_flagged(bio, BIO_RW_BARRIER) && bio_has_data(bio) && 1164 if (bio_rw_flagged(bio, BIO_RW_BARRIER) &&
1165 (q->next_ordered == QUEUE_ORDERED_NONE)) { 1165 (q->next_ordered == QUEUE_ORDERED_NONE)) {
1166 bio_endio(bio, -EOPNOTSUPP); 1166 bio_endio(bio, -EOPNOTSUPP);
1167 return 0; 1167 return 0;
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index 069a61017c02..aa1e9535e358 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -196,6 +196,7 @@ enum cfqq_state_flags {
196 CFQ_CFQQ_FLAG_slice_new, /* no requests dispatched in slice */ 196 CFQ_CFQQ_FLAG_slice_new, /* no requests dispatched in slice */
197 CFQ_CFQQ_FLAG_sync, /* synchronous queue */ 197 CFQ_CFQQ_FLAG_sync, /* synchronous queue */
198 CFQ_CFQQ_FLAG_coop, /* has done a coop jump of the queue */ 198 CFQ_CFQQ_FLAG_coop, /* has done a coop jump of the queue */
199 CFQ_CFQQ_FLAG_coop_preempt, /* coop preempt */
199}; 200};
200 201
201#define CFQ_CFQQ_FNS(name) \ 202#define CFQ_CFQQ_FNS(name) \
@@ -222,6 +223,7 @@ CFQ_CFQQ_FNS(prio_changed);
222CFQ_CFQQ_FNS(slice_new); 223CFQ_CFQQ_FNS(slice_new);
223CFQ_CFQQ_FNS(sync); 224CFQ_CFQQ_FNS(sync);
224CFQ_CFQQ_FNS(coop); 225CFQ_CFQQ_FNS(coop);
226CFQ_CFQQ_FNS(coop_preempt);
225#undef CFQ_CFQQ_FNS 227#undef CFQ_CFQQ_FNS
226 228
227#define cfq_log_cfqq(cfqd, cfqq, fmt, args...) \ 229#define cfq_log_cfqq(cfqd, cfqq, fmt, args...) \
@@ -945,10 +947,13 @@ static struct cfq_queue *cfq_set_active_queue(struct cfq_data *cfqd,
945{ 947{
946 if (!cfqq) { 948 if (!cfqq) {
947 cfqq = cfq_get_next_queue(cfqd); 949 cfqq = cfq_get_next_queue(cfqd);
948 if (cfqq) 950 if (cfqq && !cfq_cfqq_coop_preempt(cfqq))
949 cfq_clear_cfqq_coop(cfqq); 951 cfq_clear_cfqq_coop(cfqq);
950 } 952 }
951 953
954 if (cfqq)
955 cfq_clear_cfqq_coop_preempt(cfqq);
956
952 __cfq_set_active_queue(cfqd, cfqq); 957 __cfq_set_active_queue(cfqd, cfqq);
953 return cfqq; 958 return cfqq;
954} 959}
@@ -2051,7 +2056,7 @@ cfq_should_preempt(struct cfq_data *cfqd, struct cfq_queue *new_cfqq,
2051 * it's a metadata request and the current queue is doing regular IO. 2056 * it's a metadata request and the current queue is doing regular IO.
2052 */ 2057 */
2053 if (rq_is_meta(rq) && !cfqq->meta_pending) 2058 if (rq_is_meta(rq) && !cfqq->meta_pending)
2054 return false; 2059 return true;
2055 2060
2056 /* 2061 /*
2057 * Allow an RT request to pre-empt an ongoing non-RT cfqq timeslice. 2062 * Allow an RT request to pre-empt an ongoing non-RT cfqq timeslice.
@@ -2066,8 +2071,16 @@ cfq_should_preempt(struct cfq_data *cfqd, struct cfq_queue *new_cfqq,
2066 * if this request is as-good as one we would expect from the 2071 * if this request is as-good as one we would expect from the
2067 * current cfqq, let it preempt 2072 * current cfqq, let it preempt
2068 */ 2073 */
2069 if (cfq_rq_close(cfqd, rq)) 2074 if (cfq_rq_close(cfqd, rq) && (!cfq_cfqq_coop(new_cfqq) ||
2075 cfqd->busy_queues == 1)) {
2076 /*
2077 * Mark new queue coop_preempt, so its coop flag will not be
2078 * cleared when new queue gets scheduled at the very first time
2079 */
2080 cfq_mark_cfqq_coop_preempt(new_cfqq);
2081 cfq_mark_cfqq_coop(new_cfqq);
2070 return true; 2082 return true;
2083 }
2071 2084
2072 return false; 2085 return false;
2073} 2086}
diff --git a/crypto/async_tx/Kconfig b/crypto/async_tx/Kconfig
index e5aeb2b79e6f..e28e276ac611 100644
--- a/crypto/async_tx/Kconfig
+++ b/crypto/async_tx/Kconfig
@@ -23,3 +23,8 @@ config ASYNC_RAID6_RECOV
23 select ASYNC_CORE 23 select ASYNC_CORE
24 select ASYNC_PQ 24 select ASYNC_PQ
25 25
26config ASYNC_TX_DISABLE_PQ_VAL_DMA
27 bool
28
29config ASYNC_TX_DISABLE_XOR_VAL_DMA
30 bool
diff --git a/crypto/async_tx/async_pq.c b/crypto/async_tx/async_pq.c
index b88db6d1dc65..ec87f53d5059 100644
--- a/crypto/async_tx/async_pq.c
+++ b/crypto/async_tx/async_pq.c
@@ -26,14 +26,10 @@
26#include <linux/async_tx.h> 26#include <linux/async_tx.h>
27 27
28/** 28/**
29 * scribble - space to hold throwaway P buffer for synchronous gen_syndrome 29 * pq_scribble_page - space to hold throwaway P or Q buffer for
30 * synchronous gen_syndrome
30 */ 31 */
31static struct page *scribble; 32static struct page *pq_scribble_page;
32
33static bool is_raid6_zero_block(struct page *p)
34{
35 return p == (void *) raid6_empty_zero_page;
36}
37 33
38/* the struct page *blocks[] parameter passed to async_gen_syndrome() 34/* the struct page *blocks[] parameter passed to async_gen_syndrome()
39 * and async_syndrome_val() contains the 'P' destination address at 35 * and async_syndrome_val() contains the 'P' destination address at
@@ -83,7 +79,7 @@ do_async_gen_syndrome(struct dma_chan *chan, struct page **blocks,
83 * sources and update the coefficients accordingly 79 * sources and update the coefficients accordingly
84 */ 80 */
85 for (i = 0, idx = 0; i < src_cnt; i++) { 81 for (i = 0, idx = 0; i < src_cnt; i++) {
86 if (is_raid6_zero_block(blocks[i])) 82 if (blocks[i] == NULL)
87 continue; 83 continue;
88 dma_src[idx] = dma_map_page(dma->dev, blocks[i], offset, len, 84 dma_src[idx] = dma_map_page(dma->dev, blocks[i], offset, len,
89 DMA_TO_DEVICE); 85 DMA_TO_DEVICE);
@@ -160,9 +156,9 @@ do_sync_gen_syndrome(struct page **blocks, unsigned int offset, int disks,
160 srcs = (void **) blocks; 156 srcs = (void **) blocks;
161 157
162 for (i = 0; i < disks; i++) { 158 for (i = 0; i < disks; i++) {
163 if (is_raid6_zero_block(blocks[i])) { 159 if (blocks[i] == NULL) {
164 BUG_ON(i > disks - 3); /* P or Q can't be zero */ 160 BUG_ON(i > disks - 3); /* P or Q can't be zero */
165 srcs[i] = blocks[i]; 161 srcs[i] = (void*)raid6_empty_zero_page;
166 } else 162 } else
167 srcs[i] = page_address(blocks[i]) + offset; 163 srcs[i] = page_address(blocks[i]) + offset;
168 } 164 }
@@ -186,10 +182,14 @@ do_sync_gen_syndrome(struct page **blocks, unsigned int offset, int disks,
186 * blocks[disks-1] to NULL. When P or Q is omitted 'len' must be <= 182 * blocks[disks-1] to NULL. When P or Q is omitted 'len' must be <=
187 * PAGE_SIZE as a temporary buffer of this size is used in the 183 * PAGE_SIZE as a temporary buffer of this size is used in the
188 * synchronous path. 'disks' always accounts for both destination 184 * synchronous path. 'disks' always accounts for both destination
189 * buffers. 185 * buffers. If any source buffers (blocks[i] where i < disks - 2) are
186 * set to NULL those buffers will be replaced with the raid6_zero_page
187 * in the synchronous path and omitted in the hardware-asynchronous
188 * path.
190 * 189 *
191 * 'blocks' note: if submit->scribble is NULL then the contents of 190 * 'blocks' note: if submit->scribble is NULL then the contents of
192 * 'blocks' may be overridden 191 * 'blocks' may be overwritten to perform address conversions
192 * (dma_map_page() or page_address()).
193 */ 193 */
194struct dma_async_tx_descriptor * 194struct dma_async_tx_descriptor *
195async_gen_syndrome(struct page **blocks, unsigned int offset, int disks, 195async_gen_syndrome(struct page **blocks, unsigned int offset, int disks,
@@ -227,11 +227,11 @@ async_gen_syndrome(struct page **blocks, unsigned int offset, int disks,
227 async_tx_quiesce(&submit->depend_tx); 227 async_tx_quiesce(&submit->depend_tx);
228 228
229 if (!P(blocks, disks)) { 229 if (!P(blocks, disks)) {
230 P(blocks, disks) = scribble; 230 P(blocks, disks) = pq_scribble_page;
231 BUG_ON(len + offset > PAGE_SIZE); 231 BUG_ON(len + offset > PAGE_SIZE);
232 } 232 }
233 if (!Q(blocks, disks)) { 233 if (!Q(blocks, disks)) {
234 Q(blocks, disks) = scribble; 234 Q(blocks, disks) = pq_scribble_page;
235 BUG_ON(len + offset > PAGE_SIZE); 235 BUG_ON(len + offset > PAGE_SIZE);
236 } 236 }
237 do_sync_gen_syndrome(blocks, offset, disks, len, submit); 237 do_sync_gen_syndrome(blocks, offset, disks, len, submit);
@@ -240,6 +240,16 @@ async_gen_syndrome(struct page **blocks, unsigned int offset, int disks,
240} 240}
241EXPORT_SYMBOL_GPL(async_gen_syndrome); 241EXPORT_SYMBOL_GPL(async_gen_syndrome);
242 242
243static inline struct dma_chan *
244pq_val_chan(struct async_submit_ctl *submit, struct page **blocks, int disks, size_t len)
245{
246 #ifdef CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA
247 return NULL;
248 #endif
249 return async_tx_find_channel(submit, DMA_PQ_VAL, NULL, 0, blocks,
250 disks, len);
251}
252
243/** 253/**
244 * async_syndrome_val - asynchronously validate a raid6 syndrome 254 * async_syndrome_val - asynchronously validate a raid6 syndrome
245 * @blocks: source blocks from idx 0..disks-3, P @ disks-2 and Q @ disks-1 255 * @blocks: source blocks from idx 0..disks-3, P @ disks-2 and Q @ disks-1
@@ -260,13 +270,13 @@ async_syndrome_val(struct page **blocks, unsigned int offset, int disks,
260 size_t len, enum sum_check_flags *pqres, struct page *spare, 270 size_t len, enum sum_check_flags *pqres, struct page *spare,
261 struct async_submit_ctl *submit) 271 struct async_submit_ctl *submit)
262{ 272{
263 struct dma_chan *chan = async_tx_find_channel(submit, DMA_PQ_VAL, 273 struct dma_chan *chan = pq_val_chan(submit, blocks, disks, len);
264 NULL, 0, blocks, disks,
265 len);
266 struct dma_device *device = chan ? chan->device : NULL; 274 struct dma_device *device = chan ? chan->device : NULL;
267 struct dma_async_tx_descriptor *tx; 275 struct dma_async_tx_descriptor *tx;
276 unsigned char coefs[disks-2];
268 enum dma_ctrl_flags dma_flags = submit->cb_fn ? DMA_PREP_INTERRUPT : 0; 277 enum dma_ctrl_flags dma_flags = submit->cb_fn ? DMA_PREP_INTERRUPT : 0;
269 dma_addr_t *dma_src = NULL; 278 dma_addr_t *dma_src = NULL;
279 int src_cnt = 0;
270 280
271 BUG_ON(disks < 4); 281 BUG_ON(disks < 4);
272 282
@@ -285,22 +295,32 @@ async_syndrome_val(struct page **blocks, unsigned int offset, int disks,
285 __func__, disks, len); 295 __func__, disks, len);
286 if (!P(blocks, disks)) 296 if (!P(blocks, disks))
287 dma_flags |= DMA_PREP_PQ_DISABLE_P; 297 dma_flags |= DMA_PREP_PQ_DISABLE_P;
298 else
299 pq[0] = dma_map_page(dev, P(blocks, disks),
300 offset, len,
301 DMA_TO_DEVICE);
288 if (!Q(blocks, disks)) 302 if (!Q(blocks, disks))
289 dma_flags |= DMA_PREP_PQ_DISABLE_Q; 303 dma_flags |= DMA_PREP_PQ_DISABLE_Q;
304 else
305 pq[1] = dma_map_page(dev, Q(blocks, disks),
306 offset, len,
307 DMA_TO_DEVICE);
308
290 if (submit->flags & ASYNC_TX_FENCE) 309 if (submit->flags & ASYNC_TX_FENCE)
291 dma_flags |= DMA_PREP_FENCE; 310 dma_flags |= DMA_PREP_FENCE;
292 for (i = 0; i < disks; i++) 311 for (i = 0; i < disks-2; i++)
293 if (likely(blocks[i])) { 312 if (likely(blocks[i])) {
294 BUG_ON(is_raid6_zero_block(blocks[i])); 313 dma_src[src_cnt] = dma_map_page(dev, blocks[i],
295 dma_src[i] = dma_map_page(dev, blocks[i], 314 offset, len,
296 offset, len, 315 DMA_TO_DEVICE);
297 DMA_TO_DEVICE); 316 coefs[src_cnt] = raid6_gfexp[i];
317 src_cnt++;
298 } 318 }
299 319
300 for (;;) { 320 for (;;) {
301 tx = device->device_prep_dma_pq_val(chan, pq, dma_src, 321 tx = device->device_prep_dma_pq_val(chan, pq, dma_src,
302 disks - 2, 322 src_cnt,
303 raid6_gfexp, 323 coefs,
304 len, pqres, 324 len, pqres,
305 dma_flags); 325 dma_flags);
306 if (likely(tx)) 326 if (likely(tx))
@@ -373,9 +393,9 @@ EXPORT_SYMBOL_GPL(async_syndrome_val);
373 393
374static int __init async_pq_init(void) 394static int __init async_pq_init(void)
375{ 395{
376 scribble = alloc_page(GFP_KERNEL); 396 pq_scribble_page = alloc_page(GFP_KERNEL);
377 397
378 if (scribble) 398 if (pq_scribble_page)
379 return 0; 399 return 0;
380 400
381 pr_err("%s: failed to allocate required spare page\n", __func__); 401 pr_err("%s: failed to allocate required spare page\n", __func__);
@@ -385,7 +405,7 @@ static int __init async_pq_init(void)
385 405
386static void __exit async_pq_exit(void) 406static void __exit async_pq_exit(void)
387{ 407{
388 put_page(scribble); 408 put_page(pq_scribble_page);
389} 409}
390 410
391module_init(async_pq_init); 411module_init(async_pq_init);
diff --git a/crypto/async_tx/async_raid6_recov.c b/crypto/async_tx/async_raid6_recov.c
index 6d73dde4786d..943f2abac9b4 100644
--- a/crypto/async_tx/async_raid6_recov.c
+++ b/crypto/async_tx/async_raid6_recov.c
@@ -131,8 +131,8 @@ async_mult(struct page *dest, struct page *src, u8 coef, size_t len,
131} 131}
132 132
133static struct dma_async_tx_descriptor * 133static struct dma_async_tx_descriptor *
134__2data_recov_4(size_t bytes, int faila, int failb, struct page **blocks, 134__2data_recov_4(int disks, size_t bytes, int faila, int failb,
135 struct async_submit_ctl *submit) 135 struct page **blocks, struct async_submit_ctl *submit)
136{ 136{
137 struct dma_async_tx_descriptor *tx = NULL; 137 struct dma_async_tx_descriptor *tx = NULL;
138 struct page *p, *q, *a, *b; 138 struct page *p, *q, *a, *b;
@@ -143,8 +143,8 @@ __2data_recov_4(size_t bytes, int faila, int failb, struct page **blocks,
143 void *cb_param = submit->cb_param; 143 void *cb_param = submit->cb_param;
144 void *scribble = submit->scribble; 144 void *scribble = submit->scribble;
145 145
146 p = blocks[4-2]; 146 p = blocks[disks-2];
147 q = blocks[4-1]; 147 q = blocks[disks-1];
148 148
149 a = blocks[faila]; 149 a = blocks[faila];
150 b = blocks[failb]; 150 b = blocks[failb];
@@ -170,8 +170,8 @@ __2data_recov_4(size_t bytes, int faila, int failb, struct page **blocks,
170} 170}
171 171
172static struct dma_async_tx_descriptor * 172static struct dma_async_tx_descriptor *
173__2data_recov_5(size_t bytes, int faila, int failb, struct page **blocks, 173__2data_recov_5(int disks, size_t bytes, int faila, int failb,
174 struct async_submit_ctl *submit) 174 struct page **blocks, struct async_submit_ctl *submit)
175{ 175{
176 struct dma_async_tx_descriptor *tx = NULL; 176 struct dma_async_tx_descriptor *tx = NULL;
177 struct page *p, *q, *g, *dp, *dq; 177 struct page *p, *q, *g, *dp, *dq;
@@ -181,21 +181,22 @@ __2data_recov_5(size_t bytes, int faila, int failb, struct page **blocks,
181 dma_async_tx_callback cb_fn = submit->cb_fn; 181 dma_async_tx_callback cb_fn = submit->cb_fn;
182 void *cb_param = submit->cb_param; 182 void *cb_param = submit->cb_param;
183 void *scribble = submit->scribble; 183 void *scribble = submit->scribble;
184 int uninitialized_var(good); 184 int good_srcs, good, i;
185 int i;
186 185
187 for (i = 0; i < 3; i++) { 186 good_srcs = 0;
187 good = -1;
188 for (i = 0; i < disks-2; i++) {
189 if (blocks[i] == NULL)
190 continue;
188 if (i == faila || i == failb) 191 if (i == faila || i == failb)
189 continue; 192 continue;
190 else { 193 good = i;
191 good = i; 194 good_srcs++;
192 break;
193 }
194 } 195 }
195 BUG_ON(i >= 3); 196 BUG_ON(good_srcs > 1);
196 197
197 p = blocks[5-2]; 198 p = blocks[disks-2];
198 q = blocks[5-1]; 199 q = blocks[disks-1];
199 g = blocks[good]; 200 g = blocks[good];
200 201
201 /* Compute syndrome with zero for the missing data pages 202 /* Compute syndrome with zero for the missing data pages
@@ -263,10 +264,10 @@ __2data_recov_n(int disks, size_t bytes, int faila, int failb,
263 * delta p and delta q 264 * delta p and delta q
264 */ 265 */
265 dp = blocks[faila]; 266 dp = blocks[faila];
266 blocks[faila] = (void *)raid6_empty_zero_page; 267 blocks[faila] = NULL;
267 blocks[disks-2] = dp; 268 blocks[disks-2] = dp;
268 dq = blocks[failb]; 269 dq = blocks[failb];
269 blocks[failb] = (void *)raid6_empty_zero_page; 270 blocks[failb] = NULL;
270 blocks[disks-1] = dq; 271 blocks[disks-1] = dq;
271 272
272 init_async_submit(submit, ASYNC_TX_FENCE, tx, NULL, NULL, scribble); 273 init_async_submit(submit, ASYNC_TX_FENCE, tx, NULL, NULL, scribble);
@@ -323,6 +324,8 @@ struct dma_async_tx_descriptor *
323async_raid6_2data_recov(int disks, size_t bytes, int faila, int failb, 324async_raid6_2data_recov(int disks, size_t bytes, int faila, int failb,
324 struct page **blocks, struct async_submit_ctl *submit) 325 struct page **blocks, struct async_submit_ctl *submit)
325{ 326{
327 int non_zero_srcs, i;
328
326 BUG_ON(faila == failb); 329 BUG_ON(faila == failb);
327 if (failb < faila) 330 if (failb < faila)
328 swap(faila, failb); 331 swap(faila, failb);
@@ -334,11 +337,13 @@ async_raid6_2data_recov(int disks, size_t bytes, int faila, int failb,
334 */ 337 */
335 if (!submit->scribble) { 338 if (!submit->scribble) {
336 void **ptrs = (void **) blocks; 339 void **ptrs = (void **) blocks;
337 int i;
338 340
339 async_tx_quiesce(&submit->depend_tx); 341 async_tx_quiesce(&submit->depend_tx);
340 for (i = 0; i < disks; i++) 342 for (i = 0; i < disks; i++)
341 ptrs[i] = page_address(blocks[i]); 343 if (blocks[i] == NULL)
344 ptrs[i] = (void *) raid6_empty_zero_page;
345 else
346 ptrs[i] = page_address(blocks[i]);
342 347
343 raid6_2data_recov(disks, bytes, faila, failb, ptrs); 348 raid6_2data_recov(disks, bytes, faila, failb, ptrs);
344 349
@@ -347,19 +352,30 @@ async_raid6_2data_recov(int disks, size_t bytes, int faila, int failb,
347 return NULL; 352 return NULL;
348 } 353 }
349 354
350 switch (disks) { 355 non_zero_srcs = 0;
351 case 4: 356 for (i = 0; i < disks-2 && non_zero_srcs < 4; i++)
357 if (blocks[i])
358 non_zero_srcs++;
359 switch (non_zero_srcs) {
360 case 0:
361 case 1:
362 /* There must be at least 2 sources - the failed devices. */
363 BUG();
364
365 case 2:
352 /* dma devices do not uniformly understand a zero source pq 366 /* dma devices do not uniformly understand a zero source pq
353 * operation (in contrast to the synchronous case), so 367 * operation (in contrast to the synchronous case), so
354 * explicitly handle the 4 disk special case 368 * explicitly handle the special case of a 4 disk array with
369 * both data disks missing.
355 */ 370 */
356 return __2data_recov_4(bytes, faila, failb, blocks, submit); 371 return __2data_recov_4(disks, bytes, faila, failb, blocks, submit);
357 case 5: 372 case 3:
358 /* dma devices do not uniformly understand a single 373 /* dma devices do not uniformly understand a single
359 * source pq operation (in contrast to the synchronous 374 * source pq operation (in contrast to the synchronous
360 * case), so explicitly handle the 5 disk special case 375 * case), so explicitly handle the special case of a 5 disk
376 * array with 2 of 3 data disks missing.
361 */ 377 */
362 return __2data_recov_5(bytes, faila, failb, blocks, submit); 378 return __2data_recov_5(disks, bytes, faila, failb, blocks, submit);
363 default: 379 default:
364 return __2data_recov_n(disks, bytes, faila, failb, blocks, submit); 380 return __2data_recov_n(disks, bytes, faila, failb, blocks, submit);
365 } 381 }
@@ -385,6 +401,7 @@ async_raid6_datap_recov(int disks, size_t bytes, int faila,
385 dma_async_tx_callback cb_fn = submit->cb_fn; 401 dma_async_tx_callback cb_fn = submit->cb_fn;
386 void *cb_param = submit->cb_param; 402 void *cb_param = submit->cb_param;
387 void *scribble = submit->scribble; 403 void *scribble = submit->scribble;
404 int good_srcs, good, i;
388 struct page *srcs[2]; 405 struct page *srcs[2];
389 406
390 pr_debug("%s: disks: %d len: %zu\n", __func__, disks, bytes); 407 pr_debug("%s: disks: %d len: %zu\n", __func__, disks, bytes);
@@ -394,11 +411,13 @@ async_raid6_datap_recov(int disks, size_t bytes, int faila,
394 */ 411 */
395 if (!scribble) { 412 if (!scribble) {
396 void **ptrs = (void **) blocks; 413 void **ptrs = (void **) blocks;
397 int i;
398 414
399 async_tx_quiesce(&submit->depend_tx); 415 async_tx_quiesce(&submit->depend_tx);
400 for (i = 0; i < disks; i++) 416 for (i = 0; i < disks; i++)
401 ptrs[i] = page_address(blocks[i]); 417 if (blocks[i] == NULL)
418 ptrs[i] = (void*)raid6_empty_zero_page;
419 else
420 ptrs[i] = page_address(blocks[i]);
402 421
403 raid6_datap_recov(disks, bytes, faila, ptrs); 422 raid6_datap_recov(disks, bytes, faila, ptrs);
404 423
@@ -407,6 +426,20 @@ async_raid6_datap_recov(int disks, size_t bytes, int faila,
407 return NULL; 426 return NULL;
408 } 427 }
409 428
429 good_srcs = 0;
430 good = -1;
431 for (i = 0; i < disks-2; i++) {
432 if (i == faila)
433 continue;
434 if (blocks[i]) {
435 good = i;
436 good_srcs++;
437 if (good_srcs > 1)
438 break;
439 }
440 }
441 BUG_ON(good_srcs == 0);
442
410 p = blocks[disks-2]; 443 p = blocks[disks-2];
411 q = blocks[disks-1]; 444 q = blocks[disks-1];
412 445
@@ -414,14 +447,13 @@ async_raid6_datap_recov(int disks, size_t bytes, int faila,
414 * Use the dead data page as temporary storage for delta q 447 * Use the dead data page as temporary storage for delta q
415 */ 448 */
416 dq = blocks[faila]; 449 dq = blocks[faila];
417 blocks[faila] = (void *)raid6_empty_zero_page; 450 blocks[faila] = NULL;
418 blocks[disks-1] = dq; 451 blocks[disks-1] = dq;
419 452
420 /* in the 4 disk case we only need to perform a single source 453 /* in the 4-disk case we only need to perform a single source
421 * multiplication 454 * multiplication with the one good data block.
422 */ 455 */
423 if (disks == 4) { 456 if (good_srcs == 1) {
424 int good = faila == 0 ? 1 : 0;
425 struct page *g = blocks[good]; 457 struct page *g = blocks[good];
426 458
427 init_async_submit(submit, ASYNC_TX_FENCE, tx, NULL, NULL, 459 init_async_submit(submit, ASYNC_TX_FENCE, tx, NULL, NULL,
diff --git a/crypto/async_tx/async_xor.c b/crypto/async_tx/async_xor.c
index b459a9034aac..079ae8ca590b 100644
--- a/crypto/async_tx/async_xor.c
+++ b/crypto/async_tx/async_xor.c
@@ -44,20 +44,23 @@ do_async_xor(struct dma_chan *chan, struct page *dest, struct page **src_list,
44 void *cb_param_orig = submit->cb_param; 44 void *cb_param_orig = submit->cb_param;
45 enum async_tx_flags flags_orig = submit->flags; 45 enum async_tx_flags flags_orig = submit->flags;
46 enum dma_ctrl_flags dma_flags; 46 enum dma_ctrl_flags dma_flags;
47 int xor_src_cnt; 47 int xor_src_cnt = 0;
48 dma_addr_t dma_dest; 48 dma_addr_t dma_dest;
49 49
50 /* map the dest bidrectional in case it is re-used as a source */ 50 /* map the dest bidrectional in case it is re-used as a source */
51 dma_dest = dma_map_page(dma->dev, dest, offset, len, DMA_BIDIRECTIONAL); 51 dma_dest = dma_map_page(dma->dev, dest, offset, len, DMA_BIDIRECTIONAL);
52 for (i = 0; i < src_cnt; i++) { 52 for (i = 0; i < src_cnt; i++) {
53 /* only map the dest once */ 53 /* only map the dest once */
54 if (!src_list[i])
55 continue;
54 if (unlikely(src_list[i] == dest)) { 56 if (unlikely(src_list[i] == dest)) {
55 dma_src[i] = dma_dest; 57 dma_src[xor_src_cnt++] = dma_dest;
56 continue; 58 continue;
57 } 59 }
58 dma_src[i] = dma_map_page(dma->dev, src_list[i], offset, 60 dma_src[xor_src_cnt++] = dma_map_page(dma->dev, src_list[i], offset,
59 len, DMA_TO_DEVICE); 61 len, DMA_TO_DEVICE);
60 } 62 }
63 src_cnt = xor_src_cnt;
61 64
62 while (src_cnt) { 65 while (src_cnt) {
63 submit->flags = flags_orig; 66 submit->flags = flags_orig;
@@ -123,7 +126,7 @@ do_sync_xor(struct page *dest, struct page **src_list, unsigned int offset,
123 int src_cnt, size_t len, struct async_submit_ctl *submit) 126 int src_cnt, size_t len, struct async_submit_ctl *submit)
124{ 127{
125 int i; 128 int i;
126 int xor_src_cnt; 129 int xor_src_cnt = 0;
127 int src_off = 0; 130 int src_off = 0;
128 void *dest_buf; 131 void *dest_buf;
129 void **srcs; 132 void **srcs;
@@ -135,8 +138,9 @@ do_sync_xor(struct page *dest, struct page **src_list, unsigned int offset,
135 138
136 /* convert to buffer pointers */ 139 /* convert to buffer pointers */
137 for (i = 0; i < src_cnt; i++) 140 for (i = 0; i < src_cnt; i++)
138 srcs[i] = page_address(src_list[i]) + offset; 141 if (src_list[i])
139 142 srcs[xor_src_cnt++] = page_address(src_list[i]) + offset;
143 src_cnt = xor_src_cnt;
140 /* set destination address */ 144 /* set destination address */
141 dest_buf = page_address(dest) + offset; 145 dest_buf = page_address(dest) + offset;
142 146
@@ -230,6 +234,17 @@ static int page_is_zero(struct page *p, unsigned int offset, size_t len)
230 memcmp(a, a + 4, len - 4) == 0); 234 memcmp(a, a + 4, len - 4) == 0);
231} 235}
232 236
237static inline struct dma_chan *
238xor_val_chan(struct async_submit_ctl *submit, struct page *dest,
239 struct page **src_list, int src_cnt, size_t len)
240{
241 #ifdef CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA
242 return NULL;
243 #endif
244 return async_tx_find_channel(submit, DMA_XOR_VAL, &dest, 1, src_list,
245 src_cnt, len);
246}
247
233/** 248/**
234 * async_xor_val - attempt a xor parity check with a dma engine. 249 * async_xor_val - attempt a xor parity check with a dma engine.
235 * @dest: destination page used if the xor is performed synchronously 250 * @dest: destination page used if the xor is performed synchronously
@@ -251,9 +266,7 @@ async_xor_val(struct page *dest, struct page **src_list, unsigned int offset,
251 int src_cnt, size_t len, enum sum_check_flags *result, 266 int src_cnt, size_t len, enum sum_check_flags *result,
252 struct async_submit_ctl *submit) 267 struct async_submit_ctl *submit)
253{ 268{
254 struct dma_chan *chan = async_tx_find_channel(submit, DMA_XOR_VAL, 269 struct dma_chan *chan = xor_val_chan(submit, dest, src_list, src_cnt, len);
255 &dest, 1, src_list,
256 src_cnt, len);
257 struct dma_device *device = chan ? chan->device : NULL; 270 struct dma_device *device = chan ? chan->device : NULL;
258 struct dma_async_tx_descriptor *tx = NULL; 271 struct dma_async_tx_descriptor *tx = NULL;
259 dma_addr_t *dma_src = NULL; 272 dma_addr_t *dma_src = NULL;
diff --git a/crypto/gcm.c b/crypto/gcm.c
index 5fc3292483ef..c6547130624c 100644
--- a/crypto/gcm.c
+++ b/crypto/gcm.c
@@ -40,7 +40,7 @@ struct crypto_rfc4106_ctx {
40struct crypto_gcm_ghash_ctx { 40struct crypto_gcm_ghash_ctx {
41 unsigned int cryptlen; 41 unsigned int cryptlen;
42 struct scatterlist *src; 42 struct scatterlist *src;
43 crypto_completion_t complete; 43 void (*complete)(struct aead_request *req, int err);
44}; 44};
45 45
46struct crypto_gcm_req_priv_ctx { 46struct crypto_gcm_req_priv_ctx {
@@ -267,23 +267,26 @@ static int gcm_hash_final(struct aead_request *req,
267 return crypto_ahash_final(ahreq); 267 return crypto_ahash_final(ahreq);
268} 268}
269 269
270static void gcm_hash_final_done(struct crypto_async_request *areq, 270static void __gcm_hash_final_done(struct aead_request *req, int err)
271 int err)
272{ 271{
273 struct aead_request *req = areq->data;
274 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req); 272 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req);
275 struct crypto_gcm_ghash_ctx *gctx = &pctx->ghash_ctx; 273 struct crypto_gcm_ghash_ctx *gctx = &pctx->ghash_ctx;
276 274
277 if (!err) 275 if (!err)
278 crypto_xor(pctx->auth_tag, pctx->iauth_tag, 16); 276 crypto_xor(pctx->auth_tag, pctx->iauth_tag, 16);
279 277
280 gctx->complete(areq, err); 278 gctx->complete(req, err);
281} 279}
282 280
283static void gcm_hash_len_done(struct crypto_async_request *areq, 281static void gcm_hash_final_done(struct crypto_async_request *areq, int err)
284 int err)
285{ 282{
286 struct aead_request *req = areq->data; 283 struct aead_request *req = areq->data;
284
285 __gcm_hash_final_done(req, err);
286}
287
288static void __gcm_hash_len_done(struct aead_request *req, int err)
289{
287 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req); 290 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req);
288 291
289 if (!err) { 292 if (!err) {
@@ -292,13 +295,18 @@ static void gcm_hash_len_done(struct crypto_async_request *areq,
292 return; 295 return;
293 } 296 }
294 297
295 gcm_hash_final_done(areq, err); 298 __gcm_hash_final_done(req, err);
296} 299}
297 300
298static void gcm_hash_crypt_remain_done(struct crypto_async_request *areq, 301static void gcm_hash_len_done(struct crypto_async_request *areq, int err)
299 int err)
300{ 302{
301 struct aead_request *req = areq->data; 303 struct aead_request *req = areq->data;
304
305 __gcm_hash_len_done(req, err);
306}
307
308static void __gcm_hash_crypt_remain_done(struct aead_request *req, int err)
309{
302 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req); 310 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req);
303 311
304 if (!err) { 312 if (!err) {
@@ -307,13 +315,19 @@ static void gcm_hash_crypt_remain_done(struct crypto_async_request *areq,
307 return; 315 return;
308 } 316 }
309 317
310 gcm_hash_len_done(areq, err); 318 __gcm_hash_len_done(req, err);
311} 319}
312 320
313static void gcm_hash_crypt_done(struct crypto_async_request *areq, 321static void gcm_hash_crypt_remain_done(struct crypto_async_request *areq,
314 int err) 322 int err)
315{ 323{
316 struct aead_request *req = areq->data; 324 struct aead_request *req = areq->data;
325
326 __gcm_hash_crypt_remain_done(req, err);
327}
328
329static void __gcm_hash_crypt_done(struct aead_request *req, int err)
330{
317 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req); 331 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req);
318 struct crypto_gcm_ghash_ctx *gctx = &pctx->ghash_ctx; 332 struct crypto_gcm_ghash_ctx *gctx = &pctx->ghash_ctx;
319 unsigned int remain; 333 unsigned int remain;
@@ -327,13 +341,18 @@ static void gcm_hash_crypt_done(struct crypto_async_request *areq,
327 return; 341 return;
328 } 342 }
329 343
330 gcm_hash_crypt_remain_done(areq, err); 344 __gcm_hash_crypt_remain_done(req, err);
331} 345}
332 346
333static void gcm_hash_assoc_remain_done(struct crypto_async_request *areq, 347static void gcm_hash_crypt_done(struct crypto_async_request *areq, int err)
334 int err)
335{ 348{
336 struct aead_request *req = areq->data; 349 struct aead_request *req = areq->data;
350
351 __gcm_hash_crypt_done(req, err);
352}
353
354static void __gcm_hash_assoc_remain_done(struct aead_request *req, int err)
355{
337 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req); 356 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req);
338 struct crypto_gcm_ghash_ctx *gctx = &pctx->ghash_ctx; 357 struct crypto_gcm_ghash_ctx *gctx = &pctx->ghash_ctx;
339 crypto_completion_t complete; 358 crypto_completion_t complete;
@@ -350,15 +369,21 @@ static void gcm_hash_assoc_remain_done(struct crypto_async_request *areq,
350 } 369 }
351 370
352 if (remain) 371 if (remain)
353 gcm_hash_crypt_done(areq, err); 372 __gcm_hash_crypt_done(req, err);
354 else 373 else
355 gcm_hash_crypt_remain_done(areq, err); 374 __gcm_hash_crypt_remain_done(req, err);
356} 375}
357 376
358static void gcm_hash_assoc_done(struct crypto_async_request *areq, 377static void gcm_hash_assoc_remain_done(struct crypto_async_request *areq,
359 int err) 378 int err)
360{ 379{
361 struct aead_request *req = areq->data; 380 struct aead_request *req = areq->data;
381
382 __gcm_hash_assoc_remain_done(req, err);
383}
384
385static void __gcm_hash_assoc_done(struct aead_request *req, int err)
386{
362 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req); 387 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req);
363 unsigned int remain; 388 unsigned int remain;
364 389
@@ -371,13 +396,18 @@ static void gcm_hash_assoc_done(struct crypto_async_request *areq,
371 return; 396 return;
372 } 397 }
373 398
374 gcm_hash_assoc_remain_done(areq, err); 399 __gcm_hash_assoc_remain_done(req, err);
375} 400}
376 401
377static void gcm_hash_init_done(struct crypto_async_request *areq, 402static void gcm_hash_assoc_done(struct crypto_async_request *areq, int err)
378 int err)
379{ 403{
380 struct aead_request *req = areq->data; 404 struct aead_request *req = areq->data;
405
406 __gcm_hash_assoc_done(req, err);
407}
408
409static void __gcm_hash_init_done(struct aead_request *req, int err)
410{
381 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req); 411 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req);
382 crypto_completion_t complete; 412 crypto_completion_t complete;
383 unsigned int remain = 0; 413 unsigned int remain = 0;
@@ -393,9 +423,16 @@ static void gcm_hash_init_done(struct crypto_async_request *areq,
393 } 423 }
394 424
395 if (remain) 425 if (remain)
396 gcm_hash_assoc_done(areq, err); 426 __gcm_hash_assoc_done(req, err);
397 else 427 else
398 gcm_hash_assoc_remain_done(areq, err); 428 __gcm_hash_assoc_remain_done(req, err);
429}
430
431static void gcm_hash_init_done(struct crypto_async_request *areq, int err)
432{
433 struct aead_request *req = areq->data;
434
435 __gcm_hash_init_done(req, err);
399} 436}
400 437
401static int gcm_hash(struct aead_request *req, 438static int gcm_hash(struct aead_request *req,
@@ -457,10 +494,8 @@ static void gcm_enc_copy_hash(struct aead_request *req,
457 crypto_aead_authsize(aead), 1); 494 crypto_aead_authsize(aead), 1);
458} 495}
459 496
460static void gcm_enc_hash_done(struct crypto_async_request *areq, 497static void gcm_enc_hash_done(struct aead_request *req, int err)
461 int err)
462{ 498{
463 struct aead_request *req = areq->data;
464 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req); 499 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req);
465 500
466 if (!err) 501 if (!err)
@@ -469,8 +504,7 @@ static void gcm_enc_hash_done(struct crypto_async_request *areq,
469 aead_request_complete(req, err); 504 aead_request_complete(req, err);
470} 505}
471 506
472static void gcm_encrypt_done(struct crypto_async_request *areq, 507static void gcm_encrypt_done(struct crypto_async_request *areq, int err)
473 int err)
474{ 508{
475 struct aead_request *req = areq->data; 509 struct aead_request *req = areq->data;
476 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req); 510 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req);
@@ -479,9 +513,13 @@ static void gcm_encrypt_done(struct crypto_async_request *areq,
479 err = gcm_hash(req, pctx); 513 err = gcm_hash(req, pctx);
480 if (err == -EINPROGRESS || err == -EBUSY) 514 if (err == -EINPROGRESS || err == -EBUSY)
481 return; 515 return;
516 else if (!err) {
517 crypto_xor(pctx->auth_tag, pctx->iauth_tag, 16);
518 gcm_enc_copy_hash(req, pctx);
519 }
482 } 520 }
483 521
484 gcm_enc_hash_done(areq, err); 522 aead_request_complete(req, err);
485} 523}
486 524
487static int crypto_gcm_encrypt(struct aead_request *req) 525static int crypto_gcm_encrypt(struct aead_request *req)
@@ -538,9 +576,8 @@ static void gcm_decrypt_done(struct crypto_async_request *areq, int err)
538 aead_request_complete(req, err); 576 aead_request_complete(req, err);
539} 577}
540 578
541static void gcm_dec_hash_done(struct crypto_async_request *areq, int err) 579static void gcm_dec_hash_done(struct aead_request *req, int err)
542{ 580{
543 struct aead_request *req = areq->data;
544 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req); 581 struct crypto_gcm_req_priv_ctx *pctx = crypto_gcm_reqctx(req);
545 struct ablkcipher_request *abreq = &pctx->u.abreq; 582 struct ablkcipher_request *abreq = &pctx->u.abreq;
546 struct crypto_gcm_ghash_ctx *gctx = &pctx->ghash_ctx; 583 struct crypto_gcm_ghash_ctx *gctx = &pctx->ghash_ctx;
@@ -552,9 +589,11 @@ static void gcm_dec_hash_done(struct crypto_async_request *areq, int err)
552 err = crypto_ablkcipher_decrypt(abreq); 589 err = crypto_ablkcipher_decrypt(abreq);
553 if (err == -EINPROGRESS || err == -EBUSY) 590 if (err == -EINPROGRESS || err == -EBUSY)
554 return; 591 return;
592 else if (!err)
593 err = crypto_gcm_verify(req, pctx);
555 } 594 }
556 595
557 gcm_decrypt_done(areq, err); 596 aead_request_complete(req, err);
558} 597}
559 598
560static int crypto_gcm_decrypt(struct aead_request *req) 599static int crypto_gcm_decrypt(struct aead_request *req)
diff --git a/drivers/acpi/acpica/acconfig.h b/drivers/acpi/acpica/acconfig.h
index 8e679ef5b231..a4471e3d3853 100644
--- a/drivers/acpi/acpica/acconfig.h
+++ b/drivers/acpi/acpica/acconfig.h
@@ -103,9 +103,9 @@
103 103
104#define ACPI_MAX_REFERENCE_COUNT 0x1000 104#define ACPI_MAX_REFERENCE_COUNT 0x1000
105 105
106/* Size of cached memory mapping for system memory operation region */ 106/* Default page size for use in mapping memory for operation regions */
107 107
108#define ACPI_SYSMEM_REGION_WINDOW_SIZE 4096 108#define ACPI_DEFAULT_PAGE_SIZE 4096 /* Must be power of 2 */
109 109
110/* owner_id tracking. 8 entries allows for 255 owner_ids */ 110/* owner_id tracking. 8 entries allows for 255 owner_ids */
111 111
diff --git a/drivers/acpi/acpica/acpredef.h b/drivers/acpi/acpica/acpredef.h
index cd80d1dd1950..57bdaf6ffab1 100644
--- a/drivers/acpi/acpica/acpredef.h
+++ b/drivers/acpi/acpica/acpredef.h
@@ -203,8 +203,9 @@ static const union acpi_predefined_info predefined_names[] =
203 {{"_BCT", 1, ACPI_RTYPE_INTEGER}}, 203 {{"_BCT", 1, ACPI_RTYPE_INTEGER}},
204 {{"_BDN", 0, ACPI_RTYPE_INTEGER}}, 204 {{"_BDN", 0, ACPI_RTYPE_INTEGER}},
205 {{"_BFS", 1, 0}}, 205 {{"_BFS", 1, 0}},
206 {{"_BIF", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (9 Int),(4 Str) */ 206 {{"_BIF", 0, ACPI_RTYPE_PACKAGE} }, /* Fixed-length (9 Int),(4 Str/Buf) */
207 {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 9, ACPI_RTYPE_STRING}, 4,0}}, 207 {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 9,
208 ACPI_RTYPE_STRING | ACPI_RTYPE_BUFFER}, 4, 0} },
208 209
209 {{"_BIX", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (16 Int),(4 Str) */ 210 {{"_BIX", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (16 Int),(4 Str) */
210 {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16, ACPI_RTYPE_STRING}, 4, 211 {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16, ACPI_RTYPE_STRING}, 4,
diff --git a/drivers/acpi/acpica/exregion.c b/drivers/acpi/acpica/exregion.c
index 3a54b737d2da..2bd83ac57c3a 100644
--- a/drivers/acpi/acpica/exregion.c
+++ b/drivers/acpi/acpica/exregion.c
@@ -77,7 +77,8 @@ acpi_ex_system_memory_space_handler(u32 function,
77 void *logical_addr_ptr = NULL; 77 void *logical_addr_ptr = NULL;
78 struct acpi_mem_space_context *mem_info = region_context; 78 struct acpi_mem_space_context *mem_info = region_context;
79 u32 length; 79 u32 length;
80 acpi_size window_size; 80 acpi_size map_length;
81 acpi_size page_boundary_map_length;
81#ifdef ACPI_MISALIGNMENT_NOT_SUPPORTED 82#ifdef ACPI_MISALIGNMENT_NOT_SUPPORTED
82 u32 remainder; 83 u32 remainder;
83#endif 84#endif
@@ -144,25 +145,39 @@ acpi_ex_system_memory_space_handler(u32 function,
144 } 145 }
145 146
146 /* 147 /*
147 * Don't attempt to map memory beyond the end of the region, and 148 * Attempt to map from the requested address to the end of the region.
148 * constrain the maximum mapping size to something reasonable. 149 * However, we will never map more than one page, nor will we cross
150 * a page boundary.
149 */ 151 */
150 window_size = (acpi_size) 152 map_length = (acpi_size)
151 ((mem_info->address + mem_info->length) - address); 153 ((mem_info->address + mem_info->length) - address);
152 154
153 if (window_size > ACPI_SYSMEM_REGION_WINDOW_SIZE) { 155 /*
154 window_size = ACPI_SYSMEM_REGION_WINDOW_SIZE; 156 * If mapping the entire remaining portion of the region will cross
157 * a page boundary, just map up to the page boundary, do not cross.
158 * On some systems, crossing a page boundary while mapping regions
159 * can cause warnings if the pages have different attributes
160 * due to resource management
161 */
162 page_boundary_map_length =
163 ACPI_ROUND_UP(address, ACPI_DEFAULT_PAGE_SIZE) - address;
164
165 if (!page_boundary_map_length) {
166 page_boundary_map_length = ACPI_DEFAULT_PAGE_SIZE;
167 }
168
169 if (map_length > page_boundary_map_length) {
170 map_length = page_boundary_map_length;
155 } 171 }
156 172
157 /* Create a new mapping starting at the address given */ 173 /* Create a new mapping starting at the address given */
158 174
159 mem_info->mapped_logical_address = 175 mem_info->mapped_logical_address = acpi_os_map_memory((acpi_physical_address) address, map_length);
160 acpi_os_map_memory((acpi_physical_address) address, window_size);
161 if (!mem_info->mapped_logical_address) { 176 if (!mem_info->mapped_logical_address) {
162 ACPI_ERROR((AE_INFO, 177 ACPI_ERROR((AE_INFO,
163 "Could not map memory at %8.8X%8.8X, size %X", 178 "Could not map memory at %8.8X%8.8X, size %X",
164 ACPI_FORMAT_NATIVE_UINT(address), 179 ACPI_FORMAT_NATIVE_UINT(address),
165 (u32) window_size)); 180 (u32) map_length));
166 mem_info->mapped_length = 0; 181 mem_info->mapped_length = 0;
167 return_ACPI_STATUS(AE_NO_MEMORY); 182 return_ACPI_STATUS(AE_NO_MEMORY);
168 } 183 }
@@ -170,7 +185,7 @@ acpi_ex_system_memory_space_handler(u32 function,
170 /* Save the physical address and mapping size */ 185 /* Save the physical address and mapping size */
171 186
172 mem_info->mapped_physical_address = address; 187 mem_info->mapped_physical_address = address;
173 mem_info->mapped_length = window_size; 188 mem_info->mapped_length = map_length;
174 } 189 }
175 190
176 /* 191 /*
diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c
index e56b2a7b53db..23e5a0519af5 100644
--- a/drivers/acpi/blacklist.c
+++ b/drivers/acpi/blacklist.c
@@ -224,6 +224,7 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
224 * _OSI(Linux) helps sound 224 * _OSI(Linux) helps sound
225 * DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad R61"), 225 * DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad R61"),
226 * DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T61"), 226 * DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T61"),
227 * T400, T500
227 * _OSI(Linux) has Linux specific hooks 228 * _OSI(Linux) has Linux specific hooks
228 * DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X61"), 229 * DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X61"),
229 * _OSI(Linux) is a NOP: 230 * _OSI(Linux) is a NOP:
@@ -254,6 +255,22 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
254 DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X61"), 255 DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X61"),
255 }, 256 },
256 }, 257 },
258 {
259 .callback = dmi_enable_osi_linux,
260 .ident = "Lenovo ThinkPad T400",
261 .matches = {
262 DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
263 DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T400"),
264 },
265 },
266 {
267 .callback = dmi_enable_osi_linux,
268 .ident = "Lenovo ThinkPad T500",
269 .matches = {
270 DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
271 DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T500"),
272 },
273 },
257 {} 274 {}
258}; 275};
259 276
diff --git a/drivers/acpi/power_meter.c b/drivers/acpi/power_meter.c
index e6bfd77986b8..2ef7030a0c28 100644
--- a/drivers/acpi/power_meter.c
+++ b/drivers/acpi/power_meter.c
@@ -294,7 +294,11 @@ static int set_acpi_trip(struct acpi_power_meter_resource *resource)
294 return -EINVAL; 294 return -EINVAL;
295 } 295 }
296 296
297 return data; 297 /* _PTP returns 0 on success, nonzero otherwise */
298 if (data)
299 return -EINVAL;
300
301 return 0;
298} 302}
299 303
300static ssize_t set_trip(struct device *dev, struct device_attribute *devattr, 304static ssize_t set_trip(struct device *dev, struct device_attribute *devattr,
diff --git a/drivers/acpi/proc.c b/drivers/acpi/proc.c
index f8b6f555ba52..d0d25e2e1ced 100644
--- a/drivers/acpi/proc.c
+++ b/drivers/acpi/proc.c
@@ -393,7 +393,7 @@ acpi_system_write_wakeup_device(struct file *file,
393 struct list_head *node, *next; 393 struct list_head *node, *next;
394 char strbuf[5]; 394 char strbuf[5];
395 char str[5] = ""; 395 char str[5] = "";
396 int len = count; 396 unsigned int len = count;
397 struct acpi_device *found_dev = NULL; 397 struct acpi_device *found_dev = NULL;
398 398
399 if (len > 4) 399 if (len > 4)
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c
index c567b46dfa0f..ec742a4e5635 100644
--- a/drivers/acpi/processor_core.c
+++ b/drivers/acpi/processor_core.c
@@ -770,7 +770,7 @@ static struct notifier_block acpi_cpu_notifier =
770 .notifier_call = acpi_cpu_soft_notify, 770 .notifier_call = acpi_cpu_soft_notify,
771}; 771};
772 772
773static int acpi_processor_add(struct acpi_device *device) 773static int __cpuinit acpi_processor_add(struct acpi_device *device)
774{ 774{
775 struct acpi_processor *pr = NULL; 775 struct acpi_processor *pr = NULL;
776 int result = 0; 776 int result = 0;
diff --git a/drivers/acpi/processor_throttling.c b/drivers/acpi/processor_throttling.c
index 4c6c14c1e307..1c5d7a8b2fdf 100644
--- a/drivers/acpi/processor_throttling.c
+++ b/drivers/acpi/processor_throttling.c
@@ -1133,15 +1133,15 @@ int acpi_processor_get_throttling_info(struct acpi_processor *pr)
1133 int result = 0; 1133 int result = 0;
1134 struct acpi_processor_throttling *pthrottling; 1134 struct acpi_processor_throttling *pthrottling;
1135 1135
1136 if (!pr)
1137 return -EINVAL;
1138
1136 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 1139 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
1137 "pblk_address[0x%08x] duty_offset[%d] duty_width[%d]\n", 1140 "pblk_address[0x%08x] duty_offset[%d] duty_width[%d]\n",
1138 pr->throttling.address, 1141 pr->throttling.address,
1139 pr->throttling.duty_offset, 1142 pr->throttling.duty_offset,
1140 pr->throttling.duty_width)); 1143 pr->throttling.duty_width));
1141 1144
1142 if (!pr)
1143 return -EINVAL;
1144
1145 /* 1145 /*
1146 * Evaluate _PTC, _TSS and _TPC 1146 * Evaluate _PTC, _TSS and _TPC
1147 * They must all be present or none of them can be used. 1147 * They must all be present or none of them can be used.
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
index a90afcc723ab..5f2c379ab7bf 100644
--- a/drivers/acpi/sleep.c
+++ b/drivers/acpi/sleep.c
@@ -413,6 +413,38 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
413 }, 413 },
414 }, 414 },
415 { 415 {
416 .callback = init_set_sci_en_on_resume,
417 .ident = "Hewlett-Packard Pavilion dv4",
418 .matches = {
419 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
420 DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv4"),
421 },
422 },
423 {
424 .callback = init_set_sci_en_on_resume,
425 .ident = "Hewlett-Packard Pavilion dv7",
426 .matches = {
427 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
428 DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv7"),
429 },
430 },
431 {
432 .callback = init_set_sci_en_on_resume,
433 .ident = "Hewlett-Packard Compaq Presario C700 Notebook PC",
434 .matches = {
435 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
436 DMI_MATCH(DMI_PRODUCT_NAME, "Compaq Presario C700 Notebook PC"),
437 },
438 },
439 {
440 .callback = init_set_sci_en_on_resume,
441 .ident = "Hewlett-Packard Compaq Presario CQ40 Notebook PC",
442 .matches = {
443 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
444 DMI_MATCH(DMI_PRODUCT_NAME, "Compaq Presario CQ40 Notebook PC"),
445 },
446 },
447 {
416 .callback = init_old_suspend_ordering, 448 .callback = init_old_suspend_ordering,
417 .ident = "Panasonic CF51-2L", 449 .ident = "Panasonic CF51-2L",
418 .matches = { 450 .matches = {
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 64e3c581b7a9..05dff631591c 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -1223,7 +1223,7 @@ acpi_video_device_write_state(struct file *file,
1223 u32 state = 0; 1223 u32 state = 0;
1224 1224
1225 1225
1226 if (!dev || count + 1 > sizeof str) 1226 if (!dev || count >= sizeof(str))
1227 return -EINVAL; 1227 return -EINVAL;
1228 1228
1229 if (copy_from_user(str, buffer, count)) 1229 if (copy_from_user(str, buffer, count))
@@ -1280,7 +1280,7 @@ acpi_video_device_write_brightness(struct file *file,
1280 int i; 1280 int i;
1281 1281
1282 1282
1283 if (!dev || !dev->brightness || count + 1 > sizeof str) 1283 if (!dev || !dev->brightness || count >= sizeof(str))
1284 return -EINVAL; 1284 return -EINVAL;
1285 1285
1286 if (copy_from_user(str, buffer, count)) 1286 if (copy_from_user(str, buffer, count))
@@ -1562,7 +1562,7 @@ acpi_video_bus_write_POST(struct file *file,
1562 unsigned long long opt, options; 1562 unsigned long long opt, options;
1563 1563
1564 1564
1565 if (!video || count + 1 > sizeof str) 1565 if (!video || count >= sizeof(str))
1566 return -EINVAL; 1566 return -EINVAL;
1567 1567
1568 status = acpi_video_bus_POST_options(video, &options); 1568 status = acpi_video_bus_POST_options(video, &options);
@@ -1602,7 +1602,7 @@ acpi_video_bus_write_DOS(struct file *file,
1602 unsigned long opt; 1602 unsigned long opt;
1603 1603
1604 1604
1605 if (!video || count + 1 > sizeof str) 1605 if (!video || count >= sizeof(str))
1606 return -EINVAL; 1606 return -EINVAL;
1607 1607
1608 if (copy_from_user(str, buffer, count)) 1608 if (copy_from_user(str, buffer, count))
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index a06f5d6375a8..a3241a1a710b 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -2718,6 +2718,30 @@ static bool ahci_sb600_enable_64bit(struct pci_dev *pdev)
2718 }, 2718 },
2719 .driver_data = "20071026", /* yyyymmdd */ 2719 .driver_data = "20071026", /* yyyymmdd */
2720 }, 2720 },
2721 /*
2722 * All BIOS versions for the MSI K9A2 Platinum (MS-7376)
2723 * support 64bit DMA.
2724 *
2725 * BIOS versions earlier than 1.5 had the Manufacturer DMI
2726 * fields as "MICRO-STAR INTERANTIONAL CO.,LTD".
2727 * This spelling mistake was fixed in BIOS version 1.5, so
2728 * 1.5 and later have the Manufacturer as
2729 * "MICRO-STAR INTERNATIONAL CO.,LTD".
2730 * So try to match on DMI_BOARD_VENDOR of "MICRO-STAR INTER".
2731 *
2732 * BIOS versions earlier than 1.9 had a Board Product Name
2733 * DMI field of "MS-7376". This was changed to be
2734 * "K9A2 Platinum (MS-7376)" in version 1.9, but we can still
2735 * match on DMI_BOARD_NAME of "MS-7376".
2736 */
2737 {
2738 .ident = "MSI K9A2 Platinum",
2739 .matches = {
2740 DMI_MATCH(DMI_BOARD_VENDOR,
2741 "MICRO-STAR INTER"),
2742 DMI_MATCH(DMI_BOARD_NAME, "MS-7376"),
2743 },
2744 },
2721 { } 2745 { }
2722 }; 2746 };
2723 const struct dmi_system_id *match; 2747 const struct dmi_system_id *match;
@@ -2729,18 +2753,24 @@ static bool ahci_sb600_enable_64bit(struct pci_dev *pdev)
2729 !match) 2753 !match)
2730 return false; 2754 return false;
2731 2755
2756 if (!match->driver_data)
2757 goto enable_64bit;
2758
2732 dmi_get_date(DMI_BIOS_DATE, &year, &month, &date); 2759 dmi_get_date(DMI_BIOS_DATE, &year, &month, &date);
2733 snprintf(buf, sizeof(buf), "%04d%02d%02d", year, month, date); 2760 snprintf(buf, sizeof(buf), "%04d%02d%02d", year, month, date);
2734 2761
2735 if (strcmp(buf, match->driver_data) >= 0) { 2762 if (strcmp(buf, match->driver_data) >= 0)
2736 dev_printk(KERN_WARNING, &pdev->dev, "%s: enabling 64bit DMA\n", 2763 goto enable_64bit;
2737 match->ident); 2764 else {
2738 return true;
2739 } else {
2740 dev_printk(KERN_WARNING, &pdev->dev, "%s: BIOS too old, " 2765 dev_printk(KERN_WARNING, &pdev->dev, "%s: BIOS too old, "
2741 "forcing 32bit DMA, update BIOS\n", match->ident); 2766 "forcing 32bit DMA, update BIOS\n", match->ident);
2742 return false; 2767 return false;
2743 } 2768 }
2769
2770enable_64bit:
2771 dev_printk(KERN_WARNING, &pdev->dev, "%s: enabling 64bit DMA\n",
2772 match->ident);
2773 return true;
2744} 2774}
2745 2775
2746static bool ahci_broken_system_poweroff(struct pci_dev *pdev) 2776static bool ahci_broken_system_poweroff(struct pci_dev *pdev)
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index d7f0f1b1ae3e..dc72690ed5db 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -4919,10 +4919,11 @@ struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev)
4919 */ 4919 */
4920void ata_qc_free(struct ata_queued_cmd *qc) 4920void ata_qc_free(struct ata_queued_cmd *qc)
4921{ 4921{
4922 struct ata_port *ap = qc->ap; 4922 struct ata_port *ap;
4923 unsigned int tag; 4923 unsigned int tag;
4924 4924
4925 WARN_ON_ONCE(qc == NULL); /* ata_qc_from_tag _might_ return NULL */ 4925 WARN_ON_ONCE(qc == NULL); /* ata_qc_from_tag _might_ return NULL */
4926 ap = qc->ap;
4926 4927
4927 qc->flags = 0; 4928 qc->flags = 0;
4928 tag = qc->tag; 4929 tag = qc->tag;
@@ -4934,11 +4935,13 @@ void ata_qc_free(struct ata_queued_cmd *qc)
4934 4935
4935void __ata_qc_complete(struct ata_queued_cmd *qc) 4936void __ata_qc_complete(struct ata_queued_cmd *qc)
4936{ 4937{
4937 struct ata_port *ap = qc->ap; 4938 struct ata_port *ap;
4938 struct ata_link *link = qc->dev->link; 4939 struct ata_link *link;
4939 4940
4940 WARN_ON_ONCE(qc == NULL); /* ata_qc_from_tag _might_ return NULL */ 4941 WARN_ON_ONCE(qc == NULL); /* ata_qc_from_tag _might_ return NULL */
4941 WARN_ON_ONCE(!(qc->flags & ATA_QCFLAG_ACTIVE)); 4942 WARN_ON_ONCE(!(qc->flags & ATA_QCFLAG_ACTIVE));
4943 ap = qc->ap;
4944 link = qc->dev->link;
4942 4945
4943 if (likely(qc->flags & ATA_QCFLAG_DMAMAP)) 4946 if (likely(qc->flags & ATA_QCFLAG_DMAMAP))
4944 ata_sg_clean(qc); 4947 ata_sg_clean(qc);
diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c
index d344db42a002..172b57e6543f 100644
--- a/drivers/ata/sata_fsl.c
+++ b/drivers/ata/sata_fsl.c
@@ -707,34 +707,17 @@ static unsigned int sata_fsl_dev_classify(struct ata_port *ap)
707 return ata_dev_classify(&tf); 707 return ata_dev_classify(&tf);
708} 708}
709 709
710static int sata_fsl_prereset(struct ata_link *link, unsigned long deadline) 710static int sata_fsl_hardreset(struct ata_link *link, unsigned int *class,
711{
712 /* FIXME: Never skip softreset, sata_fsl_softreset() is
713 * combination of soft and hard resets. sata_fsl_softreset()
714 * needs to be splitted into soft and hard resets.
715 */
716 return 0;
717}
718
719static int sata_fsl_softreset(struct ata_link *link, unsigned int *class,
720 unsigned long deadline) 711 unsigned long deadline)
721{ 712{
722 struct ata_port *ap = link->ap; 713 struct ata_port *ap = link->ap;
723 struct sata_fsl_port_priv *pp = ap->private_data;
724 struct sata_fsl_host_priv *host_priv = ap->host->private_data; 714 struct sata_fsl_host_priv *host_priv = ap->host->private_data;
725 void __iomem *hcr_base = host_priv->hcr_base; 715 void __iomem *hcr_base = host_priv->hcr_base;
726 int pmp = sata_srst_pmp(link);
727 u32 temp; 716 u32 temp;
728 struct ata_taskfile tf;
729 u8 *cfis;
730 u32 Serror;
731 int i = 0; 717 int i = 0;
732 unsigned long start_jiffies; 718 unsigned long start_jiffies;
733 719
734 DPRINTK("in xx_softreset\n"); 720 DPRINTK("in xx_hardreset\n");
735
736 if (pmp != SATA_PMP_CTRL_PORT)
737 goto issue_srst;
738 721
739try_offline_again: 722try_offline_again:
740 /* 723 /*
@@ -749,7 +732,7 @@ try_offline_again:
749 732
750 if (temp & ONLINE) { 733 if (temp & ONLINE) {
751 ata_port_printk(ap, KERN_ERR, 734 ata_port_printk(ap, KERN_ERR,
752 "Softreset failed, not off-lined %d\n", i); 735 "Hardreset failed, not off-lined %d\n", i);
753 736
754 /* 737 /*
755 * Try to offline controller atleast twice 738 * Try to offline controller atleast twice
@@ -761,7 +744,7 @@ try_offline_again:
761 goto try_offline_again; 744 goto try_offline_again;
762 } 745 }
763 746
764 DPRINTK("softreset, controller off-lined\n"); 747 DPRINTK("hardreset, controller off-lined\n");
765 VPRINTK("HStatus = 0x%x\n", ioread32(hcr_base + HSTATUS)); 748 VPRINTK("HStatus = 0x%x\n", ioread32(hcr_base + HSTATUS));
766 VPRINTK("HControl = 0x%x\n", ioread32(hcr_base + HCONTROL)); 749 VPRINTK("HControl = 0x%x\n", ioread32(hcr_base + HCONTROL));
767 750
@@ -786,11 +769,11 @@ try_offline_again:
786 769
787 if (!(temp & ONLINE)) { 770 if (!(temp & ONLINE)) {
788 ata_port_printk(ap, KERN_ERR, 771 ata_port_printk(ap, KERN_ERR,
789 "Softreset failed, not on-lined\n"); 772 "Hardreset failed, not on-lined\n");
790 goto err; 773 goto err;
791 } 774 }
792 775
793 DPRINTK("softreset, controller off-lined & on-lined\n"); 776 DPRINTK("hardreset, controller off-lined & on-lined\n");
794 VPRINTK("HStatus = 0x%x\n", ioread32(hcr_base + HSTATUS)); 777 VPRINTK("HStatus = 0x%x\n", ioread32(hcr_base + HSTATUS));
795 VPRINTK("HControl = 0x%x\n", ioread32(hcr_base + HCONTROL)); 778 VPRINTK("HControl = 0x%x\n", ioread32(hcr_base + HCONTROL));
796 779
@@ -806,7 +789,7 @@ try_offline_again:
806 "No Device OR PHYRDY change,Hstatus = 0x%x\n", 789 "No Device OR PHYRDY change,Hstatus = 0x%x\n",
807 ioread32(hcr_base + HSTATUS)); 790 ioread32(hcr_base + HSTATUS));
808 *class = ATA_DEV_NONE; 791 *class = ATA_DEV_NONE;
809 goto out; 792 return 0;
810 } 793 }
811 794
812 /* 795 /*
@@ -819,11 +802,44 @@ try_offline_again:
819 if ((temp & 0xFF) != 0x18) { 802 if ((temp & 0xFF) != 0x18) {
820 ata_port_printk(ap, KERN_WARNING, "No Signature Update\n"); 803 ata_port_printk(ap, KERN_WARNING, "No Signature Update\n");
821 *class = ATA_DEV_NONE; 804 *class = ATA_DEV_NONE;
822 goto out; 805 goto do_followup_srst;
823 } else { 806 } else {
824 ata_port_printk(ap, KERN_INFO, 807 ata_port_printk(ap, KERN_INFO,
825 "Signature Update detected @ %d msecs\n", 808 "Signature Update detected @ %d msecs\n",
826 jiffies_to_msecs(jiffies - start_jiffies)); 809 jiffies_to_msecs(jiffies - start_jiffies));
810 *class = sata_fsl_dev_classify(ap);
811 return 0;
812 }
813
814do_followup_srst:
815 /*
816 * request libATA to perform follow-up softreset
817 */
818 return -EAGAIN;
819
820err:
821 return -EIO;
822}
823
824static int sata_fsl_softreset(struct ata_link *link, unsigned int *class,
825 unsigned long deadline)
826{
827 struct ata_port *ap = link->ap;
828 struct sata_fsl_port_priv *pp = ap->private_data;
829 struct sata_fsl_host_priv *host_priv = ap->host->private_data;
830 void __iomem *hcr_base = host_priv->hcr_base;
831 int pmp = sata_srst_pmp(link);
832 u32 temp;
833 struct ata_taskfile tf;
834 u8 *cfis;
835 u32 Serror;
836
837 DPRINTK("in xx_softreset\n");
838
839 if (ata_link_offline(link)) {
840 DPRINTK("PHY reports no device\n");
841 *class = ATA_DEV_NONE;
842 return 0;
827 } 843 }
828 844
829 /* 845 /*
@@ -834,7 +850,6 @@ try_offline_again:
834 * reached here, we can send a command to the target device 850 * reached here, we can send a command to the target device
835 */ 851 */
836 852
837issue_srst:
838 DPRINTK("Sending SRST/device reset\n"); 853 DPRINTK("Sending SRST/device reset\n");
839 854
840 ata_tf_init(link->device, &tf); 855 ata_tf_init(link->device, &tf);
@@ -860,6 +875,8 @@ issue_srst:
860 ioread32(CA + hcr_base), ioread32(CC + hcr_base)); 875 ioread32(CA + hcr_base), ioread32(CC + hcr_base));
861 876
862 iowrite32(0xFFFF, CC + hcr_base); 877 iowrite32(0xFFFF, CC + hcr_base);
878 if (pmp != SATA_PMP_CTRL_PORT)
879 iowrite32(pmp, CQPMP + hcr_base);
863 iowrite32(1, CQ + hcr_base); 880 iowrite32(1, CQ + hcr_base);
864 881
865 temp = ata_wait_register(CQ + hcr_base, 0x1, 0x1, 1, 5000); 882 temp = ata_wait_register(CQ + hcr_base, 0x1, 0x1, 1, 5000);
@@ -926,7 +943,6 @@ issue_srst:
926 VPRINTK("cereg = 0x%x\n", ioread32(hcr_base + CE)); 943 VPRINTK("cereg = 0x%x\n", ioread32(hcr_base + CE));
927 } 944 }
928 945
929out:
930 return 0; 946 return 0;
931 947
932err: 948err:
@@ -988,18 +1004,6 @@ static void sata_fsl_error_intr(struct ata_port *ap)
988 ehi->err_mask |= AC_ERR_ATA_BUS; 1004 ehi->err_mask |= AC_ERR_ATA_BUS;
989 ehi->action |= ATA_EH_SOFTRESET; 1005 ehi->action |= ATA_EH_SOFTRESET;
990 1006
991 /*
992 * Ignore serror in case of fatal errors as we always want
993 * to do a soft-reset of the FSL SATA controller. Analyzing
994 * serror may cause libata to schedule a hard-reset action,
995 * and hard-reset currently does not do controller
996 * offline/online, causing command timeouts and leads to an
997 * un-recoverable state, hence make libATA ignore
998 * autopsy in case of fatal errors.
999 */
1000
1001 ehi->flags |= ATA_EHI_NO_AUTOPSY;
1002
1003 freeze = 1; 1007 freeze = 1;
1004 } 1008 }
1005 1009
@@ -1267,8 +1271,8 @@ static struct ata_port_operations sata_fsl_ops = {
1267 1271
1268 .freeze = sata_fsl_freeze, 1272 .freeze = sata_fsl_freeze,
1269 .thaw = sata_fsl_thaw, 1273 .thaw = sata_fsl_thaw,
1270 .prereset = sata_fsl_prereset,
1271 .softreset = sata_fsl_softreset, 1274 .softreset = sata_fsl_softreset,
1275 .hardreset = sata_fsl_hardreset,
1272 .pmp_softreset = sata_fsl_softreset, 1276 .pmp_softreset = sata_fsl_softreset,
1273 .error_handler = sata_fsl_error_handler, 1277 .error_handler = sata_fsl_error_handler,
1274 .post_internal_cmd = sata_fsl_post_internal_cmd, 1278 .post_internal_cmd = sata_fsl_post_internal_cmd,
diff --git a/drivers/ata/sata_via.c b/drivers/ata/sata_via.c
index bdd43c7f432e..02efd9a83d26 100644
--- a/drivers/ata/sata_via.c
+++ b/drivers/ata/sata_via.c
@@ -93,7 +93,6 @@ static const struct pci_device_id svia_pci_tbl[] = {
93 { PCI_VDEVICE(VIA, 0x7372), vt6420 }, 93 { PCI_VDEVICE(VIA, 0x7372), vt6420 },
94 { PCI_VDEVICE(VIA, 0x5287), vt8251 }, /* 2 sata chnls (Master/Slave) */ 94 { PCI_VDEVICE(VIA, 0x5287), vt8251 }, /* 2 sata chnls (Master/Slave) */
95 { PCI_VDEVICE(VIA, 0x9000), vt8251 }, 95 { PCI_VDEVICE(VIA, 0x9000), vt8251 },
96 { PCI_VDEVICE(VIA, 0x9040), vt8251 },
97 96
98 { } /* terminate list */ 97 { } /* terminate list */
99}; 98};
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index 973bf2ad4e0d..63c143e54a57 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -689,15 +689,19 @@ int bus_add_driver(struct device_driver *drv)
689 printk(KERN_ERR "%s: driver_add_attrs(%s) failed\n", 689 printk(KERN_ERR "%s: driver_add_attrs(%s) failed\n",
690 __func__, drv->name); 690 __func__, drv->name);
691 } 691 }
692 error = add_bind_files(drv); 692
693 if (error) { 693 if (!drv->suppress_bind_attrs) {
694 /* Ditto */ 694 error = add_bind_files(drv);
695 printk(KERN_ERR "%s: add_bind_files(%s) failed\n", 695 if (error) {
696 __func__, drv->name); 696 /* Ditto */
697 printk(KERN_ERR "%s: add_bind_files(%s) failed\n",
698 __func__, drv->name);
699 }
697 } 700 }
698 701
699 kobject_uevent(&priv->kobj, KOBJ_ADD); 702 kobject_uevent(&priv->kobj, KOBJ_ADD);
700 return 0; 703 return 0;
704
701out_unregister: 705out_unregister:
702 kfree(drv->p); 706 kfree(drv->p);
703 drv->p = NULL; 707 drv->p = NULL;
@@ -720,7 +724,8 @@ void bus_remove_driver(struct device_driver *drv)
720 if (!drv->bus) 724 if (!drv->bus)
721 return; 725 return;
722 726
723 remove_bind_files(drv); 727 if (!drv->suppress_bind_attrs)
728 remove_bind_files(drv);
724 driver_remove_attrs(drv->bus, drv); 729 driver_remove_attrs(drv->bus, drv);
725 driver_remove_file(drv, &driver_attr_uevent); 730 driver_remove_file(drv, &driver_attr_uevent);
726 klist_remove(&drv->p->knode_bus); 731 klist_remove(&drv->p->knode_bus);
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index ed2ebd3c287d..f367885a7646 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -236,7 +236,7 @@ int driver_register(struct device_driver *drv)
236 put_driver(other); 236 put_driver(other);
237 printk(KERN_ERR "Error: Driver '%s' is already registered, " 237 printk(KERN_ERR "Error: Driver '%s' is already registered, "
238 "aborting...\n", drv->name); 238 "aborting...\n", drv->name);
239 return -EEXIST; 239 return -EBUSY;
240 } 240 }
241 241
242 ret = bus_add_driver(drv); 242 ret = bus_add_driver(drv);
diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index ed156a13aa40..4fa954b07ac4 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -521,11 +521,15 @@ int __init_or_module platform_driver_probe(struct platform_driver *drv,
521{ 521{
522 int retval, code; 522 int retval, code;
523 523
524 /* make sure driver won't have bind/unbind attributes */
525 drv->driver.suppress_bind_attrs = true;
526
524 /* temporary section violation during probe() */ 527 /* temporary section violation during probe() */
525 drv->probe = probe; 528 drv->probe = probe;
526 retval = code = platform_driver_register(drv); 529 retval = code = platform_driver_register(drv);
527 530
528 /* Fixup that section violation, being paranoid about code scanning 531 /*
532 * Fixup that section violation, being paranoid about code scanning
529 * the list of drivers in order to probe new devices. Check to see 533 * the list of drivers in order to probe new devices. Check to see
530 * if the probe was successful, and make sure any forced probes of 534 * if the probe was successful, and make sure any forced probes of
531 * new devices fail. 535 * new devices fail.
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
index e0dc4071e088..8aa2443182d5 100644
--- a/drivers/base/power/main.c
+++ b/drivers/base/power/main.c
@@ -511,6 +511,7 @@ static void dpm_complete(pm_message_t state)
511 511
512 INIT_LIST_HEAD(&list); 512 INIT_LIST_HEAD(&list);
513 mutex_lock(&dpm_list_mtx); 513 mutex_lock(&dpm_list_mtx);
514 transition_started = false;
514 while (!list_empty(&dpm_list)) { 515 while (!list_empty(&dpm_list)) {
515 struct device *dev = to_device(dpm_list.prev); 516 struct device *dev = to_device(dpm_list.prev);
516 517
diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c
index 38556f6cc22d..846d89e3d122 100644
--- a/drivers/base/power/runtime.c
+++ b/drivers/base/power/runtime.c
@@ -51,8 +51,6 @@ static int __pm_runtime_idle(struct device *dev)
51{ 51{
52 int retval = 0; 52 int retval = 0;
53 53
54 dev_dbg(dev, "__pm_runtime_idle()!\n");
55
56 if (dev->power.runtime_error) 54 if (dev->power.runtime_error)
57 retval = -EINVAL; 55 retval = -EINVAL;
58 else if (dev->power.idle_notification) 56 else if (dev->power.idle_notification)
@@ -93,8 +91,6 @@ static int __pm_runtime_idle(struct device *dev)
93 wake_up_all(&dev->power.wait_queue); 91 wake_up_all(&dev->power.wait_queue);
94 92
95 out: 93 out:
96 dev_dbg(dev, "__pm_runtime_idle() returns %d!\n", retval);
97
98 return retval; 94 return retval;
99} 95}
100 96
@@ -332,11 +328,11 @@ int __pm_runtime_resume(struct device *dev, bool from_wq)
332 * necessary. 328 * necessary.
333 */ 329 */
334 parent = dev->parent; 330 parent = dev->parent;
335 spin_unlock_irq(&dev->power.lock); 331 spin_unlock(&dev->power.lock);
336 332
337 pm_runtime_get_noresume(parent); 333 pm_runtime_get_noresume(parent);
338 334
339 spin_lock_irq(&parent->power.lock); 335 spin_lock(&parent->power.lock);
340 /* 336 /*
341 * We can resume if the parent's run-time PM is disabled or it 337 * We can resume if the parent's run-time PM is disabled or it
342 * is set to ignore children. 338 * is set to ignore children.
@@ -347,9 +343,9 @@ int __pm_runtime_resume(struct device *dev, bool from_wq)
347 if (parent->power.runtime_status != RPM_ACTIVE) 343 if (parent->power.runtime_status != RPM_ACTIVE)
348 retval = -EBUSY; 344 retval = -EBUSY;
349 } 345 }
350 spin_unlock_irq(&parent->power.lock); 346 spin_unlock(&parent->power.lock);
351 347
352 spin_lock_irq(&dev->power.lock); 348 spin_lock(&dev->power.lock);
353 if (retval) 349 if (retval)
354 goto out; 350 goto out;
355 goto repeat; 351 goto repeat;
@@ -781,7 +777,7 @@ int __pm_runtime_set_status(struct device *dev, unsigned int status)
781 } 777 }
782 778
783 if (parent) { 779 if (parent) {
784 spin_lock_irq(&parent->power.lock); 780 spin_lock(&parent->power.lock);
785 781
786 /* 782 /*
787 * It is invalid to put an active child under a parent that is 783 * It is invalid to put an active child under a parent that is
@@ -797,7 +793,7 @@ int __pm_runtime_set_status(struct device *dev, unsigned int status)
797 atomic_inc(&parent->power.child_count); 793 atomic_inc(&parent->power.child_count);
798 } 794 }
799 795
800 spin_unlock_irq(&parent->power.lock); 796 spin_unlock(&parent->power.lock);
801 797
802 if (error) 798 if (error)
803 goto out; 799 goto out;
diff --git a/drivers/block/aoe/aoecmd.c b/drivers/block/aoe/aoecmd.c
index 965ece2c7e4d..13bb69d2abb3 100644
--- a/drivers/block/aoe/aoecmd.c
+++ b/drivers/block/aoe/aoecmd.c
@@ -735,6 +735,21 @@ diskstats(struct gendisk *disk, struct bio *bio, ulong duration, sector_t sector
735 part_stat_unlock(); 735 part_stat_unlock();
736} 736}
737 737
738/*
739 * Ensure we don't create aliases in VI caches
740 */
741static inline void
742killalias(struct bio *bio)
743{
744 struct bio_vec *bv;
745 int i;
746
747 if (bio_data_dir(bio) == READ)
748 __bio_for_each_segment(bv, bio, i, 0) {
749 flush_dcache_page(bv->bv_page);
750 }
751}
752
738void 753void
739aoecmd_ata_rsp(struct sk_buff *skb) 754aoecmd_ata_rsp(struct sk_buff *skb)
740{ 755{
@@ -853,8 +868,12 @@ aoecmd_ata_rsp(struct sk_buff *skb)
853 868
854 if (buf && --buf->nframesout == 0 && buf->resid == 0) { 869 if (buf && --buf->nframesout == 0 && buf->resid == 0) {
855 diskstats(d->gd, buf->bio, jiffies - buf->stime, buf->sector); 870 diskstats(d->gd, buf->bio, jiffies - buf->stime, buf->sector);
856 n = (buf->flags & BUFFL_FAIL) ? -EIO : 0; 871 if (buf->flags & BUFFL_FAIL)
857 bio_endio(buf->bio, n); 872 bio_endio(buf->bio, -EIO);
873 else {
874 killalias(buf->bio);
875 bio_endio(buf->bio, 0);
876 }
858 mempool_free(buf, d->bufpool); 877 mempool_free(buf, d->bufpool);
859 } 878 }
860 879
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 6399e5090df4..92b126394fa1 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -482,7 +482,7 @@ static ssize_t host_store_rescan(struct device *dev,
482 482
483 return count; 483 return count;
484} 484}
485DEVICE_ATTR(rescan, S_IWUSR, NULL, host_store_rescan); 485static DEVICE_ATTR(rescan, S_IWUSR, NULL, host_store_rescan);
486 486
487static ssize_t dev_show_unique_id(struct device *dev, 487static ssize_t dev_show_unique_id(struct device *dev,
488 struct device_attribute *attr, 488 struct device_attribute *attr,
@@ -512,7 +512,7 @@ static ssize_t dev_show_unique_id(struct device *dev,
512 sn[8], sn[9], sn[10], sn[11], 512 sn[8], sn[9], sn[10], sn[11],
513 sn[12], sn[13], sn[14], sn[15]); 513 sn[12], sn[13], sn[14], sn[15]);
514} 514}
515DEVICE_ATTR(unique_id, S_IRUGO, dev_show_unique_id, NULL); 515static DEVICE_ATTR(unique_id, S_IRUGO, dev_show_unique_id, NULL);
516 516
517static ssize_t dev_show_vendor(struct device *dev, 517static ssize_t dev_show_vendor(struct device *dev,
518 struct device_attribute *attr, 518 struct device_attribute *attr,
@@ -536,7 +536,7 @@ static ssize_t dev_show_vendor(struct device *dev,
536 else 536 else
537 return snprintf(buf, sizeof(vendor) + 1, "%s\n", drv->vendor); 537 return snprintf(buf, sizeof(vendor) + 1, "%s\n", drv->vendor);
538} 538}
539DEVICE_ATTR(vendor, S_IRUGO, dev_show_vendor, NULL); 539static DEVICE_ATTR(vendor, S_IRUGO, dev_show_vendor, NULL);
540 540
541static ssize_t dev_show_model(struct device *dev, 541static ssize_t dev_show_model(struct device *dev,
542 struct device_attribute *attr, 542 struct device_attribute *attr,
@@ -560,7 +560,7 @@ static ssize_t dev_show_model(struct device *dev,
560 else 560 else
561 return snprintf(buf, sizeof(model) + 1, "%s\n", drv->model); 561 return snprintf(buf, sizeof(model) + 1, "%s\n", drv->model);
562} 562}
563DEVICE_ATTR(model, S_IRUGO, dev_show_model, NULL); 563static DEVICE_ATTR(model, S_IRUGO, dev_show_model, NULL);
564 564
565static ssize_t dev_show_rev(struct device *dev, 565static ssize_t dev_show_rev(struct device *dev,
566 struct device_attribute *attr, 566 struct device_attribute *attr,
@@ -584,7 +584,7 @@ static ssize_t dev_show_rev(struct device *dev,
584 else 584 else
585 return snprintf(buf, sizeof(rev) + 1, "%s\n", drv->rev); 585 return snprintf(buf, sizeof(rev) + 1, "%s\n", drv->rev);
586} 586}
587DEVICE_ATTR(rev, S_IRUGO, dev_show_rev, NULL); 587static DEVICE_ATTR(rev, S_IRUGO, dev_show_rev, NULL);
588 588
589static ssize_t cciss_show_lunid(struct device *dev, 589static ssize_t cciss_show_lunid(struct device *dev,
590 struct device_attribute *attr, char *buf) 590 struct device_attribute *attr, char *buf)
@@ -609,7 +609,7 @@ static ssize_t cciss_show_lunid(struct device *dev,
609 lunid[0], lunid[1], lunid[2], lunid[3], 609 lunid[0], lunid[1], lunid[2], lunid[3],
610 lunid[4], lunid[5], lunid[6], lunid[7]); 610 lunid[4], lunid[5], lunid[6], lunid[7]);
611} 611}
612DEVICE_ATTR(lunid, S_IRUGO, cciss_show_lunid, NULL); 612static DEVICE_ATTR(lunid, S_IRUGO, cciss_show_lunid, NULL);
613 613
614static ssize_t cciss_show_raid_level(struct device *dev, 614static ssize_t cciss_show_raid_level(struct device *dev,
615 struct device_attribute *attr, char *buf) 615 struct device_attribute *attr, char *buf)
@@ -632,7 +632,7 @@ static ssize_t cciss_show_raid_level(struct device *dev,
632 return snprintf(buf, strlen(raid_label[raid]) + 7, "RAID %s\n", 632 return snprintf(buf, strlen(raid_label[raid]) + 7, "RAID %s\n",
633 raid_label[raid]); 633 raid_label[raid]);
634} 634}
635DEVICE_ATTR(raid_level, S_IRUGO, cciss_show_raid_level, NULL); 635static DEVICE_ATTR(raid_level, S_IRUGO, cciss_show_raid_level, NULL);
636 636
637static ssize_t cciss_show_usage_count(struct device *dev, 637static ssize_t cciss_show_usage_count(struct device *dev,
638 struct device_attribute *attr, char *buf) 638 struct device_attribute *attr, char *buf)
@@ -651,7 +651,7 @@ static ssize_t cciss_show_usage_count(struct device *dev,
651 spin_unlock_irqrestore(CCISS_LOCK(h->ctlr), flags); 651 spin_unlock_irqrestore(CCISS_LOCK(h->ctlr), flags);
652 return snprintf(buf, 20, "%d\n", count); 652 return snprintf(buf, 20, "%d\n", count);
653} 653}
654DEVICE_ATTR(usage_count, S_IRUGO, cciss_show_usage_count, NULL); 654static DEVICE_ATTR(usage_count, S_IRUGO, cciss_show_usage_count, NULL);
655 655
656static struct attribute *cciss_host_attrs[] = { 656static struct attribute *cciss_host_attrs[] = {
657 &dev_attr_rescan.attr, 657 &dev_attr_rescan.attr,
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index edda9ea7c626..bd112c8c7bcd 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -949,7 +949,7 @@ static int loop_clr_fd(struct loop_device *lo, struct block_device *bdev)
949 lo->lo_state = Lo_unbound; 949 lo->lo_state = Lo_unbound;
950 /* This is safe: open() is still holding a reference. */ 950 /* This is safe: open() is still holding a reference. */
951 module_put(THIS_MODULE); 951 module_put(THIS_MODULE);
952 if (max_part > 0) 952 if (max_part > 0 && bdev)
953 ioctl_by_bdev(bdev, BLKRRPART, 0); 953 ioctl_by_bdev(bdev, BLKRRPART, 0);
954 mutex_unlock(&lo->lo_ctl_mutex); 954 mutex_unlock(&lo->lo_ctl_mutex);
955 /* 955 /*
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 7ba91aa3fe8b..44bc8bbabf54 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -591,6 +591,7 @@ static int btusb_close(struct hci_dev *hdev)
591 return 0; 591 return 0;
592 592
593 cancel_work_sync(&data->work); 593 cancel_work_sync(&data->work);
594 cancel_work_sync(&data->waker);
594 595
595 clear_bit(BTUSB_ISOC_RUNNING, &data->flags); 596 clear_bit(BTUSB_ISOC_RUNNING, &data->flags);
596 clear_bit(BTUSB_BULK_RUNNING, &data->flags); 597 clear_bit(BTUSB_BULK_RUNNING, &data->flags);
@@ -599,11 +600,13 @@ static int btusb_close(struct hci_dev *hdev)
599 btusb_stop_traffic(data); 600 btusb_stop_traffic(data);
600 err = usb_autopm_get_interface(data->intf); 601 err = usb_autopm_get_interface(data->intf);
601 if (err < 0) 602 if (err < 0)
602 return 0; 603 goto failed;
603 604
604 data->intf->needs_remote_wakeup = 0; 605 data->intf->needs_remote_wakeup = 0;
605 usb_autopm_put_interface(data->intf); 606 usb_autopm_put_interface(data->intf);
606 607
608failed:
609 usb_scuttle_anchored_urbs(&data->deferred);
607 return 0; 610 return 0;
608} 611}
609 612
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
index 08a6f50ae791..6aad99ec4e0f 100644
--- a/drivers/char/Kconfig
+++ b/drivers/char/Kconfig
@@ -323,7 +323,7 @@ config SPECIALIX
323 323
324config SX 324config SX
325 tristate "Specialix SX (and SI) card support" 325 tristate "Specialix SX (and SI) card support"
326 depends on SERIAL_NONSTANDARD && (PCI || EISA || ISA) 326 depends on SERIAL_NONSTANDARD && (PCI || EISA || ISA) && BROKEN
327 help 327 help
328 This is a driver for the SX and SI multiport serial cards. 328 This is a driver for the SX and SI multiport serial cards.
329 Please read the file <file:Documentation/serial/sx.txt> for details. 329 Please read the file <file:Documentation/serial/sx.txt> for details.
@@ -334,7 +334,7 @@ config SX
334 334
335config RIO 335config RIO
336 tristate "Specialix RIO system support" 336 tristate "Specialix RIO system support"
337 depends on SERIAL_NONSTANDARD 337 depends on SERIAL_NONSTANDARD && BROKEN
338 help 338 help
339 This is a driver for the Specialix RIO, a smart serial card which 339 This is a driver for the Specialix RIO, a smart serial card which
340 drives an outboard box that can support up to 128 ports. Product 340 drives an outboard box that can support up to 128 ports. Product
@@ -395,7 +395,7 @@ config NOZOMI
395 395
396config A2232 396config A2232
397 tristate "Commodore A2232 serial support (EXPERIMENTAL)" 397 tristate "Commodore A2232 serial support (EXPERIMENTAL)"
398 depends on EXPERIMENTAL && ZORRO && BROKEN_ON_SMP 398 depends on EXPERIMENTAL && ZORRO && BROKEN
399 ---help--- 399 ---help---
400 This option supports the 2232 7-port serial card shipped with the 400 This option supports the 2232 7-port serial card shipped with the
401 Amiga 2000 and other Zorro-bus machines, dating from 1989. At 401 Amiga 2000 and other Zorro-bus machines, dating from 1989. At
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index 4068467ce7b9..3cb56a049e24 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -62,6 +62,7 @@
62#define PCI_DEVICE_ID_INTEL_IGDNG_D_IG 0x0042 62#define PCI_DEVICE_ID_INTEL_IGDNG_D_IG 0x0042
63#define PCI_DEVICE_ID_INTEL_IGDNG_M_HB 0x0044 63#define PCI_DEVICE_ID_INTEL_IGDNG_M_HB 0x0044
64#define PCI_DEVICE_ID_INTEL_IGDNG_MA_HB 0x0062 64#define PCI_DEVICE_ID_INTEL_IGDNG_MA_HB 0x0062
65#define PCI_DEVICE_ID_INTEL_IGDNG_MC2_HB 0x006a
65#define PCI_DEVICE_ID_INTEL_IGDNG_M_IG 0x0046 66#define PCI_DEVICE_ID_INTEL_IGDNG_M_IG 0x0046
66 67
67/* cover 915 and 945 variants */ 68/* cover 915 and 945 variants */
@@ -96,7 +97,8 @@
96 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_B43_HB || \ 97 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_B43_HB || \
97 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_D_HB || \ 98 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_D_HB || \
98 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_M_HB || \ 99 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_M_HB || \
99 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_MA_HB) 100 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_MA_HB || \
101 agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_MC2_HB)
100 102
101extern int agp_memory_reserved; 103extern int agp_memory_reserved;
102 104
@@ -1161,12 +1163,6 @@ static int intel_i915_configure(void)
1161 1163
1162 intel_i9xx_setup_flush(); 1164 intel_i9xx_setup_flush();
1163 1165
1164#ifdef USE_PCI_DMA_API
1165 if (pci_set_dma_mask(intel_private.pcidev, DMA_BIT_MASK(36)))
1166 dev_err(&intel_private.pcidev->dev,
1167 "set gfx device dma mask 36bit failed!\n");
1168#endif
1169
1170 return 0; 1166 return 0;
1171} 1167}
1172 1168
@@ -1364,6 +1360,7 @@ static void intel_i965_get_gtt_range(int *gtt_offset, int *gtt_size)
1364 case PCI_DEVICE_ID_INTEL_IGDNG_D_HB: 1360 case PCI_DEVICE_ID_INTEL_IGDNG_D_HB:
1365 case PCI_DEVICE_ID_INTEL_IGDNG_M_HB: 1361 case PCI_DEVICE_ID_INTEL_IGDNG_M_HB:
1366 case PCI_DEVICE_ID_INTEL_IGDNG_MA_HB: 1362 case PCI_DEVICE_ID_INTEL_IGDNG_MA_HB:
1363 case PCI_DEVICE_ID_INTEL_IGDNG_MC2_HB:
1367 *gtt_offset = *gtt_size = MB(2); 1364 *gtt_offset = *gtt_size = MB(2);
1368 break; 1365 break;
1369 default: 1366 default:
@@ -2365,6 +2362,8 @@ static const struct intel_driver_description {
2365 "IGDNG/M", NULL, &intel_i965_driver }, 2362 "IGDNG/M", NULL, &intel_i965_driver },
2366 { PCI_DEVICE_ID_INTEL_IGDNG_MA_HB, PCI_DEVICE_ID_INTEL_IGDNG_M_IG, 0, 2363 { PCI_DEVICE_ID_INTEL_IGDNG_MA_HB, PCI_DEVICE_ID_INTEL_IGDNG_M_IG, 0,
2367 "IGDNG/MA", NULL, &intel_i965_driver }, 2364 "IGDNG/MA", NULL, &intel_i965_driver },
2365 { PCI_DEVICE_ID_INTEL_IGDNG_MC2_HB, PCI_DEVICE_ID_INTEL_IGDNG_M_IG, 0,
2366 "IGDNG/MC2", NULL, &intel_i965_driver },
2368 { 0, 0, 0, NULL, NULL, NULL } 2367 { 0, 0, 0, NULL, NULL, NULL }
2369}; 2368};
2370 2369
@@ -2456,6 +2455,11 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev,
2456 &bridge->mode); 2455 &bridge->mode);
2457 } 2456 }
2458 2457
2458 if (bridge->driver->mask_memory == intel_i965_mask_memory)
2459 if (pci_set_dma_mask(intel_private.pcidev, DMA_BIT_MASK(36)))
2460 dev_err(&intel_private.pcidev->dev,
2461 "set gfx device dma mask 36bit failed!\n");
2462
2459 pci_set_drvdata(pdev, bridge); 2463 pci_set_drvdata(pdev, bridge);
2460 return agp_add_bridge(bridge); 2464 return agp_add_bridge(bridge);
2461} 2465}
@@ -2561,6 +2565,7 @@ static struct pci_device_id agp_intel_pci_table[] = {
2561 ID(PCI_DEVICE_ID_INTEL_IGDNG_D_HB), 2565 ID(PCI_DEVICE_ID_INTEL_IGDNG_D_HB),
2562 ID(PCI_DEVICE_ID_INTEL_IGDNG_M_HB), 2566 ID(PCI_DEVICE_ID_INTEL_IGDNG_M_HB),
2563 ID(PCI_DEVICE_ID_INTEL_IGDNG_MA_HB), 2567 ID(PCI_DEVICE_ID_INTEL_IGDNG_MA_HB),
2568 ID(PCI_DEVICE_ID_INTEL_IGDNG_MC2_HB),
2564 { } 2569 { }
2565}; 2570};
2566 2571
diff --git a/drivers/char/hvc_xen.c b/drivers/char/hvc_xen.c
index eba999f8598d..a6ee32b599a8 100644
--- a/drivers/char/hvc_xen.c
+++ b/drivers/char/hvc_xen.c
@@ -55,7 +55,7 @@ static inline void notify_daemon(void)
55 notify_remote_via_evtchn(xen_start_info->console.domU.evtchn); 55 notify_remote_via_evtchn(xen_start_info->console.domU.evtchn);
56} 56}
57 57
58static int write_console(uint32_t vtermno, const char *data, int len) 58static int __write_console(const char *data, int len)
59{ 59{
60 struct xencons_interface *intf = xencons_interface(); 60 struct xencons_interface *intf = xencons_interface();
61 XENCONS_RING_IDX cons, prod; 61 XENCONS_RING_IDX cons, prod;
@@ -76,6 +76,29 @@ static int write_console(uint32_t vtermno, const char *data, int len)
76 return sent; 76 return sent;
77} 77}
78 78
79static int write_console(uint32_t vtermno, const char *data, int len)
80{
81 int ret = len;
82
83 /*
84 * Make sure the whole buffer is emitted, polling if
85 * necessary. We don't ever want to rely on the hvc daemon
86 * because the most interesting console output is when the
87 * kernel is crippled.
88 */
89 while (len) {
90 int sent = __write_console(data, len);
91
92 data += sent;
93 len -= sent;
94
95 if (unlikely(len))
96 HYPERVISOR_sched_op(SCHEDOP_yield, NULL);
97 }
98
99 return ret;
100}
101
79static int read_console(uint32_t vtermno, char *buf, int len) 102static int read_console(uint32_t vtermno, char *buf, int len)
80{ 103{
81 struct xencons_interface *intf = xencons_interface(); 104 struct xencons_interface *intf = xencons_interface();
diff --git a/drivers/char/keyboard.c b/drivers/char/keyboard.c
index 737be953cc58..950837cf9e9c 100644
--- a/drivers/char/keyboard.c
+++ b/drivers/char/keyboard.c
@@ -1249,7 +1249,7 @@ static void kbd_keycode(unsigned int keycode, int down, int hw_raw)
1249 1249
1250 if (keycode >= NR_KEYS) 1250 if (keycode >= NR_KEYS)
1251 if (keycode >= KEY_BRL_DOT1 && keycode <= KEY_BRL_DOT8) 1251 if (keycode >= KEY_BRL_DOT1 && keycode <= KEY_BRL_DOT8)
1252 keysym = K(KT_BRL, keycode - KEY_BRL_DOT1 + 1); 1252 keysym = U(K(KT_BRL, keycode - KEY_BRL_DOT1 + 1));
1253 else 1253 else
1254 return; 1254 return;
1255 else 1255 else
diff --git a/drivers/char/tty_port.c b/drivers/char/tty_port.c
index a4bbb28f10be..c63f3d33914a 100644
--- a/drivers/char/tty_port.c
+++ b/drivers/char/tty_port.c
@@ -219,8 +219,14 @@ int tty_port_block_til_ready(struct tty_port *port,
219 219
220 /* if non-blocking mode is set we can pass directly to open unless 220 /* if non-blocking mode is set we can pass directly to open unless
221 the port has just hung up or is in another error state */ 221 the port has just hung up or is in another error state */
222 if ((filp->f_flags & O_NONBLOCK) || 222 if (tty->flags & (1 << TTY_IO_ERROR)) {
223 (tty->flags & (1 << TTY_IO_ERROR))) { 223 port->flags |= ASYNC_NORMAL_ACTIVE;
224 return 0;
225 }
226 if (filp->f_flags & O_NONBLOCK) {
227 /* Indicate we are open */
228 if (tty->termios->c_cflag & CBAUD)
229 tty_port_raise_dtr_rts(port);
224 port->flags |= ASYNC_NORMAL_ACTIVE; 230 port->flags |= ASYNC_NORMAL_ACTIVE;
225 return 0; 231 return 0;
226 } 232 }
diff --git a/drivers/char/vt_ioctl.c b/drivers/char/vt_ioctl.c
index ed86d3bf249a..6aa10284104a 100644
--- a/drivers/char/vt_ioctl.c
+++ b/drivers/char/vt_ioctl.c
@@ -103,8 +103,8 @@ void vt_event_post(unsigned int event, unsigned int old, unsigned int new)
103 ve->event.event = event; 103 ve->event.event = event;
104 /* kernel view is consoles 0..n-1, user space view is 104 /* kernel view is consoles 0..n-1, user space view is
105 console 1..n with 0 meaning current, so we must bias */ 105 console 1..n with 0 meaning current, so we must bias */
106 ve->event.old = old + 1; 106 ve->event.oldev = old + 1;
107 ve->event.new = new + 1; 107 ve->event.newev = new + 1;
108 wake = 1; 108 wake = 1;
109 ve->done = 1; 109 ve->done = 1;
110 } 110 }
@@ -186,7 +186,7 @@ int vt_waitactive(int n)
186 vt_event_wait(&vw); 186 vt_event_wait(&vw);
187 if (vw.done == 0) 187 if (vw.done == 0)
188 return -EINTR; 188 return -EINTR;
189 } while (vw.event.new != n); 189 } while (vw.event.newev != n);
190 return 0; 190 return 0;
191} 191}
192 192
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 3938c7817095..ff57c40e9b8b 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -41,7 +41,7 @@ static struct cpufreq_driver *cpufreq_driver;
41static DEFINE_PER_CPU(struct cpufreq_policy *, cpufreq_cpu_data); 41static DEFINE_PER_CPU(struct cpufreq_policy *, cpufreq_cpu_data);
42#ifdef CONFIG_HOTPLUG_CPU 42#ifdef CONFIG_HOTPLUG_CPU
43/* This one keeps track of the previously set governor of a removed CPU */ 43/* This one keeps track of the previously set governor of a removed CPU */
44static DEFINE_PER_CPU(struct cpufreq_governor *, cpufreq_cpu_governor); 44static DEFINE_PER_CPU(char[CPUFREQ_NAME_LEN], cpufreq_cpu_governor);
45#endif 45#endif
46static DEFINE_SPINLOCK(cpufreq_driver_lock); 46static DEFINE_SPINLOCK(cpufreq_driver_lock);
47 47
@@ -774,10 +774,12 @@ int cpufreq_add_dev_policy(unsigned int cpu, struct cpufreq_policy *policy,
774#ifdef CONFIG_SMP 774#ifdef CONFIG_SMP
775 unsigned long flags; 775 unsigned long flags;
776 unsigned int j; 776 unsigned int j;
777
778#ifdef CONFIG_HOTPLUG_CPU 777#ifdef CONFIG_HOTPLUG_CPU
779 if (per_cpu(cpufreq_cpu_governor, cpu)) { 778 struct cpufreq_governor *gov;
780 policy->governor = per_cpu(cpufreq_cpu_governor, cpu); 779
780 gov = __find_governor(per_cpu(cpufreq_cpu_governor, cpu));
781 if (gov) {
782 policy->governor = gov;
781 dprintk("Restoring governor %s for cpu %d\n", 783 dprintk("Restoring governor %s for cpu %d\n",
782 policy->governor->name, cpu); 784 policy->governor->name, cpu);
783 } 785 }
@@ -949,10 +951,13 @@ err_out_kobj_put:
949static int cpufreq_add_dev(struct sys_device *sys_dev) 951static int cpufreq_add_dev(struct sys_device *sys_dev)
950{ 952{
951 unsigned int cpu = sys_dev->id; 953 unsigned int cpu = sys_dev->id;
952 int ret = 0; 954 int ret = 0, found = 0;
953 struct cpufreq_policy *policy; 955 struct cpufreq_policy *policy;
954 unsigned long flags; 956 unsigned long flags;
955 unsigned int j; 957 unsigned int j;
958#ifdef CONFIG_HOTPLUG_CPU
959 int sibling;
960#endif
956 961
957 if (cpu_is_offline(cpu)) 962 if (cpu_is_offline(cpu))
958 return 0; 963 return 0;
@@ -999,7 +1004,19 @@ static int cpufreq_add_dev(struct sys_device *sys_dev)
999 INIT_WORK(&policy->update, handle_update); 1004 INIT_WORK(&policy->update, handle_update);
1000 1005
1001 /* Set governor before ->init, so that driver could check it */ 1006 /* Set governor before ->init, so that driver could check it */
1002 policy->governor = CPUFREQ_DEFAULT_GOVERNOR; 1007#ifdef CONFIG_HOTPLUG_CPU
1008 for_each_online_cpu(sibling) {
1009 struct cpufreq_policy *cp = per_cpu(cpufreq_cpu_data, sibling);
1010 if (cp && cp->governor &&
1011 (cpumask_test_cpu(cpu, cp->related_cpus))) {
1012 policy->governor = cp->governor;
1013 found = 1;
1014 break;
1015 }
1016 }
1017#endif
1018 if (!found)
1019 policy->governor = CPUFREQ_DEFAULT_GOVERNOR;
1003 /* call driver. From then on the cpufreq must be able 1020 /* call driver. From then on the cpufreq must be able
1004 * to accept all calls to ->verify and ->setpolicy for this CPU 1021 * to accept all calls to ->verify and ->setpolicy for this CPU
1005 */ 1022 */
@@ -1111,7 +1128,8 @@ static int __cpufreq_remove_dev(struct sys_device *sys_dev)
1111#ifdef CONFIG_SMP 1128#ifdef CONFIG_SMP
1112 1129
1113#ifdef CONFIG_HOTPLUG_CPU 1130#ifdef CONFIG_HOTPLUG_CPU
1114 per_cpu(cpufreq_cpu_governor, cpu) = data->governor; 1131 strncpy(per_cpu(cpufreq_cpu_governor, cpu), data->governor->name,
1132 CPUFREQ_NAME_LEN);
1115#endif 1133#endif
1116 1134
1117 /* if we have other CPUs still registered, we need to unlink them, 1135 /* if we have other CPUs still registered, we need to unlink them,
@@ -1135,7 +1153,8 @@ static int __cpufreq_remove_dev(struct sys_device *sys_dev)
1135 continue; 1153 continue;
1136 dprintk("removing link for cpu %u\n", j); 1154 dprintk("removing link for cpu %u\n", j);
1137#ifdef CONFIG_HOTPLUG_CPU 1155#ifdef CONFIG_HOTPLUG_CPU
1138 per_cpu(cpufreq_cpu_governor, j) = data->governor; 1156 strncpy(per_cpu(cpufreq_cpu_governor, j),
1157 data->governor->name, CPUFREQ_NAME_LEN);
1139#endif 1158#endif
1140 cpu_sys_dev = get_cpu_sysdev(j); 1159 cpu_sys_dev = get_cpu_sysdev(j);
1141 sysfs_remove_link(&cpu_sys_dev->kobj, "cpufreq"); 1160 sysfs_remove_link(&cpu_sys_dev->kobj, "cpufreq");
@@ -1606,9 +1625,22 @@ EXPORT_SYMBOL_GPL(cpufreq_register_governor);
1606 1625
1607void cpufreq_unregister_governor(struct cpufreq_governor *governor) 1626void cpufreq_unregister_governor(struct cpufreq_governor *governor)
1608{ 1627{
1628#ifdef CONFIG_HOTPLUG_CPU
1629 int cpu;
1630#endif
1631
1609 if (!governor) 1632 if (!governor)
1610 return; 1633 return;
1611 1634
1635#ifdef CONFIG_HOTPLUG_CPU
1636 for_each_present_cpu(cpu) {
1637 if (cpu_online(cpu))
1638 continue;
1639 if (!strcmp(per_cpu(cpufreq_cpu_governor, cpu), governor->name))
1640 strcpy(per_cpu(cpufreq_cpu_governor, cpu), "\0");
1641 }
1642#endif
1643
1612 mutex_lock(&cpufreq_governor_mutex); 1644 mutex_lock(&cpufreq_governor_mutex);
1613 list_del(&governor->governor_list); 1645 list_del(&governor->governor_list);
1614 mutex_unlock(&cpufreq_governor_mutex); 1646 mutex_unlock(&cpufreq_governor_mutex);
diff --git a/drivers/cpufreq/cpufreq_conservative.c b/drivers/cpufreq/cpufreq_conservative.c
index bc33ddc9c97c..c7b081b839ff 100644
--- a/drivers/cpufreq/cpufreq_conservative.c
+++ b/drivers/cpufreq/cpufreq_conservative.c
@@ -116,9 +116,9 @@ static inline cputime64_t get_cpu_idle_time_jiffy(unsigned int cpu,
116 116
117 idle_time = cputime64_sub(cur_wall_time, busy_time); 117 idle_time = cputime64_sub(cur_wall_time, busy_time);
118 if (wall) 118 if (wall)
119 *wall = cur_wall_time; 119 *wall = (cputime64_t)jiffies_to_usecs(cur_wall_time);
120 120
121 return idle_time; 121 return (cputime64_t)jiffies_to_usecs(idle_time);;
122} 122}
123 123
124static inline cputime64_t get_cpu_idle_time(unsigned int cpu, cputime64_t *wall) 124static inline cputime64_t get_cpu_idle_time(unsigned int cpu, cputime64_t *wall)
diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c
index 071699de50ee..4b34ade2332b 100644
--- a/drivers/cpufreq/cpufreq_ondemand.c
+++ b/drivers/cpufreq/cpufreq_ondemand.c
@@ -133,9 +133,9 @@ static inline cputime64_t get_cpu_idle_time_jiffy(unsigned int cpu,
133 133
134 idle_time = cputime64_sub(cur_wall_time, busy_time); 134 idle_time = cputime64_sub(cur_wall_time, busy_time);
135 if (wall) 135 if (wall)
136 *wall = cur_wall_time; 136 *wall = (cputime64_t)jiffies_to_usecs(cur_wall_time);
137 137
138 return idle_time; 138 return (cputime64_t)jiffies_to_usecs(idle_time);
139} 139}
140 140
141static inline cputime64_t get_cpu_idle_time(unsigned int cpu, cputime64_t *wall) 141static inline cputime64_t get_cpu_idle_time(unsigned int cpu, cputime64_t *wall)
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
index ad41f19b8e3f..12fdd3987a36 100644
--- a/drivers/cpuidle/cpuidle.c
+++ b/drivers/cpuidle/cpuidle.c
@@ -76,8 +76,11 @@ static void cpuidle_idle_call(void)
76#endif 76#endif
77 /* ask the governor for the next state */ 77 /* ask the governor for the next state */
78 next_state = cpuidle_curr_governor->select(dev); 78 next_state = cpuidle_curr_governor->select(dev);
79 if (need_resched()) 79 if (need_resched()) {
80 local_irq_enable();
80 return; 81 return;
82 }
83
81 target_state = &dev->states[next_state]; 84 target_state = &dev->states[next_state];
82 85
83 /* enter the state and update stats */ 86 /* enter the state and update stats */
diff --git a/drivers/crypto/padlock-aes.c b/drivers/crypto/padlock-aes.c
index a9952b1236b0..84c51e177269 100644
--- a/drivers/crypto/padlock-aes.c
+++ b/drivers/crypto/padlock-aes.c
@@ -236,7 +236,7 @@ static inline void ecb_crypt(const u8 *in, u8 *out, u32 *key,
236 /* Padlock in ECB mode fetches at least ecb_fetch_bytes of data. 236 /* Padlock in ECB mode fetches at least ecb_fetch_bytes of data.
237 * We could avoid some copying here but it's probably not worth it. 237 * We could avoid some copying here but it's probably not worth it.
238 */ 238 */
239 if (unlikely(((unsigned long)in & PAGE_SIZE) + ecb_fetch_bytes > PAGE_SIZE)) { 239 if (unlikely(((unsigned long)in & ~PAGE_MASK) + ecb_fetch_bytes > PAGE_SIZE)) {
240 ecb_crypt_copy(in, out, key, cword, count); 240 ecb_crypt_copy(in, out, key, cword, count);
241 return; 241 return;
242 } 242 }
@@ -248,7 +248,7 @@ static inline u8 *cbc_crypt(const u8 *in, u8 *out, u32 *key,
248 u8 *iv, struct cword *cword, int count) 248 u8 *iv, struct cword *cword, int count)
249{ 249{
250 /* Padlock in CBC mode fetches at least cbc_fetch_bytes of data. */ 250 /* Padlock in CBC mode fetches at least cbc_fetch_bytes of data. */
251 if (unlikely(((unsigned long)in & PAGE_SIZE) + cbc_fetch_bytes > PAGE_SIZE)) 251 if (unlikely(((unsigned long)in & ~PAGE_MASK) + cbc_fetch_bytes > PAGE_SIZE))
252 return cbc_crypt_copy(in, out, key, iv, cword, count); 252 return cbc_crypt_copy(in, out, key, iv, cword, count);
253 253
254 return rep_xcrypt_cbc(in, out, key, iv, cword, count); 254 return rep_xcrypt_cbc(in, out, key, iv, cword, count);
diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index 5903a88351bf..b401dadad4a8 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -26,6 +26,8 @@ config INTEL_IOATDMA
26 select DMA_ENGINE 26 select DMA_ENGINE
27 select DCA 27 select DCA
28 select ASYNC_TX_DISABLE_CHANNEL_SWITCH 28 select ASYNC_TX_DISABLE_CHANNEL_SWITCH
29 select ASYNC_TX_DISABLE_PQ_VAL_DMA
30 select ASYNC_TX_DISABLE_XOR_VAL_DMA
29 help 31 help
30 Enable support for the Intel(R) I/OAT DMA engine present 32 Enable support for the Intel(R) I/OAT DMA engine present
31 in recent Intel Xeon chipsets. 33 in recent Intel Xeon chipsets.
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
index bd0b248de2cf..8f99354082ce 100644
--- a/drivers/dma/dmaengine.c
+++ b/drivers/dma/dmaengine.c
@@ -632,11 +632,21 @@ static bool device_has_all_tx_types(struct dma_device *device)
632 #if defined(CONFIG_ASYNC_XOR) || defined(CONFIG_ASYNC_XOR_MODULE) 632 #if defined(CONFIG_ASYNC_XOR) || defined(CONFIG_ASYNC_XOR_MODULE)
633 if (!dma_has_cap(DMA_XOR, device->cap_mask)) 633 if (!dma_has_cap(DMA_XOR, device->cap_mask))
634 return false; 634 return false;
635
636 #ifndef CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA
637 if (!dma_has_cap(DMA_XOR_VAL, device->cap_mask))
638 return false;
639 #endif
635 #endif 640 #endif
636 641
637 #if defined(CONFIG_ASYNC_PQ) || defined(CONFIG_ASYNC_PQ_MODULE) 642 #if defined(CONFIG_ASYNC_PQ) || defined(CONFIG_ASYNC_PQ_MODULE)
638 if (!dma_has_cap(DMA_PQ, device->cap_mask)) 643 if (!dma_has_cap(DMA_PQ, device->cap_mask))
639 return false; 644 return false;
645
646 #ifndef CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA
647 if (!dma_has_cap(DMA_PQ_VAL, device->cap_mask))
648 return false;
649 #endif
640 #endif 650 #endif
641 651
642 return true; 652 return true;
diff --git a/drivers/dma/ioat/dca.c b/drivers/dma/ioat/dca.c
index 69d02615c4d6..abd9038e06b1 100644
--- a/drivers/dma/ioat/dca.c
+++ b/drivers/dma/ioat/dca.c
@@ -98,17 +98,17 @@ static int dca_enabled_in_bios(struct pci_dev *pdev)
98 cpuid_level_9 = cpuid_eax(9); 98 cpuid_level_9 = cpuid_eax(9);
99 res = test_bit(0, &cpuid_level_9); 99 res = test_bit(0, &cpuid_level_9);
100 if (!res) 100 if (!res)
101 dev_err(&pdev->dev, "DCA is disabled in BIOS\n"); 101 dev_dbg(&pdev->dev, "DCA is disabled in BIOS\n");
102 102
103 return res; 103 return res;
104} 104}
105 105
106static int system_has_dca_enabled(struct pci_dev *pdev) 106int system_has_dca_enabled(struct pci_dev *pdev)
107{ 107{
108 if (boot_cpu_has(X86_FEATURE_DCA)) 108 if (boot_cpu_has(X86_FEATURE_DCA))
109 return dca_enabled_in_bios(pdev); 109 return dca_enabled_in_bios(pdev);
110 110
111 dev_err(&pdev->dev, "boot cpu doesn't have X86_FEATURE_DCA\n"); 111 dev_dbg(&pdev->dev, "boot cpu doesn't have X86_FEATURE_DCA\n");
112 return 0; 112 return 0;
113} 113}
114 114
diff --git a/drivers/dma/ioat/dma.h b/drivers/dma/ioat/dma.h
index c14fdfeb7f33..45edde996480 100644
--- a/drivers/dma/ioat/dma.h
+++ b/drivers/dma/ioat/dma.h
@@ -297,9 +297,7 @@ static inline bool is_ioat_suspended(unsigned long status)
297/* channel was fatally programmed */ 297/* channel was fatally programmed */
298static inline bool is_ioat_bug(unsigned long err) 298static inline bool is_ioat_bug(unsigned long err)
299{ 299{
300 return !!(err & (IOAT_CHANERR_SRC_ADDR_ERR|IOAT_CHANERR_DEST_ADDR_ERR| 300 return !!err;
301 IOAT_CHANERR_NEXT_ADDR_ERR|IOAT_CHANERR_CONTROL_ERR|
302 IOAT_CHANERR_LENGTH_ERR));
303} 301}
304 302
305static inline void ioat_unmap(struct pci_dev *pdev, dma_addr_t addr, size_t len, 303static inline void ioat_unmap(struct pci_dev *pdev, dma_addr_t addr, size_t len,
diff --git a/drivers/dma/ioat/dma_v2.c b/drivers/dma/ioat/dma_v2.c
index 96ffab7d37a7..8f1f7f05deaa 100644
--- a/drivers/dma/ioat/dma_v2.c
+++ b/drivers/dma/ioat/dma_v2.c
@@ -279,6 +279,8 @@ void ioat2_timer_event(unsigned long data)
279 u32 chanerr; 279 u32 chanerr;
280 280
281 chanerr = readl(chan->reg_base + IOAT_CHANERR_OFFSET); 281 chanerr = readl(chan->reg_base + IOAT_CHANERR_OFFSET);
282 dev_err(to_dev(chan), "%s: Channel halted (%x)\n",
283 __func__, chanerr);
282 BUG_ON(is_ioat_bug(chanerr)); 284 BUG_ON(is_ioat_bug(chanerr));
283 } 285 }
284 286
diff --git a/drivers/dma/ioat/dma_v3.c b/drivers/dma/ioat/dma_v3.c
index 35d1e33afd5b..42f6f10fb0cc 100644
--- a/drivers/dma/ioat/dma_v3.c
+++ b/drivers/dma/ioat/dma_v3.c
@@ -378,6 +378,8 @@ static void ioat3_timer_event(unsigned long data)
378 u32 chanerr; 378 u32 chanerr;
379 379
380 chanerr = readl(chan->reg_base + IOAT_CHANERR_OFFSET); 380 chanerr = readl(chan->reg_base + IOAT_CHANERR_OFFSET);
381 dev_err(to_dev(chan), "%s: Channel halted (%x)\n",
382 __func__, chanerr);
381 BUG_ON(is_ioat_bug(chanerr)); 383 BUG_ON(is_ioat_bug(chanerr));
382 } 384 }
383 385
@@ -569,7 +571,7 @@ __ioat3_prep_xor_lock(struct dma_chan *c, enum sum_check_flags *result,
569 dump_desc_dbg(ioat, compl_desc); 571 dump_desc_dbg(ioat, compl_desc);
570 572
571 /* we leave the channel locked to ensure in order submission */ 573 /* we leave the channel locked to ensure in order submission */
572 return &desc->txd; 574 return &compl_desc->txd;
573} 575}
574 576
575static struct dma_async_tx_descriptor * 577static struct dma_async_tx_descriptor *
@@ -728,7 +730,7 @@ __ioat3_prep_pq_lock(struct dma_chan *c, enum sum_check_flags *result,
728 dump_desc_dbg(ioat, compl_desc); 730 dump_desc_dbg(ioat, compl_desc);
729 731
730 /* we leave the channel locked to ensure in order submission */ 732 /* we leave the channel locked to ensure in order submission */
731 return &desc->txd; 733 return &compl_desc->txd;
732} 734}
733 735
734static struct dma_async_tx_descriptor * 736static struct dma_async_tx_descriptor *
@@ -736,10 +738,16 @@ ioat3_prep_pq(struct dma_chan *chan, dma_addr_t *dst, dma_addr_t *src,
736 unsigned int src_cnt, const unsigned char *scf, size_t len, 738 unsigned int src_cnt, const unsigned char *scf, size_t len,
737 unsigned long flags) 739 unsigned long flags)
738{ 740{
741 /* specify valid address for disabled result */
742 if (flags & DMA_PREP_PQ_DISABLE_P)
743 dst[0] = dst[1];
744 if (flags & DMA_PREP_PQ_DISABLE_Q)
745 dst[1] = dst[0];
746
739 /* handle the single source multiply case from the raid6 747 /* handle the single source multiply case from the raid6
740 * recovery path 748 * recovery path
741 */ 749 */
742 if (unlikely((flags & DMA_PREP_PQ_DISABLE_P) && src_cnt == 1)) { 750 if ((flags & DMA_PREP_PQ_DISABLE_P) && src_cnt == 1) {
743 dma_addr_t single_source[2]; 751 dma_addr_t single_source[2];
744 unsigned char single_source_coef[2]; 752 unsigned char single_source_coef[2];
745 753
@@ -761,6 +769,12 @@ ioat3_prep_pq_val(struct dma_chan *chan, dma_addr_t *pq, dma_addr_t *src,
761 unsigned int src_cnt, const unsigned char *scf, size_t len, 769 unsigned int src_cnt, const unsigned char *scf, size_t len,
762 enum sum_check_flags *pqres, unsigned long flags) 770 enum sum_check_flags *pqres, unsigned long flags)
763{ 771{
772 /* specify valid address for disabled result */
773 if (flags & DMA_PREP_PQ_DISABLE_P)
774 pq[0] = pq[1];
775 if (flags & DMA_PREP_PQ_DISABLE_Q)
776 pq[1] = pq[0];
777
764 /* the cleanup routine only sets bits on validate failure, it 778 /* the cleanup routine only sets bits on validate failure, it
765 * does not clear bits on validate success... so clear it here 779 * does not clear bits on validate success... so clear it here
766 */ 780 */
@@ -778,9 +792,9 @@ ioat3_prep_pqxor(struct dma_chan *chan, dma_addr_t dst, dma_addr_t *src,
778 dma_addr_t pq[2]; 792 dma_addr_t pq[2];
779 793
780 memset(scf, 0, src_cnt); 794 memset(scf, 0, src_cnt);
781 flags |= DMA_PREP_PQ_DISABLE_Q;
782 pq[0] = dst; 795 pq[0] = dst;
783 pq[1] = ~0; 796 flags |= DMA_PREP_PQ_DISABLE_Q;
797 pq[1] = dst; /* specify valid address for disabled result */
784 798
785 return __ioat3_prep_pq_lock(chan, NULL, pq, src, src_cnt, scf, len, 799 return __ioat3_prep_pq_lock(chan, NULL, pq, src, src_cnt, scf, len,
786 flags); 800 flags);
@@ -800,9 +814,9 @@ ioat3_prep_pqxor_val(struct dma_chan *chan, dma_addr_t *src,
800 *result = 0; 814 *result = 0;
801 815
802 memset(scf, 0, src_cnt); 816 memset(scf, 0, src_cnt);
803 flags |= DMA_PREP_PQ_DISABLE_Q;
804 pq[0] = src[0]; 817 pq[0] = src[0];
805 pq[1] = ~0; 818 flags |= DMA_PREP_PQ_DISABLE_Q;
819 pq[1] = pq[0]; /* specify valid address for disabled result */
806 820
807 return __ioat3_prep_pq_lock(chan, result, pq, &src[1], src_cnt - 1, scf, 821 return __ioat3_prep_pq_lock(chan, result, pq, &src[1], src_cnt - 1, scf,
808 len, flags); 822 len, flags);
@@ -1117,6 +1131,7 @@ static int __devinit ioat3_dma_self_test(struct ioatdma_device *device)
1117int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca) 1131int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca)
1118{ 1132{
1119 struct pci_dev *pdev = device->pdev; 1133 struct pci_dev *pdev = device->pdev;
1134 int dca_en = system_has_dca_enabled(pdev);
1120 struct dma_device *dma; 1135 struct dma_device *dma;
1121 struct dma_chan *c; 1136 struct dma_chan *c;
1122 struct ioat_chan_common *chan; 1137 struct ioat_chan_common *chan;
@@ -1137,6 +1152,11 @@ int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca)
1137 dma->device_prep_dma_interrupt = ioat3_prep_interrupt_lock; 1152 dma->device_prep_dma_interrupt = ioat3_prep_interrupt_lock;
1138 1153
1139 cap = readl(device->reg_base + IOAT_DMA_CAP_OFFSET); 1154 cap = readl(device->reg_base + IOAT_DMA_CAP_OFFSET);
1155
1156 /* dca is incompatible with raid operations */
1157 if (dca_en && (cap & (IOAT_CAP_XOR|IOAT_CAP_PQ)))
1158 cap &= ~(IOAT_CAP_XOR|IOAT_CAP_PQ);
1159
1140 if (cap & IOAT_CAP_XOR) { 1160 if (cap & IOAT_CAP_XOR) {
1141 is_raid_device = true; 1161 is_raid_device = true;
1142 dma->max_xor = 8; 1162 dma->max_xor = 8;
@@ -1186,6 +1206,16 @@ int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca)
1186 device->timer_fn = ioat2_timer_event; 1206 device->timer_fn = ioat2_timer_event;
1187 } 1207 }
1188 1208
1209 #ifdef CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA
1210 dma_cap_clear(DMA_PQ_VAL, dma->cap_mask);
1211 dma->device_prep_dma_pq_val = NULL;
1212 #endif
1213
1214 #ifdef CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA
1215 dma_cap_clear(DMA_XOR_VAL, dma->cap_mask);
1216 dma->device_prep_dma_xor_val = NULL;
1217 #endif
1218
1189 /* -= IOAT ver.3 workarounds =- */ 1219 /* -= IOAT ver.3 workarounds =- */
1190 /* Write CHANERRMSK_INT with 3E07h to mask out the errors 1220 /* Write CHANERRMSK_INT with 3E07h to mask out the errors
1191 * that can cause stability issues for IOAT ver.3 1221 * that can cause stability issues for IOAT ver.3
diff --git a/drivers/dma/ioat/hw.h b/drivers/dma/ioat/hw.h
index 99afb12bd409..60e675455b6a 100644
--- a/drivers/dma/ioat/hw.h
+++ b/drivers/dma/ioat/hw.h
@@ -39,6 +39,8 @@
39#define IOAT_VER_3_0 0x30 /* Version 3.0 */ 39#define IOAT_VER_3_0 0x30 /* Version 3.0 */
40#define IOAT_VER_3_2 0x32 /* Version 3.2 */ 40#define IOAT_VER_3_2 0x32 /* Version 3.2 */
41 41
42int system_has_dca_enabled(struct pci_dev *pdev);
43
42struct ioat_dma_descriptor { 44struct ioat_dma_descriptor {
43 uint32_t size; 45 uint32_t size;
44 union { 46 union {
diff --git a/drivers/dma/ioat/registers.h b/drivers/dma/ioat/registers.h
index 63038e18ab03..f015ec196700 100644
--- a/drivers/dma/ioat/registers.h
+++ b/drivers/dma/ioat/registers.h
@@ -92,9 +92,7 @@
92#define IOAT_CHANCTRL_ERR_COMPLETION_EN 0x0004 92#define IOAT_CHANCTRL_ERR_COMPLETION_EN 0x0004
93#define IOAT_CHANCTRL_INT_REARM 0x0001 93#define IOAT_CHANCTRL_INT_REARM 0x0001
94#define IOAT_CHANCTRL_RUN (IOAT_CHANCTRL_INT_REARM |\ 94#define IOAT_CHANCTRL_RUN (IOAT_CHANCTRL_INT_REARM |\
95 IOAT_CHANCTRL_ERR_COMPLETION_EN |\ 95 IOAT_CHANCTRL_ANY_ERR_ABORT_EN)
96 IOAT_CHANCTRL_ANY_ERR_ABORT_EN |\
97 IOAT_CHANCTRL_ERR_INT_EN)
98 96
99#define IOAT_DMA_COMP_OFFSET 0x02 /* 16-bit DMA channel compatibility */ 97#define IOAT_DMA_COMP_OFFSET 0x02 /* 16-bit DMA channel compatibility */
100#define IOAT_DMA_COMP_V1 0x0001 /* Compatibility with DMA version 1 */ 98#define IOAT_DMA_COMP_V1 0x0001 /* Compatibility with DMA version 1 */
diff --git a/drivers/dma/shdma.c b/drivers/dma/shdma.c
index b3b065c4e5c1..034ecf0ace03 100644
--- a/drivers/dma/shdma.c
+++ b/drivers/dma/shdma.c
@@ -640,17 +640,16 @@ static int __init sh_dmae_probe(struct platform_device *pdev)
640#endif 640#endif
641 struct sh_dmae_device *shdev; 641 struct sh_dmae_device *shdev;
642 642
643 /* get platform data */
644 if (!pdev->dev.platform_data)
645 return -ENODEV;
646
643 shdev = kzalloc(sizeof(struct sh_dmae_device), GFP_KERNEL); 647 shdev = kzalloc(sizeof(struct sh_dmae_device), GFP_KERNEL);
644 if (!shdev) { 648 if (!shdev) {
645 dev_err(&pdev->dev, "No enough memory\n"); 649 dev_err(&pdev->dev, "No enough memory\n");
646 err = -ENOMEM; 650 return -ENOMEM;
647 goto shdev_err;
648 } 651 }
649 652
650 /* get platform data */
651 if (!pdev->dev.platform_data)
652 goto shdev_err;
653
654 /* platform data */ 653 /* platform data */
655 memcpy(&shdev->pdata, pdev->dev.platform_data, 654 memcpy(&shdev->pdata, pdev->dev.platform_data,
656 sizeof(struct sh_dmae_pdata)); 655 sizeof(struct sh_dmae_pdata));
@@ -722,7 +721,6 @@ eirq_err:
722rst_err: 721rst_err:
723 kfree(shdev); 722 kfree(shdev);
724 723
725shdev_err:
726 return err; 724 return err;
727} 725}
728 726
diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c
index d4560d9d5a83..a38831c82649 100644
--- a/drivers/edac/amd64_edac.c
+++ b/drivers/edac/amd64_edac.c
@@ -2254,7 +2254,7 @@ static inline void __amd64_decode_bus_error(struct mem_ctl_info *mci,
2254{ 2254{
2255 u32 ec = ERROR_CODE(info->nbsl); 2255 u32 ec = ERROR_CODE(info->nbsl);
2256 u32 xec = EXT_ERROR_CODE(info->nbsl); 2256 u32 xec = EXT_ERROR_CODE(info->nbsl);
2257 int ecc_type = info->nbsh & (0x3 << 13); 2257 int ecc_type = (info->nbsh >> 13) & 0x3;
2258 2258
2259 /* Bail early out if this was an 'observed' error */ 2259 /* Bail early out if this was an 'observed' error */
2260 if (PP(ec) == K8_NBSL_PP_OBS) 2260 if (PP(ec) == K8_NBSL_PP_OBS)
@@ -3163,7 +3163,7 @@ static int __init amd64_edac_init(void)
3163 opstate_init(); 3163 opstate_init();
3164 3164
3165 if (cache_k8_northbridges() < 0) 3165 if (cache_k8_northbridges() < 0)
3166 goto err_exit; 3166 return err;
3167 3167
3168 err = pci_register_driver(&amd64_pci_driver); 3168 err = pci_register_driver(&amd64_pci_driver);
3169 if (err) 3169 if (err)
@@ -3189,8 +3189,6 @@ static int __init amd64_edac_init(void)
3189 3189
3190err_2nd_stage: 3190err_2nd_stage:
3191 debugf0("2nd stage failed\n"); 3191 debugf0("2nd stage failed\n");
3192
3193err_exit:
3194 pci_unregister_driver(&amd64_pci_driver); 3192 pci_unregister_driver(&amd64_pci_driver);
3195 3193
3196 return err; 3194 return err;
diff --git a/drivers/edac/i5000_edac.c b/drivers/edac/i5000_edac.c
index d335086f4a26..77a9579d7167 100644
--- a/drivers/edac/i5000_edac.c
+++ b/drivers/edac/i5000_edac.c
@@ -1173,7 +1173,7 @@ static void i5000_get_mc_regs(struct mem_ctl_info *mci)
1173 pci_read_config_word(pvt->branch_1, where, 1173 pci_read_config_word(pvt->branch_1, where,
1174 &pvt->b1_mtr[slot_row]); 1174 &pvt->b1_mtr[slot_row]);
1175 debugf2("MTR%d where=0x%x B1 value=0x%x\n", slot_row, 1175 debugf2("MTR%d where=0x%x B1 value=0x%x\n", slot_row,
1176 where, pvt->b0_mtr[slot_row]); 1176 where, pvt->b1_mtr[slot_row]);
1177 } else { 1177 } else {
1178 pvt->b1_mtr[slot_row] = 0; 1178 pvt->b1_mtr[slot_row] = 0;
1179 } 1179 }
@@ -1232,7 +1232,7 @@ static int i5000_init_csrows(struct mem_ctl_info *mci)
1232 struct csrow_info *p_csrow; 1232 struct csrow_info *p_csrow;
1233 int empty, channel_count; 1233 int empty, channel_count;
1234 int max_csrows; 1234 int max_csrows;
1235 int mtr; 1235 int mtr, mtr1;
1236 int csrow_megs; 1236 int csrow_megs;
1237 int channel; 1237 int channel;
1238 int csrow; 1238 int csrow;
@@ -1251,9 +1251,10 @@ static int i5000_init_csrows(struct mem_ctl_info *mci)
1251 1251
1252 /* use branch 0 for the basis */ 1252 /* use branch 0 for the basis */
1253 mtr = pvt->b0_mtr[csrow >> 1]; 1253 mtr = pvt->b0_mtr[csrow >> 1];
1254 mtr1 = pvt->b1_mtr[csrow >> 1];
1254 1255
1255 /* if no DIMMS on this row, continue */ 1256 /* if no DIMMS on this row, continue */
1256 if (!MTR_DIMMS_PRESENT(mtr)) 1257 if (!MTR_DIMMS_PRESENT(mtr) && !MTR_DIMMS_PRESENT(mtr1))
1257 continue; 1258 continue;
1258 1259
1259 /* FAKE OUT VALUES, FIXME */ 1260 /* FAKE OUT VALUES, FIXME */
diff --git a/drivers/edac/i5400_edac.c b/drivers/edac/i5400_edac.c
index b08b6d8e2dc7..f99d10655ed4 100644
--- a/drivers/edac/i5400_edac.c
+++ b/drivers/edac/i5400_edac.c
@@ -46,9 +46,10 @@
46/* Limits for i5400 */ 46/* Limits for i5400 */
47#define NUM_MTRS_PER_BRANCH 4 47#define NUM_MTRS_PER_BRANCH 4
48#define CHANNELS_PER_BRANCH 2 48#define CHANNELS_PER_BRANCH 2
49#define MAX_DIMMS_PER_CHANNEL NUM_MTRS_PER_BRANCH
49#define MAX_CHANNELS 4 50#define MAX_CHANNELS 4
50#define MAX_DIMMS (MAX_CHANNELS * 4) /* Up to 4 DIMM's per channel */ 51/* max possible csrows per channel */
51#define MAX_CSROWS (MAX_DIMMS * 2) /* max possible csrows per channel */ 52#define MAX_CSROWS (MAX_DIMMS_PER_CHANNEL)
52 53
53/* Device 16, 54/* Device 16,
54 * Function 0: System Address 55 * Function 0: System Address
@@ -331,7 +332,6 @@ static const struct i5400_dev_info i5400_devs[] = {
331 332
332struct i5400_dimm_info { 333struct i5400_dimm_info {
333 int megabytes; /* size, 0 means not present */ 334 int megabytes; /* size, 0 means not present */
334 int dual_rank;
335}; 335};
336 336
337/* driver private data structure */ 337/* driver private data structure */
@@ -849,11 +849,9 @@ static int determine_mtr(struct i5400_pvt *pvt, int csrow, int channel)
849 int n; 849 int n;
850 850
851 /* There is one MTR for each slot pair of FB-DIMMs, 851 /* There is one MTR for each slot pair of FB-DIMMs,
852 Each slot may have one or two ranks (2 csrows),
853 Each slot pair may be at branch 0 or branch 1. 852 Each slot pair may be at branch 0 or branch 1.
854 So, csrow should be divided by eight
855 */ 853 */
856 n = csrow >> 3; 854 n = csrow;
857 855
858 if (n >= NUM_MTRS_PER_BRANCH) { 856 if (n >= NUM_MTRS_PER_BRANCH) {
859 debugf0("ERROR: trying to access an invalid csrow: %d\n", 857 debugf0("ERROR: trying to access an invalid csrow: %d\n",
@@ -905,25 +903,22 @@ static void handle_channel(struct i5400_pvt *pvt, int csrow, int channel,
905 amb_present_reg = determine_amb_present_reg(pvt, channel); 903 amb_present_reg = determine_amb_present_reg(pvt, channel);
906 904
907 /* Determine if there is a DIMM present in this DIMM slot */ 905 /* Determine if there is a DIMM present in this DIMM slot */
908 if (amb_present_reg & (1 << (csrow >> 1))) { 906 if (amb_present_reg & (1 << csrow)) {
909 dinfo->dual_rank = MTR_DIMM_RANK(mtr); 907 /* Start with the number of bits for a Bank
910 908 * on the DRAM */
911 if (!((dinfo->dual_rank == 0) && 909 addrBits = MTR_DRAM_BANKS_ADDR_BITS(mtr);
912 ((csrow & 0x1) == 0x1))) { 910 /* Add thenumber of ROW bits */
913 /* Start with the number of bits for a Bank 911 addrBits += MTR_DIMM_ROWS_ADDR_BITS(mtr);
914 * on the DRAM */ 912 /* add the number of COLUMN bits */
915 addrBits = MTR_DRAM_BANKS_ADDR_BITS(mtr); 913 addrBits += MTR_DIMM_COLS_ADDR_BITS(mtr);
916 /* Add thenumber of ROW bits */ 914 /* add the number of RANK bits */
917 addrBits += MTR_DIMM_ROWS_ADDR_BITS(mtr); 915 addrBits += MTR_DIMM_RANK(mtr);
918 /* add the number of COLUMN bits */ 916
919 addrBits += MTR_DIMM_COLS_ADDR_BITS(mtr); 917 addrBits += 6; /* add 64 bits per DIMM */
920 918 addrBits -= 20; /* divide by 2^^20 */
921 addrBits += 6; /* add 64 bits per DIMM */ 919 addrBits -= 3; /* 8 bits per bytes */
922 addrBits -= 20; /* divide by 2^^20 */ 920
923 addrBits -= 3; /* 8 bits per bytes */ 921 dinfo->megabytes = 1 << addrBits;
924
925 dinfo->megabytes = 1 << addrBits;
926 }
927 } 922 }
928 } 923 }
929} 924}
@@ -951,12 +946,12 @@ static void calculate_dimm_size(struct i5400_pvt *pvt)
951 return; 946 return;
952 } 947 }
953 948
954 /* Scan all the actual CSROWS (which is # of DIMMS * 2) 949 /* Scan all the actual CSROWS
955 * and calculate the information for each DIMM 950 * and calculate the information for each DIMM
956 * Start with the highest csrow first, to display it first 951 * Start with the highest csrow first, to display it first
957 * and work toward the 0th csrow 952 * and work toward the 0th csrow
958 */ 953 */
959 max_csrows = pvt->maxdimmperch * 2; 954 max_csrows = pvt->maxdimmperch;
960 for (csrow = max_csrows - 1; csrow >= 0; csrow--) { 955 for (csrow = max_csrows - 1; csrow >= 0; csrow--) {
961 956
962 /* on an odd csrow, first output a 'boundary' marker, 957 /* on an odd csrow, first output a 'boundary' marker,
@@ -1064,7 +1059,7 @@ static void i5400_get_mc_regs(struct mem_ctl_info *mci)
1064 1059
1065 /* Get the set of MTR[0-3] regs by each branch */ 1060 /* Get the set of MTR[0-3] regs by each branch */
1066 for (slot_row = 0; slot_row < NUM_MTRS_PER_BRANCH; slot_row++) { 1061 for (slot_row = 0; slot_row < NUM_MTRS_PER_BRANCH; slot_row++) {
1067 int where = MTR0 + (slot_row * sizeof(u32)); 1062 int where = MTR0 + (slot_row * sizeof(u16));
1068 1063
1069 /* Branch 0 set of MTR registers */ 1064 /* Branch 0 set of MTR registers */
1070 pci_read_config_word(pvt->branch_0, where, 1065 pci_read_config_word(pvt->branch_0, where,
@@ -1146,7 +1141,7 @@ static int i5400_init_csrows(struct mem_ctl_info *mci)
1146 pvt = mci->pvt_info; 1141 pvt = mci->pvt_info;
1147 1142
1148 channel_count = pvt->maxch; 1143 channel_count = pvt->maxch;
1149 max_csrows = pvt->maxdimmperch * 2; 1144 max_csrows = pvt->maxdimmperch;
1150 1145
1151 empty = 1; /* Assume NO memory */ 1146 empty = 1; /* Assume NO memory */
1152 1147
@@ -1215,28 +1210,6 @@ static void i5400_enable_error_reporting(struct mem_ctl_info *mci)
1215} 1210}
1216 1211
1217/* 1212/*
1218 * i5400_get_dimm_and_channel_counts(pdev, &num_csrows, &num_channels)
1219 *
1220 * ask the device how many channels are present and how many CSROWS
1221 * as well
1222 */
1223static void i5400_get_dimm_and_channel_counts(struct pci_dev *pdev,
1224 int *num_dimms_per_channel,
1225 int *num_channels)
1226{
1227 u8 value;
1228
1229 /* Need to retrieve just how many channels and dimms per channel are
1230 * supported on this memory controller
1231 */
1232 pci_read_config_byte(pdev, MAXDIMMPERCH, &value);
1233 *num_dimms_per_channel = (int)value * 2;
1234
1235 pci_read_config_byte(pdev, MAXCH, &value);
1236 *num_channels = (int)value;
1237}
1238
1239/*
1240 * i5400_probe1 Probe for ONE instance of device to see if it is 1213 * i5400_probe1 Probe for ONE instance of device to see if it is
1241 * present. 1214 * present.
1242 * return: 1215 * return:
@@ -1263,22 +1236,16 @@ static int i5400_probe1(struct pci_dev *pdev, int dev_idx)
1263 if (PCI_FUNC(pdev->devfn) != 0) 1236 if (PCI_FUNC(pdev->devfn) != 0)
1264 return -ENODEV; 1237 return -ENODEV;
1265 1238
1266 /* Ask the devices for the number of CSROWS and CHANNELS so 1239 /* As we don't have a motherboard identification routine to determine
1267 * that we can calculate the memory resources, etc
1268 *
1269 * The Chipset will report what it can handle which will be greater
1270 * or equal to what the motherboard manufacturer will implement.
1271 *
1272 * As we don't have a motherboard identification routine to determine
1273 * actual number of slots/dimms per channel, we thus utilize the 1240 * actual number of slots/dimms per channel, we thus utilize the
1274 * resource as specified by the chipset. Thus, we might have 1241 * resource as specified by the chipset. Thus, we might have
1275 * have more DIMMs per channel than actually on the mobo, but this 1242 * have more DIMMs per channel than actually on the mobo, but this
1276 * allows the driver to support upto the chipset max, without 1243 * allows the driver to support upto the chipset max, without
1277 * some fancy mobo determination. 1244 * some fancy mobo determination.
1278 */ 1245 */
1279 i5400_get_dimm_and_channel_counts(pdev, &num_dimms_per_channel, 1246 num_dimms_per_channel = MAX_DIMMS_PER_CHANNEL;
1280 &num_channels); 1247 num_channels = MAX_CHANNELS;
1281 num_csrows = num_dimms_per_channel * 2; 1248 num_csrows = num_dimms_per_channel;
1282 1249
1283 debugf0("MC: %s(): Number of - Channels= %d DIMMS= %d CSROWS= %d\n", 1250 debugf0("MC: %s(): Number of - Channels= %d DIMMS= %d CSROWS= %d\n",
1284 __func__, num_channels, num_dimms_per_channel, num_csrows); 1251 __func__, num_channels, num_dimms_per_channel, num_csrows);
diff --git a/drivers/edac/mpc85xx_edac.c b/drivers/edac/mpc85xx_edac.c
index 157f6504f25e..cf27402af97b 100644
--- a/drivers/edac/mpc85xx_edac.c
+++ b/drivers/edac/mpc85xx_edac.c
@@ -26,7 +26,9 @@
26#include "mpc85xx_edac.h" 26#include "mpc85xx_edac.h"
27 27
28static int edac_dev_idx; 28static int edac_dev_idx;
29#ifdef CONFIG_PCI
29static int edac_pci_idx; 30static int edac_pci_idx;
31#endif
30static int edac_mc_idx; 32static int edac_mc_idx;
31 33
32static u32 orig_ddr_err_disable; 34static u32 orig_ddr_err_disable;
diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c
index 5d524254499e..94260aa76aa3 100644
--- a/drivers/firewire/ohci.c
+++ b/drivers/firewire/ohci.c
@@ -275,7 +275,7 @@ static void log_irqs(u32 evt)
275 !(evt & OHCI1394_busReset)) 275 !(evt & OHCI1394_busReset))
276 return; 276 return;
277 277
278 fw_notify("IRQ %08x%s%s%s%s%s%s%s%s%s%s%s%s%s\n", evt, 278 fw_notify("IRQ %08x%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n", evt,
279 evt & OHCI1394_selfIDComplete ? " selfID" : "", 279 evt & OHCI1394_selfIDComplete ? " selfID" : "",
280 evt & OHCI1394_RQPkt ? " AR_req" : "", 280 evt & OHCI1394_RQPkt ? " AR_req" : "",
281 evt & OHCI1394_RSPkt ? " AR_resp" : "", 281 evt & OHCI1394_RSPkt ? " AR_resp" : "",
@@ -286,6 +286,7 @@ static void log_irqs(u32 evt)
286 evt & OHCI1394_postedWriteErr ? " postedWriteErr" : "", 286 evt & OHCI1394_postedWriteErr ? " postedWriteErr" : "",
287 evt & OHCI1394_cycleTooLong ? " cycleTooLong" : "", 287 evt & OHCI1394_cycleTooLong ? " cycleTooLong" : "",
288 evt & OHCI1394_cycle64Seconds ? " cycle64Seconds" : "", 288 evt & OHCI1394_cycle64Seconds ? " cycle64Seconds" : "",
289 evt & OHCI1394_cycleInconsistent ? " cycleInconsistent" : "",
289 evt & OHCI1394_regAccessFail ? " regAccessFail" : "", 290 evt & OHCI1394_regAccessFail ? " regAccessFail" : "",
290 evt & OHCI1394_busReset ? " busReset" : "", 291 evt & OHCI1394_busReset ? " busReset" : "",
291 evt & ~(OHCI1394_selfIDComplete | OHCI1394_RQPkt | 292 evt & ~(OHCI1394_selfIDComplete | OHCI1394_RQPkt |
@@ -293,6 +294,7 @@ static void log_irqs(u32 evt)
293 OHCI1394_respTxComplete | OHCI1394_isochRx | 294 OHCI1394_respTxComplete | OHCI1394_isochRx |
294 OHCI1394_isochTx | OHCI1394_postedWriteErr | 295 OHCI1394_isochTx | OHCI1394_postedWriteErr |
295 OHCI1394_cycleTooLong | OHCI1394_cycle64Seconds | 296 OHCI1394_cycleTooLong | OHCI1394_cycle64Seconds |
297 OHCI1394_cycleInconsistent |
296 OHCI1394_regAccessFail | OHCI1394_busReset) 298 OHCI1394_regAccessFail | OHCI1394_busReset)
297 ? " ?" : ""); 299 ? " ?" : "");
298} 300}
@@ -1439,6 +1441,17 @@ static irqreturn_t irq_handler(int irq, void *data)
1439 OHCI1394_LinkControl_cycleMaster); 1441 OHCI1394_LinkControl_cycleMaster);
1440 } 1442 }
1441 1443
1444 if (unlikely(event & OHCI1394_cycleInconsistent)) {
1445 /*
1446 * We need to clear this event bit in order to make
1447 * cycleMatch isochronous I/O work. In theory we should
1448 * stop active cycleMatch iso contexts now and restart
1449 * them at least two cycles later. (FIXME?)
1450 */
1451 if (printk_ratelimit())
1452 fw_notify("isochronous cycle inconsistent\n");
1453 }
1454
1442 if (event & OHCI1394_cycle64Seconds) { 1455 if (event & OHCI1394_cycle64Seconds) {
1443 cycle_time = reg_read(ohci, OHCI1394_IsochronousCycleTimer); 1456 cycle_time = reg_read(ohci, OHCI1394_IsochronousCycleTimer);
1444 if ((cycle_time & 0x80000000) == 0) 1457 if ((cycle_time & 0x80000000) == 0)
@@ -1528,6 +1541,7 @@ static int ohci_enable(struct fw_card *card, u32 *config_rom, size_t length)
1528 OHCI1394_reqTxComplete | OHCI1394_respTxComplete | 1541 OHCI1394_reqTxComplete | OHCI1394_respTxComplete |
1529 OHCI1394_isochRx | OHCI1394_isochTx | 1542 OHCI1394_isochRx | OHCI1394_isochTx |
1530 OHCI1394_postedWriteErr | OHCI1394_cycleTooLong | 1543 OHCI1394_postedWriteErr | OHCI1394_cycleTooLong |
1544 OHCI1394_cycleInconsistent |
1531 OHCI1394_cycle64Seconds | OHCI1394_regAccessFail | 1545 OHCI1394_cycle64Seconds | OHCI1394_regAccessFail |
1532 OHCI1394_masterIntEnable); 1546 OHCI1394_masterIntEnable);
1533 if (param_debug & OHCI_PARAM_DEBUG_BUSRESETS) 1547 if (param_debug & OHCI_PARAM_DEBUG_BUSRESETS)
@@ -1890,15 +1904,30 @@ static int handle_it_packet(struct context *context,
1890{ 1904{
1891 struct iso_context *ctx = 1905 struct iso_context *ctx =
1892 container_of(context, struct iso_context, context); 1906 container_of(context, struct iso_context, context);
1907 int i;
1908 struct descriptor *pd;
1893 1909
1894 if (last->transfer_status == 0) 1910 for (pd = d; pd <= last; pd++)
1895 /* This descriptor isn't done yet, stop iteration. */ 1911 if (pd->transfer_status)
1912 break;
1913 if (pd > last)
1914 /* Descriptor(s) not done yet, stop iteration */
1896 return 0; 1915 return 0;
1897 1916
1898 if (le16_to_cpu(last->control) & DESCRIPTOR_IRQ_ALWAYS) 1917 i = ctx->header_length;
1918 if (i + 4 < PAGE_SIZE) {
1919 /* Present this value as big-endian to match the receive code */
1920 *(__be32 *)(ctx->header + i) = cpu_to_be32(
1921 ((u32)le16_to_cpu(pd->transfer_status) << 16) |
1922 le16_to_cpu(pd->res_count));
1923 ctx->header_length += 4;
1924 }
1925 if (le16_to_cpu(last->control) & DESCRIPTOR_IRQ_ALWAYS) {
1899 ctx->base.callback(&ctx->base, le16_to_cpu(last->res_count), 1926 ctx->base.callback(&ctx->base, le16_to_cpu(last->res_count),
1900 0, NULL, ctx->base.callback_data); 1927 ctx->header_length, ctx->header,
1901 1928 ctx->base.callback_data);
1929 ctx->header_length = 0;
1930 }
1902 return 1; 1931 return 1;
1903} 1932}
1904 1933
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 662ed923d9eb..50de0f5750d8 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -661,7 +661,7 @@ int gpio_export(unsigned gpio, bool direction_may_change)
661 661
662 dev = device_create(&gpio_class, desc->chip->dev, MKDEV(0, 0), 662 dev = device_create(&gpio_class, desc->chip->dev, MKDEV(0, 0),
663 desc, ioname ? ioname : "gpio%d", gpio); 663 desc, ioname ? ioname : "gpio%d", gpio);
664 if (dev) { 664 if (!IS_ERR(dev)) {
665 if (direction_may_change) 665 if (direction_may_change)
666 status = sysfs_create_group(&dev->kobj, 666 status = sysfs_create_group(&dev->kobj,
667 &gpio_attr_group); 667 &gpio_attr_group);
@@ -679,7 +679,7 @@ int gpio_export(unsigned gpio, bool direction_may_change)
679 if (status != 0) 679 if (status != 0)
680 device_unregister(dev); 680 device_unregister(dev);
681 } else 681 } else
682 status = -ENODEV; 682 status = PTR_ERR(dev);
683 if (status == 0) 683 if (status == 0)
684 set_bit(FLAG_EXPORT, &desc->flags); 684 set_bit(FLAG_EXPORT, &desc->flags);
685 } 685 }
@@ -800,11 +800,11 @@ static int gpiochip_export(struct gpio_chip *chip)
800 mutex_lock(&sysfs_lock); 800 mutex_lock(&sysfs_lock);
801 dev = device_create(&gpio_class, chip->dev, MKDEV(0, 0), chip, 801 dev = device_create(&gpio_class, chip->dev, MKDEV(0, 0), chip,
802 "gpiochip%d", chip->base); 802 "gpiochip%d", chip->base);
803 if (dev) { 803 if (!IS_ERR(dev)) {
804 status = sysfs_create_group(&dev->kobj, 804 status = sysfs_create_group(&dev->kobj,
805 &gpiochip_attr_group); 805 &gpiochip_attr_group);
806 } else 806 } else
807 status = -ENODEV; 807 status = PTR_ERR(dev);
808 chip->exported = (status == 0); 808 chip->exported = (status == 0);
809 mutex_unlock(&sysfs_lock); 809 mutex_unlock(&sysfs_lock);
810 810
diff --git a/drivers/gpio/langwell_gpio.c b/drivers/gpio/langwell_gpio.c
index 5711ce5353c6..4baf3d7d0f8e 100644
--- a/drivers/gpio/langwell_gpio.c
+++ b/drivers/gpio/langwell_gpio.c
@@ -144,13 +144,6 @@ static int lnw_irq_type(unsigned irq, unsigned type)
144 144
145static void lnw_irq_unmask(unsigned irq) 145static void lnw_irq_unmask(unsigned irq)
146{ 146{
147 struct lnw_gpio *lnw = get_irq_chip_data(irq);
148 u32 gpio = irq - lnw->irq_base;
149 u8 reg = gpio / 32;
150 void __iomem *gedr;
151
152 gedr = (void __iomem *)(&lnw->reg_base->GEDR[reg]);
153 writel(BIT(gpio % 32), gedr);
154}; 147};
155 148
156static void lnw_irq_mask(unsigned irq) 149static void lnw_irq_mask(unsigned irq)
@@ -183,13 +176,11 @@ static void lnw_irq_handler(unsigned irq, struct irq_desc *desc)
183 gedr_v = readl(gedr); 176 gedr_v = readl(gedr);
184 if (!gedr_v) 177 if (!gedr_v)
185 continue; 178 continue;
186 for (gpio = reg*32; gpio < reg*32+32; gpio++) { 179 for (gpio = reg*32; gpio < reg*32+32; gpio++)
187 gedr_v = readl(gedr);
188 if (gedr_v & BIT(gpio % 32)) { 180 if (gedr_v & BIT(gpio % 32)) {
189 pr_debug("pin %d triggered\n", gpio); 181 pr_debug("pin %d triggered\n", gpio);
190 generic_handle_irq(lnw->irq_base + gpio); 182 generic_handle_irq(lnw->irq_base + gpio);
191 } 183 }
192 }
193 /* clear the edge detect status bit */ 184 /* clear the edge detect status bit */
194 writel(gedr_v, gedr); 185 writel(gedr_v, gedr);
195 } 186 }
diff --git a/drivers/gpio/twl4030-gpio.c b/drivers/gpio/twl4030-gpio.c
index afad14792141..49384a7c5492 100644
--- a/drivers/gpio/twl4030-gpio.c
+++ b/drivers/gpio/twl4030-gpio.c
@@ -460,7 +460,8 @@ no_irqs:
460 return ret; 460 return ret;
461} 461}
462 462
463static int __devexit gpio_twl4030_remove(struct platform_device *pdev) 463/* Cannot use __devexit as gpio_twl4030_probe() calls us */
464static int gpio_twl4030_remove(struct platform_device *pdev)
464{ 465{
465 struct twl4030_gpio_platform_data *pdata = pdev->dev.platform_data; 466 struct twl4030_gpio_platform_data *pdata = pdev->dev.platform_data;
466 int status; 467 int status;
@@ -493,7 +494,7 @@ static struct platform_driver gpio_twl4030_driver = {
493 .driver.name = "twl4030_gpio", 494 .driver.name = "twl4030_gpio",
494 .driver.owner = THIS_MODULE, 495 .driver.owner = THIS_MODULE,
495 .probe = gpio_twl4030_probe, 496 .probe = gpio_twl4030_probe,
496 .remove = __devexit_p(gpio_twl4030_remove), 497 .remove = gpio_twl4030_remove,
497}; 498};
498 499
499static int __init gpio_twl4030_init(void) 500static int __init gpio_twl4030_init(void)
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index f831ea159291..96eddd17e050 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -92,6 +92,7 @@ config DRM_I830
92config DRM_I915 92config DRM_I915
93 tristate "i915 driver" 93 tristate "i915 driver"
94 depends on AGP_INTEL 94 depends on AGP_INTEL
95 select SHMEM
95 select DRM_KMS_HELPER 96 select DRM_KMS_HELPER
96 select FB_CFB_FILLRECT 97 select FB_CFB_FILLRECT
97 select FB_CFB_COPYAREA 98 select FB_CFB_COPYAREA
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
index 1fe4e1d344fd..bbfd110a7168 100644
--- a/drivers/gpu/drm/drm_crtc_helper.c
+++ b/drivers/gpu/drm/drm_crtc_helper.c
@@ -331,6 +331,7 @@ create_mode:
331 cmdline_mode->refresh_specified ? cmdline_mode->refresh : 60, 331 cmdline_mode->refresh_specified ? cmdline_mode->refresh : 60,
332 cmdline_mode->rb, cmdline_mode->interlace, 332 cmdline_mode->rb, cmdline_mode->interlace,
333 cmdline_mode->margins); 333 cmdline_mode->margins);
334 drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V);
334 list_add(&mode->head, &connector->modes); 335 list_add(&mode->head, &connector->modes);
335 return mode; 336 return mode;
336} 337}
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 3c0d2b3aed76..b54ba63d506e 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -626,6 +626,12 @@ static struct drm_display_mode *drm_mode_detailed(struct drm_device *dev,
626 return NULL; 626 return NULL;
627 } 627 }
628 628
629 /* it is incorrect if hsync/vsync width is zero */
630 if (!hsync_pulse_width || !vsync_pulse_width) {
631 DRM_DEBUG_KMS("Incorrect Detailed timing. "
632 "Wrong Hsync/Vsync pulse width\n");
633 return NULL;
634 }
629 mode = drm_mode_create(dev); 635 mode = drm_mode_create(dev);
630 if (!mode) 636 if (!mode)
631 return NULL; 637 return NULL;
@@ -647,6 +653,21 @@ static struct drm_display_mode *drm_mode_detailed(struct drm_device *dev,
647 mode->vsync_end = mode->vsync_start + vsync_pulse_width; 653 mode->vsync_end = mode->vsync_start + vsync_pulse_width;
648 mode->vtotal = mode->vdisplay + vblank; 654 mode->vtotal = mode->vdisplay + vblank;
649 655
656 /* perform the basic check for the detailed timing */
657 if (mode->hsync_end > mode->htotal ||
658 mode->vsync_end > mode->vtotal) {
659 drm_mode_destroy(dev, mode);
660 DRM_DEBUG_KMS("Incorrect detailed timing. "
661 "Sync is beyond the blank.\n");
662 return NULL;
663 }
664
665 /* Some EDIDs have bogus h/vtotal values */
666 if (mode->hsync_end > mode->htotal)
667 mode->htotal = mode->hsync_end + 1;
668 if (mode->vsync_end > mode->vtotal)
669 mode->vtotal = mode->vsync_end + 1;
670
650 drm_mode_set_name(mode); 671 drm_mode_set_name(mode);
651 672
652 if (pt->misc & DRM_EDID_PT_INTERLACED) 673 if (pt->misc & DRM_EDID_PT_INTERLACED)
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
index 23dc9c115fd9..65ef011fa8ba 100644
--- a/drivers/gpu/drm/drm_fb_helper.c
+++ b/drivers/gpu/drm/drm_fb_helper.c
@@ -454,22 +454,39 @@ out_free:
454} 454}
455EXPORT_SYMBOL(drm_fb_helper_init_crtc_count); 455EXPORT_SYMBOL(drm_fb_helper_init_crtc_count);
456 456
457static void setcolreg(struct drm_crtc *crtc, u16 red, u16 green, 457static int setcolreg(struct drm_crtc *crtc, u16 red, u16 green,
458 u16 blue, u16 regno, struct fb_info *info) 458 u16 blue, u16 regno, struct fb_info *info)
459{ 459{
460 struct drm_fb_helper *fb_helper = info->par; 460 struct drm_fb_helper *fb_helper = info->par;
461 struct drm_framebuffer *fb = fb_helper->fb; 461 struct drm_framebuffer *fb = fb_helper->fb;
462 int pindex; 462 int pindex;
463 463
464 if (info->fix.visual == FB_VISUAL_TRUECOLOR) {
465 u32 *palette;
466 u32 value;
467 /* place color in psuedopalette */
468 if (regno > 16)
469 return -EINVAL;
470 palette = (u32 *)info->pseudo_palette;
471 red >>= (16 - info->var.red.length);
472 green >>= (16 - info->var.green.length);
473 blue >>= (16 - info->var.blue.length);
474 value = (red << info->var.red.offset) |
475 (green << info->var.green.offset) |
476 (blue << info->var.blue.offset);
477 palette[regno] = value;
478 return 0;
479 }
480
464 pindex = regno; 481 pindex = regno;
465 482
466 if (fb->bits_per_pixel == 16) { 483 if (fb->bits_per_pixel == 16) {
467 pindex = regno << 3; 484 pindex = regno << 3;
468 485
469 if (fb->depth == 16 && regno > 63) 486 if (fb->depth == 16 && regno > 63)
470 return; 487 return -EINVAL;
471 if (fb->depth == 15 && regno > 31) 488 if (fb->depth == 15 && regno > 31)
472 return; 489 return -EINVAL;
473 490
474 if (fb->depth == 16) { 491 if (fb->depth == 16) {
475 u16 r, g, b; 492 u16 r, g, b;
@@ -493,13 +510,7 @@ static void setcolreg(struct drm_crtc *crtc, u16 red, u16 green,
493 510
494 if (fb->depth != 16) 511 if (fb->depth != 16)
495 fb_helper->funcs->gamma_set(crtc, red, green, blue, pindex); 512 fb_helper->funcs->gamma_set(crtc, red, green, blue, pindex);
496 513 return 0;
497 if (regno < 16 && info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
498 ((u32 *) fb->pseudo_palette)[regno] =
499 (regno << info->var.red.offset) |
500 (regno << info->var.green.offset) |
501 (regno << info->var.blue.offset);
502 }
503} 514}
504 515
505int drm_fb_helper_setcmap(struct fb_cmap *cmap, struct fb_info *info) 516int drm_fb_helper_setcmap(struct fb_cmap *cmap, struct fb_info *info)
@@ -536,7 +547,9 @@ int drm_fb_helper_setcmap(struct fb_cmap *cmap, struct fb_info *info)
536 if (transp) 547 if (transp)
537 htransp = *transp++; 548 htransp = *transp++;
538 549
539 setcolreg(crtc, hred, hgreen, hblue, start++, info); 550 rc = setcolreg(crtc, hred, hgreen, hblue, start++, info);
551 if (rc)
552 return rc;
540 } 553 }
541 crtc_funcs->load_lut(crtc); 554 crtc_funcs->load_lut(crtc);
542 } 555 }
@@ -555,6 +568,7 @@ int drm_fb_helper_setcolreg(unsigned regno,
555 struct drm_device *dev = fb_helper->dev; 568 struct drm_device *dev = fb_helper->dev;
556 struct drm_crtc *crtc; 569 struct drm_crtc *crtc;
557 int i; 570 int i;
571 int ret;
558 572
559 if (regno > 255) 573 if (regno > 255)
560 return 1; 574 return 1;
@@ -568,8 +582,10 @@ int drm_fb_helper_setcolreg(unsigned regno,
568 if (i == fb_helper->crtc_count) 582 if (i == fb_helper->crtc_count)
569 continue; 583 continue;
570 584
585 ret = setcolreg(crtc, red, green, blue, regno, info);
586 if (ret)
587 return ret;
571 588
572 setcolreg(crtc, red, green, blue, regno, info);
573 crtc_funcs->load_lut(crtc); 589 crtc_funcs->load_lut(crtc);
574 } 590 }
575 return 0; 591 return 0;
@@ -583,7 +599,7 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var,
583 struct drm_framebuffer *fb = fb_helper->fb; 599 struct drm_framebuffer *fb = fb_helper->fb;
584 int depth; 600 int depth;
585 601
586 if (var->pixclock == -1 || !var->pixclock) 602 if (var->pixclock != 0)
587 return -EINVAL; 603 return -EINVAL;
588 604
589 /* Need to resize the fb object !!! */ 605 /* Need to resize the fb object !!! */
@@ -675,7 +691,7 @@ int drm_fb_helper_set_par(struct fb_info *info)
675 int ret; 691 int ret;
676 int i; 692 int i;
677 693
678 if (var->pixclock != -1) { 694 if (var->pixclock != 0) {
679 DRM_ERROR("PIXEL CLCOK SET\n"); 695 DRM_ERROR("PIXEL CLCOK SET\n");
680 return -EINVAL; 696 return -EINVAL;
681 } 697 }
@@ -691,7 +707,7 @@ int drm_fb_helper_set_par(struct fb_info *info)
691 707
692 if (crtc->fb == fb_helper->crtc_info[i].mode_set.fb) { 708 if (crtc->fb == fb_helper->crtc_info[i].mode_set.fb) {
693 mutex_lock(&dev->mode_config.mutex); 709 mutex_lock(&dev->mode_config.mutex);
694 ret = crtc->funcs->set_config(&fb_helper->crtc_info->mode_set); 710 ret = crtc->funcs->set_config(&fb_helper->crtc_info[i].mode_set);
695 mutex_unlock(&dev->mode_config.mutex); 711 mutex_unlock(&dev->mode_config.mutex);
696 if (ret) 712 if (ret)
697 return ret; 713 return ret;
@@ -888,7 +904,7 @@ int drm_fb_helper_single_fb_probe(struct drm_device *dev,
888 fb_helper->fb = fb; 904 fb_helper->fb = fb;
889 905
890 if (new_fb) { 906 if (new_fb) {
891 info->var.pixclock = -1; 907 info->var.pixclock = 0;
892 if (register_framebuffer(info) < 0) 908 if (register_framebuffer(info) < 0)
893 return -EINVAL; 909 return -EINVAL;
894 } else { 910 } else {
@@ -928,7 +944,7 @@ void drm_fb_helper_fill_fix(struct fb_info *info, uint32_t pitch,
928{ 944{
929 info->fix.type = FB_TYPE_PACKED_PIXELS; 945 info->fix.type = FB_TYPE_PACKED_PIXELS;
930 info->fix.visual = depth == 8 ? FB_VISUAL_PSEUDOCOLOR : 946 info->fix.visual = depth == 8 ? FB_VISUAL_PSEUDOCOLOR :
931 FB_VISUAL_DIRECTCOLOR; 947 FB_VISUAL_TRUECOLOR;
932 info->fix.type_aux = 0; 948 info->fix.type_aux = 0;
933 info->fix.xpanstep = 1; /* doing it in hw */ 949 info->fix.xpanstep = 1; /* doing it in hw */
934 info->fix.ypanstep = 1; /* doing it in hw */ 950 info->fix.ypanstep = 1; /* doing it in hw */
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
index 80391995bdec..e9dbb481c469 100644
--- a/drivers/gpu/drm/drm_gem.c
+++ b/drivers/gpu/drm/drm_gem.c
@@ -552,7 +552,7 @@ int drm_gem_mmap(struct file *filp, struct vm_area_struct *vma)
552 vma->vm_flags |= VM_RESERVED | VM_IO | VM_PFNMAP | VM_DONTEXPAND; 552 vma->vm_flags |= VM_RESERVED | VM_IO | VM_PFNMAP | VM_DONTEXPAND;
553 vma->vm_ops = obj->dev->driver->gem_vm_ops; 553 vma->vm_ops = obj->dev->driver->gem_vm_ops;
554 vma->vm_private_data = map->handle; 554 vma->vm_private_data = map->handle;
555 vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); 555 vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
556 556
557 /* Take a ref for this mapping of the object, so that the fault 557 /* Take a ref for this mapping of the object, so that the fault
558 * handler can dereference the mmap offset's pointer to the object. 558 * handler can dereference the mmap offset's pointer to the object.
diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c
index c861d80fd779..97dc5a4f0de4 100644
--- a/drivers/gpu/drm/drm_mm.c
+++ b/drivers/gpu/drm/drm_mm.c
@@ -103,6 +103,11 @@ static struct drm_mm_node *drm_mm_kmalloc(struct drm_mm *mm, int atomic)
103 return child; 103 return child;
104} 104}
105 105
106/* drm_mm_pre_get() - pre allocate drm_mm_node structure
107 * drm_mm: memory manager struct we are pre-allocating for
108 *
109 * Returns 0 on success or -ENOMEM if allocation fails.
110 */
106int drm_mm_pre_get(struct drm_mm *mm) 111int drm_mm_pre_get(struct drm_mm *mm)
107{ 112{
108 struct drm_mm_node *node; 113 struct drm_mm_node *node;
@@ -253,12 +258,14 @@ void drm_mm_put_block(struct drm_mm_node *cur)
253 prev_node->size += next_node->size; 258 prev_node->size += next_node->size;
254 list_del(&next_node->ml_entry); 259 list_del(&next_node->ml_entry);
255 list_del(&next_node->fl_entry); 260 list_del(&next_node->fl_entry);
261 spin_lock(&mm->unused_lock);
256 if (mm->num_unused < MM_UNUSED_TARGET) { 262 if (mm->num_unused < MM_UNUSED_TARGET) {
257 list_add(&next_node->fl_entry, 263 list_add(&next_node->fl_entry,
258 &mm->unused_nodes); 264 &mm->unused_nodes);
259 ++mm->num_unused; 265 ++mm->num_unused;
260 } else 266 } else
261 kfree(next_node); 267 kfree(next_node);
268 spin_unlock(&mm->unused_lock);
262 } else { 269 } else {
263 next_node->size += cur->size; 270 next_node->size += cur->size;
264 next_node->start = cur->start; 271 next_node->start = cur->start;
@@ -271,11 +278,13 @@ void drm_mm_put_block(struct drm_mm_node *cur)
271 list_add(&cur->fl_entry, &mm->fl_entry); 278 list_add(&cur->fl_entry, &mm->fl_entry);
272 } else { 279 } else {
273 list_del(&cur->ml_entry); 280 list_del(&cur->ml_entry);
281 spin_lock(&mm->unused_lock);
274 if (mm->num_unused < MM_UNUSED_TARGET) { 282 if (mm->num_unused < MM_UNUSED_TARGET) {
275 list_add(&cur->fl_entry, &mm->unused_nodes); 283 list_add(&cur->fl_entry, &mm->unused_nodes);
276 ++mm->num_unused; 284 ++mm->num_unused;
277 } else 285 } else
278 kfree(cur); 286 kfree(cur);
287 spin_unlock(&mm->unused_lock);
279 } 288 }
280} 289}
281 290
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index f8ce9a3a420d..26bf0552b3cb 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -267,10 +267,10 @@ static void i915_dump_pages(struct seq_file *m, struct page **pages, int page_co
267 uint32_t *mem; 267 uint32_t *mem;
268 268
269 for (page = 0; page < page_count; page++) { 269 for (page = 0; page < page_count; page++) {
270 mem = kmap(pages[page]); 270 mem = kmap_atomic(pages[page], KM_USER0);
271 for (i = 0; i < PAGE_SIZE; i += 4) 271 for (i = 0; i < PAGE_SIZE; i += 4)
272 seq_printf(m, "%08x : %08x\n", i, mem[i / 4]); 272 seq_printf(m, "%08x : %08x\n", i, mem[i / 4]);
273 kunmap(pages[page]); 273 kunmap_atomic(pages[page], KM_USER0);
274 } 274 }
275} 275}
276 276
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index 92aeb918e0c0..e5b138be45fa 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -1227,8 +1227,7 @@ static int i915_load_modeset_init(struct drm_device *dev,
1227 goto out; 1227 goto out;
1228 1228
1229 /* Try to set up FBC with a reasonable compressed buffer size */ 1229 /* Try to set up FBC with a reasonable compressed buffer size */
1230 if (IS_MOBILE(dev) && (IS_I9XX(dev) || IS_I965G(dev) || IS_GM45(dev)) && 1230 if (I915_HAS_FBC(dev) && i915_powersave) {
1231 i915_powersave) {
1232 int cfb_size; 1231 int cfb_size;
1233 1232
1234 /* Try to get an 8M buffer... */ 1233 /* Try to get an 8M buffer... */
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index b93814c0d3e2..7f436ec075f6 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -89,7 +89,8 @@ static int i915_suspend(struct drm_device *dev, pm_message_t state)
89 pci_set_power_state(dev->pdev, PCI_D3hot); 89 pci_set_power_state(dev->pdev, PCI_D3hot);
90 } 90 }
91 91
92 dev_priv->suspended = 1; 92 /* Modeset on resume, not lid events */
93 dev_priv->modeset_on_lid = 0;
93 94
94 return 0; 95 return 0;
95} 96}
@@ -124,7 +125,7 @@ static int i915_resume(struct drm_device *dev)
124 drm_helper_resume_force_mode(dev); 125 drm_helper_resume_force_mode(dev);
125 } 126 }
126 127
127 dev_priv->suspended = 0; 128 dev_priv->modeset_on_lid = 0;
128 129
129 return ret; 130 return ret;
130} 131}
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 6035d3dae851..a725f6591192 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -274,7 +274,7 @@ typedef struct drm_i915_private {
274 struct drm_i915_display_funcs display; 274 struct drm_i915_display_funcs display;
275 275
276 /* Register state */ 276 /* Register state */
277 bool suspended; 277 bool modeset_on_lid;
278 u8 saveLBB; 278 u8 saveLBB;
279 u32 saveDSPACNTR; 279 u32 saveDSPACNTR;
280 u32 saveDSPBCNTR; 280 u32 saveDSPBCNTR;
@@ -296,6 +296,13 @@ typedef struct drm_i915_private {
296 u32 saveVBLANK_A; 296 u32 saveVBLANK_A;
297 u32 saveVSYNC_A; 297 u32 saveVSYNC_A;
298 u32 saveBCLRPAT_A; 298 u32 saveBCLRPAT_A;
299 u32 saveTRANSACONF;
300 u32 saveTRANS_HTOTAL_A;
301 u32 saveTRANS_HBLANK_A;
302 u32 saveTRANS_HSYNC_A;
303 u32 saveTRANS_VTOTAL_A;
304 u32 saveTRANS_VBLANK_A;
305 u32 saveTRANS_VSYNC_A;
299 u32 savePIPEASTAT; 306 u32 savePIPEASTAT;
300 u32 saveDSPASTRIDE; 307 u32 saveDSPASTRIDE;
301 u32 saveDSPASIZE; 308 u32 saveDSPASIZE;
@@ -304,8 +311,11 @@ typedef struct drm_i915_private {
304 u32 saveDSPASURF; 311 u32 saveDSPASURF;
305 u32 saveDSPATILEOFF; 312 u32 saveDSPATILEOFF;
306 u32 savePFIT_PGM_RATIOS; 313 u32 savePFIT_PGM_RATIOS;
314 u32 saveBLC_HIST_CTL;
307 u32 saveBLC_PWM_CTL; 315 u32 saveBLC_PWM_CTL;
308 u32 saveBLC_PWM_CTL2; 316 u32 saveBLC_PWM_CTL2;
317 u32 saveBLC_CPU_PWM_CTL;
318 u32 saveBLC_CPU_PWM_CTL2;
309 u32 saveFPB0; 319 u32 saveFPB0;
310 u32 saveFPB1; 320 u32 saveFPB1;
311 u32 saveDPLL_B; 321 u32 saveDPLL_B;
@@ -317,6 +327,13 @@ typedef struct drm_i915_private {
317 u32 saveVBLANK_B; 327 u32 saveVBLANK_B;
318 u32 saveVSYNC_B; 328 u32 saveVSYNC_B;
319 u32 saveBCLRPAT_B; 329 u32 saveBCLRPAT_B;
330 u32 saveTRANSBCONF;
331 u32 saveTRANS_HTOTAL_B;
332 u32 saveTRANS_HBLANK_B;
333 u32 saveTRANS_HSYNC_B;
334 u32 saveTRANS_VTOTAL_B;
335 u32 saveTRANS_VBLANK_B;
336 u32 saveTRANS_VSYNC_B;
320 u32 savePIPEBSTAT; 337 u32 savePIPEBSTAT;
321 u32 saveDSPBSTRIDE; 338 u32 saveDSPBSTRIDE;
322 u32 saveDSPBSIZE; 339 u32 saveDSPBSIZE;
@@ -342,6 +359,7 @@ typedef struct drm_i915_private {
342 u32 savePFIT_CONTROL; 359 u32 savePFIT_CONTROL;
343 u32 save_palette_a[256]; 360 u32 save_palette_a[256];
344 u32 save_palette_b[256]; 361 u32 save_palette_b[256];
362 u32 saveDPFC_CB_BASE;
345 u32 saveFBC_CFB_BASE; 363 u32 saveFBC_CFB_BASE;
346 u32 saveFBC_LL_BASE; 364 u32 saveFBC_LL_BASE;
347 u32 saveFBC_CONTROL; 365 u32 saveFBC_CONTROL;
@@ -349,6 +367,12 @@ typedef struct drm_i915_private {
349 u32 saveIER; 367 u32 saveIER;
350 u32 saveIIR; 368 u32 saveIIR;
351 u32 saveIMR; 369 u32 saveIMR;
370 u32 saveDEIER;
371 u32 saveDEIMR;
372 u32 saveGTIER;
373 u32 saveGTIMR;
374 u32 saveFDI_RXA_IMR;
375 u32 saveFDI_RXB_IMR;
352 u32 saveCACHE_MODE_0; 376 u32 saveCACHE_MODE_0;
353 u32 saveD_STATE; 377 u32 saveD_STATE;
354 u32 saveDSPCLK_GATE_D; 378 u32 saveDSPCLK_GATE_D;
@@ -382,6 +406,26 @@ typedef struct drm_i915_private {
382 u32 savePIPEB_DP_LINK_M; 406 u32 savePIPEB_DP_LINK_M;
383 u32 savePIPEA_DP_LINK_N; 407 u32 savePIPEA_DP_LINK_N;
384 u32 savePIPEB_DP_LINK_N; 408 u32 savePIPEB_DP_LINK_N;
409 u32 saveFDI_RXA_CTL;
410 u32 saveFDI_TXA_CTL;
411 u32 saveFDI_RXB_CTL;
412 u32 saveFDI_TXB_CTL;
413 u32 savePFA_CTL_1;
414 u32 savePFB_CTL_1;
415 u32 savePFA_WIN_SZ;
416 u32 savePFB_WIN_SZ;
417 u32 savePFA_WIN_POS;
418 u32 savePFB_WIN_POS;
419 u32 savePCH_DREF_CONTROL;
420 u32 saveDISP_ARB_CTL;
421 u32 savePIPEA_DATA_M1;
422 u32 savePIPEA_DATA_N1;
423 u32 savePIPEA_LINK_M1;
424 u32 savePIPEA_LINK_N1;
425 u32 savePIPEB_DATA_M1;
426 u32 savePIPEB_DATA_N1;
427 u32 savePIPEB_LINK_M1;
428 u32 savePIPEB_LINK_N1;
385 429
386 struct { 430 struct {
387 struct drm_mm gtt_space; 431 struct drm_mm gtt_space;
@@ -492,6 +536,8 @@ typedef struct drm_i915_private {
492 struct drm_i915_gem_phys_object *phys_objs[I915_MAX_PHYS_OBJECT]; 536 struct drm_i915_gem_phys_object *phys_objs[I915_MAX_PHYS_OBJECT];
493 } mm; 537 } mm;
494 struct sdvo_device_mapping sdvo_mappings[2]; 538 struct sdvo_device_mapping sdvo_mappings[2];
539 /* indicate whether the LVDS_BORDER should be enabled or not */
540 unsigned int lvds_border_bits;
495 541
496 /* Reclocking support */ 542 /* Reclocking support */
497 bool render_reclock_avail; 543 bool render_reclock_avail;
@@ -981,7 +1027,10 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
981 1027
982#define HAS_FW_BLC(dev) (IS_I9XX(dev) || IS_G4X(dev) || IS_IGDNG(dev)) 1028#define HAS_FW_BLC(dev) (IS_I9XX(dev) || IS_G4X(dev) || IS_IGDNG(dev))
983#define HAS_PIPE_CXSR(dev) (IS_G4X(dev) || IS_IGDNG(dev)) 1029#define HAS_PIPE_CXSR(dev) (IS_G4X(dev) || IS_IGDNG(dev))
984#define I915_HAS_FBC(dev) (IS_MOBILE(dev) && (IS_I9XX(dev) || IS_I965G(dev))) 1030#define I915_HAS_FBC(dev) (IS_MOBILE(dev) && \
1031 (IS_I9XX(dev) || IS_GM45(dev)) && \
1032 !IS_IGD(dev) && \
1033 !IS_IGDNG(dev))
985 1034
986#define PRIMARY_RINGBUFFER_SIZE (128*1024) 1035#define PRIMARY_RINGBUFFER_SIZE (128*1024)
987 1036
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index c3ceffa46ea0..aa7fd82aa6eb 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -254,10 +254,15 @@ irqreturn_t igdng_irq_handler(struct drm_device *dev)
254{ 254{
255 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; 255 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
256 int ret = IRQ_NONE; 256 int ret = IRQ_NONE;
257 u32 de_iir, gt_iir; 257 u32 de_iir, gt_iir, de_ier;
258 u32 new_de_iir, new_gt_iir; 258 u32 new_de_iir, new_gt_iir;
259 struct drm_i915_master_private *master_priv; 259 struct drm_i915_master_private *master_priv;
260 260
261 /* disable master interrupt before clearing iir */
262 de_ier = I915_READ(DEIER);
263 I915_WRITE(DEIER, de_ier & ~DE_MASTER_IRQ_CONTROL);
264 (void)I915_READ(DEIER);
265
261 de_iir = I915_READ(DEIIR); 266 de_iir = I915_READ(DEIIR);
262 gt_iir = I915_READ(GTIIR); 267 gt_iir = I915_READ(GTIIR);
263 268
@@ -290,6 +295,9 @@ irqreturn_t igdng_irq_handler(struct drm_device *dev)
290 gt_iir = new_gt_iir; 295 gt_iir = new_gt_iir;
291 } 296 }
292 297
298 I915_WRITE(DEIER, de_ier);
299 (void)I915_READ(DEIER);
300
293 return ret; 301 return ret;
294} 302}
295 303
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 0466ddbeba32..1687edf68795 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -968,6 +968,8 @@
968#define LVDS_PORT_EN (1 << 31) 968#define LVDS_PORT_EN (1 << 31)
969/* Selects pipe B for LVDS data. Must be set on pre-965. */ 969/* Selects pipe B for LVDS data. Must be set on pre-965. */
970#define LVDS_PIPEB_SELECT (1 << 30) 970#define LVDS_PIPEB_SELECT (1 << 30)
971/* Enable border for unscaled (or aspect-scaled) display */
972#define LVDS_BORDER_ENABLE (1 << 15)
971/* 973/*
972 * Enables the A0-A2 data pairs and CLKA, containing 18 bits of color data per 974 * Enables the A0-A2 data pairs and CLKA, containing 18 bits of color data per
973 * pixel. 975 * pixel.
@@ -1078,6 +1080,8 @@
1078#define BACKLIGHT_DUTY_CYCLE_SHIFT (0) 1080#define BACKLIGHT_DUTY_CYCLE_SHIFT (0)
1079#define BACKLIGHT_DUTY_CYCLE_MASK (0xffff) 1081#define BACKLIGHT_DUTY_CYCLE_MASK (0xffff)
1080 1082
1083#define BLC_HIST_CTL 0x61260
1084
1081/* TV port control */ 1085/* TV port control */
1082#define TV_CTL 0x68000 1086#define TV_CTL 0x68000
1083/** Enables the TV encoder */ 1087/** Enables the TV encoder */
@@ -1780,6 +1784,11 @@
1780#define PIPE_START_VBLANK_INTERRUPT_STATUS (1UL<<2) /* 965 or later */ 1784#define PIPE_START_VBLANK_INTERRUPT_STATUS (1UL<<2) /* 965 or later */
1781#define PIPE_VBLANK_INTERRUPT_STATUS (1UL<<1) 1785#define PIPE_VBLANK_INTERRUPT_STATUS (1UL<<1)
1782#define PIPE_OVERLAY_UPDATED_STATUS (1UL<<0) 1786#define PIPE_OVERLAY_UPDATED_STATUS (1UL<<0)
1787#define PIPE_BPC_MASK (7 << 5) /* Ironlake */
1788#define PIPE_8BPC (0 << 5)
1789#define PIPE_10BPC (1 << 5)
1790#define PIPE_6BPC (2 << 5)
1791#define PIPE_12BPC (3 << 5)
1783 1792
1784#define DSPARB 0x70030 1793#define DSPARB 0x70030
1785#define DSPARB_CSTART_MASK (0x7f << 7) 1794#define DSPARB_CSTART_MASK (0x7f << 7)
@@ -1790,17 +1799,29 @@
1790#define DSPARB_AEND_SHIFT 0 1799#define DSPARB_AEND_SHIFT 0
1791 1800
1792#define DSPFW1 0x70034 1801#define DSPFW1 0x70034
1802#define DSPFW_SR_SHIFT 23
1803#define DSPFW_CURSORB_SHIFT 16
1804#define DSPFW_PLANEB_SHIFT 8
1793#define DSPFW2 0x70038 1805#define DSPFW2 0x70038
1806#define DSPFW_CURSORA_MASK 0x00003f00
1807#define DSPFW_CURSORA_SHIFT 16
1794#define DSPFW3 0x7003c 1808#define DSPFW3 0x7003c
1809#define DSPFW_HPLL_SR_EN (1<<31)
1810#define DSPFW_CURSOR_SR_SHIFT 24
1795#define IGD_SELF_REFRESH_EN (1<<30) 1811#define IGD_SELF_REFRESH_EN (1<<30)
1796 1812
1797/* FIFO watermark sizes etc */ 1813/* FIFO watermark sizes etc */
1814#define G4X_FIFO_LINE_SIZE 64
1798#define I915_FIFO_LINE_SIZE 64 1815#define I915_FIFO_LINE_SIZE 64
1799#define I830_FIFO_LINE_SIZE 32 1816#define I830_FIFO_LINE_SIZE 32
1817
1818#define G4X_FIFO_SIZE 127
1800#define I945_FIFO_SIZE 127 /* 945 & 965 */ 1819#define I945_FIFO_SIZE 127 /* 945 & 965 */
1801#define I915_FIFO_SIZE 95 1820#define I915_FIFO_SIZE 95
1802#define I855GM_FIFO_SIZE 127 /* In cachelines */ 1821#define I855GM_FIFO_SIZE 127 /* In cachelines */
1803#define I830_FIFO_SIZE 95 1822#define I830_FIFO_SIZE 95
1823
1824#define G4X_MAX_WM 0x3f
1804#define I915_MAX_WM 0x3f 1825#define I915_MAX_WM 0x3f
1805 1826
1806#define IGD_DISPLAY_FIFO 512 /* in 64byte unit */ 1827#define IGD_DISPLAY_FIFO 512 /* in 64byte unit */
@@ -2030,6 +2051,11 @@
2030#define PFA_CTL_1 0x68080 2051#define PFA_CTL_1 0x68080
2031#define PFB_CTL_1 0x68880 2052#define PFB_CTL_1 0x68880
2032#define PF_ENABLE (1<<31) 2053#define PF_ENABLE (1<<31)
2054#define PF_FILTER_MASK (3<<23)
2055#define PF_FILTER_PROGRAMMED (0<<23)
2056#define PF_FILTER_MED_3x3 (1<<23)
2057#define PF_FILTER_EDGE_ENHANCE (2<<23)
2058#define PF_FILTER_EDGE_SOFTEN (3<<23)
2033#define PFA_WIN_SZ 0x68074 2059#define PFA_WIN_SZ 0x68074
2034#define PFB_WIN_SZ 0x68874 2060#define PFB_WIN_SZ 0x68874
2035#define PFA_WIN_POS 0x68070 2061#define PFA_WIN_POS 0x68070
@@ -2149,11 +2175,11 @@
2149#define DREF_CPU_SOURCE_OUTPUT_MASK (3<<13) 2175#define DREF_CPU_SOURCE_OUTPUT_MASK (3<<13)
2150#define DREF_SSC_SOURCE_DISABLE (0<<11) 2176#define DREF_SSC_SOURCE_DISABLE (0<<11)
2151#define DREF_SSC_SOURCE_ENABLE (2<<11) 2177#define DREF_SSC_SOURCE_ENABLE (2<<11)
2152#define DREF_SSC_SOURCE_MASK (2<<11) 2178#define DREF_SSC_SOURCE_MASK (3<<11)
2153#define DREF_NONSPREAD_SOURCE_DISABLE (0<<9) 2179#define DREF_NONSPREAD_SOURCE_DISABLE (0<<9)
2154#define DREF_NONSPREAD_CK505_ENABLE (1<<9) 2180#define DREF_NONSPREAD_CK505_ENABLE (1<<9)
2155#define DREF_NONSPREAD_SOURCE_ENABLE (2<<9) 2181#define DREF_NONSPREAD_SOURCE_ENABLE (2<<9)
2156#define DREF_NONSPREAD_SOURCE_MASK (2<<9) 2182#define DREF_NONSPREAD_SOURCE_MASK (3<<9)
2157#define DREF_SUPERSPREAD_SOURCE_DISABLE (0<<7) 2183#define DREF_SUPERSPREAD_SOURCE_DISABLE (0<<7)
2158#define DREF_SUPERSPREAD_SOURCE_ENABLE (2<<7) 2184#define DREF_SUPERSPREAD_SOURCE_ENABLE (2<<7)
2159#define DREF_SSC4_DOWNSPREAD (0<<6) 2185#define DREF_SSC4_DOWNSPREAD (0<<6)
diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c
index bd6d8d91ca9f..6eec8171a44e 100644
--- a/drivers/gpu/drm/i915/i915_suspend.c
+++ b/drivers/gpu/drm/i915/i915_suspend.c
@@ -32,11 +32,15 @@
32static bool i915_pipe_enabled(struct drm_device *dev, enum pipe pipe) 32static bool i915_pipe_enabled(struct drm_device *dev, enum pipe pipe)
33{ 33{
34 struct drm_i915_private *dev_priv = dev->dev_private; 34 struct drm_i915_private *dev_priv = dev->dev_private;
35 u32 dpll_reg;
35 36
36 if (pipe == PIPE_A) 37 if (IS_IGDNG(dev)) {
37 return (I915_READ(DPLL_A) & DPLL_VCO_ENABLE); 38 dpll_reg = (pipe == PIPE_A) ? PCH_DPLL_A: PCH_DPLL_B;
38 else 39 } else {
39 return (I915_READ(DPLL_B) & DPLL_VCO_ENABLE); 40 dpll_reg = (pipe == PIPE_A) ? DPLL_A: DPLL_B;
41 }
42
43 return (I915_READ(dpll_reg) & DPLL_VCO_ENABLE);
40} 44}
41 45
42static void i915_save_palette(struct drm_device *dev, enum pipe pipe) 46static void i915_save_palette(struct drm_device *dev, enum pipe pipe)
@@ -49,6 +53,9 @@ static void i915_save_palette(struct drm_device *dev, enum pipe pipe)
49 if (!i915_pipe_enabled(dev, pipe)) 53 if (!i915_pipe_enabled(dev, pipe))
50 return; 54 return;
51 55
56 if (IS_IGDNG(dev))
57 reg = (pipe == PIPE_A) ? LGC_PALETTE_A : LGC_PALETTE_B;
58
52 if (pipe == PIPE_A) 59 if (pipe == PIPE_A)
53 array = dev_priv->save_palette_a; 60 array = dev_priv->save_palette_a;
54 else 61 else
@@ -68,6 +75,9 @@ static void i915_restore_palette(struct drm_device *dev, enum pipe pipe)
68 if (!i915_pipe_enabled(dev, pipe)) 75 if (!i915_pipe_enabled(dev, pipe))
69 return; 76 return;
70 77
78 if (IS_IGDNG(dev))
79 reg = (pipe == PIPE_A) ? LGC_PALETTE_A : LGC_PALETTE_B;
80
71 if (pipe == PIPE_A) 81 if (pipe == PIPE_A)
72 array = dev_priv->save_palette_a; 82 array = dev_priv->save_palette_a;
73 else 83 else
@@ -229,13 +239,24 @@ static void i915_save_modeset_reg(struct drm_device *dev)
229 if (drm_core_check_feature(dev, DRIVER_MODESET)) 239 if (drm_core_check_feature(dev, DRIVER_MODESET))
230 return; 240 return;
231 241
242 if (IS_IGDNG(dev)) {
243 dev_priv->savePCH_DREF_CONTROL = I915_READ(PCH_DREF_CONTROL);
244 dev_priv->saveDISP_ARB_CTL = I915_READ(DISP_ARB_CTL);
245 }
246
232 /* Pipe & plane A info */ 247 /* Pipe & plane A info */
233 dev_priv->savePIPEACONF = I915_READ(PIPEACONF); 248 dev_priv->savePIPEACONF = I915_READ(PIPEACONF);
234 dev_priv->savePIPEASRC = I915_READ(PIPEASRC); 249 dev_priv->savePIPEASRC = I915_READ(PIPEASRC);
235 dev_priv->saveFPA0 = I915_READ(FPA0); 250 if (IS_IGDNG(dev)) {
236 dev_priv->saveFPA1 = I915_READ(FPA1); 251 dev_priv->saveFPA0 = I915_READ(PCH_FPA0);
237 dev_priv->saveDPLL_A = I915_READ(DPLL_A); 252 dev_priv->saveFPA1 = I915_READ(PCH_FPA1);
238 if (IS_I965G(dev)) 253 dev_priv->saveDPLL_A = I915_READ(PCH_DPLL_A);
254 } else {
255 dev_priv->saveFPA0 = I915_READ(FPA0);
256 dev_priv->saveFPA1 = I915_READ(FPA1);
257 dev_priv->saveDPLL_A = I915_READ(DPLL_A);
258 }
259 if (IS_I965G(dev) && !IS_IGDNG(dev))
239 dev_priv->saveDPLL_A_MD = I915_READ(DPLL_A_MD); 260 dev_priv->saveDPLL_A_MD = I915_READ(DPLL_A_MD);
240 dev_priv->saveHTOTAL_A = I915_READ(HTOTAL_A); 261 dev_priv->saveHTOTAL_A = I915_READ(HTOTAL_A);
241 dev_priv->saveHBLANK_A = I915_READ(HBLANK_A); 262 dev_priv->saveHBLANK_A = I915_READ(HBLANK_A);
@@ -243,7 +264,30 @@ static void i915_save_modeset_reg(struct drm_device *dev)
243 dev_priv->saveVTOTAL_A = I915_READ(VTOTAL_A); 264 dev_priv->saveVTOTAL_A = I915_READ(VTOTAL_A);
244 dev_priv->saveVBLANK_A = I915_READ(VBLANK_A); 265 dev_priv->saveVBLANK_A = I915_READ(VBLANK_A);
245 dev_priv->saveVSYNC_A = I915_READ(VSYNC_A); 266 dev_priv->saveVSYNC_A = I915_READ(VSYNC_A);
246 dev_priv->saveBCLRPAT_A = I915_READ(BCLRPAT_A); 267 if (!IS_IGDNG(dev))
268 dev_priv->saveBCLRPAT_A = I915_READ(BCLRPAT_A);
269
270 if (IS_IGDNG(dev)) {
271 dev_priv->savePIPEA_DATA_M1 = I915_READ(PIPEA_DATA_M1);
272 dev_priv->savePIPEA_DATA_N1 = I915_READ(PIPEA_DATA_N1);
273 dev_priv->savePIPEA_LINK_M1 = I915_READ(PIPEA_LINK_M1);
274 dev_priv->savePIPEA_LINK_N1 = I915_READ(PIPEA_LINK_N1);
275
276 dev_priv->saveFDI_TXA_CTL = I915_READ(FDI_TXA_CTL);
277 dev_priv->saveFDI_RXA_CTL = I915_READ(FDI_RXA_CTL);
278
279 dev_priv->savePFA_CTL_1 = I915_READ(PFA_CTL_1);
280 dev_priv->savePFA_WIN_SZ = I915_READ(PFA_WIN_SZ);
281 dev_priv->savePFA_WIN_POS = I915_READ(PFA_WIN_POS);
282
283 dev_priv->saveTRANSACONF = I915_READ(TRANSACONF);
284 dev_priv->saveTRANS_HTOTAL_A = I915_READ(TRANS_HTOTAL_A);
285 dev_priv->saveTRANS_HBLANK_A = I915_READ(TRANS_HBLANK_A);
286 dev_priv->saveTRANS_HSYNC_A = I915_READ(TRANS_HSYNC_A);
287 dev_priv->saveTRANS_VTOTAL_A = I915_READ(TRANS_VTOTAL_A);
288 dev_priv->saveTRANS_VBLANK_A = I915_READ(TRANS_VBLANK_A);
289 dev_priv->saveTRANS_VSYNC_A = I915_READ(TRANS_VSYNC_A);
290 }
247 291
248 dev_priv->saveDSPACNTR = I915_READ(DSPACNTR); 292 dev_priv->saveDSPACNTR = I915_READ(DSPACNTR);
249 dev_priv->saveDSPASTRIDE = I915_READ(DSPASTRIDE); 293 dev_priv->saveDSPASTRIDE = I915_READ(DSPASTRIDE);
@@ -260,10 +304,16 @@ static void i915_save_modeset_reg(struct drm_device *dev)
260 /* Pipe & plane B info */ 304 /* Pipe & plane B info */
261 dev_priv->savePIPEBCONF = I915_READ(PIPEBCONF); 305 dev_priv->savePIPEBCONF = I915_READ(PIPEBCONF);
262 dev_priv->savePIPEBSRC = I915_READ(PIPEBSRC); 306 dev_priv->savePIPEBSRC = I915_READ(PIPEBSRC);
263 dev_priv->saveFPB0 = I915_READ(FPB0); 307 if (IS_IGDNG(dev)) {
264 dev_priv->saveFPB1 = I915_READ(FPB1); 308 dev_priv->saveFPB0 = I915_READ(PCH_FPB0);
265 dev_priv->saveDPLL_B = I915_READ(DPLL_B); 309 dev_priv->saveFPB1 = I915_READ(PCH_FPB1);
266 if (IS_I965G(dev)) 310 dev_priv->saveDPLL_B = I915_READ(PCH_DPLL_B);
311 } else {
312 dev_priv->saveFPB0 = I915_READ(FPB0);
313 dev_priv->saveFPB1 = I915_READ(FPB1);
314 dev_priv->saveDPLL_B = I915_READ(DPLL_B);
315 }
316 if (IS_I965G(dev) && !IS_IGDNG(dev))
267 dev_priv->saveDPLL_B_MD = I915_READ(DPLL_B_MD); 317 dev_priv->saveDPLL_B_MD = I915_READ(DPLL_B_MD);
268 dev_priv->saveHTOTAL_B = I915_READ(HTOTAL_B); 318 dev_priv->saveHTOTAL_B = I915_READ(HTOTAL_B);
269 dev_priv->saveHBLANK_B = I915_READ(HBLANK_B); 319 dev_priv->saveHBLANK_B = I915_READ(HBLANK_B);
@@ -271,7 +321,30 @@ static void i915_save_modeset_reg(struct drm_device *dev)
271 dev_priv->saveVTOTAL_B = I915_READ(VTOTAL_B); 321 dev_priv->saveVTOTAL_B = I915_READ(VTOTAL_B);
272 dev_priv->saveVBLANK_B = I915_READ(VBLANK_B); 322 dev_priv->saveVBLANK_B = I915_READ(VBLANK_B);
273 dev_priv->saveVSYNC_B = I915_READ(VSYNC_B); 323 dev_priv->saveVSYNC_B = I915_READ(VSYNC_B);
274 dev_priv->saveBCLRPAT_A = I915_READ(BCLRPAT_A); 324 if (!IS_IGDNG(dev))
325 dev_priv->saveBCLRPAT_B = I915_READ(BCLRPAT_B);
326
327 if (IS_IGDNG(dev)) {
328 dev_priv->savePIPEB_DATA_M1 = I915_READ(PIPEB_DATA_M1);
329 dev_priv->savePIPEB_DATA_N1 = I915_READ(PIPEB_DATA_N1);
330 dev_priv->savePIPEB_LINK_M1 = I915_READ(PIPEB_LINK_M1);
331 dev_priv->savePIPEB_LINK_N1 = I915_READ(PIPEB_LINK_N1);
332
333 dev_priv->saveFDI_TXB_CTL = I915_READ(FDI_TXB_CTL);
334 dev_priv->saveFDI_RXB_CTL = I915_READ(FDI_RXB_CTL);
335
336 dev_priv->savePFB_CTL_1 = I915_READ(PFB_CTL_1);
337 dev_priv->savePFB_WIN_SZ = I915_READ(PFB_WIN_SZ);
338 dev_priv->savePFB_WIN_POS = I915_READ(PFB_WIN_POS);
339
340 dev_priv->saveTRANSBCONF = I915_READ(TRANSBCONF);
341 dev_priv->saveTRANS_HTOTAL_B = I915_READ(TRANS_HTOTAL_B);
342 dev_priv->saveTRANS_HBLANK_B = I915_READ(TRANS_HBLANK_B);
343 dev_priv->saveTRANS_HSYNC_B = I915_READ(TRANS_HSYNC_B);
344 dev_priv->saveTRANS_VTOTAL_B = I915_READ(TRANS_VTOTAL_B);
345 dev_priv->saveTRANS_VBLANK_B = I915_READ(TRANS_VBLANK_B);
346 dev_priv->saveTRANS_VSYNC_B = I915_READ(TRANS_VSYNC_B);
347 }
275 348
276 dev_priv->saveDSPBCNTR = I915_READ(DSPBCNTR); 349 dev_priv->saveDSPBCNTR = I915_READ(DSPBCNTR);
277 dev_priv->saveDSPBSTRIDE = I915_READ(DSPBSTRIDE); 350 dev_priv->saveDSPBSTRIDE = I915_READ(DSPBSTRIDE);
@@ -290,23 +363,46 @@ static void i915_save_modeset_reg(struct drm_device *dev)
290static void i915_restore_modeset_reg(struct drm_device *dev) 363static void i915_restore_modeset_reg(struct drm_device *dev)
291{ 364{
292 struct drm_i915_private *dev_priv = dev->dev_private; 365 struct drm_i915_private *dev_priv = dev->dev_private;
366 int dpll_a_reg, fpa0_reg, fpa1_reg;
367 int dpll_b_reg, fpb0_reg, fpb1_reg;
293 368
294 if (drm_core_check_feature(dev, DRIVER_MODESET)) 369 if (drm_core_check_feature(dev, DRIVER_MODESET))
295 return; 370 return;
296 371
372 if (IS_IGDNG(dev)) {
373 dpll_a_reg = PCH_DPLL_A;
374 dpll_b_reg = PCH_DPLL_B;
375 fpa0_reg = PCH_FPA0;
376 fpb0_reg = PCH_FPB0;
377 fpa1_reg = PCH_FPA1;
378 fpb1_reg = PCH_FPB1;
379 } else {
380 dpll_a_reg = DPLL_A;
381 dpll_b_reg = DPLL_B;
382 fpa0_reg = FPA0;
383 fpb0_reg = FPB0;
384 fpa1_reg = FPA1;
385 fpb1_reg = FPB1;
386 }
387
388 if (IS_IGDNG(dev)) {
389 I915_WRITE(PCH_DREF_CONTROL, dev_priv->savePCH_DREF_CONTROL);
390 I915_WRITE(DISP_ARB_CTL, dev_priv->saveDISP_ARB_CTL);
391 }
392
297 /* Pipe & plane A info */ 393 /* Pipe & plane A info */
298 /* Prime the clock */ 394 /* Prime the clock */
299 if (dev_priv->saveDPLL_A & DPLL_VCO_ENABLE) { 395 if (dev_priv->saveDPLL_A & DPLL_VCO_ENABLE) {
300 I915_WRITE(DPLL_A, dev_priv->saveDPLL_A & 396 I915_WRITE(dpll_a_reg, dev_priv->saveDPLL_A &
301 ~DPLL_VCO_ENABLE); 397 ~DPLL_VCO_ENABLE);
302 DRM_UDELAY(150); 398 DRM_UDELAY(150);
303 } 399 }
304 I915_WRITE(FPA0, dev_priv->saveFPA0); 400 I915_WRITE(fpa0_reg, dev_priv->saveFPA0);
305 I915_WRITE(FPA1, dev_priv->saveFPA1); 401 I915_WRITE(fpa1_reg, dev_priv->saveFPA1);
306 /* Actually enable it */ 402 /* Actually enable it */
307 I915_WRITE(DPLL_A, dev_priv->saveDPLL_A); 403 I915_WRITE(dpll_a_reg, dev_priv->saveDPLL_A);
308 DRM_UDELAY(150); 404 DRM_UDELAY(150);
309 if (IS_I965G(dev)) 405 if (IS_I965G(dev) && !IS_IGDNG(dev))
310 I915_WRITE(DPLL_A_MD, dev_priv->saveDPLL_A_MD); 406 I915_WRITE(DPLL_A_MD, dev_priv->saveDPLL_A_MD);
311 DRM_UDELAY(150); 407 DRM_UDELAY(150);
312 408
@@ -317,7 +413,30 @@ static void i915_restore_modeset_reg(struct drm_device *dev)
317 I915_WRITE(VTOTAL_A, dev_priv->saveVTOTAL_A); 413 I915_WRITE(VTOTAL_A, dev_priv->saveVTOTAL_A);
318 I915_WRITE(VBLANK_A, dev_priv->saveVBLANK_A); 414 I915_WRITE(VBLANK_A, dev_priv->saveVBLANK_A);
319 I915_WRITE(VSYNC_A, dev_priv->saveVSYNC_A); 415 I915_WRITE(VSYNC_A, dev_priv->saveVSYNC_A);
320 I915_WRITE(BCLRPAT_A, dev_priv->saveBCLRPAT_A); 416 if (!IS_IGDNG(dev))
417 I915_WRITE(BCLRPAT_A, dev_priv->saveBCLRPAT_A);
418
419 if (IS_IGDNG(dev)) {
420 I915_WRITE(PIPEA_DATA_M1, dev_priv->savePIPEA_DATA_M1);
421 I915_WRITE(PIPEA_DATA_N1, dev_priv->savePIPEA_DATA_N1);
422 I915_WRITE(PIPEA_LINK_M1, dev_priv->savePIPEA_LINK_M1);
423 I915_WRITE(PIPEA_LINK_N1, dev_priv->savePIPEA_LINK_N1);
424
425 I915_WRITE(FDI_RXA_CTL, dev_priv->saveFDI_RXA_CTL);
426 I915_WRITE(FDI_TXA_CTL, dev_priv->saveFDI_TXA_CTL);
427
428 I915_WRITE(PFA_CTL_1, dev_priv->savePFA_CTL_1);
429 I915_WRITE(PFA_WIN_SZ, dev_priv->savePFA_WIN_SZ);
430 I915_WRITE(PFA_WIN_POS, dev_priv->savePFA_WIN_POS);
431
432 I915_WRITE(TRANSACONF, dev_priv->saveTRANSACONF);
433 I915_WRITE(TRANS_HTOTAL_A, dev_priv->saveTRANS_HTOTAL_A);
434 I915_WRITE(TRANS_HBLANK_A, dev_priv->saveTRANS_HBLANK_A);
435 I915_WRITE(TRANS_HSYNC_A, dev_priv->saveTRANS_HSYNC_A);
436 I915_WRITE(TRANS_VTOTAL_A, dev_priv->saveTRANS_VTOTAL_A);
437 I915_WRITE(TRANS_VBLANK_A, dev_priv->saveTRANS_VBLANK_A);
438 I915_WRITE(TRANS_VSYNC_A, dev_priv->saveTRANS_VSYNC_A);
439 }
321 440
322 /* Restore plane info */ 441 /* Restore plane info */
323 I915_WRITE(DSPASIZE, dev_priv->saveDSPASIZE); 442 I915_WRITE(DSPASIZE, dev_priv->saveDSPASIZE);
@@ -339,16 +458,16 @@ static void i915_restore_modeset_reg(struct drm_device *dev)
339 458
340 /* Pipe & plane B info */ 459 /* Pipe & plane B info */
341 if (dev_priv->saveDPLL_B & DPLL_VCO_ENABLE) { 460 if (dev_priv->saveDPLL_B & DPLL_VCO_ENABLE) {
342 I915_WRITE(DPLL_B, dev_priv->saveDPLL_B & 461 I915_WRITE(dpll_b_reg, dev_priv->saveDPLL_B &
343 ~DPLL_VCO_ENABLE); 462 ~DPLL_VCO_ENABLE);
344 DRM_UDELAY(150); 463 DRM_UDELAY(150);
345 } 464 }
346 I915_WRITE(FPB0, dev_priv->saveFPB0); 465 I915_WRITE(fpb0_reg, dev_priv->saveFPB0);
347 I915_WRITE(FPB1, dev_priv->saveFPB1); 466 I915_WRITE(fpb1_reg, dev_priv->saveFPB1);
348 /* Actually enable it */ 467 /* Actually enable it */
349 I915_WRITE(DPLL_B, dev_priv->saveDPLL_B); 468 I915_WRITE(dpll_b_reg, dev_priv->saveDPLL_B);
350 DRM_UDELAY(150); 469 DRM_UDELAY(150);
351 if (IS_I965G(dev)) 470 if (IS_I965G(dev) && !IS_IGDNG(dev))
352 I915_WRITE(DPLL_B_MD, dev_priv->saveDPLL_B_MD); 471 I915_WRITE(DPLL_B_MD, dev_priv->saveDPLL_B_MD);
353 DRM_UDELAY(150); 472 DRM_UDELAY(150);
354 473
@@ -359,7 +478,30 @@ static void i915_restore_modeset_reg(struct drm_device *dev)
359 I915_WRITE(VTOTAL_B, dev_priv->saveVTOTAL_B); 478 I915_WRITE(VTOTAL_B, dev_priv->saveVTOTAL_B);
360 I915_WRITE(VBLANK_B, dev_priv->saveVBLANK_B); 479 I915_WRITE(VBLANK_B, dev_priv->saveVBLANK_B);
361 I915_WRITE(VSYNC_B, dev_priv->saveVSYNC_B); 480 I915_WRITE(VSYNC_B, dev_priv->saveVSYNC_B);
362 I915_WRITE(BCLRPAT_B, dev_priv->saveBCLRPAT_B); 481 if (!IS_IGDNG(dev))
482 I915_WRITE(BCLRPAT_B, dev_priv->saveBCLRPAT_B);
483
484 if (IS_IGDNG(dev)) {
485 I915_WRITE(PIPEB_DATA_M1, dev_priv->savePIPEB_DATA_M1);
486 I915_WRITE(PIPEB_DATA_N1, dev_priv->savePIPEB_DATA_N1);
487 I915_WRITE(PIPEB_LINK_M1, dev_priv->savePIPEB_LINK_M1);
488 I915_WRITE(PIPEB_LINK_N1, dev_priv->savePIPEB_LINK_N1);
489
490 I915_WRITE(FDI_RXB_CTL, dev_priv->saveFDI_RXB_CTL);
491 I915_WRITE(FDI_TXB_CTL, dev_priv->saveFDI_TXB_CTL);
492
493 I915_WRITE(PFB_CTL_1, dev_priv->savePFB_CTL_1);
494 I915_WRITE(PFB_WIN_SZ, dev_priv->savePFB_WIN_SZ);
495 I915_WRITE(PFB_WIN_POS, dev_priv->savePFB_WIN_POS);
496
497 I915_WRITE(TRANSBCONF, dev_priv->saveTRANSBCONF);
498 I915_WRITE(TRANS_HTOTAL_B, dev_priv->saveTRANS_HTOTAL_B);
499 I915_WRITE(TRANS_HBLANK_B, dev_priv->saveTRANS_HBLANK_B);
500 I915_WRITE(TRANS_HSYNC_B, dev_priv->saveTRANS_HSYNC_B);
501 I915_WRITE(TRANS_VTOTAL_B, dev_priv->saveTRANS_VTOTAL_B);
502 I915_WRITE(TRANS_VBLANK_B, dev_priv->saveTRANS_VBLANK_B);
503 I915_WRITE(TRANS_VSYNC_B, dev_priv->saveTRANS_VSYNC_B);
504 }
363 505
364 /* Restore plane info */ 506 /* Restore plane info */
365 I915_WRITE(DSPBSIZE, dev_priv->saveDSPBSIZE); 507 I915_WRITE(DSPBSIZE, dev_priv->saveDSPBSIZE);
@@ -404,21 +546,43 @@ void i915_save_display(struct drm_device *dev)
404 dev_priv->saveCURSIZE = I915_READ(CURSIZE); 546 dev_priv->saveCURSIZE = I915_READ(CURSIZE);
405 547
406 /* CRT state */ 548 /* CRT state */
407 dev_priv->saveADPA = I915_READ(ADPA); 549 if (IS_IGDNG(dev)) {
550 dev_priv->saveADPA = I915_READ(PCH_ADPA);
551 } else {
552 dev_priv->saveADPA = I915_READ(ADPA);
553 }
408 554
409 /* LVDS state */ 555 /* LVDS state */
410 dev_priv->savePP_CONTROL = I915_READ(PP_CONTROL); 556 if (IS_IGDNG(dev)) {
411 dev_priv->savePFIT_PGM_RATIOS = I915_READ(PFIT_PGM_RATIOS); 557 dev_priv->savePP_CONTROL = I915_READ(PCH_PP_CONTROL);
412 dev_priv->saveBLC_PWM_CTL = I915_READ(BLC_PWM_CTL); 558 dev_priv->saveBLC_PWM_CTL = I915_READ(BLC_PWM_PCH_CTL1);
413 if (IS_I965G(dev)) 559 dev_priv->saveBLC_PWM_CTL2 = I915_READ(BLC_PWM_PCH_CTL2);
414 dev_priv->saveBLC_PWM_CTL2 = I915_READ(BLC_PWM_CTL2); 560 dev_priv->saveBLC_CPU_PWM_CTL = I915_READ(BLC_PWM_CPU_CTL);
415 if (IS_MOBILE(dev) && !IS_I830(dev)) 561 dev_priv->saveBLC_CPU_PWM_CTL2 = I915_READ(BLC_PWM_CPU_CTL2);
416 dev_priv->saveLVDS = I915_READ(LVDS); 562 dev_priv->saveLVDS = I915_READ(PCH_LVDS);
417 if (!IS_I830(dev) && !IS_845G(dev)) 563 } else {
564 dev_priv->savePP_CONTROL = I915_READ(PP_CONTROL);
565 dev_priv->savePFIT_PGM_RATIOS = I915_READ(PFIT_PGM_RATIOS);
566 dev_priv->saveBLC_PWM_CTL = I915_READ(BLC_PWM_CTL);
567 dev_priv->saveBLC_HIST_CTL = I915_READ(BLC_HIST_CTL);
568 if (IS_I965G(dev))
569 dev_priv->saveBLC_PWM_CTL2 = I915_READ(BLC_PWM_CTL2);
570 if (IS_MOBILE(dev) && !IS_I830(dev))
571 dev_priv->saveLVDS = I915_READ(LVDS);
572 }
573
574 if (!IS_I830(dev) && !IS_845G(dev) && !IS_IGDNG(dev))
418 dev_priv->savePFIT_CONTROL = I915_READ(PFIT_CONTROL); 575 dev_priv->savePFIT_CONTROL = I915_READ(PFIT_CONTROL);
419 dev_priv->savePP_ON_DELAYS = I915_READ(PP_ON_DELAYS); 576
420 dev_priv->savePP_OFF_DELAYS = I915_READ(PP_OFF_DELAYS); 577 if (IS_IGDNG(dev)) {
421 dev_priv->savePP_DIVISOR = I915_READ(PP_DIVISOR); 578 dev_priv->savePP_ON_DELAYS = I915_READ(PCH_PP_ON_DELAYS);
579 dev_priv->savePP_OFF_DELAYS = I915_READ(PCH_PP_OFF_DELAYS);
580 dev_priv->savePP_DIVISOR = I915_READ(PCH_PP_DIVISOR);
581 } else {
582 dev_priv->savePP_ON_DELAYS = I915_READ(PP_ON_DELAYS);
583 dev_priv->savePP_OFF_DELAYS = I915_READ(PP_OFF_DELAYS);
584 dev_priv->savePP_DIVISOR = I915_READ(PP_DIVISOR);
585 }
422 586
423 /* Display Port state */ 587 /* Display Port state */
424 if (SUPPORTS_INTEGRATED_DP(dev)) { 588 if (SUPPORTS_INTEGRATED_DP(dev)) {
@@ -437,16 +601,23 @@ void i915_save_display(struct drm_device *dev)
437 /* FIXME: save TV & SDVO state */ 601 /* FIXME: save TV & SDVO state */
438 602
439 /* FBC state */ 603 /* FBC state */
440 dev_priv->saveFBC_CFB_BASE = I915_READ(FBC_CFB_BASE); 604 if (IS_GM45(dev)) {
441 dev_priv->saveFBC_LL_BASE = I915_READ(FBC_LL_BASE); 605 dev_priv->saveDPFC_CB_BASE = I915_READ(DPFC_CB_BASE);
442 dev_priv->saveFBC_CONTROL2 = I915_READ(FBC_CONTROL2); 606 } else {
443 dev_priv->saveFBC_CONTROL = I915_READ(FBC_CONTROL); 607 dev_priv->saveFBC_CFB_BASE = I915_READ(FBC_CFB_BASE);
608 dev_priv->saveFBC_LL_BASE = I915_READ(FBC_LL_BASE);
609 dev_priv->saveFBC_CONTROL2 = I915_READ(FBC_CONTROL2);
610 dev_priv->saveFBC_CONTROL = I915_READ(FBC_CONTROL);
611 }
444 612
445 /* VGA state */ 613 /* VGA state */
446 dev_priv->saveVGA0 = I915_READ(VGA0); 614 dev_priv->saveVGA0 = I915_READ(VGA0);
447 dev_priv->saveVGA1 = I915_READ(VGA1); 615 dev_priv->saveVGA1 = I915_READ(VGA1);
448 dev_priv->saveVGA_PD = I915_READ(VGA_PD); 616 dev_priv->saveVGA_PD = I915_READ(VGA_PD);
449 dev_priv->saveVGACNTRL = I915_READ(VGACNTRL); 617 if (IS_IGDNG(dev))
618 dev_priv->saveVGACNTRL = I915_READ(CPU_VGACNTRL);
619 else
620 dev_priv->saveVGACNTRL = I915_READ(VGACNTRL);
450 621
451 i915_save_vga(dev); 622 i915_save_vga(dev);
452} 623}
@@ -485,22 +656,41 @@ void i915_restore_display(struct drm_device *dev)
485 I915_WRITE(CURSIZE, dev_priv->saveCURSIZE); 656 I915_WRITE(CURSIZE, dev_priv->saveCURSIZE);
486 657
487 /* CRT state */ 658 /* CRT state */
488 I915_WRITE(ADPA, dev_priv->saveADPA); 659 if (IS_IGDNG(dev))
660 I915_WRITE(PCH_ADPA, dev_priv->saveADPA);
661 else
662 I915_WRITE(ADPA, dev_priv->saveADPA);
489 663
490 /* LVDS state */ 664 /* LVDS state */
491 if (IS_I965G(dev)) 665 if (IS_I965G(dev) && !IS_IGDNG(dev))
492 I915_WRITE(BLC_PWM_CTL2, dev_priv->saveBLC_PWM_CTL2); 666 I915_WRITE(BLC_PWM_CTL2, dev_priv->saveBLC_PWM_CTL2);
493 if (IS_MOBILE(dev) && !IS_I830(dev)) 667
668 if (IS_IGDNG(dev)) {
669 I915_WRITE(PCH_LVDS, dev_priv->saveLVDS);
670 } else if (IS_MOBILE(dev) && !IS_I830(dev))
494 I915_WRITE(LVDS, dev_priv->saveLVDS); 671 I915_WRITE(LVDS, dev_priv->saveLVDS);
495 if (!IS_I830(dev) && !IS_845G(dev)) 672
673 if (!IS_I830(dev) && !IS_845G(dev) && !IS_IGDNG(dev))
496 I915_WRITE(PFIT_CONTROL, dev_priv->savePFIT_CONTROL); 674 I915_WRITE(PFIT_CONTROL, dev_priv->savePFIT_CONTROL);
497 675
498 I915_WRITE(PFIT_PGM_RATIOS, dev_priv->savePFIT_PGM_RATIOS); 676 if (IS_IGDNG(dev)) {
499 I915_WRITE(BLC_PWM_CTL, dev_priv->saveBLC_PWM_CTL); 677 I915_WRITE(BLC_PWM_PCH_CTL1, dev_priv->saveBLC_PWM_CTL);
500 I915_WRITE(PP_ON_DELAYS, dev_priv->savePP_ON_DELAYS); 678 I915_WRITE(BLC_PWM_PCH_CTL2, dev_priv->saveBLC_PWM_CTL2);
501 I915_WRITE(PP_OFF_DELAYS, dev_priv->savePP_OFF_DELAYS); 679 I915_WRITE(BLC_PWM_CPU_CTL, dev_priv->saveBLC_CPU_PWM_CTL);
502 I915_WRITE(PP_DIVISOR, dev_priv->savePP_DIVISOR); 680 I915_WRITE(BLC_PWM_CPU_CTL2, dev_priv->saveBLC_CPU_PWM_CTL2);
503 I915_WRITE(PP_CONTROL, dev_priv->savePP_CONTROL); 681 I915_WRITE(PCH_PP_ON_DELAYS, dev_priv->savePP_ON_DELAYS);
682 I915_WRITE(PCH_PP_OFF_DELAYS, dev_priv->savePP_OFF_DELAYS);
683 I915_WRITE(PCH_PP_DIVISOR, dev_priv->savePP_DIVISOR);
684 I915_WRITE(PCH_PP_CONTROL, dev_priv->savePP_CONTROL);
685 } else {
686 I915_WRITE(PFIT_PGM_RATIOS, dev_priv->savePFIT_PGM_RATIOS);
687 I915_WRITE(BLC_PWM_CTL, dev_priv->saveBLC_PWM_CTL);
688 I915_WRITE(BLC_HIST_CTL, dev_priv->saveBLC_HIST_CTL);
689 I915_WRITE(PP_ON_DELAYS, dev_priv->savePP_ON_DELAYS);
690 I915_WRITE(PP_OFF_DELAYS, dev_priv->savePP_OFF_DELAYS);
691 I915_WRITE(PP_DIVISOR, dev_priv->savePP_DIVISOR);
692 I915_WRITE(PP_CONTROL, dev_priv->savePP_CONTROL);
693 }
504 694
505 /* Display Port state */ 695 /* Display Port state */
506 if (SUPPORTS_INTEGRATED_DP(dev)) { 696 if (SUPPORTS_INTEGRATED_DP(dev)) {
@@ -511,13 +701,22 @@ void i915_restore_display(struct drm_device *dev)
511 /* FIXME: restore TV & SDVO state */ 701 /* FIXME: restore TV & SDVO state */
512 702
513 /* FBC info */ 703 /* FBC info */
514 I915_WRITE(FBC_CFB_BASE, dev_priv->saveFBC_CFB_BASE); 704 if (IS_GM45(dev)) {
515 I915_WRITE(FBC_LL_BASE, dev_priv->saveFBC_LL_BASE); 705 g4x_disable_fbc(dev);
516 I915_WRITE(FBC_CONTROL2, dev_priv->saveFBC_CONTROL2); 706 I915_WRITE(DPFC_CB_BASE, dev_priv->saveDPFC_CB_BASE);
517 I915_WRITE(FBC_CONTROL, dev_priv->saveFBC_CONTROL); 707 } else {
708 i8xx_disable_fbc(dev);
709 I915_WRITE(FBC_CFB_BASE, dev_priv->saveFBC_CFB_BASE);
710 I915_WRITE(FBC_LL_BASE, dev_priv->saveFBC_LL_BASE);
711 I915_WRITE(FBC_CONTROL2, dev_priv->saveFBC_CONTROL2);
712 I915_WRITE(FBC_CONTROL, dev_priv->saveFBC_CONTROL);
713 }
518 714
519 /* VGA state */ 715 /* VGA state */
520 I915_WRITE(VGACNTRL, dev_priv->saveVGACNTRL); 716 if (IS_IGDNG(dev))
717 I915_WRITE(CPU_VGACNTRL, dev_priv->saveVGACNTRL);
718 else
719 I915_WRITE(VGACNTRL, dev_priv->saveVGACNTRL);
521 I915_WRITE(VGA0, dev_priv->saveVGA0); 720 I915_WRITE(VGA0, dev_priv->saveVGA0);
522 I915_WRITE(VGA1, dev_priv->saveVGA1); 721 I915_WRITE(VGA1, dev_priv->saveVGA1);
523 I915_WRITE(VGA_PD, dev_priv->saveVGA_PD); 722 I915_WRITE(VGA_PD, dev_priv->saveVGA_PD);
@@ -543,8 +742,17 @@ int i915_save_state(struct drm_device *dev)
543 i915_save_display(dev); 742 i915_save_display(dev);
544 743
545 /* Interrupt state */ 744 /* Interrupt state */
546 dev_priv->saveIER = I915_READ(IER); 745 if (IS_IGDNG(dev)) {
547 dev_priv->saveIMR = I915_READ(IMR); 746 dev_priv->saveDEIER = I915_READ(DEIER);
747 dev_priv->saveDEIMR = I915_READ(DEIMR);
748 dev_priv->saveGTIER = I915_READ(GTIER);
749 dev_priv->saveGTIMR = I915_READ(GTIMR);
750 dev_priv->saveFDI_RXA_IMR = I915_READ(FDI_RXA_IMR);
751 dev_priv->saveFDI_RXB_IMR = I915_READ(FDI_RXB_IMR);
752 } else {
753 dev_priv->saveIER = I915_READ(IER);
754 dev_priv->saveIMR = I915_READ(IMR);
755 }
548 756
549 /* Clock gating state */ 757 /* Clock gating state */
550 dev_priv->saveD_STATE = I915_READ(D_STATE); 758 dev_priv->saveD_STATE = I915_READ(D_STATE);
@@ -609,8 +817,17 @@ int i915_restore_state(struct drm_device *dev)
609 i915_restore_display(dev); 817 i915_restore_display(dev);
610 818
611 /* Interrupt state */ 819 /* Interrupt state */
612 I915_WRITE (IER, dev_priv->saveIER); 820 if (IS_IGDNG(dev)) {
613 I915_WRITE (IMR, dev_priv->saveIMR); 821 I915_WRITE(DEIER, dev_priv->saveDEIER);
822 I915_WRITE(DEIMR, dev_priv->saveDEIMR);
823 I915_WRITE(GTIER, dev_priv->saveGTIER);
824 I915_WRITE(GTIMR, dev_priv->saveGTIMR);
825 I915_WRITE(FDI_RXA_IMR, dev_priv->saveFDI_RXA_IMR);
826 I915_WRITE(FDI_RXB_IMR, dev_priv->saveFDI_RXB_IMR);
827 } else {
828 I915_WRITE (IER, dev_priv->saveIER);
829 I915_WRITE (IMR, dev_priv->saveIMR);
830 }
614 831
615 /* Clock gating state */ 832 /* Clock gating state */
616 I915_WRITE (D_STATE, dev_priv->saveD_STATE); 833 I915_WRITE (D_STATE, dev_priv->saveD_STATE);
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index 4337414846b6..96cd256e60e6 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -351,20 +351,18 @@ parse_driver_features(struct drm_i915_private *dev_priv,
351 struct drm_device *dev = dev_priv->dev; 351 struct drm_device *dev = dev_priv->dev;
352 struct bdb_driver_features *driver; 352 struct bdb_driver_features *driver;
353 353
354 /* set default for chips without eDP */
355 if (!SUPPORTS_EDP(dev)) {
356 dev_priv->edp_support = 0;
357 return;
358 }
359
360 driver = find_section(bdb, BDB_DRIVER_FEATURES); 354 driver = find_section(bdb, BDB_DRIVER_FEATURES);
361 if (!driver) 355 if (!driver)
362 return; 356 return;
363 357
364 if (driver->lvds_config == BDB_DRIVER_FEATURE_EDP) 358 if (driver && SUPPORTS_EDP(dev) &&
359 driver->lvds_config == BDB_DRIVER_FEATURE_EDP) {
365 dev_priv->edp_support = 1; 360 dev_priv->edp_support = 1;
361 } else {
362 dev_priv->edp_support = 0;
363 }
366 364
367 if (driver->dual_frequency) 365 if (driver && driver->dual_frequency)
368 dev_priv->render_reclock_avail = true; 366 dev_priv->render_reclock_avail = true;
369} 367}
370 368
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
index 212e22740fc1..e5051446c48e 100644
--- a/drivers/gpu/drm/i915/intel_crt.c
+++ b/drivers/gpu/drm/i915/intel_crt.c
@@ -262,8 +262,8 @@ static bool intel_crt_detect_hotplug(struct drm_connector *connector)
262 } while (time_after(timeout, jiffies)); 262 } while (time_after(timeout, jiffies));
263 } 263 }
264 264
265 if ((I915_READ(PORT_HOTPLUG_STAT) & CRT_HOTPLUG_MONITOR_MASK) == 265 if ((I915_READ(PORT_HOTPLUG_STAT) & CRT_HOTPLUG_MONITOR_MASK) !=
266 CRT_HOTPLUG_MONITOR_COLOR) 266 CRT_HOTPLUG_MONITOR_NONE)
267 return true; 267 return true;
268 268
269 return false; 269 return false;
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 3c14240cc002..099f420de57a 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -863,10 +863,8 @@ intel_igdng_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc,
863 struct drm_device *dev = crtc->dev; 863 struct drm_device *dev = crtc->dev;
864 struct drm_i915_private *dev_priv = dev->dev_private; 864 struct drm_i915_private *dev_priv = dev->dev_private;
865 intel_clock_t clock; 865 intel_clock_t clock;
866 int max_n;
867 bool found;
868 int err_most = 47; 866 int err_most = 47;
869 found = false; 867 int err_min = 10000;
870 868
871 /* eDP has only 2 clock choice, no n/m/p setting */ 869 /* eDP has only 2 clock choice, no n/m/p setting */
872 if (HAS_eDP) 870 if (HAS_eDP)
@@ -890,10 +888,9 @@ intel_igdng_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc,
890 } 888 }
891 889
892 memset(best_clock, 0, sizeof(*best_clock)); 890 memset(best_clock, 0, sizeof(*best_clock));
893 max_n = limit->n.max;
894 for (clock.p1 = limit->p1.max; clock.p1 >= limit->p1.min; clock.p1--) { 891 for (clock.p1 = limit->p1.max; clock.p1 >= limit->p1.min; clock.p1--) {
895 /* based on hardware requriment prefer smaller n to precision */ 892 /* based on hardware requriment prefer smaller n to precision */
896 for (clock.n = limit->n.min; clock.n <= max_n; clock.n++) { 893 for (clock.n = limit->n.min; clock.n <= limit->n.max; clock.n++) {
897 /* based on hardware requirment prefere larger m1,m2 */ 894 /* based on hardware requirment prefere larger m1,m2 */
898 for (clock.m1 = limit->m1.max; 895 for (clock.m1 = limit->m1.max;
899 clock.m1 >= limit->m1.min; clock.m1--) { 896 clock.m1 >= limit->m1.min; clock.m1--) {
@@ -907,18 +904,18 @@ intel_igdng_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc,
907 this_err = abs((10000 - (target*10000/clock.dot))); 904 this_err = abs((10000 - (target*10000/clock.dot)));
908 if (this_err < err_most) { 905 if (this_err < err_most) {
909 *best_clock = clock; 906 *best_clock = clock;
910 err_most = this_err;
911 max_n = clock.n;
912 found = true;
913 /* found on first matching */ 907 /* found on first matching */
914 goto out; 908 goto out;
909 } else if (this_err < err_min) {
910 *best_clock = clock;
911 err_min = this_err;
915 } 912 }
916 } 913 }
917 } 914 }
918 } 915 }
919 } 916 }
920out: 917out:
921 return found; 918 return true;
922} 919}
923 920
924/* DisplayPort has only two frequencies, 162MHz and 270MHz */ 921/* DisplayPort has only two frequencies, 162MHz and 270MHz */
@@ -943,6 +940,7 @@ intel_find_pll_g4x_dp(const intel_limit_t *limit, struct drm_crtc *crtc,
943 clock.m = 5 * (clock.m1 + 2) + (clock.m2 + 2); 940 clock.m = 5 * (clock.m1 + 2) + (clock.m2 + 2);
944 clock.p = (clock.p1 * clock.p2); 941 clock.p = (clock.p1 * clock.p2);
945 clock.dot = 96000 * clock.m / (clock.n + 2) / clock.p; 942 clock.dot = 96000 * clock.m / (clock.n + 2) / clock.p;
943 clock.vco = 0;
946 memcpy(best_clock, &clock, sizeof(intel_clock_t)); 944 memcpy(best_clock, &clock, sizeof(intel_clock_t));
947 return true; 945 return true;
948} 946}
@@ -1260,9 +1258,11 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
1260 return ret; 1258 return ret;
1261 } 1259 }
1262 1260
1263 /* Pre-i965 needs to install a fence for tiled scan-out */ 1261 /* Install a fence for tiled scan-out. Pre-i965 always needs a fence,
1264 if (!IS_I965G(dev) && 1262 * whereas 965+ only requires a fence if using framebuffer compression.
1265 obj_priv->fence_reg == I915_FENCE_REG_NONE && 1263 * For simplicity, we always install a fence as the cost is not that onerous.
1264 */
1265 if (obj_priv->fence_reg == I915_FENCE_REG_NONE &&
1266 obj_priv->tiling_mode != I915_TILING_NONE) { 1266 obj_priv->tiling_mode != I915_TILING_NONE) {
1267 ret = i915_gem_object_get_fence_reg(obj); 1267 ret = i915_gem_object_get_fence_reg(obj);
1268 if (ret != 0) { 1268 if (ret != 0) {
@@ -1513,7 +1513,7 @@ static void igdng_crtc_dpms(struct drm_crtc *crtc, int mode)
1513 /* Enable panel fitting for LVDS */ 1513 /* Enable panel fitting for LVDS */
1514 if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { 1514 if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) {
1515 temp = I915_READ(pf_ctl_reg); 1515 temp = I915_READ(pf_ctl_reg);
1516 I915_WRITE(pf_ctl_reg, temp | PF_ENABLE); 1516 I915_WRITE(pf_ctl_reg, temp | PF_ENABLE | PF_FILTER_MED_3x3);
1517 1517
1518 /* currently full aspect */ 1518 /* currently full aspect */
1519 I915_WRITE(pf_win_pos, 0); 1519 I915_WRITE(pf_win_pos, 0);
@@ -1801,6 +1801,8 @@ static void i9xx_crtc_dpms(struct drm_crtc *crtc, int mode)
1801 case DRM_MODE_DPMS_ON: 1801 case DRM_MODE_DPMS_ON:
1802 case DRM_MODE_DPMS_STANDBY: 1802 case DRM_MODE_DPMS_STANDBY:
1803 case DRM_MODE_DPMS_SUSPEND: 1803 case DRM_MODE_DPMS_SUSPEND:
1804 intel_update_watermarks(dev);
1805
1804 /* Enable the DPLL */ 1806 /* Enable the DPLL */
1805 temp = I915_READ(dpll_reg); 1807 temp = I915_READ(dpll_reg);
1806 if ((temp & DPLL_VCO_ENABLE) == 0) { 1808 if ((temp & DPLL_VCO_ENABLE) == 0) {
@@ -1838,7 +1840,6 @@ static void i9xx_crtc_dpms(struct drm_crtc *crtc, int mode)
1838 1840
1839 /* Give the overlay scaler a chance to enable if it's on this pipe */ 1841 /* Give the overlay scaler a chance to enable if it's on this pipe */
1840 //intel_crtc_dpms_video(crtc, true); TODO 1842 //intel_crtc_dpms_video(crtc, true); TODO
1841 intel_update_watermarks(dev);
1842 break; 1843 break;
1843 case DRM_MODE_DPMS_OFF: 1844 case DRM_MODE_DPMS_OFF:
1844 intel_update_watermarks(dev); 1845 intel_update_watermarks(dev);
@@ -2082,7 +2083,7 @@ fdi_reduce_ratio(u32 *num, u32 *den)
2082#define LINK_N 0x80000 2083#define LINK_N 0x80000
2083 2084
2084static void 2085static void
2085igdng_compute_m_n(int bytes_per_pixel, int nlanes, 2086igdng_compute_m_n(int bits_per_pixel, int nlanes,
2086 int pixel_clock, int link_clock, 2087 int pixel_clock, int link_clock,
2087 struct fdi_m_n *m_n) 2088 struct fdi_m_n *m_n)
2088{ 2089{
@@ -2092,7 +2093,8 @@ igdng_compute_m_n(int bytes_per_pixel, int nlanes,
2092 2093
2093 temp = (u64) DATA_N * pixel_clock; 2094 temp = (u64) DATA_N * pixel_clock;
2094 temp = div_u64(temp, link_clock); 2095 temp = div_u64(temp, link_clock);
2095 m_n->gmch_m = div_u64(temp * bytes_per_pixel, nlanes); 2096 m_n->gmch_m = div_u64(temp * bits_per_pixel, nlanes);
2097 m_n->gmch_m >>= 3; /* convert to bytes_per_pixel */
2096 m_n->gmch_n = DATA_N; 2098 m_n->gmch_n = DATA_N;
2097 fdi_reduce_ratio(&m_n->gmch_m, &m_n->gmch_n); 2099 fdi_reduce_ratio(&m_n->gmch_m, &m_n->gmch_n);
2098 2100
@@ -2140,6 +2142,13 @@ static struct intel_watermark_params igd_cursor_hplloff_wm = {
2140 IGD_CURSOR_GUARD_WM, 2142 IGD_CURSOR_GUARD_WM,
2141 IGD_FIFO_LINE_SIZE 2143 IGD_FIFO_LINE_SIZE
2142}; 2144};
2145static struct intel_watermark_params g4x_wm_info = {
2146 G4X_FIFO_SIZE,
2147 G4X_MAX_WM,
2148 G4X_MAX_WM,
2149 2,
2150 G4X_FIFO_LINE_SIZE,
2151};
2143static struct intel_watermark_params i945_wm_info = { 2152static struct intel_watermark_params i945_wm_info = {
2144 I945_FIFO_SIZE, 2153 I945_FIFO_SIZE,
2145 I915_MAX_WM, 2154 I915_MAX_WM,
@@ -2430,17 +2439,74 @@ static int i830_get_fifo_size(struct drm_device *dev, int plane)
2430 return size; 2439 return size;
2431} 2440}
2432 2441
2433static void g4x_update_wm(struct drm_device *dev, int unused, int unused2, 2442static void g4x_update_wm(struct drm_device *dev, int planea_clock,
2434 int unused3, int unused4) 2443 int planeb_clock, int sr_hdisplay, int pixel_size)
2435{ 2444{
2436 struct drm_i915_private *dev_priv = dev->dev_private; 2445 struct drm_i915_private *dev_priv = dev->dev_private;
2437 u32 fw_blc_self = I915_READ(FW_BLC_SELF); 2446 int total_size, cacheline_size;
2447 int planea_wm, planeb_wm, cursora_wm, cursorb_wm, cursor_sr;
2448 struct intel_watermark_params planea_params, planeb_params;
2449 unsigned long line_time_us;
2450 int sr_clock, sr_entries = 0, entries_required;
2438 2451
2439 if (i915_powersave) 2452 /* Create copies of the base settings for each pipe */
2440 fw_blc_self |= FW_BLC_SELF_EN; 2453 planea_params = planeb_params = g4x_wm_info;
2441 else 2454
2442 fw_blc_self &= ~FW_BLC_SELF_EN; 2455 /* Grab a couple of global values before we overwrite them */
2443 I915_WRITE(FW_BLC_SELF, fw_blc_self); 2456 total_size = planea_params.fifo_size;
2457 cacheline_size = planea_params.cacheline_size;
2458
2459 /*
2460 * Note: we need to make sure we don't overflow for various clock &
2461 * latency values.
2462 * clocks go from a few thousand to several hundred thousand.
2463 * latency is usually a few thousand
2464 */
2465 entries_required = ((planea_clock / 1000) * pixel_size * latency_ns) /
2466 1000;
2467 entries_required /= G4X_FIFO_LINE_SIZE;
2468 planea_wm = entries_required + planea_params.guard_size;
2469
2470 entries_required = ((planeb_clock / 1000) * pixel_size * latency_ns) /
2471 1000;
2472 entries_required /= G4X_FIFO_LINE_SIZE;
2473 planeb_wm = entries_required + planeb_params.guard_size;
2474
2475 cursora_wm = cursorb_wm = 16;
2476 cursor_sr = 32;
2477
2478 DRM_DEBUG("FIFO watermarks - A: %d, B: %d\n", planea_wm, planeb_wm);
2479
2480 /* Calc sr entries for one plane configs */
2481 if (sr_hdisplay && (!planea_clock || !planeb_clock)) {
2482 /* self-refresh has much higher latency */
2483 const static int sr_latency_ns = 12000;
2484
2485 sr_clock = planea_clock ? planea_clock : planeb_clock;
2486 line_time_us = ((sr_hdisplay * 1000) / sr_clock);
2487
2488 /* Use ns/us then divide to preserve precision */
2489 sr_entries = (((sr_latency_ns / line_time_us) + 1) *
2490 pixel_size * sr_hdisplay) / 1000;
2491 sr_entries = roundup(sr_entries / cacheline_size, 1);
2492 DRM_DEBUG("self-refresh entries: %d\n", sr_entries);
2493 I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN);
2494 }
2495
2496 DRM_DEBUG("Setting FIFO watermarks - A: %d, B: %d, SR %d\n",
2497 planea_wm, planeb_wm, sr_entries);
2498
2499 planea_wm &= 0x3f;
2500 planeb_wm &= 0x3f;
2501
2502 I915_WRITE(DSPFW1, (sr_entries << DSPFW_SR_SHIFT) |
2503 (cursorb_wm << DSPFW_CURSORB_SHIFT) |
2504 (planeb_wm << DSPFW_PLANEB_SHIFT) | planea_wm);
2505 I915_WRITE(DSPFW2, (I915_READ(DSPFW2) & DSPFW_CURSORA_MASK) |
2506 (cursora_wm << DSPFW_CURSORA_SHIFT));
2507 /* HPLL off in SR has some issues on G4x... disable it */
2508 I915_WRITE(DSPFW3, (I915_READ(DSPFW3) & ~DSPFW_HPLL_SR_EN) |
2509 (cursor_sr << DSPFW_CURSOR_SR_SHIFT));
2444} 2510}
2445 2511
2446static void i965_update_wm(struct drm_device *dev, int unused, int unused2, 2512static void i965_update_wm(struct drm_device *dev, int unused, int unused2,
@@ -2586,6 +2652,9 @@ static void intel_update_watermarks(struct drm_device *dev)
2586 unsigned long planea_clock = 0, planeb_clock = 0, sr_clock = 0; 2652 unsigned long planea_clock = 0, planeb_clock = 0, sr_clock = 0;
2587 int enabled = 0, pixel_size = 0; 2653 int enabled = 0, pixel_size = 0;
2588 2654
2655 if (!dev_priv->display.update_wm)
2656 return;
2657
2589 /* Get the clock config from both planes */ 2658 /* Get the clock config from both planes */
2590 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { 2659 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
2591 intel_crtc = to_intel_crtc(crtc); 2660 intel_crtc = to_intel_crtc(crtc);
@@ -2763,7 +2832,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
2763 2832
2764 /* FDI link */ 2833 /* FDI link */
2765 if (IS_IGDNG(dev)) { 2834 if (IS_IGDNG(dev)) {
2766 int lane, link_bw; 2835 int lane, link_bw, bpp;
2767 /* eDP doesn't require FDI link, so just set DP M/N 2836 /* eDP doesn't require FDI link, so just set DP M/N
2768 according to current link config */ 2837 according to current link config */
2769 if (is_edp) { 2838 if (is_edp) {
@@ -2782,10 +2851,72 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
2782 lane = 4; 2851 lane = 4;
2783 link_bw = 270000; 2852 link_bw = 270000;
2784 } 2853 }
2785 igdng_compute_m_n(3, lane, target_clock, 2854
2855 /* determine panel color depth */
2856 temp = I915_READ(pipeconf_reg);
2857
2858 switch (temp & PIPE_BPC_MASK) {
2859 case PIPE_8BPC:
2860 bpp = 24;
2861 break;
2862 case PIPE_10BPC:
2863 bpp = 30;
2864 break;
2865 case PIPE_6BPC:
2866 bpp = 18;
2867 break;
2868 case PIPE_12BPC:
2869 bpp = 36;
2870 break;
2871 default:
2872 DRM_ERROR("unknown pipe bpc value\n");
2873 bpp = 24;
2874 }
2875
2876 igdng_compute_m_n(bpp, lane, target_clock,
2786 link_bw, &m_n); 2877 link_bw, &m_n);
2787 } 2878 }
2788 2879
2880 /* Ironlake: try to setup display ref clock before DPLL
2881 * enabling. This is only under driver's control after
2882 * PCH B stepping, previous chipset stepping should be
2883 * ignoring this setting.
2884 */
2885 if (IS_IGDNG(dev)) {
2886 temp = I915_READ(PCH_DREF_CONTROL);
2887 /* Always enable nonspread source */
2888 temp &= ~DREF_NONSPREAD_SOURCE_MASK;
2889 temp |= DREF_NONSPREAD_SOURCE_ENABLE;
2890 I915_WRITE(PCH_DREF_CONTROL, temp);
2891 POSTING_READ(PCH_DREF_CONTROL);
2892
2893 temp &= ~DREF_SSC_SOURCE_MASK;
2894 temp |= DREF_SSC_SOURCE_ENABLE;
2895 I915_WRITE(PCH_DREF_CONTROL, temp);
2896 POSTING_READ(PCH_DREF_CONTROL);
2897
2898 udelay(200);
2899
2900 if (is_edp) {
2901 if (dev_priv->lvds_use_ssc) {
2902 temp |= DREF_SSC1_ENABLE;
2903 I915_WRITE(PCH_DREF_CONTROL, temp);
2904 POSTING_READ(PCH_DREF_CONTROL);
2905
2906 udelay(200);
2907
2908 temp &= ~DREF_CPU_SOURCE_OUTPUT_MASK;
2909 temp |= DREF_CPU_SOURCE_OUTPUT_DOWNSPREAD;
2910 I915_WRITE(PCH_DREF_CONTROL, temp);
2911 POSTING_READ(PCH_DREF_CONTROL);
2912 } else {
2913 temp |= DREF_CPU_SOURCE_OUTPUT_NONSPREAD;
2914 I915_WRITE(PCH_DREF_CONTROL, temp);
2915 POSTING_READ(PCH_DREF_CONTROL);
2916 }
2917 }
2918 }
2919
2789 if (IS_IGD(dev)) { 2920 if (IS_IGD(dev)) {
2790 fp = (1 << clock.n) << 16 | clock.m1 << 8 | clock.m2; 2921 fp = (1 << clock.n) << 16 | clock.m1 << 8 | clock.m2;
2791 if (has_reduced_clock) 2922 if (has_reduced_clock)
@@ -2936,6 +3067,8 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
2936 3067
2937 lvds = I915_READ(lvds_reg); 3068 lvds = I915_READ(lvds_reg);
2938 lvds |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP | LVDS_PIPEB_SELECT; 3069 lvds |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP | LVDS_PIPEB_SELECT;
3070 /* set the corresponsding LVDS_BORDER bit */
3071 lvds |= dev_priv->lvds_border_bits;
2939 /* Set the B0-B3 data pairs corresponding to whether we're going to 3072 /* Set the B0-B3 data pairs corresponding to whether we're going to
2940 * set the DPLLs for dual-channel mode or not. 3073 * set the DPLLs for dual-channel mode or not.
2941 */ 3074 */
@@ -4124,7 +4257,9 @@ void intel_init_clock_gating(struct drm_device *dev)
4124 * Disable clock gating reported to work incorrectly according to the 4257 * Disable clock gating reported to work incorrectly according to the
4125 * specs, but enable as much else as we can. 4258 * specs, but enable as much else as we can.
4126 */ 4259 */
4127 if (IS_G4X(dev)) { 4260 if (IS_IGDNG(dev)) {
4261 return;
4262 } else if (IS_G4X(dev)) {
4128 uint32_t dspclk_gate; 4263 uint32_t dspclk_gate;
4129 I915_WRITE(RENCLK_GATE_D1, 0); 4264 I915_WRITE(RENCLK_GATE_D1, 0);
4130 I915_WRITE(RENCLK_GATE_D2, VF_UNIT_CLOCK_GATE_DISABLE | 4265 I915_WRITE(RENCLK_GATE_D2, VF_UNIT_CLOCK_GATE_DISABLE |
@@ -4212,7 +4347,9 @@ static void intel_init_display(struct drm_device *dev)
4212 i830_get_display_clock_speed; 4347 i830_get_display_clock_speed;
4213 4348
4214 /* For FIFO watermark updates */ 4349 /* For FIFO watermark updates */
4215 if (IS_G4X(dev)) 4350 if (IS_IGDNG(dev))
4351 dev_priv->display.update_wm = NULL;
4352 else if (IS_G4X(dev))
4216 dev_priv->display.update_wm = g4x_update_wm; 4353 dev_priv->display.update_wm = g4x_update_wm;
4217 else if (IS_I965G(dev)) 4354 else if (IS_I965G(dev))
4218 dev_priv->display.update_wm = i965_update_wm; 4355 dev_priv->display.update_wm = i965_update_wm;
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index f4856a510476..d83447557f9b 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -400,7 +400,7 @@ intel_dp_i2c_init(struct intel_output *intel_output, const char *name)
400{ 400{
401 struct intel_dp_priv *dp_priv = intel_output->dev_priv; 401 struct intel_dp_priv *dp_priv = intel_output->dev_priv;
402 402
403 DRM_ERROR("i2c_init %s\n", name); 403 DRM_DEBUG_KMS("i2c_init %s\n", name);
404 dp_priv->algo.running = false; 404 dp_priv->algo.running = false;
405 dp_priv->algo.address = 0; 405 dp_priv->algo.address = 0;
406 dp_priv->algo.aux_ch = intel_dp_i2c_aux_ch; 406 dp_priv->algo.aux_ch = intel_dp_i2c_aux_ch;
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 663ab6de0b58..c33451aec1bd 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -77,14 +77,32 @@ static void intel_hdmi_dpms(struct drm_encoder *encoder, int mode)
77 struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv; 77 struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv;
78 u32 temp; 78 u32 temp;
79 79
80 if (mode != DRM_MODE_DPMS_ON) { 80 temp = I915_READ(hdmi_priv->sdvox_reg);
81 temp = I915_READ(hdmi_priv->sdvox_reg); 81
82 /* HW workaround, need to toggle enable bit off and on for 12bpc, but
83 * we do this anyway which shows more stable in testing.
84 */
85 if (IS_IGDNG(dev)) {
82 I915_WRITE(hdmi_priv->sdvox_reg, temp & ~SDVO_ENABLE); 86 I915_WRITE(hdmi_priv->sdvox_reg, temp & ~SDVO_ENABLE);
87 POSTING_READ(hdmi_priv->sdvox_reg);
88 }
89
90 if (mode != DRM_MODE_DPMS_ON) {
91 temp &= ~SDVO_ENABLE;
83 } else { 92 } else {
84 temp = I915_READ(hdmi_priv->sdvox_reg); 93 temp |= SDVO_ENABLE;
85 I915_WRITE(hdmi_priv->sdvox_reg, temp | SDVO_ENABLE);
86 } 94 }
95
96 I915_WRITE(hdmi_priv->sdvox_reg, temp);
87 POSTING_READ(hdmi_priv->sdvox_reg); 97 POSTING_READ(hdmi_priv->sdvox_reg);
98
99 /* HW workaround, need to write this twice for issue that may result
100 * in first write getting masked.
101 */
102 if (IS_IGDNG(dev)) {
103 I915_WRITE(hdmi_priv->sdvox_reg, temp);
104 POSTING_READ(hdmi_priv->sdvox_reg);
105 }
88} 106}
89 107
90static void intel_hdmi_save(struct drm_connector *connector) 108static void intel_hdmi_save(struct drm_connector *connector)
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 98ae3d73577e..05598ae10c4b 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -380,7 +380,7 @@ static bool intel_lvds_mode_fixup(struct drm_encoder *encoder,
380 adjusted_mode->crtc_vblank_start + vsync_pos; 380 adjusted_mode->crtc_vblank_start + vsync_pos;
381 /* keep the vsync width constant */ 381 /* keep the vsync width constant */
382 adjusted_mode->crtc_vsync_end = 382 adjusted_mode->crtc_vsync_end =
383 adjusted_mode->crtc_vblank_start + vsync_width; 383 adjusted_mode->crtc_vsync_start + vsync_width;
384 border = 1; 384 border = 1;
385 break; 385 break;
386 case DRM_MODE_SCALE_ASPECT: 386 case DRM_MODE_SCALE_ASPECT:
@@ -526,6 +526,14 @@ out:
526 lvds_priv->pfit_control = pfit_control; 526 lvds_priv->pfit_control = pfit_control;
527 lvds_priv->pfit_pgm_ratios = pfit_pgm_ratios; 527 lvds_priv->pfit_pgm_ratios = pfit_pgm_ratios;
528 /* 528 /*
529 * When there exists the border, it means that the LVDS_BORDR
530 * should be enabled.
531 */
532 if (border)
533 dev_priv->lvds_border_bits |= LVDS_BORDER_ENABLE;
534 else
535 dev_priv->lvds_border_bits &= ~(LVDS_BORDER_ENABLE);
536 /*
529 * XXX: It would be nice to support lower refresh rates on the 537 * XXX: It would be nice to support lower refresh rates on the
530 * panels to reduce power consumption, and perhaps match the 538 * panels to reduce power consumption, and perhaps match the
531 * user's requested refresh rate. 539 * user's requested refresh rate.
@@ -656,6 +664,15 @@ static int intel_lvds_get_modes(struct drm_connector *connector)
656 return 0; 664 return 0;
657} 665}
658 666
667/*
668 * Lid events. Note the use of 'modeset_on_lid':
669 * - we set it on lid close, and reset it on open
670 * - we use it as a "only once" bit (ie we ignore
671 * duplicate events where it was already properly
672 * set/reset)
673 * - the suspend/resume paths will also set it to
674 * zero, since they restore the mode ("lid open").
675 */
659static int intel_lid_notify(struct notifier_block *nb, unsigned long val, 676static int intel_lid_notify(struct notifier_block *nb, unsigned long val,
660 void *unused) 677 void *unused)
661{ 678{
@@ -663,13 +680,19 @@ static int intel_lid_notify(struct notifier_block *nb, unsigned long val,
663 container_of(nb, struct drm_i915_private, lid_notifier); 680 container_of(nb, struct drm_i915_private, lid_notifier);
664 struct drm_device *dev = dev_priv->dev; 681 struct drm_device *dev = dev_priv->dev;
665 682
666 if (acpi_lid_open() && !dev_priv->suspended) { 683 if (!acpi_lid_open()) {
667 mutex_lock(&dev->mode_config.mutex); 684 dev_priv->modeset_on_lid = 1;
668 drm_helper_resume_force_mode(dev); 685 return NOTIFY_OK;
669 mutex_unlock(&dev->mode_config.mutex);
670 } 686 }
671 687
672 drm_sysfs_hotplug_event(dev_priv->dev); 688 if (!dev_priv->modeset_on_lid)
689 return NOTIFY_OK;
690
691 dev_priv->modeset_on_lid = 0;
692
693 mutex_lock(&dev->mode_config.mutex);
694 drm_helper_resume_force_mode(dev);
695 mutex_unlock(&dev->mode_config.mutex);
673 696
674 return NOTIFY_OK; 697 return NOTIFY_OK;
675} 698}
diff --git a/drivers/gpu/drm/radeon/Makefile b/drivers/gpu/drm/radeon/Makefile
index 09a28923f46e..b5713eedd6e1 100644
--- a/drivers/gpu/drm/radeon/Makefile
+++ b/drivers/gpu/drm/radeon/Makefile
@@ -49,7 +49,7 @@ radeon-y += radeon_device.o radeon_kms.o \
49 radeon_cs.o radeon_bios.o radeon_benchmark.o r100.o r300.o r420.o \ 49 radeon_cs.o radeon_bios.o radeon_benchmark.o r100.o r300.o r420.o \
50 rs400.o rs600.o rs690.o rv515.o r520.o r600.o rv770.o radeon_test.o \ 50 rs400.o rs600.o rs690.o rv515.o r520.o r600.o rv770.o radeon_test.o \
51 r200.o radeon_legacy_tv.o r600_cs.o r600_blit.o r600_blit_shaders.o \ 51 r200.o radeon_legacy_tv.o r600_cs.o r600_blit.o r600_blit_shaders.o \
52 r600_blit_kms.o 52 r600_blit_kms.o radeon_pm.o
53 53
54radeon-$(CONFIG_COMPAT) += radeon_ioc32.o 54radeon-$(CONFIG_COMPAT) += radeon_ioc32.o
55 55
diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c
index 901befe03da2..d67c42555ab9 100644
--- a/drivers/gpu/drm/radeon/atom.c
+++ b/drivers/gpu/drm/radeon/atom.c
@@ -107,6 +107,7 @@ static uint32_t atom_iio_execute(struct atom_context *ctx, int base,
107 base += 3; 107 base += 3;
108 break; 108 break;
109 case ATOM_IIO_WRITE: 109 case ATOM_IIO_WRITE:
110 (void)ctx->card->reg_read(ctx->card, CU16(base + 1));
110 ctx->card->reg_write(ctx->card, CU16(base + 1), temp); 111 ctx->card->reg_write(ctx->card, CU16(base + 1), temp);
111 base += 3; 112 base += 3;
112 break; 113 break;
diff --git a/drivers/gpu/drm/radeon/atombios.h b/drivers/gpu/drm/radeon/atombios.h
index 5d402086bc47..c11ddddfb3b6 100644
--- a/drivers/gpu/drm/radeon/atombios.h
+++ b/drivers/gpu/drm/radeon/atombios.h
@@ -2314,7 +2314,7 @@ typedef struct _ATOM_SPREAD_SPECTRUM_ASSIGNMENT {
2314 UCHAR ucSS_Step; 2314 UCHAR ucSS_Step;
2315 UCHAR ucSS_Delay; 2315 UCHAR ucSS_Delay;
2316 UCHAR ucSS_Id; 2316 UCHAR ucSS_Id;
2317 UCHAR ucRecommandedRef_Div; 2317 UCHAR ucRecommendedRef_Div;
2318 UCHAR ucSS_Range; /* it was reserved for V11 */ 2318 UCHAR ucSS_Range; /* it was reserved for V11 */
2319} ATOM_SPREAD_SPECTRUM_ASSIGNMENT; 2319} ATOM_SPREAD_SPECTRUM_ASSIGNMENT;
2320 2320
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
index 14fa9701aeb3..c15287a590ff 100644
--- a/drivers/gpu/drm/radeon/atombios_crtc.c
+++ b/drivers/gpu/drm/radeon/atombios_crtc.c
@@ -31,10 +31,6 @@
31#include "atom.h" 31#include "atom.h"
32#include "atom-bits.h" 32#include "atom-bits.h"
33 33
34/* evil but including atombios.h is much worse */
35bool radeon_atom_get_tv_timings(struct radeon_device *rdev, int index,
36 SET_CRTC_TIMING_PARAMETERS_PS_ALLOCATION *crtc_timing,
37 int32_t *pixel_clock);
38static void atombios_overscan_setup(struct drm_crtc *crtc, 34static void atombios_overscan_setup(struct drm_crtc *crtc,
39 struct drm_display_mode *mode, 35 struct drm_display_mode *mode,
40 struct drm_display_mode *adjusted_mode) 36 struct drm_display_mode *adjusted_mode)
@@ -248,18 +244,18 @@ void atombios_crtc_dpms(struct drm_crtc *crtc, int mode)
248 244
249 switch (mode) { 245 switch (mode) {
250 case DRM_MODE_DPMS_ON: 246 case DRM_MODE_DPMS_ON:
247 atombios_enable_crtc(crtc, 1);
251 if (ASIC_IS_DCE3(rdev)) 248 if (ASIC_IS_DCE3(rdev))
252 atombios_enable_crtc_memreq(crtc, 1); 249 atombios_enable_crtc_memreq(crtc, 1);
253 atombios_enable_crtc(crtc, 1);
254 atombios_blank_crtc(crtc, 0); 250 atombios_blank_crtc(crtc, 0);
255 break; 251 break;
256 case DRM_MODE_DPMS_STANDBY: 252 case DRM_MODE_DPMS_STANDBY:
257 case DRM_MODE_DPMS_SUSPEND: 253 case DRM_MODE_DPMS_SUSPEND:
258 case DRM_MODE_DPMS_OFF: 254 case DRM_MODE_DPMS_OFF:
259 atombios_blank_crtc(crtc, 1); 255 atombios_blank_crtc(crtc, 1);
260 atombios_enable_crtc(crtc, 0);
261 if (ASIC_IS_DCE3(rdev)) 256 if (ASIC_IS_DCE3(rdev))
262 atombios_enable_crtc_memreq(crtc, 0); 257 atombios_enable_crtc_memreq(crtc, 0);
258 atombios_enable_crtc(crtc, 0);
263 break; 259 break;
264 } 260 }
265 261
@@ -270,59 +266,147 @@ void atombios_crtc_dpms(struct drm_crtc *crtc, int mode)
270 266
271static void 267static void
272atombios_set_crtc_dtd_timing(struct drm_crtc *crtc, 268atombios_set_crtc_dtd_timing(struct drm_crtc *crtc,
273 SET_CRTC_USING_DTD_TIMING_PARAMETERS * crtc_param) 269 struct drm_display_mode *mode)
274{ 270{
271 struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
275 struct drm_device *dev = crtc->dev; 272 struct drm_device *dev = crtc->dev;
276 struct radeon_device *rdev = dev->dev_private; 273 struct radeon_device *rdev = dev->dev_private;
277 SET_CRTC_USING_DTD_TIMING_PARAMETERS conv_param; 274 SET_CRTC_USING_DTD_TIMING_PARAMETERS args;
278 int index = GetIndexIntoMasterTable(COMMAND, SetCRTC_UsingDTDTiming); 275 int index = GetIndexIntoMasterTable(COMMAND, SetCRTC_UsingDTDTiming);
276 u16 misc = 0;
279 277
280 conv_param.usH_Size = cpu_to_le16(crtc_param->usH_Size); 278 memset(&args, 0, sizeof(args));
281 conv_param.usH_Blanking_Time = 279 args.usH_Size = cpu_to_le16(mode->crtc_hdisplay);
282 cpu_to_le16(crtc_param->usH_Blanking_Time); 280 args.usH_Blanking_Time =
283 conv_param.usV_Size = cpu_to_le16(crtc_param->usV_Size); 281 cpu_to_le16(mode->crtc_hblank_end - mode->crtc_hdisplay);
284 conv_param.usV_Blanking_Time = 282 args.usV_Size = cpu_to_le16(mode->crtc_vdisplay);
285 cpu_to_le16(crtc_param->usV_Blanking_Time); 283 args.usV_Blanking_Time =
286 conv_param.usH_SyncOffset = cpu_to_le16(crtc_param->usH_SyncOffset); 284 cpu_to_le16(mode->crtc_vblank_end - mode->crtc_vdisplay);
287 conv_param.usH_SyncWidth = cpu_to_le16(crtc_param->usH_SyncWidth); 285 args.usH_SyncOffset =
288 conv_param.usV_SyncOffset = cpu_to_le16(crtc_param->usV_SyncOffset); 286 cpu_to_le16(mode->crtc_hsync_start - mode->crtc_hdisplay);
289 conv_param.usV_SyncWidth = cpu_to_le16(crtc_param->usV_SyncWidth); 287 args.usH_SyncWidth =
290 conv_param.susModeMiscInfo.usAccess = 288 cpu_to_le16(mode->crtc_hsync_end - mode->crtc_hsync_start);
291 cpu_to_le16(crtc_param->susModeMiscInfo.usAccess); 289 args.usV_SyncOffset =
292 conv_param.ucCRTC = crtc_param->ucCRTC; 290 cpu_to_le16(mode->crtc_vsync_start - mode->crtc_vdisplay);
291 args.usV_SyncWidth =
292 cpu_to_le16(mode->crtc_vsync_end - mode->crtc_vsync_start);
293 /*args.ucH_Border = mode->hborder;*/
294 /*args.ucV_Border = mode->vborder;*/
295
296 if (mode->flags & DRM_MODE_FLAG_NVSYNC)
297 misc |= ATOM_VSYNC_POLARITY;
298 if (mode->flags & DRM_MODE_FLAG_NHSYNC)
299 misc |= ATOM_HSYNC_POLARITY;
300 if (mode->flags & DRM_MODE_FLAG_CSYNC)
301 misc |= ATOM_COMPOSITESYNC;
302 if (mode->flags & DRM_MODE_FLAG_INTERLACE)
303 misc |= ATOM_INTERLACE;
304 if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
305 misc |= ATOM_DOUBLE_CLOCK_MODE;
306
307 args.susModeMiscInfo.usAccess = cpu_to_le16(misc);
308 args.ucCRTC = radeon_crtc->crtc_id;
293 309
294 printk("executing set crtc dtd timing\n"); 310 printk("executing set crtc dtd timing\n");
295 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&conv_param); 311 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
296} 312}
297 313
298void atombios_crtc_set_timing(struct drm_crtc *crtc, 314static void atombios_crtc_set_timing(struct drm_crtc *crtc,
299 SET_CRTC_TIMING_PARAMETERS_PS_ALLOCATION * 315 struct drm_display_mode *mode)
300 crtc_param)
301{ 316{
317 struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
302 struct drm_device *dev = crtc->dev; 318 struct drm_device *dev = crtc->dev;
303 struct radeon_device *rdev = dev->dev_private; 319 struct radeon_device *rdev = dev->dev_private;
304 SET_CRTC_TIMING_PARAMETERS_PS_ALLOCATION conv_param; 320 SET_CRTC_TIMING_PARAMETERS_PS_ALLOCATION args;
305 int index = GetIndexIntoMasterTable(COMMAND, SetCRTC_Timing); 321 int index = GetIndexIntoMasterTable(COMMAND, SetCRTC_Timing);
322 u16 misc = 0;
306 323
307 conv_param.usH_Total = cpu_to_le16(crtc_param->usH_Total); 324 memset(&args, 0, sizeof(args));
308 conv_param.usH_Disp = cpu_to_le16(crtc_param->usH_Disp); 325 args.usH_Total = cpu_to_le16(mode->crtc_htotal);
309 conv_param.usH_SyncStart = cpu_to_le16(crtc_param->usH_SyncStart); 326 args.usH_Disp = cpu_to_le16(mode->crtc_hdisplay);
310 conv_param.usH_SyncWidth = cpu_to_le16(crtc_param->usH_SyncWidth); 327 args.usH_SyncStart = cpu_to_le16(mode->crtc_hsync_start);
311 conv_param.usV_Total = cpu_to_le16(crtc_param->usV_Total); 328 args.usH_SyncWidth =
312 conv_param.usV_Disp = cpu_to_le16(crtc_param->usV_Disp); 329 cpu_to_le16(mode->crtc_hsync_end - mode->crtc_hsync_start);
313 conv_param.usV_SyncStart = cpu_to_le16(crtc_param->usV_SyncStart); 330 args.usV_Total = cpu_to_le16(mode->crtc_vtotal);
314 conv_param.usV_SyncWidth = cpu_to_le16(crtc_param->usV_SyncWidth); 331 args.usV_Disp = cpu_to_le16(mode->crtc_vdisplay);
315 conv_param.susModeMiscInfo.usAccess = 332 args.usV_SyncStart = cpu_to_le16(mode->crtc_vsync_start);
316 cpu_to_le16(crtc_param->susModeMiscInfo.usAccess); 333 args.usV_SyncWidth =
317 conv_param.ucCRTC = crtc_param->ucCRTC; 334 cpu_to_le16(mode->crtc_vsync_end - mode->crtc_vsync_start);
318 conv_param.ucOverscanRight = crtc_param->ucOverscanRight; 335
319 conv_param.ucOverscanLeft = crtc_param->ucOverscanLeft; 336 if (mode->flags & DRM_MODE_FLAG_NVSYNC)
320 conv_param.ucOverscanBottom = crtc_param->ucOverscanBottom; 337 misc |= ATOM_VSYNC_POLARITY;
321 conv_param.ucOverscanTop = crtc_param->ucOverscanTop; 338 if (mode->flags & DRM_MODE_FLAG_NHSYNC)
322 conv_param.ucReserved = crtc_param->ucReserved; 339 misc |= ATOM_HSYNC_POLARITY;
340 if (mode->flags & DRM_MODE_FLAG_CSYNC)
341 misc |= ATOM_COMPOSITESYNC;
342 if (mode->flags & DRM_MODE_FLAG_INTERLACE)
343 misc |= ATOM_INTERLACE;
344 if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
345 misc |= ATOM_DOUBLE_CLOCK_MODE;
346
347 args.susModeMiscInfo.usAccess = cpu_to_le16(misc);
348 args.ucCRTC = radeon_crtc->crtc_id;
323 349
324 printk("executing set crtc timing\n"); 350 printk("executing set crtc timing\n");
325 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&conv_param); 351 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
352}
353
354static void atombios_set_ss(struct drm_crtc *crtc, int enable)
355{
356 struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
357 struct drm_device *dev = crtc->dev;
358 struct radeon_device *rdev = dev->dev_private;
359 struct drm_encoder *encoder = NULL;
360 struct radeon_encoder *radeon_encoder = NULL;
361 struct radeon_encoder_atom_dig *dig = NULL;
362 int index = GetIndexIntoMasterTable(COMMAND, EnableSpreadSpectrumOnPPLL);
363 ENABLE_SPREAD_SPECTRUM_ON_PPLL_PS_ALLOCATION args;
364 ENABLE_LVDS_SS_PARAMETERS legacy_args;
365 uint16_t percentage = 0;
366 uint8_t type = 0, step = 0, delay = 0, range = 0;
367
368 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
369 if (encoder->crtc == crtc) {
370 radeon_encoder = to_radeon_encoder(encoder);
371 /* only enable spread spectrum on LVDS */
372 if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) {
373 dig = radeon_encoder->enc_priv;
374 if (dig && dig->ss) {
375 percentage = dig->ss->percentage;
376 type = dig->ss->type;
377 step = dig->ss->step;
378 delay = dig->ss->delay;
379 range = dig->ss->range;
380 } else if (enable)
381 return;
382 } else if (enable)
383 return;
384 break;
385 }
386 }
387
388 if (!radeon_encoder)
389 return;
390
391 if (ASIC_IS_AVIVO(rdev)) {
392 memset(&args, 0, sizeof(args));
393 args.usSpreadSpectrumPercentage = cpu_to_le16(percentage);
394 args.ucSpreadSpectrumType = type;
395 args.ucSpreadSpectrumStep = step;
396 args.ucSpreadSpectrumDelay = delay;
397 args.ucSpreadSpectrumRange = range;
398 args.ucPpll = radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1;
399 args.ucEnable = enable;
400 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
401 } else {
402 memset(&legacy_args, 0, sizeof(legacy_args));
403 legacy_args.usSpreadSpectrumPercentage = cpu_to_le16(percentage);
404 legacy_args.ucSpreadSpectrumType = type;
405 legacy_args.ucSpreadSpectrumStepSize_Delay = (step & 3) << 2;
406 legacy_args.ucSpreadSpectrumStepSize_Delay |= (delay & 7) << 4;
407 legacy_args.ucEnable = enable;
408 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&legacy_args);
409 }
326} 410}
327 411
328void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode) 412void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
@@ -333,12 +417,13 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
333 struct drm_encoder *encoder = NULL; 417 struct drm_encoder *encoder = NULL;
334 struct radeon_encoder *radeon_encoder = NULL; 418 struct radeon_encoder *radeon_encoder = NULL;
335 uint8_t frev, crev; 419 uint8_t frev, crev;
336 int index = GetIndexIntoMasterTable(COMMAND, SetPixelClock); 420 int index;
337 SET_PIXEL_CLOCK_PS_ALLOCATION args; 421 SET_PIXEL_CLOCK_PS_ALLOCATION args;
338 PIXEL_CLOCK_PARAMETERS *spc1_ptr; 422 PIXEL_CLOCK_PARAMETERS *spc1_ptr;
339 PIXEL_CLOCK_PARAMETERS_V2 *spc2_ptr; 423 PIXEL_CLOCK_PARAMETERS_V2 *spc2_ptr;
340 PIXEL_CLOCK_PARAMETERS_V3 *spc3_ptr; 424 PIXEL_CLOCK_PARAMETERS_V3 *spc3_ptr;
341 uint32_t sclock = mode->clock; 425 uint32_t pll_clock = mode->clock;
426 uint32_t adjusted_clock;
342 uint32_t ref_div = 0, fb_div = 0, frac_fb_div = 0, post_div = 0; 427 uint32_t ref_div = 0, fb_div = 0, frac_fb_div = 0, post_div = 0;
343 struct radeon_pll *pll; 428 struct radeon_pll *pll;
344 int pll_flags = 0; 429 int pll_flags = 0;
@@ -346,8 +431,6 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
346 memset(&args, 0, sizeof(args)); 431 memset(&args, 0, sizeof(args));
347 432
348 if (ASIC_IS_AVIVO(rdev)) { 433 if (ASIC_IS_AVIVO(rdev)) {
349 uint32_t ss_cntl;
350
351 if ((rdev->family == CHIP_RS600) || 434 if ((rdev->family == CHIP_RS600) ||
352 (rdev->family == CHIP_RS690) || 435 (rdev->family == CHIP_RS690) ||
353 (rdev->family == CHIP_RS740)) 436 (rdev->family == CHIP_RS740))
@@ -358,15 +441,6 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
358 pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; 441 pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV;
359 else 442 else
360 pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; 443 pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV;
361
362 /* disable spread spectrum clocking for now -- thanks Hedy Lamarr */
363 if (radeon_crtc->crtc_id == 0) {
364 ss_cntl = RREG32(AVIVO_P1PLL_INT_SS_CNTL);
365 WREG32(AVIVO_P1PLL_INT_SS_CNTL, ss_cntl & ~1);
366 } else {
367 ss_cntl = RREG32(AVIVO_P2PLL_INT_SS_CNTL);
368 WREG32(AVIVO_P2PLL_INT_SS_CNTL, ss_cntl & ~1);
369 }
370 } else { 444 } else {
371 pll_flags |= RADEON_PLL_LEGACY; 445 pll_flags |= RADEON_PLL_LEGACY;
372 446
@@ -393,14 +467,43 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
393 } 467 }
394 } 468 }
395 469
470 /* DCE3+ has an AdjustDisplayPll that will adjust the pixel clock
471 * accordingly based on the encoder/transmitter to work around
472 * special hw requirements.
473 */
474 if (ASIC_IS_DCE3(rdev)) {
475 ADJUST_DISPLAY_PLL_PS_ALLOCATION adjust_pll_args;
476
477 if (!encoder)
478 return;
479
480 memset(&adjust_pll_args, 0, sizeof(adjust_pll_args));
481 adjust_pll_args.usPixelClock = cpu_to_le16(mode->clock / 10);
482 adjust_pll_args.ucTransmitterID = radeon_encoder->encoder_id;
483 adjust_pll_args.ucEncodeMode = atombios_get_encoder_mode(encoder);
484
485 index = GetIndexIntoMasterTable(COMMAND, AdjustDisplayPll);
486 atom_execute_table(rdev->mode_info.atom_context,
487 index, (uint32_t *)&adjust_pll_args);
488 adjusted_clock = le16_to_cpu(adjust_pll_args.usPixelClock) * 10;
489 } else {
490 /* DVO wants 2x pixel clock if the DVO chip is in 12 bit mode */
491 if (ASIC_IS_AVIVO(rdev) &&
492 (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1))
493 adjusted_clock = mode->clock * 2;
494 else
495 adjusted_clock = mode->clock;
496 }
497
396 if (radeon_crtc->crtc_id == 0) 498 if (radeon_crtc->crtc_id == 0)
397 pll = &rdev->clock.p1pll; 499 pll = &rdev->clock.p1pll;
398 else 500 else
399 pll = &rdev->clock.p2pll; 501 pll = &rdev->clock.p2pll;
400 502
401 radeon_compute_pll(pll, mode->clock, &sclock, &fb_div, &frac_fb_div, 503 radeon_compute_pll(pll, adjusted_clock, &pll_clock, &fb_div, &frac_fb_div,
402 &ref_div, &post_div, pll_flags); 504 &ref_div, &post_div, pll_flags);
403 505
506 index = GetIndexIntoMasterTable(COMMAND, SetPixelClock);
404 atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, 507 atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev,
405 &crev); 508 &crev);
406 509
@@ -409,7 +512,7 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
409 switch (crev) { 512 switch (crev) {
410 case 1: 513 case 1:
411 spc1_ptr = (PIXEL_CLOCK_PARAMETERS *) & args.sPCLKInput; 514 spc1_ptr = (PIXEL_CLOCK_PARAMETERS *) & args.sPCLKInput;
412 spc1_ptr->usPixelClock = cpu_to_le16(sclock); 515 spc1_ptr->usPixelClock = cpu_to_le16(mode->clock / 10);
413 spc1_ptr->usRefDiv = cpu_to_le16(ref_div); 516 spc1_ptr->usRefDiv = cpu_to_le16(ref_div);
414 spc1_ptr->usFbDiv = cpu_to_le16(fb_div); 517 spc1_ptr->usFbDiv = cpu_to_le16(fb_div);
415 spc1_ptr->ucFracFbDiv = frac_fb_div; 518 spc1_ptr->ucFracFbDiv = frac_fb_div;
@@ -422,7 +525,7 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
422 case 2: 525 case 2:
423 spc2_ptr = 526 spc2_ptr =
424 (PIXEL_CLOCK_PARAMETERS_V2 *) & args.sPCLKInput; 527 (PIXEL_CLOCK_PARAMETERS_V2 *) & args.sPCLKInput;
425 spc2_ptr->usPixelClock = cpu_to_le16(sclock); 528 spc2_ptr->usPixelClock = cpu_to_le16(mode->clock / 10);
426 spc2_ptr->usRefDiv = cpu_to_le16(ref_div); 529 spc2_ptr->usRefDiv = cpu_to_le16(ref_div);
427 spc2_ptr->usFbDiv = cpu_to_le16(fb_div); 530 spc2_ptr->usFbDiv = cpu_to_le16(fb_div);
428 spc2_ptr->ucFracFbDiv = frac_fb_div; 531 spc2_ptr->ucFracFbDiv = frac_fb_div;
@@ -437,7 +540,7 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
437 return; 540 return;
438 spc3_ptr = 541 spc3_ptr =
439 (PIXEL_CLOCK_PARAMETERS_V3 *) & args.sPCLKInput; 542 (PIXEL_CLOCK_PARAMETERS_V3 *) & args.sPCLKInput;
440 spc3_ptr->usPixelClock = cpu_to_le16(sclock); 543 spc3_ptr->usPixelClock = cpu_to_le16(mode->clock / 10);
441 spc3_ptr->usRefDiv = cpu_to_le16(ref_div); 544 spc3_ptr->usRefDiv = cpu_to_le16(ref_div);
442 spc3_ptr->usFbDiv = cpu_to_le16(fb_div); 545 spc3_ptr->usFbDiv = cpu_to_le16(fb_div);
443 spc3_ptr->ucFracFbDiv = frac_fb_div; 546 spc3_ptr->ucFracFbDiv = frac_fb_div;
@@ -527,6 +630,16 @@ int atombios_crtc_set_base(struct drm_crtc *crtc, int x, int y,
527 WREG32(AVIVO_D1VGA_CONTROL, 0); 630 WREG32(AVIVO_D1VGA_CONTROL, 0);
528 else 631 else
529 WREG32(AVIVO_D2VGA_CONTROL, 0); 632 WREG32(AVIVO_D2VGA_CONTROL, 0);
633
634 if (rdev->family >= CHIP_RV770) {
635 if (radeon_crtc->crtc_id) {
636 WREG32(R700_D2GRPH_PRIMARY_SURFACE_ADDRESS_HIGH, 0);
637 WREG32(R700_D2GRPH_SECONDARY_SURFACE_ADDRESS_HIGH, 0);
638 } else {
639 WREG32(R700_D1GRPH_PRIMARY_SURFACE_ADDRESS_HIGH, 0);
640 WREG32(R700_D1GRPH_SECONDARY_SURFACE_ADDRESS_HIGH, 0);
641 }
642 }
530 WREG32(AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset, 643 WREG32(AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset,
531 (u32) fb_location); 644 (u32) fb_location);
532 WREG32(AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS + 645 WREG32(AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS +
@@ -563,6 +676,10 @@ int atombios_crtc_set_base(struct drm_crtc *crtc, int x, int y,
563 radeon_fb = to_radeon_framebuffer(old_fb); 676 radeon_fb = to_radeon_framebuffer(old_fb);
564 radeon_gem_object_unpin(radeon_fb->obj); 677 radeon_gem_object_unpin(radeon_fb->obj);
565 } 678 }
679
680 /* Bytes per pixel may have changed */
681 radeon_bandwidth_update(rdev);
682
566 return 0; 683 return 0;
567} 684}
568 685
@@ -574,134 +691,24 @@ int atombios_crtc_mode_set(struct drm_crtc *crtc,
574 struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); 691 struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
575 struct drm_device *dev = crtc->dev; 692 struct drm_device *dev = crtc->dev;
576 struct radeon_device *rdev = dev->dev_private; 693 struct radeon_device *rdev = dev->dev_private;
577 struct drm_encoder *encoder;
578 SET_CRTC_TIMING_PARAMETERS_PS_ALLOCATION crtc_timing;
579 int need_tv_timings = 0;
580 bool ret;
581 694
582 /* TODO color tiling */ 695 /* TODO color tiling */
583 memset(&crtc_timing, 0, sizeof(crtc_timing));
584
585 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
586 /* find tv std */
587 if (encoder->crtc == crtc) {
588 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
589
590 if (radeon_encoder->active_device & ATOM_DEVICE_TV_SUPPORT) {
591 struct radeon_encoder_atom_dac *tv_dac = radeon_encoder->enc_priv;
592 if (tv_dac) {
593 if (tv_dac->tv_std == TV_STD_NTSC ||
594 tv_dac->tv_std == TV_STD_NTSC_J ||
595 tv_dac->tv_std == TV_STD_PAL_M)
596 need_tv_timings = 1;
597 else
598 need_tv_timings = 2;
599 break;
600 }
601 }
602 }
603 }
604
605 crtc_timing.ucCRTC = radeon_crtc->crtc_id;
606 if (need_tv_timings) {
607 ret = radeon_atom_get_tv_timings(rdev, need_tv_timings - 1,
608 &crtc_timing, &adjusted_mode->clock);
609 if (ret == false)
610 need_tv_timings = 0;
611 }
612
613 if (!need_tv_timings) {
614 crtc_timing.usH_Total = adjusted_mode->crtc_htotal;
615 crtc_timing.usH_Disp = adjusted_mode->crtc_hdisplay;
616 crtc_timing.usH_SyncStart = adjusted_mode->crtc_hsync_start;
617 crtc_timing.usH_SyncWidth =
618 adjusted_mode->crtc_hsync_end - adjusted_mode->crtc_hsync_start;
619
620 crtc_timing.usV_Total = adjusted_mode->crtc_vtotal;
621 crtc_timing.usV_Disp = adjusted_mode->crtc_vdisplay;
622 crtc_timing.usV_SyncStart = adjusted_mode->crtc_vsync_start;
623 crtc_timing.usV_SyncWidth =
624 adjusted_mode->crtc_vsync_end - adjusted_mode->crtc_vsync_start;
625
626 if (adjusted_mode->flags & DRM_MODE_FLAG_NVSYNC)
627 crtc_timing.susModeMiscInfo.usAccess |= ATOM_VSYNC_POLARITY;
628
629 if (adjusted_mode->flags & DRM_MODE_FLAG_NHSYNC)
630 crtc_timing.susModeMiscInfo.usAccess |= ATOM_HSYNC_POLARITY;
631
632 if (adjusted_mode->flags & DRM_MODE_FLAG_CSYNC)
633 crtc_timing.susModeMiscInfo.usAccess |= ATOM_COMPOSITESYNC;
634
635 if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
636 crtc_timing.susModeMiscInfo.usAccess |= ATOM_INTERLACE;
637
638 if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN)
639 crtc_timing.susModeMiscInfo.usAccess |= ATOM_DOUBLE_CLOCK_MODE;
640 }
641 696
697 atombios_set_ss(crtc, 0);
642 atombios_crtc_set_pll(crtc, adjusted_mode); 698 atombios_crtc_set_pll(crtc, adjusted_mode);
643 atombios_crtc_set_timing(crtc, &crtc_timing); 699 atombios_set_ss(crtc, 1);
700 atombios_crtc_set_timing(crtc, adjusted_mode);
644 701
645 if (ASIC_IS_AVIVO(rdev)) 702 if (ASIC_IS_AVIVO(rdev))
646 atombios_crtc_set_base(crtc, x, y, old_fb); 703 atombios_crtc_set_base(crtc, x, y, old_fb);
647 else { 704 else {
648 if (radeon_crtc->crtc_id == 0) { 705 if (radeon_crtc->crtc_id == 0)
649 SET_CRTC_USING_DTD_TIMING_PARAMETERS crtc_dtd_timing; 706 atombios_set_crtc_dtd_timing(crtc, adjusted_mode);
650 memset(&crtc_dtd_timing, 0, sizeof(crtc_dtd_timing));
651
652 /* setup FP shadow regs on R4xx */
653 crtc_dtd_timing.ucCRTC = radeon_crtc->crtc_id;
654 crtc_dtd_timing.usH_Size = adjusted_mode->crtc_hdisplay;
655 crtc_dtd_timing.usV_Size = adjusted_mode->crtc_vdisplay;
656 crtc_dtd_timing.usH_Blanking_Time =
657 adjusted_mode->crtc_hblank_end -
658 adjusted_mode->crtc_hdisplay;
659 crtc_dtd_timing.usV_Blanking_Time =
660 adjusted_mode->crtc_vblank_end -
661 adjusted_mode->crtc_vdisplay;
662 crtc_dtd_timing.usH_SyncOffset =
663 adjusted_mode->crtc_hsync_start -
664 adjusted_mode->crtc_hdisplay;
665 crtc_dtd_timing.usV_SyncOffset =
666 adjusted_mode->crtc_vsync_start -
667 adjusted_mode->crtc_vdisplay;
668 crtc_dtd_timing.usH_SyncWidth =
669 adjusted_mode->crtc_hsync_end -
670 adjusted_mode->crtc_hsync_start;
671 crtc_dtd_timing.usV_SyncWidth =
672 adjusted_mode->crtc_vsync_end -
673 adjusted_mode->crtc_vsync_start;
674 /* crtc_dtd_timing.ucH_Border = adjusted_mode->crtc_hborder; */
675 /* crtc_dtd_timing.ucV_Border = adjusted_mode->crtc_vborder; */
676
677 if (adjusted_mode->flags & DRM_MODE_FLAG_NVSYNC)
678 crtc_dtd_timing.susModeMiscInfo.usAccess |=
679 ATOM_VSYNC_POLARITY;
680
681 if (adjusted_mode->flags & DRM_MODE_FLAG_NHSYNC)
682 crtc_dtd_timing.susModeMiscInfo.usAccess |=
683 ATOM_HSYNC_POLARITY;
684
685 if (adjusted_mode->flags & DRM_MODE_FLAG_CSYNC)
686 crtc_dtd_timing.susModeMiscInfo.usAccess |=
687 ATOM_COMPOSITESYNC;
688
689 if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
690 crtc_dtd_timing.susModeMiscInfo.usAccess |=
691 ATOM_INTERLACE;
692
693 if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN)
694 crtc_dtd_timing.susModeMiscInfo.usAccess |=
695 ATOM_DOUBLE_CLOCK_MODE;
696
697 atombios_set_crtc_dtd_timing(crtc, &crtc_dtd_timing);
698 }
699 radeon_crtc_set_base(crtc, x, y, old_fb); 707 radeon_crtc_set_base(crtc, x, y, old_fb);
700 radeon_legacy_atom_set_surface(crtc); 708 radeon_legacy_atom_set_surface(crtc);
701 } 709 }
702 atombios_overscan_setup(crtc, mode, adjusted_mode); 710 atombios_overscan_setup(crtc, mode, adjusted_mode);
703 atombios_scaler_setup(crtc); 711 atombios_scaler_setup(crtc);
704 radeon_bandwidth_update(rdev);
705 return 0; 712 return 0;
706} 713}
707 714
diff --git a/drivers/gpu/drm/radeon/mkregtable.c b/drivers/gpu/drm/radeon/mkregtable.c
index fb211e585dea..0d79577c1576 100644
--- a/drivers/gpu/drm/radeon/mkregtable.c
+++ b/drivers/gpu/drm/radeon/mkregtable.c
@@ -561,7 +561,7 @@ struct table {
561 char *gpu_prefix; 561 char *gpu_prefix;
562}; 562};
563 563
564struct offset *offset_new(unsigned o) 564static struct offset *offset_new(unsigned o)
565{ 565{
566 struct offset *offset; 566 struct offset *offset;
567 567
@@ -573,12 +573,12 @@ struct offset *offset_new(unsigned o)
573 return offset; 573 return offset;
574} 574}
575 575
576void table_offset_add(struct table *t, struct offset *offset) 576static void table_offset_add(struct table *t, struct offset *offset)
577{ 577{
578 list_add_tail(&offset->list, &t->offsets); 578 list_add_tail(&offset->list, &t->offsets);
579} 579}
580 580
581void table_init(struct table *t) 581static void table_init(struct table *t)
582{ 582{
583 INIT_LIST_HEAD(&t->offsets); 583 INIT_LIST_HEAD(&t->offsets);
584 t->offset_max = 0; 584 t->offset_max = 0;
@@ -586,7 +586,7 @@ void table_init(struct table *t)
586 t->table = NULL; 586 t->table = NULL;
587} 587}
588 588
589void table_print(struct table *t) 589static void table_print(struct table *t)
590{ 590{
591 unsigned nlloop, i, j, n, c, id; 591 unsigned nlloop, i, j, n, c, id;
592 592
@@ -611,7 +611,7 @@ void table_print(struct table *t)
611 printf("};\n"); 611 printf("};\n");
612} 612}
613 613
614int table_build(struct table *t) 614static int table_build(struct table *t)
615{ 615{
616 struct offset *offset; 616 struct offset *offset;
617 unsigned i, m; 617 unsigned i, m;
@@ -631,7 +631,7 @@ int table_build(struct table *t)
631} 631}
632 632
633static char gpu_name[10]; 633static char gpu_name[10];
634int parser_auth(struct table *t, const char *filename) 634static int parser_auth(struct table *t, const char *filename)
635{ 635{
636 FILE *file; 636 FILE *file;
637 regex_t mask_rex; 637 regex_t mask_rex;
diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c
index 161094c07d94..c9e93eabcf16 100644
--- a/drivers/gpu/drm/radeon/r100.c
+++ b/drivers/gpu/drm/radeon/r100.c
@@ -186,7 +186,7 @@ static inline uint32_t r100_irq_ack(struct radeon_device *rdev)
186 186
187int r100_irq_process(struct radeon_device *rdev) 187int r100_irq_process(struct radeon_device *rdev)
188{ 188{
189 uint32_t status; 189 uint32_t status, msi_rearm;
190 190
191 status = r100_irq_ack(rdev); 191 status = r100_irq_ack(rdev);
192 if (!status) { 192 if (!status) {
@@ -209,6 +209,21 @@ int r100_irq_process(struct radeon_device *rdev)
209 } 209 }
210 status = r100_irq_ack(rdev); 210 status = r100_irq_ack(rdev);
211 } 211 }
212 if (rdev->msi_enabled) {
213 switch (rdev->family) {
214 case CHIP_RS400:
215 case CHIP_RS480:
216 msi_rearm = RREG32(RADEON_AIC_CNTL) & ~RS400_MSI_REARM;
217 WREG32(RADEON_AIC_CNTL, msi_rearm);
218 WREG32(RADEON_AIC_CNTL, msi_rearm | RS400_MSI_REARM);
219 break;
220 default:
221 msi_rearm = RREG32(RADEON_MSI_REARM_EN) & ~RV370_MSI_REARM_EN;
222 WREG32(RADEON_MSI_REARM_EN, msi_rearm);
223 WREG32(RADEON_MSI_REARM_EN, msi_rearm | RV370_MSI_REARM_EN);
224 break;
225 }
226 }
212 return IRQ_HANDLED; 227 return IRQ_HANDLED;
213} 228}
214 229
@@ -240,7 +255,7 @@ int r100_wb_init(struct radeon_device *rdev)
240 int r; 255 int r;
241 256
242 if (rdev->wb.wb_obj == NULL) { 257 if (rdev->wb.wb_obj == NULL) {
243 r = radeon_object_create(rdev, NULL, 4096, 258 r = radeon_object_create(rdev, NULL, RADEON_GPU_PAGE_SIZE,
244 true, 259 true,
245 RADEON_GEM_DOMAIN_GTT, 260 RADEON_GEM_DOMAIN_GTT,
246 false, &rdev->wb.wb_obj); 261 false, &rdev->wb.wb_obj);
@@ -563,19 +578,19 @@ int r100_cp_init(struct radeon_device *rdev, unsigned ring_size)
563 indirect1_start = 16; 578 indirect1_start = 16;
564 /* cp setup */ 579 /* cp setup */
565 WREG32(0x718, pre_write_timer | (pre_write_limit << 28)); 580 WREG32(0x718, pre_write_timer | (pre_write_limit << 28));
566 WREG32(RADEON_CP_RB_CNTL, 581 tmp = (REG_SET(RADEON_RB_BUFSZ, rb_bufsz) |
567#ifdef __BIG_ENDIAN
568 RADEON_BUF_SWAP_32BIT |
569#endif
570 REG_SET(RADEON_RB_BUFSZ, rb_bufsz) |
571 REG_SET(RADEON_RB_BLKSZ, rb_blksz) | 582 REG_SET(RADEON_RB_BLKSZ, rb_blksz) |
572 REG_SET(RADEON_MAX_FETCH, max_fetch) | 583 REG_SET(RADEON_MAX_FETCH, max_fetch) |
573 RADEON_RB_NO_UPDATE); 584 RADEON_RB_NO_UPDATE);
585#ifdef __BIG_ENDIAN
586 tmp |= RADEON_BUF_SWAP_32BIT;
587#endif
588 WREG32(RADEON_CP_RB_CNTL, tmp);
589
574 /* Set ring address */ 590 /* Set ring address */
575 DRM_INFO("radeon: ring at 0x%016lX\n", (unsigned long)rdev->cp.gpu_addr); 591 DRM_INFO("radeon: ring at 0x%016lX\n", (unsigned long)rdev->cp.gpu_addr);
576 WREG32(RADEON_CP_RB_BASE, rdev->cp.gpu_addr); 592 WREG32(RADEON_CP_RB_BASE, rdev->cp.gpu_addr);
577 /* Force read & write ptr to 0 */ 593 /* Force read & write ptr to 0 */
578 tmp = RREG32(RADEON_CP_RB_CNTL);
579 WREG32(RADEON_CP_RB_CNTL, tmp | RADEON_RB_RPTR_WR_ENA); 594 WREG32(RADEON_CP_RB_CNTL, tmp | RADEON_RB_RPTR_WR_ENA);
580 WREG32(RADEON_CP_RB_RPTR_WR, 0); 595 WREG32(RADEON_CP_RB_RPTR_WR, 0);
581 WREG32(RADEON_CP_RB_WPTR, 0); 596 WREG32(RADEON_CP_RB_WPTR, 0);
@@ -2364,7 +2379,7 @@ void r100_bandwidth_update(struct radeon_device *rdev)
2364 /* 2379 /*
2365 Find the total latency for the display data. 2380 Find the total latency for the display data.
2366 */ 2381 */
2367 disp_latency_overhead.full = rfixed_const(80); 2382 disp_latency_overhead.full = rfixed_const(8);
2368 disp_latency_overhead.full = rfixed_div(disp_latency_overhead, sclk_ff); 2383 disp_latency_overhead.full = rfixed_div(disp_latency_overhead, sclk_ff);
2369 mc_latency_mclk.full += disp_latency_overhead.full + cur_latency_mclk.full; 2384 mc_latency_mclk.full += disp_latency_overhead.full + cur_latency_mclk.full;
2370 mc_latency_sclk.full += disp_latency_overhead.full + cur_latency_sclk.full; 2385 mc_latency_sclk.full += disp_latency_overhead.full + cur_latency_sclk.full;
@@ -2562,8 +2577,11 @@ void r100_bandwidth_update(struct radeon_device *rdev)
2562static inline void r100_cs_track_texture_print(struct r100_cs_track_texture *t) 2577static inline void r100_cs_track_texture_print(struct r100_cs_track_texture *t)
2563{ 2578{
2564 DRM_ERROR("pitch %d\n", t->pitch); 2579 DRM_ERROR("pitch %d\n", t->pitch);
2580 DRM_ERROR("use_pitch %d\n", t->use_pitch);
2565 DRM_ERROR("width %d\n", t->width); 2581 DRM_ERROR("width %d\n", t->width);
2582 DRM_ERROR("width_11 %d\n", t->width_11);
2566 DRM_ERROR("height %d\n", t->height); 2583 DRM_ERROR("height %d\n", t->height);
2584 DRM_ERROR("height_11 %d\n", t->height_11);
2567 DRM_ERROR("num levels %d\n", t->num_levels); 2585 DRM_ERROR("num levels %d\n", t->num_levels);
2568 DRM_ERROR("depth %d\n", t->txdepth); 2586 DRM_ERROR("depth %d\n", t->txdepth);
2569 DRM_ERROR("bpp %d\n", t->cpp); 2587 DRM_ERROR("bpp %d\n", t->cpp);
@@ -2623,15 +2641,17 @@ static int r100_cs_track_texture_check(struct radeon_device *rdev,
2623 else 2641 else
2624 w = track->textures[u].pitch / (1 << i); 2642 w = track->textures[u].pitch / (1 << i);
2625 } else { 2643 } else {
2626 w = track->textures[u].width / (1 << i); 2644 w = track->textures[u].width;
2627 if (rdev->family >= CHIP_RV515) 2645 if (rdev->family >= CHIP_RV515)
2628 w |= track->textures[u].width_11; 2646 w |= track->textures[u].width_11;
2647 w = w / (1 << i);
2629 if (track->textures[u].roundup_w) 2648 if (track->textures[u].roundup_w)
2630 w = roundup_pow_of_two(w); 2649 w = roundup_pow_of_two(w);
2631 } 2650 }
2632 h = track->textures[u].height / (1 << i); 2651 h = track->textures[u].height;
2633 if (rdev->family >= CHIP_RV515) 2652 if (rdev->family >= CHIP_RV515)
2634 h |= track->textures[u].height_11; 2653 h |= track->textures[u].height_11;
2654 h = h / (1 << i);
2635 if (track->textures[u].roundup_h) 2655 if (track->textures[u].roundup_h)
2636 h = roundup_pow_of_two(h); 2656 h = roundup_pow_of_two(h);
2637 size += w * h; 2657 size += w * h;
diff --git a/drivers/gpu/drm/radeon/r300.c b/drivers/gpu/drm/radeon/r300.c
index e08c4a8974ca..2f43ee8e4048 100644
--- a/drivers/gpu/drm/radeon/r300.c
+++ b/drivers/gpu/drm/radeon/r300.c
@@ -113,7 +113,7 @@ int rv370_pcie_gart_enable(struct radeon_device *rdev)
113 tmp = RADEON_PCIE_TX_GART_UNMAPPED_ACCESS_DISCARD; 113 tmp = RADEON_PCIE_TX_GART_UNMAPPED_ACCESS_DISCARD;
114 WREG32_PCIE(RADEON_PCIE_TX_GART_CNTL, tmp); 114 WREG32_PCIE(RADEON_PCIE_TX_GART_CNTL, tmp);
115 WREG32_PCIE(RADEON_PCIE_TX_GART_START_LO, rdev->mc.gtt_location); 115 WREG32_PCIE(RADEON_PCIE_TX_GART_START_LO, rdev->mc.gtt_location);
116 tmp = rdev->mc.gtt_location + rdev->mc.gtt_size - 4096; 116 tmp = rdev->mc.gtt_location + rdev->mc.gtt_size - RADEON_GPU_PAGE_SIZE;
117 WREG32_PCIE(RADEON_PCIE_TX_GART_END_LO, tmp); 117 WREG32_PCIE(RADEON_PCIE_TX_GART_END_LO, tmp);
118 WREG32_PCIE(RADEON_PCIE_TX_GART_START_HI, 0); 118 WREG32_PCIE(RADEON_PCIE_TX_GART_START_HI, 0);
119 WREG32_PCIE(RADEON_PCIE_TX_GART_END_HI, 0); 119 WREG32_PCIE(RADEON_PCIE_TX_GART_END_HI, 0);
diff --git a/drivers/gpu/drm/radeon/r420.c b/drivers/gpu/drm/radeon/r420.c
index 5c7fe52de30e..1cefdbcc0850 100644
--- a/drivers/gpu/drm/radeon/r420.c
+++ b/drivers/gpu/drm/radeon/r420.c
@@ -311,6 +311,8 @@ int r420_init(struct radeon_device *rdev)
311 } 311 }
312 /* Initialize clocks */ 312 /* Initialize clocks */
313 radeon_get_clock_info(rdev->ddev); 313 radeon_get_clock_info(rdev->ddev);
314 /* Initialize power management */
315 radeon_pm_init(rdev);
314 /* Get vram informations */ 316 /* Get vram informations */
315 r300_vram_info(rdev); 317 r300_vram_info(rdev);
316 /* Initialize memory controller (also test AGP) */ 318 /* Initialize memory controller (also test AGP) */
diff --git a/drivers/gpu/drm/radeon/r500_reg.h b/drivers/gpu/drm/radeon/r500_reg.h
index 868add6e166d..7baa73955563 100644
--- a/drivers/gpu/drm/radeon/r500_reg.h
+++ b/drivers/gpu/drm/radeon/r500_reg.h
@@ -384,9 +384,16 @@
384# define AVIVO_D1GRPH_TILED (1 << 20) 384# define AVIVO_D1GRPH_TILED (1 << 20)
385# define AVIVO_D1GRPH_MACRO_ADDRESS_MODE (1 << 21) 385# define AVIVO_D1GRPH_MACRO_ADDRESS_MODE (1 << 21)
386 386
387/* The R7xx *_HIGH surface regs are backwards; the D1 regs are in the D2
388 * block and vice versa. This applies to GRPH, CUR, etc.
389 */
387#define AVIVO_D1GRPH_LUT_SEL 0x6108 390#define AVIVO_D1GRPH_LUT_SEL 0x6108
388#define AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS 0x6110 391#define AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS 0x6110
392#define R700_D1GRPH_PRIMARY_SURFACE_ADDRESS_HIGH 0x6914
393#define R700_D2GRPH_PRIMARY_SURFACE_ADDRESS_HIGH 0x6114
389#define AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS 0x6118 394#define AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS 0x6118
395#define R700_D1GRPH_SECONDARY_SURFACE_ADDRESS_HIGH 0x691c
396#define R700_D2GRPH_SECONDARY_SURFACE_ADDRESS_HIGH 0x611c
390#define AVIVO_D1GRPH_PITCH 0x6120 397#define AVIVO_D1GRPH_PITCH 0x6120
391#define AVIVO_D1GRPH_SURFACE_OFFSET_X 0x6124 398#define AVIVO_D1GRPH_SURFACE_OFFSET_X 0x6124
392#define AVIVO_D1GRPH_SURFACE_OFFSET_Y 0x6128 399#define AVIVO_D1GRPH_SURFACE_OFFSET_Y 0x6128
@@ -404,6 +411,8 @@
404# define AVIVO_D1CURSOR_MODE_MASK (3 << 8) 411# define AVIVO_D1CURSOR_MODE_MASK (3 << 8)
405# define AVIVO_D1CURSOR_MODE_24BPP 2 412# define AVIVO_D1CURSOR_MODE_24BPP 2
406#define AVIVO_D1CUR_SURFACE_ADDRESS 0x6408 413#define AVIVO_D1CUR_SURFACE_ADDRESS 0x6408
414#define R700_D1CUR_SURFACE_ADDRESS_HIGH 0x6c0c
415#define R700_D2CUR_SURFACE_ADDRESS_HIGH 0x640c
407#define AVIVO_D1CUR_SIZE 0x6410 416#define AVIVO_D1CUR_SIZE 0x6410
408#define AVIVO_D1CUR_POSITION 0x6414 417#define AVIVO_D1CUR_POSITION 0x6414
409#define AVIVO_D1CUR_HOT_SPOT 0x6418 418#define AVIVO_D1CUR_HOT_SPOT 0x6418
diff --git a/drivers/gpu/drm/radeon/r520.c b/drivers/gpu/drm/radeon/r520.c
index a555b7b19b48..f7435185c0a6 100644
--- a/drivers/gpu/drm/radeon/r520.c
+++ b/drivers/gpu/drm/radeon/r520.c
@@ -260,6 +260,8 @@ int r520_init(struct radeon_device *rdev)
260 } 260 }
261 /* Initialize clocks */ 261 /* Initialize clocks */
262 radeon_get_clock_info(rdev->ddev); 262 radeon_get_clock_info(rdev->ddev);
263 /* Initialize power management */
264 radeon_pm_init(rdev);
263 /* Get vram informations */ 265 /* Get vram informations */
264 r520_vram_info(rdev); 266 r520_vram_info(rdev);
265 /* Initialize memory controller (also test AGP) */ 267 /* Initialize memory controller (also test AGP) */
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index 609719490ec2..278f646bc18e 100644
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -339,11 +339,10 @@ int r600_mc_init(struct radeon_device *rdev)
339{ 339{
340 fixed20_12 a; 340 fixed20_12 a;
341 u32 tmp; 341 u32 tmp;
342 int chansize; 342 int chansize, numchan;
343 int r; 343 int r;
344 344
345 /* Get VRAM informations */ 345 /* Get VRAM informations */
346 rdev->mc.vram_width = 128;
347 rdev->mc.vram_is_ddr = true; 346 rdev->mc.vram_is_ddr = true;
348 tmp = RREG32(RAMCFG); 347 tmp = RREG32(RAMCFG);
349 if (tmp & CHANSIZE_OVERRIDE) { 348 if (tmp & CHANSIZE_OVERRIDE) {
@@ -353,17 +352,23 @@ int r600_mc_init(struct radeon_device *rdev)
353 } else { 352 } else {
354 chansize = 32; 353 chansize = 32;
355 } 354 }
356 if (rdev->family == CHIP_R600) { 355 tmp = RREG32(CHMAP);
357 rdev->mc.vram_width = 8 * chansize; 356 switch ((tmp & NOOFCHAN_MASK) >> NOOFCHAN_SHIFT) {
358 } else if (rdev->family == CHIP_RV670) { 357 case 0:
359 rdev->mc.vram_width = 4 * chansize; 358 default:
360 } else if ((rdev->family == CHIP_RV610) || 359 numchan = 1;
361 (rdev->family == CHIP_RV620)) { 360 break;
362 rdev->mc.vram_width = chansize; 361 case 1:
363 } else if ((rdev->family == CHIP_RV630) || 362 numchan = 2;
364 (rdev->family == CHIP_RV635)) { 363 break;
365 rdev->mc.vram_width = 2 * chansize; 364 case 2:
365 numchan = 4;
366 break;
367 case 3:
368 numchan = 8;
369 break;
366 } 370 }
371 rdev->mc.vram_width = numchan * chansize;
367 /* Could aper size report 0 ? */ 372 /* Could aper size report 0 ? */
368 rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0); 373 rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
369 rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0); 374 rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);
@@ -404,35 +409,29 @@ int r600_mc_init(struct radeon_device *rdev)
404 rdev->mc.gtt_location = rdev->mc.mc_vram_size; 409 rdev->mc.gtt_location = rdev->mc.mc_vram_size;
405 } 410 }
406 } else { 411 } else {
407 if (rdev->family == CHIP_RS780 || rdev->family == CHIP_RS880) { 412 rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024;
408 rdev->mc.vram_location = (RREG32(MC_VM_FB_LOCATION) & 413 rdev->mc.vram_location = (RREG32(MC_VM_FB_LOCATION) &
409 0xFFFF) << 24; 414 0xFFFF) << 24;
410 rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024; 415 tmp = rdev->mc.vram_location + rdev->mc.mc_vram_size;
411 tmp = rdev->mc.vram_location + rdev->mc.mc_vram_size; 416 if ((0xFFFFFFFFUL - tmp) >= rdev->mc.gtt_size) {
412 if ((0xFFFFFFFFUL - tmp) >= rdev->mc.gtt_size) { 417 /* Enough place after vram */
413 /* Enough place after vram */ 418 rdev->mc.gtt_location = tmp;
414 rdev->mc.gtt_location = tmp; 419 } else if (rdev->mc.vram_location >= rdev->mc.gtt_size) {
415 } else if (rdev->mc.vram_location >= rdev->mc.gtt_size) { 420 /* Enough place before vram */
416 /* Enough place before vram */ 421 rdev->mc.gtt_location = 0;
422 } else {
423 /* Not enough place after or before shrink
424 * gart size
425 */
426 if (rdev->mc.vram_location > (0xFFFFFFFFUL - tmp)) {
417 rdev->mc.gtt_location = 0; 427 rdev->mc.gtt_location = 0;
428 rdev->mc.gtt_size = rdev->mc.vram_location;
418 } else { 429 } else {
419 /* Not enough place after or before shrink 430 rdev->mc.gtt_location = tmp;
420 * gart size 431 rdev->mc.gtt_size = 0xFFFFFFFFUL - tmp;
421 */
422 if (rdev->mc.vram_location > (0xFFFFFFFFUL - tmp)) {
423 rdev->mc.gtt_location = 0;
424 rdev->mc.gtt_size = rdev->mc.vram_location;
425 } else {
426 rdev->mc.gtt_location = tmp;
427 rdev->mc.gtt_size = 0xFFFFFFFFUL - tmp;
428 }
429 } 432 }
430 rdev->mc.gtt_location = rdev->mc.mc_vram_size;
431 } else {
432 rdev->mc.vram_location = 0x00000000UL;
433 rdev->mc.gtt_location = rdev->mc.mc_vram_size;
434 rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024;
435 } 433 }
434 rdev->mc.gtt_location = rdev->mc.mc_vram_size;
436 } 435 }
437 rdev->mc.vram_start = rdev->mc.vram_location; 436 rdev->mc.vram_start = rdev->mc.vram_location;
438 rdev->mc.vram_end = rdev->mc.vram_location + rdev->mc.mc_vram_size - 1; 437 rdev->mc.vram_end = rdev->mc.vram_location + rdev->mc.mc_vram_size - 1;
@@ -859,7 +858,8 @@ void r600_gpu_init(struct radeon_device *rdev)
859 ((rdev->family) == CHIP_RV630) || 858 ((rdev->family) == CHIP_RV630) ||
860 ((rdev->family) == CHIP_RV610) || 859 ((rdev->family) == CHIP_RV610) ||
861 ((rdev->family) == CHIP_RV620) || 860 ((rdev->family) == CHIP_RV620) ||
862 ((rdev->family) == CHIP_RS780)) { 861 ((rdev->family) == CHIP_RS780) ||
862 ((rdev->family) == CHIP_RS880)) {
863 WREG32(DB_DEBUG, PREZ_MUST_WAIT_FOR_POSTZ_DONE); 863 WREG32(DB_DEBUG, PREZ_MUST_WAIT_FOR_POSTZ_DONE);
864 } else { 864 } else {
865 WREG32(DB_DEBUG, 0); 865 WREG32(DB_DEBUG, 0);
@@ -876,7 +876,8 @@ void r600_gpu_init(struct radeon_device *rdev)
876 tmp = RREG32(SQ_MS_FIFO_SIZES); 876 tmp = RREG32(SQ_MS_FIFO_SIZES);
877 if (((rdev->family) == CHIP_RV610) || 877 if (((rdev->family) == CHIP_RV610) ||
878 ((rdev->family) == CHIP_RV620) || 878 ((rdev->family) == CHIP_RV620) ||
879 ((rdev->family) == CHIP_RS780)) { 879 ((rdev->family) == CHIP_RS780) ||
880 ((rdev->family) == CHIP_RS880)) {
880 tmp = (CACHE_FIFO_SIZE(0xa) | 881 tmp = (CACHE_FIFO_SIZE(0xa) |
881 FETCH_FIFO_HIWATER(0xa) | 882 FETCH_FIFO_HIWATER(0xa) |
882 DONE_FIFO_HIWATER(0xe0) | 883 DONE_FIFO_HIWATER(0xe0) |
@@ -919,7 +920,8 @@ void r600_gpu_init(struct radeon_device *rdev)
919 NUM_ES_STACK_ENTRIES(0)); 920 NUM_ES_STACK_ENTRIES(0));
920 } else if (((rdev->family) == CHIP_RV610) || 921 } else if (((rdev->family) == CHIP_RV610) ||
921 ((rdev->family) == CHIP_RV620) || 922 ((rdev->family) == CHIP_RV620) ||
922 ((rdev->family) == CHIP_RS780)) { 923 ((rdev->family) == CHIP_RS780) ||
924 ((rdev->family) == CHIP_RS880)) {
923 /* no vertex cache */ 925 /* no vertex cache */
924 sq_config &= ~VC_ENABLE; 926 sq_config &= ~VC_ENABLE;
925 927
@@ -976,7 +978,8 @@ void r600_gpu_init(struct radeon_device *rdev)
976 978
977 if (((rdev->family) == CHIP_RV610) || 979 if (((rdev->family) == CHIP_RV610) ||
978 ((rdev->family) == CHIP_RV620) || 980 ((rdev->family) == CHIP_RV620) ||
979 ((rdev->family) == CHIP_RS780)) { 981 ((rdev->family) == CHIP_RS780) ||
982 ((rdev->family) == CHIP_RS880)) {
980 WREG32(VGT_CACHE_INVALIDATION, CACHE_INVALIDATION(TC_ONLY)); 983 WREG32(VGT_CACHE_INVALIDATION, CACHE_INVALIDATION(TC_ONLY));
981 } else { 984 } else {
982 WREG32(VGT_CACHE_INVALIDATION, CACHE_INVALIDATION(VC_AND_TC)); 985 WREG32(VGT_CACHE_INVALIDATION, CACHE_INVALIDATION(VC_AND_TC));
@@ -1002,8 +1005,9 @@ void r600_gpu_init(struct radeon_device *rdev)
1002 tmp = rdev->config.r600.max_pipes * 16; 1005 tmp = rdev->config.r600.max_pipes * 16;
1003 switch (rdev->family) { 1006 switch (rdev->family) {
1004 case CHIP_RV610: 1007 case CHIP_RV610:
1005 case CHIP_RS780:
1006 case CHIP_RV620: 1008 case CHIP_RV620:
1009 case CHIP_RS780:
1010 case CHIP_RS880:
1007 tmp += 32; 1011 tmp += 32;
1008 break; 1012 break;
1009 case CHIP_RV670: 1013 case CHIP_RV670:
@@ -1044,8 +1048,9 @@ void r600_gpu_init(struct radeon_device *rdev)
1044 1048
1045 switch (rdev->family) { 1049 switch (rdev->family) {
1046 case CHIP_RV610: 1050 case CHIP_RV610:
1047 case CHIP_RS780:
1048 case CHIP_RV620: 1051 case CHIP_RV620:
1052 case CHIP_RS780:
1053 case CHIP_RS880:
1049 tmp = TC_L2_SIZE(8); 1054 tmp = TC_L2_SIZE(8);
1050 break; 1055 break;
1051 case CHIP_RV630: 1056 case CHIP_RV630:
@@ -1267,19 +1272,17 @@ int r600_cp_resume(struct radeon_device *rdev)
1267 1272
1268 /* Set ring buffer size */ 1273 /* Set ring buffer size */
1269 rb_bufsz = drm_order(rdev->cp.ring_size / 8); 1274 rb_bufsz = drm_order(rdev->cp.ring_size / 8);
1275 tmp = RB_NO_UPDATE | (drm_order(RADEON_GPU_PAGE_SIZE/8) << 8) | rb_bufsz;
1270#ifdef __BIG_ENDIAN 1276#ifdef __BIG_ENDIAN
1271 WREG32(CP_RB_CNTL, BUF_SWAP_32BIT | RB_NO_UPDATE | 1277 tmp |= BUF_SWAP_32BIT;
1272 (drm_order(4096/8) << 8) | rb_bufsz);
1273#else
1274 WREG32(CP_RB_CNTL, RB_NO_UPDATE | (drm_order(4096/8) << 8) | rb_bufsz);
1275#endif 1278#endif
1279 WREG32(CP_RB_CNTL, tmp);
1276 WREG32(CP_SEM_WAIT_TIMER, 0x4); 1280 WREG32(CP_SEM_WAIT_TIMER, 0x4);
1277 1281
1278 /* Set the write pointer delay */ 1282 /* Set the write pointer delay */
1279 WREG32(CP_RB_WPTR_DELAY, 0); 1283 WREG32(CP_RB_WPTR_DELAY, 0);
1280 1284
1281 /* Initialize the ring buffer's read and write pointers */ 1285 /* Initialize the ring buffer's read and write pointers */
1282 tmp = RREG32(CP_RB_CNTL);
1283 WREG32(CP_RB_CNTL, tmp | RB_RPTR_WR_ENA); 1286 WREG32(CP_RB_CNTL, tmp | RB_RPTR_WR_ENA);
1284 WREG32(CP_RB_RPTR_WR, 0); 1287 WREG32(CP_RB_RPTR_WR, 0);
1285 WREG32(CP_RB_WPTR, 0); 1288 WREG32(CP_RB_WPTR, 0);
@@ -1400,7 +1403,7 @@ int r600_wb_enable(struct radeon_device *rdev)
1400 int r; 1403 int r;
1401 1404
1402 if (rdev->wb.wb_obj == NULL) { 1405 if (rdev->wb.wb_obj == NULL) {
1403 r = radeon_object_create(rdev, NULL, 4096, true, 1406 r = radeon_object_create(rdev, NULL, RADEON_GPU_PAGE_SIZE, true,
1404 RADEON_GEM_DOMAIN_GTT, false, &rdev->wb.wb_obj); 1407 RADEON_GEM_DOMAIN_GTT, false, &rdev->wb.wb_obj);
1405 if (r) { 1408 if (r) {
1406 dev_warn(rdev->dev, "failed to create WB buffer (%d).\n", r); 1409 dev_warn(rdev->dev, "failed to create WB buffer (%d).\n", r);
@@ -1450,8 +1453,8 @@ int r600_copy_blit(struct radeon_device *rdev,
1450 uint64_t src_offset, uint64_t dst_offset, 1453 uint64_t src_offset, uint64_t dst_offset,
1451 unsigned num_pages, struct radeon_fence *fence) 1454 unsigned num_pages, struct radeon_fence *fence)
1452{ 1455{
1453 r600_blit_prepare_copy(rdev, num_pages * 4096); 1456 r600_blit_prepare_copy(rdev, num_pages * RADEON_GPU_PAGE_SIZE);
1454 r600_kms_blit_copy(rdev, src_offset, dst_offset, num_pages * 4096); 1457 r600_kms_blit_copy(rdev, src_offset, dst_offset, num_pages * RADEON_GPU_PAGE_SIZE);
1455 r600_blit_done_copy(rdev, fence); 1458 r600_blit_done_copy(rdev, fence);
1456 return 0; 1459 return 0;
1457} 1460}
@@ -1632,10 +1635,13 @@ int r600_init(struct radeon_device *rdev)
1632 r600_scratch_init(rdev); 1635 r600_scratch_init(rdev);
1633 /* Initialize surface registers */ 1636 /* Initialize surface registers */
1634 radeon_surface_init(rdev); 1637 radeon_surface_init(rdev);
1638 /* Initialize clocks */
1635 radeon_get_clock_info(rdev->ddev); 1639 radeon_get_clock_info(rdev->ddev);
1636 r = radeon_clocks_init(rdev); 1640 r = radeon_clocks_init(rdev);
1637 if (r) 1641 if (r)
1638 return r; 1642 return r;
1643 /* Initialize power management */
1644 radeon_pm_init(rdev);
1639 /* Fence driver */ 1645 /* Fence driver */
1640 r = radeon_fence_driver_init(rdev); 1646 r = radeon_fence_driver_init(rdev);
1641 if (r) 1647 if (r)
diff --git a/drivers/gpu/drm/radeon/r600_blit.c b/drivers/gpu/drm/radeon/r600_blit.c
index dec501081608..5ea432347589 100644
--- a/drivers/gpu/drm/radeon/r600_blit.c
+++ b/drivers/gpu/drm/radeon/r600_blit.c
@@ -582,6 +582,8 @@ r600_blit_copy(struct drm_device *dev,
582 u64 vb_addr; 582 u64 vb_addr;
583 u32 *vb; 583 u32 *vb;
584 584
585 vb = r600_nomm_get_vb_ptr(dev);
586
585 if ((size_bytes & 3) || (src_gpu_addr & 3) || (dst_gpu_addr & 3)) { 587 if ((size_bytes & 3) || (src_gpu_addr & 3) || (dst_gpu_addr & 3)) {
586 max_bytes = 8192; 588 max_bytes = 8192;
587 589
@@ -617,8 +619,8 @@ r600_blit_copy(struct drm_device *dev,
617 if (!dev_priv->blit_vb) 619 if (!dev_priv->blit_vb)
618 return; 620 return;
619 set_shaders(dev); 621 set_shaders(dev);
622 vb = r600_nomm_get_vb_ptr(dev);
620 } 623 }
621 vb = r600_nomm_get_vb_ptr(dev);
622 624
623 vb[0] = i2f(dst_x); 625 vb[0] = i2f(dst_x);
624 vb[1] = 0; 626 vb[1] = 0;
@@ -706,8 +708,8 @@ r600_blit_copy(struct drm_device *dev,
706 return; 708 return;
707 709
708 set_shaders(dev); 710 set_shaders(dev);
711 vb = r600_nomm_get_vb_ptr(dev);
709 } 712 }
710 vb = r600_nomm_get_vb_ptr(dev);
711 713
712 vb[0] = i2f(dst_x / 4); 714 vb[0] = i2f(dst_x / 4);
713 vb[1] = 0; 715 vb[1] = 0;
@@ -772,6 +774,7 @@ r600_blit_swap(struct drm_device *dev,
772{ 774{
773 drm_radeon_private_t *dev_priv = dev->dev_private; 775 drm_radeon_private_t *dev_priv = dev->dev_private;
774 int cb_format, tex_format; 776 int cb_format, tex_format;
777 int sx2, sy2, dx2, dy2;
775 u64 vb_addr; 778 u64 vb_addr;
776 u32 *vb; 779 u32 *vb;
777 780
@@ -786,16 +789,10 @@ r600_blit_swap(struct drm_device *dev,
786 } 789 }
787 vb = r600_nomm_get_vb_ptr(dev); 790 vb = r600_nomm_get_vb_ptr(dev);
788 791
789 if (cpp == 4) { 792 sx2 = sx + w;
790 cb_format = COLOR_8_8_8_8; 793 sy2 = sy + h;
791 tex_format = FMT_8_8_8_8; 794 dx2 = dx + w;
792 } else if (cpp == 2) { 795 dy2 = dy + h;
793 cb_format = COLOR_5_6_5;
794 tex_format = FMT_5_6_5;
795 } else {
796 cb_format = COLOR_8;
797 tex_format = FMT_8;
798 }
799 796
800 vb[0] = i2f(dx); 797 vb[0] = i2f(dx);
801 vb[1] = i2f(dy); 798 vb[1] = i2f(dy);
@@ -803,31 +800,46 @@ r600_blit_swap(struct drm_device *dev,
803 vb[3] = i2f(sy); 800 vb[3] = i2f(sy);
804 801
805 vb[4] = i2f(dx); 802 vb[4] = i2f(dx);
806 vb[5] = i2f(dy + h); 803 vb[5] = i2f(dy2);
807 vb[6] = i2f(sx); 804 vb[6] = i2f(sx);
808 vb[7] = i2f(sy + h); 805 vb[7] = i2f(sy2);
806
807 vb[8] = i2f(dx2);
808 vb[9] = i2f(dy2);
809 vb[10] = i2f(sx2);
810 vb[11] = i2f(sy2);
809 811
810 vb[8] = i2f(dx + w); 812 switch(cpp) {
811 vb[9] = i2f(dy + h); 813 case 4:
812 vb[10] = i2f(sx + w); 814 cb_format = COLOR_8_8_8_8;
813 vb[11] = i2f(sy + h); 815 tex_format = FMT_8_8_8_8;
816 break;
817 case 2:
818 cb_format = COLOR_5_6_5;
819 tex_format = FMT_5_6_5;
820 break;
821 default:
822 cb_format = COLOR_8;
823 tex_format = FMT_8;
824 break;
825 }
814 826
815 /* src */ 827 /* src */
816 set_tex_resource(dev_priv, tex_format, 828 set_tex_resource(dev_priv, tex_format,
817 src_pitch / cpp, 829 src_pitch / cpp,
818 sy + h, src_pitch / cpp, 830 sy2, src_pitch / cpp,
819 src_gpu_addr); 831 src_gpu_addr);
820 832
821 cp_set_surface_sync(dev_priv, 833 cp_set_surface_sync(dev_priv,
822 R600_TC_ACTION_ENA, (src_pitch * (sy + h)), src_gpu_addr); 834 R600_TC_ACTION_ENA, src_pitch * sy2, src_gpu_addr);
823 835
824 /* dst */ 836 /* dst */
825 set_render_target(dev_priv, cb_format, 837 set_render_target(dev_priv, cb_format,
826 dst_pitch / cpp, dy + h, 838 dst_pitch / cpp, dy2,
827 dst_gpu_addr); 839 dst_gpu_addr);
828 840
829 /* scissors */ 841 /* scissors */
830 set_scissors(dev_priv, dx, dy, dx + w, dy + h); 842 set_scissors(dev_priv, dx, dy, dx2, dy2);
831 843
832 /* Vertex buffer setup */ 844 /* Vertex buffer setup */
833 vb_addr = dev_priv->gart_buffers_offset + 845 vb_addr = dev_priv->gart_buffers_offset +
@@ -840,7 +852,7 @@ r600_blit_swap(struct drm_device *dev,
840 852
841 cp_set_surface_sync(dev_priv, 853 cp_set_surface_sync(dev_priv,
842 R600_CB_ACTION_ENA | R600_CB0_DEST_BASE_ENA, 854 R600_CB_ACTION_ENA | R600_CB0_DEST_BASE_ENA,
843 dst_pitch * (dy + h), dst_gpu_addr); 855 dst_pitch * dy2, dst_gpu_addr);
844 856
845 dev_priv->blit_vb->used += 12 * 4; 857 dev_priv->blit_vb->used += 12 * 4;
846} 858}
diff --git a/drivers/gpu/drm/radeon/r600_blit_kms.c b/drivers/gpu/drm/radeon/r600_blit_kms.c
index 93108bb31d1d..dbf716e1fbf3 100644
--- a/drivers/gpu/drm/radeon/r600_blit_kms.c
+++ b/drivers/gpu/drm/radeon/r600_blit_kms.c
@@ -368,7 +368,7 @@ set_default_state(struct radeon_device *rdev)
368 if ((rdev->family == CHIP_RV610) || 368 if ((rdev->family == CHIP_RV610) ||
369 (rdev->family == CHIP_RV620) || 369 (rdev->family == CHIP_RV620) ||
370 (rdev->family == CHIP_RS780) || 370 (rdev->family == CHIP_RS780) ||
371 (rdev->family == CHIP_RS780) || 371 (rdev->family == CHIP_RS880) ||
372 (rdev->family == CHIP_RV710)) 372 (rdev->family == CHIP_RV710))
373 sq_config = 0; 373 sq_config = 0;
374 else 374 else
@@ -610,6 +610,7 @@ void r600_kms_blit_copy(struct radeon_device *rdev,
610 610
611 DRM_DEBUG("emitting copy %16llx %16llx %d %d\n", src_gpu_addr, dst_gpu_addr, 611 DRM_DEBUG("emitting copy %16llx %16llx %d %d\n", src_gpu_addr, dst_gpu_addr,
612 size_bytes, rdev->r600_blit.vb_used); 612 size_bytes, rdev->r600_blit.vb_used);
613 vb = (u32 *)(rdev->r600_blit.vb_ib->ptr + rdev->r600_blit.vb_used);
613 if ((size_bytes & 3) || (src_gpu_addr & 3) || (dst_gpu_addr & 3)) { 614 if ((size_bytes & 3) || (src_gpu_addr & 3) || (dst_gpu_addr & 3)) {
614 max_bytes = 8192; 615 max_bytes = 8192;
615 616
@@ -652,7 +653,6 @@ void r600_kms_blit_copy(struct radeon_device *rdev,
652 vb = r600_nomm_get_vb_ptr(dev); 653 vb = r600_nomm_get_vb_ptr(dev);
653#endif 654#endif
654 } 655 }
655 vb = (u32 *)(rdev->r600_blit.vb_ib->ptr + rdev->r600_blit.vb_used);
656 656
657 vb[0] = i2f(dst_x); 657 vb[0] = i2f(dst_x);
658 vb[1] = 0; 658 vb[1] = 0;
@@ -747,7 +747,6 @@ void r600_kms_blit_copy(struct radeon_device *rdev,
747 vb = r600_nomm_get_vb_ptr(dev); 747 vb = r600_nomm_get_vb_ptr(dev);
748 } 748 }
749#endif 749#endif
750 vb = (u32 *)(rdev->r600_blit.vb_ib->ptr + rdev->r600_blit.vb_used);
751 750
752 vb[0] = i2f(dst_x / 4); 751 vb[0] = i2f(dst_x / 4);
753 vb[1] = 0; 752 vb[1] = 0;
diff --git a/drivers/gpu/drm/radeon/r600_cs.c b/drivers/gpu/drm/radeon/r600_cs.c
index 17e42195c632..0d820764f340 100644
--- a/drivers/gpu/drm/radeon/r600_cs.c
+++ b/drivers/gpu/drm/radeon/r600_cs.c
@@ -466,6 +466,23 @@ static int r600_packet3_check(struct radeon_cs_parser *p,
466 for (i = 0; i < pkt->count; i++) { 466 for (i = 0; i < pkt->count; i++) {
467 reg = start_reg + (4 * i); 467 reg = start_reg + (4 * i);
468 switch (reg) { 468 switch (reg) {
469 case SQ_ESGS_RING_BASE:
470 case SQ_GSVS_RING_BASE:
471 case SQ_ESTMP_RING_BASE:
472 case SQ_GSTMP_RING_BASE:
473 case SQ_VSTMP_RING_BASE:
474 case SQ_PSTMP_RING_BASE:
475 case SQ_FBUF_RING_BASE:
476 case SQ_REDUC_RING_BASE:
477 case SX_MEMORY_EXPORT_BASE:
478 r = r600_cs_packet_next_reloc(p, &reloc);
479 if (r) {
480 DRM_ERROR("bad SET_CONFIG_REG "
481 "0x%04X\n", reg);
482 return -EINVAL;
483 }
484 ib[idx+1+i] += (u32)((reloc->lobj.gpu_offset >> 8) & 0xffffffff);
485 break;
469 case CP_COHER_BASE: 486 case CP_COHER_BASE:
470 /* use PACKET3_SURFACE_SYNC */ 487 /* use PACKET3_SURFACE_SYNC */
471 return -EINVAL; 488 return -EINVAL;
@@ -487,6 +504,7 @@ static int r600_packet3_check(struct radeon_cs_parser *p,
487 reg = start_reg + (4 * i); 504 reg = start_reg + (4 * i);
488 switch (reg) { 505 switch (reg) {
489 case DB_DEPTH_BASE: 506 case DB_DEPTH_BASE:
507 case DB_HTILE_DATA_BASE:
490 case CB_COLOR0_BASE: 508 case CB_COLOR0_BASE:
491 case CB_COLOR1_BASE: 509 case CB_COLOR1_BASE:
492 case CB_COLOR2_BASE: 510 case CB_COLOR2_BASE:
diff --git a/drivers/gpu/drm/radeon/r600d.h b/drivers/gpu/drm/radeon/r600d.h
index 9b64d47f1f82..27ab428b149b 100644
--- a/drivers/gpu/drm/radeon/r600d.h
+++ b/drivers/gpu/drm/radeon/r600d.h
@@ -119,6 +119,7 @@
119#define DB_DEBUG 0x9830 119#define DB_DEBUG 0x9830
120#define PREZ_MUST_WAIT_FOR_POSTZ_DONE (1 << 31) 120#define PREZ_MUST_WAIT_FOR_POSTZ_DONE (1 << 31)
121#define DB_DEPTH_BASE 0x2800C 121#define DB_DEPTH_BASE 0x2800C
122#define DB_HTILE_DATA_BASE 0x28014
122#define DB_WATERMARKS 0x9838 123#define DB_WATERMARKS 0x9838
123#define DEPTH_FREE(x) ((x) << 0) 124#define DEPTH_FREE(x) ((x) << 0)
124#define DEPTH_FLUSH(x) ((x) << 5) 125#define DEPTH_FLUSH(x) ((x) << 5)
@@ -171,6 +172,14 @@
171#define SQ_STACK_RESOURCE_MGMT_2 0x8c14 172#define SQ_STACK_RESOURCE_MGMT_2 0x8c14
172# define NUM_GS_STACK_ENTRIES(x) ((x) << 0) 173# define NUM_GS_STACK_ENTRIES(x) ((x) << 0)
173# define NUM_ES_STACK_ENTRIES(x) ((x) << 16) 174# define NUM_ES_STACK_ENTRIES(x) ((x) << 16)
175#define SQ_ESGS_RING_BASE 0x8c40
176#define SQ_GSVS_RING_BASE 0x8c48
177#define SQ_ESTMP_RING_BASE 0x8c50
178#define SQ_GSTMP_RING_BASE 0x8c58
179#define SQ_VSTMP_RING_BASE 0x8c60
180#define SQ_PSTMP_RING_BASE 0x8c68
181#define SQ_FBUF_RING_BASE 0x8c70
182#define SQ_REDUC_RING_BASE 0x8c78
174 183
175#define GRBM_CNTL 0x8000 184#define GRBM_CNTL 0x8000
176# define GRBM_READ_TIMEOUT(x) ((x) << 0) 185# define GRBM_READ_TIMEOUT(x) ((x) << 0)
@@ -271,6 +280,10 @@
271#define PCIE_PORT_INDEX 0x0038 280#define PCIE_PORT_INDEX 0x0038
272#define PCIE_PORT_DATA 0x003C 281#define PCIE_PORT_DATA 0x003C
273 282
283#define CHMAP 0x2004
284#define NOOFCHAN_SHIFT 12
285#define NOOFCHAN_MASK 0x00003000
286
274#define RAMCFG 0x2408 287#define RAMCFG 0x2408
275#define NOOFBANK_SHIFT 0 288#define NOOFBANK_SHIFT 0
276#define NOOFBANK_MASK 0x00000001 289#define NOOFBANK_MASK 0x00000001
@@ -352,6 +365,7 @@
352 365
353 366
354#define SX_MISC 0x28350 367#define SX_MISC 0x28350
368#define SX_MEMORY_EXPORT_BASE 0x9010
355#define SX_DEBUG_1 0x9054 369#define SX_DEBUG_1 0x9054
356#define SMX_EVENT_RELEASE (1 << 0) 370#define SMX_EVENT_RELEASE (1 << 0)
357#define ENABLE_NEW_SMX_ADDRESS (1 << 16) 371#define ENABLE_NEW_SMX_ADDRESS (1 << 16)
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index 5ab35b81c86b..224506a2f7b1 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -139,6 +139,10 @@ struct radeon_clock {
139 uint32_t default_sclk; 139 uint32_t default_sclk;
140}; 140};
141 141
142/*
143 * Power management
144 */
145int radeon_pm_init(struct radeon_device *rdev);
142 146
143/* 147/*
144 * Fences. 148 * Fences.
@@ -276,6 +280,8 @@ union radeon_gart_table {
276 struct radeon_gart_table_vram vram; 280 struct radeon_gart_table_vram vram;
277}; 281};
278 282
283#define RADEON_GPU_PAGE_SIZE 4096
284
279struct radeon_gart { 285struct radeon_gart {
280 dma_addr_t table_addr; 286 dma_addr_t table_addr;
281 unsigned num_gpu_pages; 287 unsigned num_gpu_pages;
@@ -513,6 +519,7 @@ typedef int (*radeon_packet3_check_t)(struct radeon_cs_parser *p,
513 * AGP 519 * AGP
514 */ 520 */
515int radeon_agp_init(struct radeon_device *rdev); 521int radeon_agp_init(struct radeon_device *rdev);
522void radeon_agp_resume(struct radeon_device *rdev);
516void radeon_agp_fini(struct radeon_device *rdev); 523void radeon_agp_fini(struct radeon_device *rdev);
517 524
518 525
@@ -621,7 +628,9 @@ struct radeon_asic {
621 uint64_t dst_offset, 628 uint64_t dst_offset,
622 unsigned num_pages, 629 unsigned num_pages,
623 struct radeon_fence *fence); 630 struct radeon_fence *fence);
631 uint32_t (*get_engine_clock)(struct radeon_device *rdev);
624 void (*set_engine_clock)(struct radeon_device *rdev, uint32_t eng_clock); 632 void (*set_engine_clock)(struct radeon_device *rdev, uint32_t eng_clock);
633 uint32_t (*get_memory_clock)(struct radeon_device *rdev);
625 void (*set_memory_clock)(struct radeon_device *rdev, uint32_t mem_clock); 634 void (*set_memory_clock)(struct radeon_device *rdev, uint32_t mem_clock);
626 void (*set_pcie_lanes)(struct radeon_device *rdev, int lanes); 635 void (*set_pcie_lanes)(struct radeon_device *rdev, int lanes);
627 void (*set_clock_gating)(struct radeon_device *rdev, int enable); 636 void (*set_clock_gating)(struct radeon_device *rdev, int enable);
@@ -783,6 +792,7 @@ struct radeon_device {
783 const struct firmware *me_fw; /* all family ME firmware */ 792 const struct firmware *me_fw; /* all family ME firmware */
784 const struct firmware *pfp_fw; /* r6/700 PFP firmware */ 793 const struct firmware *pfp_fw; /* r6/700 PFP firmware */
785 struct r600_blit r600_blit; 794 struct r600_blit r600_blit;
795 int msi_enabled; /* msi enabled */
786}; 796};
787 797
788int radeon_device_init(struct radeon_device *rdev, 798int radeon_device_init(struct radeon_device *rdev,
@@ -952,7 +962,9 @@ static inline void radeon_ring_write(struct radeon_device *rdev, uint32_t v)
952#define radeon_copy_blit(rdev, s, d, np, f) (rdev)->asic->copy_blit((rdev), (s), (d), (np), (f)) 962#define radeon_copy_blit(rdev, s, d, np, f) (rdev)->asic->copy_blit((rdev), (s), (d), (np), (f))
953#define radeon_copy_dma(rdev, s, d, np, f) (rdev)->asic->copy_dma((rdev), (s), (d), (np), (f)) 963#define radeon_copy_dma(rdev, s, d, np, f) (rdev)->asic->copy_dma((rdev), (s), (d), (np), (f))
954#define radeon_copy(rdev, s, d, np, f) (rdev)->asic->copy((rdev), (s), (d), (np), (f)) 964#define radeon_copy(rdev, s, d, np, f) (rdev)->asic->copy((rdev), (s), (d), (np), (f))
965#define radeon_get_engine_clock(rdev) (rdev)->asic->get_engine_clock((rdev))
955#define radeon_set_engine_clock(rdev, e) (rdev)->asic->set_engine_clock((rdev), (e)) 966#define radeon_set_engine_clock(rdev, e) (rdev)->asic->set_engine_clock((rdev), (e))
967#define radeon_get_memory_clock(rdev) (rdev)->asic->get_memory_clock((rdev))
956#define radeon_set_memory_clock(rdev, e) (rdev)->asic->set_engine_clock((rdev), (e)) 968#define radeon_set_memory_clock(rdev, e) (rdev)->asic->set_engine_clock((rdev), (e))
957#define radeon_set_pcie_lanes(rdev, l) (rdev)->asic->set_pcie_lanes((rdev), (l)) 969#define radeon_set_pcie_lanes(rdev, l) (rdev)->asic->set_pcie_lanes((rdev), (l))
958#define radeon_set_clock_gating(rdev, e) (rdev)->asic->set_clock_gating((rdev), (e)) 970#define radeon_set_clock_gating(rdev, e) (rdev)->asic->set_clock_gating((rdev), (e))
diff --git a/drivers/gpu/drm/radeon/radeon_agp.c b/drivers/gpu/drm/radeon/radeon_agp.c
index 23ea9955ac59..54bf49a6d676 100644
--- a/drivers/gpu/drm/radeon/radeon_agp.c
+++ b/drivers/gpu/drm/radeon/radeon_agp.c
@@ -237,6 +237,18 @@ int radeon_agp_init(struct radeon_device *rdev)
237#endif 237#endif
238} 238}
239 239
240void radeon_agp_resume(struct radeon_device *rdev)
241{
242#if __OS_HAS_AGP
243 int r;
244 if (rdev->flags & RADEON_IS_AGP) {
245 r = radeon_agp_init(rdev);
246 if (r)
247 dev_warn(rdev->dev, "radeon AGP reinit failed\n");
248 }
249#endif
250}
251
240void radeon_agp_fini(struct radeon_device *rdev) 252void radeon_agp_fini(struct radeon_device *rdev)
241{ 253{
242#if __OS_HAS_AGP 254#if __OS_HAS_AGP
diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h
index c3532c7a6f3f..c18fbee387d7 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.h
+++ b/drivers/gpu/drm/radeon/radeon_asic.h
@@ -31,10 +31,13 @@
31/* 31/*
32 * common functions 32 * common functions
33 */ 33 */
34uint32_t radeon_legacy_get_engine_clock(struct radeon_device *rdev);
34void radeon_legacy_set_engine_clock(struct radeon_device *rdev, uint32_t eng_clock); 35void radeon_legacy_set_engine_clock(struct radeon_device *rdev, uint32_t eng_clock);
35void radeon_legacy_set_clock_gating(struct radeon_device *rdev, int enable); 36void radeon_legacy_set_clock_gating(struct radeon_device *rdev, int enable);
36 37
38uint32_t radeon_atom_get_engine_clock(struct radeon_device *rdev);
37void radeon_atom_set_engine_clock(struct radeon_device *rdev, uint32_t eng_clock); 39void radeon_atom_set_engine_clock(struct radeon_device *rdev, uint32_t eng_clock);
40uint32_t radeon_atom_get_memory_clock(struct radeon_device *rdev);
38void radeon_atom_set_memory_clock(struct radeon_device *rdev, uint32_t mem_clock); 41void radeon_atom_set_memory_clock(struct radeon_device *rdev, uint32_t mem_clock);
39void radeon_atom_set_clock_gating(struct radeon_device *rdev, int enable); 42void radeon_atom_set_clock_gating(struct radeon_device *rdev, int enable);
40 43
@@ -95,7 +98,9 @@ static struct radeon_asic r100_asic = {
95 .copy_blit = &r100_copy_blit, 98 .copy_blit = &r100_copy_blit,
96 .copy_dma = NULL, 99 .copy_dma = NULL,
97 .copy = &r100_copy_blit, 100 .copy = &r100_copy_blit,
101 .get_engine_clock = &radeon_legacy_get_engine_clock,
98 .set_engine_clock = &radeon_legacy_set_engine_clock, 102 .set_engine_clock = &radeon_legacy_set_engine_clock,
103 .get_memory_clock = NULL,
99 .set_memory_clock = NULL, 104 .set_memory_clock = NULL,
100 .set_pcie_lanes = NULL, 105 .set_pcie_lanes = NULL,
101 .set_clock_gating = &radeon_legacy_set_clock_gating, 106 .set_clock_gating = &radeon_legacy_set_clock_gating,
@@ -148,7 +153,9 @@ static struct radeon_asic r300_asic = {
148 .copy_blit = &r100_copy_blit, 153 .copy_blit = &r100_copy_blit,
149 .copy_dma = &r300_copy_dma, 154 .copy_dma = &r300_copy_dma,
150 .copy = &r100_copy_blit, 155 .copy = &r100_copy_blit,
156 .get_engine_clock = &radeon_legacy_get_engine_clock,
151 .set_engine_clock = &radeon_legacy_set_engine_clock, 157 .set_engine_clock = &radeon_legacy_set_engine_clock,
158 .get_memory_clock = NULL,
152 .set_memory_clock = NULL, 159 .set_memory_clock = NULL,
153 .set_pcie_lanes = &rv370_set_pcie_lanes, 160 .set_pcie_lanes = &rv370_set_pcie_lanes,
154 .set_clock_gating = &radeon_legacy_set_clock_gating, 161 .set_clock_gating = &radeon_legacy_set_clock_gating,
@@ -185,7 +192,9 @@ static struct radeon_asic r420_asic = {
185 .copy_blit = &r100_copy_blit, 192 .copy_blit = &r100_copy_blit,
186 .copy_dma = &r300_copy_dma, 193 .copy_dma = &r300_copy_dma,
187 .copy = &r100_copy_blit, 194 .copy = &r100_copy_blit,
195 .get_engine_clock = &radeon_atom_get_engine_clock,
188 .set_engine_clock = &radeon_atom_set_engine_clock, 196 .set_engine_clock = &radeon_atom_set_engine_clock,
197 .get_memory_clock = &radeon_atom_get_memory_clock,
189 .set_memory_clock = &radeon_atom_set_memory_clock, 198 .set_memory_clock = &radeon_atom_set_memory_clock,
190 .set_pcie_lanes = &rv370_set_pcie_lanes, 199 .set_pcie_lanes = &rv370_set_pcie_lanes,
191 .set_clock_gating = &radeon_atom_set_clock_gating, 200 .set_clock_gating = &radeon_atom_set_clock_gating,
@@ -227,7 +236,9 @@ static struct radeon_asic rs400_asic = {
227 .copy_blit = &r100_copy_blit, 236 .copy_blit = &r100_copy_blit,
228 .copy_dma = &r300_copy_dma, 237 .copy_dma = &r300_copy_dma,
229 .copy = &r100_copy_blit, 238 .copy = &r100_copy_blit,
239 .get_engine_clock = &radeon_legacy_get_engine_clock,
230 .set_engine_clock = &radeon_legacy_set_engine_clock, 240 .set_engine_clock = &radeon_legacy_set_engine_clock,
241 .get_memory_clock = NULL,
231 .set_memory_clock = NULL, 242 .set_memory_clock = NULL,
232 .set_pcie_lanes = NULL, 243 .set_pcie_lanes = NULL,
233 .set_clock_gating = &radeon_legacy_set_clock_gating, 244 .set_clock_gating = &radeon_legacy_set_clock_gating,
@@ -273,7 +284,9 @@ static struct radeon_asic rs600_asic = {
273 .copy_blit = &r100_copy_blit, 284 .copy_blit = &r100_copy_blit,
274 .copy_dma = &r300_copy_dma, 285 .copy_dma = &r300_copy_dma,
275 .copy = &r100_copy_blit, 286 .copy = &r100_copy_blit,
287 .get_engine_clock = &radeon_atom_get_engine_clock,
276 .set_engine_clock = &radeon_atom_set_engine_clock, 288 .set_engine_clock = &radeon_atom_set_engine_clock,
289 .get_memory_clock = &radeon_atom_get_memory_clock,
277 .set_memory_clock = &radeon_atom_set_memory_clock, 290 .set_memory_clock = &radeon_atom_set_memory_clock,
278 .set_pcie_lanes = NULL, 291 .set_pcie_lanes = NULL,
279 .set_clock_gating = &radeon_atom_set_clock_gating, 292 .set_clock_gating = &radeon_atom_set_clock_gating,
@@ -312,7 +325,9 @@ static struct radeon_asic rs690_asic = {
312 .copy_blit = &r100_copy_blit, 325 .copy_blit = &r100_copy_blit,
313 .copy_dma = &r300_copy_dma, 326 .copy_dma = &r300_copy_dma,
314 .copy = &r300_copy_dma, 327 .copy = &r300_copy_dma,
328 .get_engine_clock = &radeon_atom_get_engine_clock,
315 .set_engine_clock = &radeon_atom_set_engine_clock, 329 .set_engine_clock = &radeon_atom_set_engine_clock,
330 .get_memory_clock = &radeon_atom_get_memory_clock,
316 .set_memory_clock = &radeon_atom_set_memory_clock, 331 .set_memory_clock = &radeon_atom_set_memory_clock,
317 .set_pcie_lanes = NULL, 332 .set_pcie_lanes = NULL,
318 .set_clock_gating = &radeon_atom_set_clock_gating, 333 .set_clock_gating = &radeon_atom_set_clock_gating,
@@ -357,7 +372,9 @@ static struct radeon_asic rv515_asic = {
357 .copy_blit = &r100_copy_blit, 372 .copy_blit = &r100_copy_blit,
358 .copy_dma = &r300_copy_dma, 373 .copy_dma = &r300_copy_dma,
359 .copy = &r100_copy_blit, 374 .copy = &r100_copy_blit,
375 .get_engine_clock = &radeon_atom_get_engine_clock,
360 .set_engine_clock = &radeon_atom_set_engine_clock, 376 .set_engine_clock = &radeon_atom_set_engine_clock,
377 .get_memory_clock = &radeon_atom_get_memory_clock,
361 .set_memory_clock = &radeon_atom_set_memory_clock, 378 .set_memory_clock = &radeon_atom_set_memory_clock,
362 .set_pcie_lanes = &rv370_set_pcie_lanes, 379 .set_pcie_lanes = &rv370_set_pcie_lanes,
363 .set_clock_gating = &radeon_atom_set_clock_gating, 380 .set_clock_gating = &radeon_atom_set_clock_gating,
@@ -393,7 +410,9 @@ static struct radeon_asic r520_asic = {
393 .copy_blit = &r100_copy_blit, 410 .copy_blit = &r100_copy_blit,
394 .copy_dma = &r300_copy_dma, 411 .copy_dma = &r300_copy_dma,
395 .copy = &r100_copy_blit, 412 .copy = &r100_copy_blit,
413 .get_engine_clock = &radeon_atom_get_engine_clock,
396 .set_engine_clock = &radeon_atom_set_engine_clock, 414 .set_engine_clock = &radeon_atom_set_engine_clock,
415 .get_memory_clock = &radeon_atom_get_memory_clock,
397 .set_memory_clock = &radeon_atom_set_memory_clock, 416 .set_memory_clock = &radeon_atom_set_memory_clock,
398 .set_pcie_lanes = &rv370_set_pcie_lanes, 417 .set_pcie_lanes = &rv370_set_pcie_lanes,
399 .set_clock_gating = &radeon_atom_set_clock_gating, 418 .set_clock_gating = &radeon_atom_set_clock_gating,
@@ -456,7 +475,9 @@ static struct radeon_asic r600_asic = {
456 .copy_blit = &r600_copy_blit, 475 .copy_blit = &r600_copy_blit,
457 .copy_dma = &r600_copy_blit, 476 .copy_dma = &r600_copy_blit,
458 .copy = &r600_copy_blit, 477 .copy = &r600_copy_blit,
478 .get_engine_clock = &radeon_atom_get_engine_clock,
459 .set_engine_clock = &radeon_atom_set_engine_clock, 479 .set_engine_clock = &radeon_atom_set_engine_clock,
480 .get_memory_clock = &radeon_atom_get_memory_clock,
460 .set_memory_clock = &radeon_atom_set_memory_clock, 481 .set_memory_clock = &radeon_atom_set_memory_clock,
461 .set_pcie_lanes = NULL, 482 .set_pcie_lanes = NULL,
462 .set_clock_gating = &radeon_atom_set_clock_gating, 483 .set_clock_gating = &radeon_atom_set_clock_gating,
@@ -493,7 +514,9 @@ static struct radeon_asic rv770_asic = {
493 .copy_blit = &r600_copy_blit, 514 .copy_blit = &r600_copy_blit,
494 .copy_dma = &r600_copy_blit, 515 .copy_dma = &r600_copy_blit,
495 .copy = &r600_copy_blit, 516 .copy = &r600_copy_blit,
517 .get_engine_clock = &radeon_atom_get_engine_clock,
496 .set_engine_clock = &radeon_atom_set_engine_clock, 518 .set_engine_clock = &radeon_atom_set_engine_clock,
519 .get_memory_clock = &radeon_atom_get_memory_clock,
497 .set_memory_clock = &radeon_atom_set_memory_clock, 520 .set_memory_clock = &radeon_atom_set_memory_clock,
498 .set_pcie_lanes = NULL, 521 .set_pcie_lanes = NULL,
499 .set_clock_gating = &radeon_atom_set_clock_gating, 522 .set_clock_gating = &radeon_atom_set_clock_gating,
diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c
index 5b6c08cee40e..2ed88a820935 100644
--- a/drivers/gpu/drm/radeon/radeon_atombios.c
+++ b/drivers/gpu/drm/radeon/radeon_atombios.c
@@ -46,7 +46,8 @@ radeon_add_atom_connector(struct drm_device *dev,
46 uint32_t supported_device, 46 uint32_t supported_device,
47 int connector_type, 47 int connector_type,
48 struct radeon_i2c_bus_rec *i2c_bus, 48 struct radeon_i2c_bus_rec *i2c_bus,
49 bool linkb, uint32_t igp_lane_info); 49 bool linkb, uint32_t igp_lane_info,
50 uint16_t connector_object_id);
50 51
51/* from radeon_legacy_encoder.c */ 52/* from radeon_legacy_encoder.c */
52extern void 53extern void
@@ -193,6 +194,23 @@ const int supported_devices_connector_convert[] = {
193 DRM_MODE_CONNECTOR_DisplayPort 194 DRM_MODE_CONNECTOR_DisplayPort
194}; 195};
195 196
197const uint16_t supported_devices_connector_object_id_convert[] = {
198 CONNECTOR_OBJECT_ID_NONE,
199 CONNECTOR_OBJECT_ID_VGA,
200 CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I, /* not all boards support DL */
201 CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D, /* not all boards support DL */
202 CONNECTOR_OBJECT_ID_VGA, /* technically DVI-A */
203 CONNECTOR_OBJECT_ID_COMPOSITE,
204 CONNECTOR_OBJECT_ID_SVIDEO,
205 CONNECTOR_OBJECT_ID_LVDS,
206 CONNECTOR_OBJECT_ID_9PIN_DIN,
207 CONNECTOR_OBJECT_ID_9PIN_DIN,
208 CONNECTOR_OBJECT_ID_DISPLAYPORT,
209 CONNECTOR_OBJECT_ID_HDMI_TYPE_A,
210 CONNECTOR_OBJECT_ID_HDMI_TYPE_B,
211 CONNECTOR_OBJECT_ID_SVIDEO
212};
213
196const int object_connector_convert[] = { 214const int object_connector_convert[] = {
197 DRM_MODE_CONNECTOR_Unknown, 215 DRM_MODE_CONNECTOR_Unknown,
198 DRM_MODE_CONNECTOR_DVII, 216 DRM_MODE_CONNECTOR_DVII,
@@ -229,7 +247,7 @@ bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev)
229 ATOM_OBJECT_HEADER *obj_header; 247 ATOM_OBJECT_HEADER *obj_header;
230 int i, j, path_size, device_support; 248 int i, j, path_size, device_support;
231 int connector_type; 249 int connector_type;
232 uint16_t igp_lane_info, conn_id; 250 uint16_t igp_lane_info, conn_id, connector_object_id;
233 bool linkb; 251 bool linkb;
234 struct radeon_i2c_bus_rec ddc_bus; 252 struct radeon_i2c_bus_rec ddc_bus;
235 253
@@ -277,7 +295,8 @@ bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev)
277 ATOM_DEVICE_CV_SUPPORT) 295 ATOM_DEVICE_CV_SUPPORT)
278 continue; 296 continue;
279 297
280 if ((rdev->family == CHIP_RS780) && 298 /* IGP chips */
299 if ((rdev->flags & RADEON_IS_IGP) &&
281 (con_obj_id == 300 (con_obj_id ==
282 CONNECTOR_OBJECT_ID_PCIE_CONNECTOR)) { 301 CONNECTOR_OBJECT_ID_PCIE_CONNECTOR)) {
283 uint16_t igp_offset = 0; 302 uint16_t igp_offset = 0;
@@ -311,6 +330,7 @@ bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev)
311 connector_type = 330 connector_type =
312 object_connector_convert 331 object_connector_convert
313 [ct]; 332 [ct];
333 connector_object_id = ct;
314 igp_lane_info = 334 igp_lane_info =
315 slot_config & 0xffff; 335 slot_config & 0xffff;
316 } else 336 } else
@@ -321,6 +341,7 @@ bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev)
321 igp_lane_info = 0; 341 igp_lane_info = 0;
322 connector_type = 342 connector_type =
323 object_connector_convert[con_obj_id]; 343 object_connector_convert[con_obj_id];
344 connector_object_id = con_obj_id;
324 } 345 }
325 346
326 if (connector_type == DRM_MODE_CONNECTOR_Unknown) 347 if (connector_type == DRM_MODE_CONNECTOR_Unknown)
@@ -425,7 +446,8 @@ bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev)
425 le16_to_cpu(path-> 446 le16_to_cpu(path->
426 usDeviceTag), 447 usDeviceTag),
427 connector_type, &ddc_bus, 448 connector_type, &ddc_bus,
428 linkb, igp_lane_info); 449 linkb, igp_lane_info,
450 connector_object_id);
429 451
430 } 452 }
431 } 453 }
@@ -435,6 +457,45 @@ bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev)
435 return true; 457 return true;
436} 458}
437 459
460static uint16_t atombios_get_connector_object_id(struct drm_device *dev,
461 int connector_type,
462 uint16_t devices)
463{
464 struct radeon_device *rdev = dev->dev_private;
465
466 if (rdev->flags & RADEON_IS_IGP) {
467 return supported_devices_connector_object_id_convert
468 [connector_type];
469 } else if (((connector_type == DRM_MODE_CONNECTOR_DVII) ||
470 (connector_type == DRM_MODE_CONNECTOR_DVID)) &&
471 (devices & ATOM_DEVICE_DFP2_SUPPORT)) {
472 struct radeon_mode_info *mode_info = &rdev->mode_info;
473 struct atom_context *ctx = mode_info->atom_context;
474 int index = GetIndexIntoMasterTable(DATA, XTMDS_Info);
475 uint16_t size, data_offset;
476 uint8_t frev, crev;
477 ATOM_XTMDS_INFO *xtmds;
478
479 atom_parse_data_header(ctx, index, &size, &frev, &crev, &data_offset);
480 xtmds = (ATOM_XTMDS_INFO *)(ctx->bios + data_offset);
481
482 if (xtmds->ucSupportedLink & ATOM_XTMDS_SUPPORTED_DUALLINK) {
483 if (connector_type == DRM_MODE_CONNECTOR_DVII)
484 return CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I;
485 else
486 return CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D;
487 } else {
488 if (connector_type == DRM_MODE_CONNECTOR_DVII)
489 return CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I;
490 else
491 return CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D;
492 }
493 } else {
494 return supported_devices_connector_object_id_convert
495 [connector_type];
496 }
497}
498
438struct bios_connector { 499struct bios_connector {
439 bool valid; 500 bool valid;
440 uint16_t line_mux; 501 uint16_t line_mux;
@@ -593,14 +654,20 @@ bool radeon_get_atom_connector_info_from_supported_devices_table(struct
593 654
594 /* add the connectors */ 655 /* add the connectors */
595 for (i = 0; i < ATOM_MAX_SUPPORTED_DEVICE; i++) { 656 for (i = 0; i < ATOM_MAX_SUPPORTED_DEVICE; i++) {
596 if (bios_connectors[i].valid) 657 if (bios_connectors[i].valid) {
658 uint16_t connector_object_id =
659 atombios_get_connector_object_id(dev,
660 bios_connectors[i].connector_type,
661 bios_connectors[i].devices);
597 radeon_add_atom_connector(dev, 662 radeon_add_atom_connector(dev,
598 bios_connectors[i].line_mux, 663 bios_connectors[i].line_mux,
599 bios_connectors[i].devices, 664 bios_connectors[i].devices,
600 bios_connectors[i]. 665 bios_connectors[i].
601 connector_type, 666 connector_type,
602 &bios_connectors[i].ddc_bus, 667 &bios_connectors[i].ddc_bus,
603 false, 0); 668 false, 0,
669 connector_object_id);
670 }
604 } 671 }
605 672
606 radeon_link_encoder_connector(dev); 673 radeon_link_encoder_connector(dev);
@@ -641,8 +708,12 @@ bool radeon_atom_get_clock_info(struct drm_device *dev)
641 le16_to_cpu(firmware_info->info.usReferenceClock); 708 le16_to_cpu(firmware_info->info.usReferenceClock);
642 p1pll->reference_div = 0; 709 p1pll->reference_div = 0;
643 710
644 p1pll->pll_out_min = 711 if (crev < 2)
645 le16_to_cpu(firmware_info->info.usMinPixelClockPLL_Output); 712 p1pll->pll_out_min =
713 le16_to_cpu(firmware_info->info.usMinPixelClockPLL_Output);
714 else
715 p1pll->pll_out_min =
716 le32_to_cpu(firmware_info->info_12.ulMinPixelClockPLL_Output);
646 p1pll->pll_out_max = 717 p1pll->pll_out_max =
647 le32_to_cpu(firmware_info->info.ulMaxPixelClockPLL_Output); 718 le32_to_cpu(firmware_info->info.ulMaxPixelClockPLL_Output);
648 719
@@ -651,6 +722,16 @@ bool radeon_atom_get_clock_info(struct drm_device *dev)
651 p1pll->pll_out_min = 64800; 722 p1pll->pll_out_min = 64800;
652 else 723 else
653 p1pll->pll_out_min = 20000; 724 p1pll->pll_out_min = 20000;
725 } else if (p1pll->pll_out_min > 64800) {
726 /* Limiting the pll output range is a good thing generally as
727 * it limits the number of possible pll combinations for a given
728 * frequency presumably to the ones that work best on each card.
729 * However, certain duallink DVI monitors seem to like
730 * pll combinations that would be limited by this at least on
731 * pre-DCE 3.0 r6xx hardware. This might need to be adjusted per
732 * family.
733 */
734 p1pll->pll_out_min = 64800;
654 } 735 }
655 736
656 p1pll->pll_in_min = 737 p1pll->pll_in_min =
@@ -767,6 +848,46 @@ bool radeon_atombios_get_tmds_info(struct radeon_encoder *encoder,
767 return false; 848 return false;
768} 849}
769 850
851static struct radeon_atom_ss *radeon_atombios_get_ss_info(struct
852 radeon_encoder
853 *encoder,
854 int id)
855{
856 struct drm_device *dev = encoder->base.dev;
857 struct radeon_device *rdev = dev->dev_private;
858 struct radeon_mode_info *mode_info = &rdev->mode_info;
859 int index = GetIndexIntoMasterTable(DATA, PPLL_SS_Info);
860 uint16_t data_offset;
861 struct _ATOM_SPREAD_SPECTRUM_INFO *ss_info;
862 uint8_t frev, crev;
863 struct radeon_atom_ss *ss = NULL;
864
865 if (id > ATOM_MAX_SS_ENTRY)
866 return NULL;
867
868 atom_parse_data_header(mode_info->atom_context, index, NULL, &frev,
869 &crev, &data_offset);
870
871 ss_info =
872 (struct _ATOM_SPREAD_SPECTRUM_INFO *)(mode_info->atom_context->bios + data_offset);
873
874 if (ss_info) {
875 ss =
876 kzalloc(sizeof(struct radeon_atom_ss), GFP_KERNEL);
877
878 if (!ss)
879 return NULL;
880
881 ss->percentage = le16_to_cpu(ss_info->asSS_Info[id].usSpreadSpectrumPercentage);
882 ss->type = ss_info->asSS_Info[id].ucSpreadSpectrumType;
883 ss->step = ss_info->asSS_Info[id].ucSS_Step;
884 ss->delay = ss_info->asSS_Info[id].ucSS_Delay;
885 ss->range = ss_info->asSS_Info[id].ucSS_Range;
886 ss->refdiv = ss_info->asSS_Info[id].ucRecommendedRef_Div;
887 }
888 return ss;
889}
890
770union lvds_info { 891union lvds_info {
771 struct _ATOM_LVDS_INFO info; 892 struct _ATOM_LVDS_INFO info;
772 struct _ATOM_LVDS_INFO_V12 info_12; 893 struct _ATOM_LVDS_INFO_V12 info_12;
@@ -798,27 +919,31 @@ struct radeon_encoder_atom_dig *radeon_atombios_get_lvds_info(struct
798 if (!lvds) 919 if (!lvds)
799 return NULL; 920 return NULL;
800 921
801 lvds->native_mode.dotclock = 922 lvds->native_mode.clock =
802 le16_to_cpu(lvds_info->info.sLCDTiming.usPixClk) * 10; 923 le16_to_cpu(lvds_info->info.sLCDTiming.usPixClk) * 10;
803 lvds->native_mode.panel_xres = 924 lvds->native_mode.hdisplay =
804 le16_to_cpu(lvds_info->info.sLCDTiming.usHActive); 925 le16_to_cpu(lvds_info->info.sLCDTiming.usHActive);
805 lvds->native_mode.panel_yres = 926 lvds->native_mode.vdisplay =
806 le16_to_cpu(lvds_info->info.sLCDTiming.usVActive); 927 le16_to_cpu(lvds_info->info.sLCDTiming.usVActive);
807 lvds->native_mode.hblank = 928 lvds->native_mode.htotal = lvds->native_mode.hdisplay +
808 le16_to_cpu(lvds_info->info.sLCDTiming.usHBlanking_Time); 929 le16_to_cpu(lvds_info->info.sLCDTiming.usHBlanking_Time);
809 lvds->native_mode.hoverplus = 930 lvds->native_mode.hsync_start = lvds->native_mode.hdisplay +
810 le16_to_cpu(lvds_info->info.sLCDTiming.usHSyncOffset); 931 le16_to_cpu(lvds_info->info.sLCDTiming.usHSyncOffset);
811 lvds->native_mode.hsync_width = 932 lvds->native_mode.hsync_end = lvds->native_mode.hsync_start +
812 le16_to_cpu(lvds_info->info.sLCDTiming.usHSyncWidth); 933 le16_to_cpu(lvds_info->info.sLCDTiming.usHSyncWidth);
813 lvds->native_mode.vblank = 934 lvds->native_mode.vtotal = lvds->native_mode.vdisplay +
814 le16_to_cpu(lvds_info->info.sLCDTiming.usVBlanking_Time); 935 le16_to_cpu(lvds_info->info.sLCDTiming.usVBlanking_Time);
815 lvds->native_mode.voverplus = 936 lvds->native_mode.vsync_start = lvds->native_mode.vdisplay +
816 le16_to_cpu(lvds_info->info.sLCDTiming.usVSyncOffset); 937 le16_to_cpu(lvds_info->info.sLCDTiming.usVSyncWidth);
817 lvds->native_mode.vsync_width = 938 lvds->native_mode.vsync_end = lvds->native_mode.vsync_start +
818 le16_to_cpu(lvds_info->info.sLCDTiming.usVSyncWidth); 939 le16_to_cpu(lvds_info->info.sLCDTiming.usVSyncWidth);
819 lvds->panel_pwr_delay = 940 lvds->panel_pwr_delay =
820 le16_to_cpu(lvds_info->info.usOffDelayInMs); 941 le16_to_cpu(lvds_info->info.usOffDelayInMs);
821 lvds->lvds_misc = lvds_info->info.ucLVDS_Misc; 942 lvds->lvds_misc = lvds_info->info.ucLVDS_Misc;
943 /* set crtc values */
944 drm_mode_set_crtcinfo(&lvds->native_mode, CRTC_INTERLACE_HALVE_V);
945
946 lvds->ss = radeon_atombios_get_ss_info(encoder, lvds_info->info.ucSS_Id);
822 947
823 encoder->native_mode = lvds->native_mode; 948 encoder->native_mode = lvds->native_mode;
824 } 949 }
@@ -857,8 +982,7 @@ radeon_atombios_get_primary_dac_info(struct radeon_encoder *encoder)
857} 982}
858 983
859bool radeon_atom_get_tv_timings(struct radeon_device *rdev, int index, 984bool radeon_atom_get_tv_timings(struct radeon_device *rdev, int index,
860 SET_CRTC_TIMING_PARAMETERS_PS_ALLOCATION *crtc_timing, 985 struct drm_display_mode *mode)
861 int32_t *pixel_clock)
862{ 986{
863 struct radeon_mode_info *mode_info = &rdev->mode_info; 987 struct radeon_mode_info *mode_info = &rdev->mode_info;
864 ATOM_ANALOG_TV_INFO *tv_info; 988 ATOM_ANALOG_TV_INFO *tv_info;
@@ -866,7 +990,7 @@ bool radeon_atom_get_tv_timings(struct radeon_device *rdev, int index,
866 ATOM_DTD_FORMAT *dtd_timings; 990 ATOM_DTD_FORMAT *dtd_timings;
867 int data_index = GetIndexIntoMasterTable(DATA, AnalogTV_Info); 991 int data_index = GetIndexIntoMasterTable(DATA, AnalogTV_Info);
868 u8 frev, crev; 992 u8 frev, crev;
869 uint16_t data_offset; 993 u16 data_offset, misc;
870 994
871 atom_parse_data_header(mode_info->atom_context, data_index, NULL, &frev, &crev, &data_offset); 995 atom_parse_data_header(mode_info->atom_context, data_index, NULL, &frev, &crev, &data_offset);
872 996
@@ -876,28 +1000,37 @@ bool radeon_atom_get_tv_timings(struct radeon_device *rdev, int index,
876 if (index > MAX_SUPPORTED_TV_TIMING) 1000 if (index > MAX_SUPPORTED_TV_TIMING)
877 return false; 1001 return false;
878 1002
879 crtc_timing->usH_Total = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_H_Total); 1003 mode->crtc_htotal = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_H_Total);
880 crtc_timing->usH_Disp = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_H_Disp); 1004 mode->crtc_hdisplay = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_H_Disp);
881 crtc_timing->usH_SyncStart = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_H_SyncStart); 1005 mode->crtc_hsync_start = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_H_SyncStart);
882 crtc_timing->usH_SyncWidth = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_H_SyncWidth); 1006 mode->crtc_hsync_end = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_H_SyncStart) +
883 1007 le16_to_cpu(tv_info->aModeTimings[index].usCRTC_H_SyncWidth);
884 crtc_timing->usV_Total = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_V_Total); 1008
885 crtc_timing->usV_Disp = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_V_Disp); 1009 mode->crtc_vtotal = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_V_Total);
886 crtc_timing->usV_SyncStart = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_V_SyncStart); 1010 mode->crtc_vdisplay = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_V_Disp);
887 crtc_timing->usV_SyncWidth = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_V_SyncWidth); 1011 mode->crtc_vsync_start = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_V_SyncStart);
888 1012 mode->crtc_vsync_end = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_V_SyncStart) +
889 crtc_timing->susModeMiscInfo = tv_info->aModeTimings[index].susModeMiscInfo; 1013 le16_to_cpu(tv_info->aModeTimings[index].usCRTC_V_SyncWidth);
890 1014
891 crtc_timing->ucOverscanRight = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_OverscanRight); 1015 mode->flags = 0;
892 crtc_timing->ucOverscanLeft = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_OverscanLeft); 1016 misc = le16_to_cpu(tv_info->aModeTimings[index].susModeMiscInfo.usAccess);
893 crtc_timing->ucOverscanBottom = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_OverscanBottom); 1017 if (misc & ATOM_VSYNC_POLARITY)
894 crtc_timing->ucOverscanTop = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_OverscanTop); 1018 mode->flags |= DRM_MODE_FLAG_NVSYNC;
895 *pixel_clock = le16_to_cpu(tv_info->aModeTimings[index].usPixelClock) * 10; 1019 if (misc & ATOM_HSYNC_POLARITY)
1020 mode->flags |= DRM_MODE_FLAG_NHSYNC;
1021 if (misc & ATOM_COMPOSITESYNC)
1022 mode->flags |= DRM_MODE_FLAG_CSYNC;
1023 if (misc & ATOM_INTERLACE)
1024 mode->flags |= DRM_MODE_FLAG_INTERLACE;
1025 if (misc & ATOM_DOUBLE_CLOCK_MODE)
1026 mode->flags |= DRM_MODE_FLAG_DBLSCAN;
1027
1028 mode->clock = le16_to_cpu(tv_info->aModeTimings[index].usPixelClock) * 10;
896 1029
897 if (index == 1) { 1030 if (index == 1) {
898 /* PAL timings appear to have wrong values for totals */ 1031 /* PAL timings appear to have wrong values for totals */
899 crtc_timing->usH_Total -= 1; 1032 mode->crtc_htotal -= 1;
900 crtc_timing->usV_Total -= 1; 1033 mode->crtc_vtotal -= 1;
901 } 1034 }
902 break; 1035 break;
903 case 2: 1036 case 2:
@@ -906,17 +1039,36 @@ bool radeon_atom_get_tv_timings(struct radeon_device *rdev, int index,
906 return false; 1039 return false;
907 1040
908 dtd_timings = &tv_info_v1_2->aModeTimings[index]; 1041 dtd_timings = &tv_info_v1_2->aModeTimings[index];
909 crtc_timing->usH_Total = le16_to_cpu(dtd_timings->usHActive) + le16_to_cpu(dtd_timings->usHBlanking_Time); 1042 mode->crtc_htotal = le16_to_cpu(dtd_timings->usHActive) +
910 crtc_timing->usH_Disp = le16_to_cpu(dtd_timings->usHActive); 1043 le16_to_cpu(dtd_timings->usHBlanking_Time);
911 crtc_timing->usH_SyncStart = le16_to_cpu(dtd_timings->usHActive) + le16_to_cpu(dtd_timings->usHSyncOffset); 1044 mode->crtc_hdisplay = le16_to_cpu(dtd_timings->usHActive);
912 crtc_timing->usH_SyncWidth = le16_to_cpu(dtd_timings->usHSyncWidth); 1045 mode->crtc_hsync_start = le16_to_cpu(dtd_timings->usHActive) +
913 crtc_timing->usV_Total = le16_to_cpu(dtd_timings->usVActive) + le16_to_cpu(dtd_timings->usVBlanking_Time); 1046 le16_to_cpu(dtd_timings->usHSyncOffset);
914 crtc_timing->usV_Disp = le16_to_cpu(dtd_timings->usVActive); 1047 mode->crtc_hsync_end = mode->crtc_hsync_start +
915 crtc_timing->usV_SyncStart = le16_to_cpu(dtd_timings->usVActive) + le16_to_cpu(dtd_timings->usVSyncOffset); 1048 le16_to_cpu(dtd_timings->usHSyncWidth);
916 crtc_timing->usV_SyncWidth = le16_to_cpu(dtd_timings->usVSyncWidth); 1049
917 1050 mode->crtc_vtotal = le16_to_cpu(dtd_timings->usVActive) +
918 crtc_timing->susModeMiscInfo.usAccess = le16_to_cpu(dtd_timings->susModeMiscInfo.usAccess); 1051 le16_to_cpu(dtd_timings->usVBlanking_Time);
919 *pixel_clock = le16_to_cpu(dtd_timings->usPixClk) * 10; 1052 mode->crtc_vdisplay = le16_to_cpu(dtd_timings->usVActive);
1053 mode->crtc_vsync_start = le16_to_cpu(dtd_timings->usVActive) +
1054 le16_to_cpu(dtd_timings->usVSyncOffset);
1055 mode->crtc_vsync_end = mode->crtc_vsync_start +
1056 le16_to_cpu(dtd_timings->usVSyncWidth);
1057
1058 mode->flags = 0;
1059 misc = le16_to_cpu(dtd_timings->susModeMiscInfo.usAccess);
1060 if (misc & ATOM_VSYNC_POLARITY)
1061 mode->flags |= DRM_MODE_FLAG_NVSYNC;
1062 if (misc & ATOM_HSYNC_POLARITY)
1063 mode->flags |= DRM_MODE_FLAG_NHSYNC;
1064 if (misc & ATOM_COMPOSITESYNC)
1065 mode->flags |= DRM_MODE_FLAG_CSYNC;
1066 if (misc & ATOM_INTERLACE)
1067 mode->flags |= DRM_MODE_FLAG_INTERLACE;
1068 if (misc & ATOM_DOUBLE_CLOCK_MODE)
1069 mode->flags |= DRM_MODE_FLAG_DBLSCAN;
1070
1071 mode->clock = le16_to_cpu(dtd_timings->usPixClk) * 10;
920 break; 1072 break;
921 } 1073 }
922 return true; 1074 return true;
@@ -981,6 +1133,24 @@ void radeon_atom_static_pwrmgt_setup(struct radeon_device *rdev, int enable)
981 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); 1133 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
982} 1134}
983 1135
1136uint32_t radeon_atom_get_engine_clock(struct radeon_device *rdev)
1137{
1138 GET_ENGINE_CLOCK_PS_ALLOCATION args;
1139 int index = GetIndexIntoMasterTable(COMMAND, GetEngineClock);
1140
1141 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
1142 return args.ulReturnEngineClock;
1143}
1144
1145uint32_t radeon_atom_get_memory_clock(struct radeon_device *rdev)
1146{
1147 GET_MEMORY_CLOCK_PS_ALLOCATION args;
1148 int index = GetIndexIntoMasterTable(COMMAND, GetMemoryClock);
1149
1150 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
1151 return args.ulReturnMemoryClock;
1152}
1153
984void radeon_atom_set_engine_clock(struct radeon_device *rdev, 1154void radeon_atom_set_engine_clock(struct radeon_device *rdev,
985 uint32_t eng_clock) 1155 uint32_t eng_clock)
986{ 1156{
diff --git a/drivers/gpu/drm/radeon/radeon_benchmark.c b/drivers/gpu/drm/radeon/radeon_benchmark.c
index 2e938f7496fb..10bd50a7db87 100644
--- a/drivers/gpu/drm/radeon/radeon_benchmark.c
+++ b/drivers/gpu/drm/radeon/radeon_benchmark.c
@@ -63,7 +63,7 @@ void radeon_benchmark_move(struct radeon_device *rdev, unsigned bsize,
63 if (r) { 63 if (r) {
64 goto out_cleanup; 64 goto out_cleanup;
65 } 65 }
66 r = radeon_copy_dma(rdev, saddr, daddr, size / 4096, fence); 66 r = radeon_copy_dma(rdev, saddr, daddr, size / RADEON_GPU_PAGE_SIZE, fence);
67 if (r) { 67 if (r) {
68 goto out_cleanup; 68 goto out_cleanup;
69 } 69 }
@@ -88,7 +88,7 @@ void radeon_benchmark_move(struct radeon_device *rdev, unsigned bsize,
88 if (r) { 88 if (r) {
89 goto out_cleanup; 89 goto out_cleanup;
90 } 90 }
91 r = radeon_copy_blit(rdev, saddr, daddr, size / 4096, fence); 91 r = radeon_copy_blit(rdev, saddr, daddr, size / RADEON_GPU_PAGE_SIZE, fence);
92 if (r) { 92 if (r) {
93 goto out_cleanup; 93 goto out_cleanup;
94 } 94 }
diff --git a/drivers/gpu/drm/radeon/radeon_bios.c b/drivers/gpu/drm/radeon/radeon_bios.c
index 34a9b9119518..906921740c60 100644
--- a/drivers/gpu/drm/radeon/radeon_bios.c
+++ b/drivers/gpu/drm/radeon/radeon_bios.c
@@ -50,19 +50,16 @@ static bool igp_read_bios_from_vram(struct radeon_device *rdev)
50 vram_base = drm_get_resource_start(rdev->ddev, 0); 50 vram_base = drm_get_resource_start(rdev->ddev, 0);
51 bios = ioremap(vram_base, size); 51 bios = ioremap(vram_base, size);
52 if (!bios) { 52 if (!bios) {
53 DRM_ERROR("Unable to mmap vram\n");
54 return false; 53 return false;
55 } 54 }
56 55
57 if (size == 0 || bios[0] != 0x55 || bios[1] != 0xaa) { 56 if (size == 0 || bios[0] != 0x55 || bios[1] != 0xaa) {
58 iounmap(bios); 57 iounmap(bios);
59 DRM_ERROR("bad rom signature\n");
60 return false; 58 return false;
61 } 59 }
62 rdev->bios = kmalloc(size, GFP_KERNEL); 60 rdev->bios = kmalloc(size, GFP_KERNEL);
63 if (rdev->bios == NULL) { 61 if (rdev->bios == NULL) {
64 iounmap(bios); 62 iounmap(bios);
65 DRM_ERROR("kmalloc failed\n");
66 return false; 63 return false;
67 } 64 }
68 memcpy(rdev->bios, bios, size); 65 memcpy(rdev->bios, bios, size);
diff --git a/drivers/gpu/drm/radeon/radeon_clocks.c b/drivers/gpu/drm/radeon/radeon_clocks.c
index f5c32a766b10..a81354167621 100644
--- a/drivers/gpu/drm/radeon/radeon_clocks.c
+++ b/drivers/gpu/drm/radeon/radeon_clocks.c
@@ -32,7 +32,7 @@
32#include "atom.h" 32#include "atom.h"
33 33
34/* 10 khz */ 34/* 10 khz */
35static uint32_t radeon_legacy_get_engine_clock(struct radeon_device *rdev) 35uint32_t radeon_legacy_get_engine_clock(struct radeon_device *rdev)
36{ 36{
37 struct radeon_pll *spll = &rdev->clock.spll; 37 struct radeon_pll *spll = &rdev->clock.spll;
38 uint32_t fb_div, ref_div, post_div, sclk; 38 uint32_t fb_div, ref_div, post_div, sclk;
diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c
index 748265a105b3..5253cbf6db1f 100644
--- a/drivers/gpu/drm/radeon/radeon_combios.c
+++ b/drivers/gpu/drm/radeon/radeon_combios.c
@@ -49,7 +49,8 @@ radeon_add_legacy_connector(struct drm_device *dev,
49 uint32_t connector_id, 49 uint32_t connector_id,
50 uint32_t supported_device, 50 uint32_t supported_device,
51 int connector_type, 51 int connector_type,
52 struct radeon_i2c_bus_rec *i2c_bus); 52 struct radeon_i2c_bus_rec *i2c_bus,
53 uint16_t connector_object_id);
53 54
54/* from radeon_legacy_encoder.c */ 55/* from radeon_legacy_encoder.c */
55extern void 56extern void
@@ -808,25 +809,25 @@ static struct radeon_encoder_lvds *radeon_legacy_get_lvds_info_from_regs(struct
808 lvds->panel_blon_delay = (lvds_ss_gen_cntl >> RADEON_LVDS_PWRSEQ_DELAY2_SHIFT) & 0xf; 809 lvds->panel_blon_delay = (lvds_ss_gen_cntl >> RADEON_LVDS_PWRSEQ_DELAY2_SHIFT) & 0xf;
809 810
810 if (fp_vert_stretch & RADEON_VERT_STRETCH_ENABLE) 811 if (fp_vert_stretch & RADEON_VERT_STRETCH_ENABLE)
811 lvds->native_mode.panel_yres = 812 lvds->native_mode.vdisplay =
812 ((fp_vert_stretch & RADEON_VERT_PANEL_SIZE) >> 813 ((fp_vert_stretch & RADEON_VERT_PANEL_SIZE) >>
813 RADEON_VERT_PANEL_SHIFT) + 1; 814 RADEON_VERT_PANEL_SHIFT) + 1;
814 else 815 else
815 lvds->native_mode.panel_yres = 816 lvds->native_mode.vdisplay =
816 (RREG32(RADEON_CRTC_V_TOTAL_DISP) >> 16) + 1; 817 (RREG32(RADEON_CRTC_V_TOTAL_DISP) >> 16) + 1;
817 818
818 if (fp_horz_stretch & RADEON_HORZ_STRETCH_ENABLE) 819 if (fp_horz_stretch & RADEON_HORZ_STRETCH_ENABLE)
819 lvds->native_mode.panel_xres = 820 lvds->native_mode.hdisplay =
820 (((fp_horz_stretch & RADEON_HORZ_PANEL_SIZE) >> 821 (((fp_horz_stretch & RADEON_HORZ_PANEL_SIZE) >>
821 RADEON_HORZ_PANEL_SHIFT) + 1) * 8; 822 RADEON_HORZ_PANEL_SHIFT) + 1) * 8;
822 else 823 else
823 lvds->native_mode.panel_xres = 824 lvds->native_mode.hdisplay =
824 ((RREG32(RADEON_CRTC_H_TOTAL_DISP) >> 16) + 1) * 8; 825 ((RREG32(RADEON_CRTC_H_TOTAL_DISP) >> 16) + 1) * 8;
825 826
826 if ((lvds->native_mode.panel_xres < 640) || 827 if ((lvds->native_mode.hdisplay < 640) ||
827 (lvds->native_mode.panel_yres < 480)) { 828 (lvds->native_mode.vdisplay < 480)) {
828 lvds->native_mode.panel_xres = 640; 829 lvds->native_mode.hdisplay = 640;
829 lvds->native_mode.panel_yres = 480; 830 lvds->native_mode.vdisplay = 480;
830 } 831 }
831 832
832 ppll_div_sel = RREG8(RADEON_CLOCK_CNTL_INDEX + 1) & 0x3; 833 ppll_div_sel = RREG8(RADEON_CLOCK_CNTL_INDEX + 1) & 0x3;
@@ -846,8 +847,8 @@ static struct radeon_encoder_lvds *radeon_legacy_get_lvds_info_from_regs(struct
846 lvds->panel_vcc_delay = 200; 847 lvds->panel_vcc_delay = 200;
847 848
848 DRM_INFO("Panel info derived from registers\n"); 849 DRM_INFO("Panel info derived from registers\n");
849 DRM_INFO("Panel Size %dx%d\n", lvds->native_mode.panel_xres, 850 DRM_INFO("Panel Size %dx%d\n", lvds->native_mode.hdisplay,
850 lvds->native_mode.panel_yres); 851 lvds->native_mode.vdisplay);
851 852
852 return lvds; 853 return lvds;
853} 854}
@@ -882,11 +883,11 @@ struct radeon_encoder_lvds *radeon_combios_get_lvds_info(struct radeon_encoder
882 883
883 DRM_INFO("Panel ID String: %s\n", stmp); 884 DRM_INFO("Panel ID String: %s\n", stmp);
884 885
885 lvds->native_mode.panel_xres = RBIOS16(lcd_info + 0x19); 886 lvds->native_mode.hdisplay = RBIOS16(lcd_info + 0x19);
886 lvds->native_mode.panel_yres = RBIOS16(lcd_info + 0x1b); 887 lvds->native_mode.vdisplay = RBIOS16(lcd_info + 0x1b);
887 888
888 DRM_INFO("Panel Size %dx%d\n", lvds->native_mode.panel_xres, 889 DRM_INFO("Panel Size %dx%d\n", lvds->native_mode.hdisplay,
889 lvds->native_mode.panel_yres); 890 lvds->native_mode.vdisplay);
890 891
891 lvds->panel_vcc_delay = RBIOS16(lcd_info + 0x2c); 892 lvds->panel_vcc_delay = RBIOS16(lcd_info + 0x2c);
892 if (lvds->panel_vcc_delay > 2000 || lvds->panel_vcc_delay < 0) 893 if (lvds->panel_vcc_delay > 2000 || lvds->panel_vcc_delay < 0)
@@ -944,27 +945,25 @@ struct radeon_encoder_lvds *radeon_combios_get_lvds_info(struct radeon_encoder
944 if (tmp == 0) 945 if (tmp == 0)
945 break; 946 break;
946 947
947 if ((RBIOS16(tmp) == lvds->native_mode.panel_xres) && 948 if ((RBIOS16(tmp) == lvds->native_mode.hdisplay) &&
948 (RBIOS16(tmp + 2) == 949 (RBIOS16(tmp + 2) ==
949 lvds->native_mode.panel_yres)) { 950 lvds->native_mode.vdisplay)) {
950 lvds->native_mode.hblank = 951 lvds->native_mode.htotal = RBIOS16(tmp + 17) * 8;
951 (RBIOS16(tmp + 17) - RBIOS16(tmp + 19)) * 8; 952 lvds->native_mode.hsync_start = RBIOS16(tmp + 21) * 8;
952 lvds->native_mode.hoverplus = 953 lvds->native_mode.hsync_end = (RBIOS8(tmp + 23) +
953 (RBIOS16(tmp + 21) - RBIOS16(tmp + 19) - 954 RBIOS16(tmp + 21)) * 8;
954 1) * 8; 955
955 lvds->native_mode.hsync_width = 956 lvds->native_mode.vtotal = RBIOS16(tmp + 24);
956 RBIOS8(tmp + 23) * 8; 957 lvds->native_mode.vsync_start = RBIOS16(tmp + 28) & 0x7ff;
957 958 lvds->native_mode.vsync_end =
958 lvds->native_mode.vblank = (RBIOS16(tmp + 24) - 959 ((RBIOS16(tmp + 28) & 0xf800) >> 11) +
959 RBIOS16(tmp + 26)); 960 (RBIOS16(tmp + 28) & 0x7ff);
960 lvds->native_mode.voverplus = 961
961 ((RBIOS16(tmp + 28) & 0x7ff) - 962 lvds->native_mode.clock = RBIOS16(tmp + 9) * 10;
962 RBIOS16(tmp + 26));
963 lvds->native_mode.vsync_width =
964 ((RBIOS16(tmp + 28) & 0xf800) >> 11);
965 lvds->native_mode.dotclock =
966 RBIOS16(tmp + 9) * 10;
967 lvds->native_mode.flags = 0; 963 lvds->native_mode.flags = 0;
964 /* set crtc values */
965 drm_mode_set_crtcinfo(&lvds->native_mode, CRTC_INTERLACE_HALVE_V);
966
968 } 967 }
969 } 968 }
970 } else { 969 } else {
@@ -1178,7 +1177,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1178 radeon_add_legacy_connector(dev, 0, 1177 radeon_add_legacy_connector(dev, 0,
1179 ATOM_DEVICE_CRT1_SUPPORT, 1178 ATOM_DEVICE_CRT1_SUPPORT,
1180 DRM_MODE_CONNECTOR_VGA, 1179 DRM_MODE_CONNECTOR_VGA,
1181 &ddc_i2c); 1180 &ddc_i2c,
1181 CONNECTOR_OBJECT_ID_VGA);
1182 } else if (rdev->flags & RADEON_IS_MOBILITY) { 1182 } else if (rdev->flags & RADEON_IS_MOBILITY) {
1183 /* LVDS */ 1183 /* LVDS */
1184 ddc_i2c = combios_setup_i2c_bus(RADEON_LCD_GPIO_MASK); 1184 ddc_i2c = combios_setup_i2c_bus(RADEON_LCD_GPIO_MASK);
@@ -1190,7 +1190,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1190 radeon_add_legacy_connector(dev, 0, 1190 radeon_add_legacy_connector(dev, 0,
1191 ATOM_DEVICE_LCD1_SUPPORT, 1191 ATOM_DEVICE_LCD1_SUPPORT,
1192 DRM_MODE_CONNECTOR_LVDS, 1192 DRM_MODE_CONNECTOR_LVDS,
1193 &ddc_i2c); 1193 &ddc_i2c,
1194 CONNECTOR_OBJECT_ID_LVDS);
1194 1195
1195 /* VGA - primary dac */ 1196 /* VGA - primary dac */
1196 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC); 1197 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC);
@@ -1202,7 +1203,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1202 radeon_add_legacy_connector(dev, 1, 1203 radeon_add_legacy_connector(dev, 1,
1203 ATOM_DEVICE_CRT1_SUPPORT, 1204 ATOM_DEVICE_CRT1_SUPPORT,
1204 DRM_MODE_CONNECTOR_VGA, 1205 DRM_MODE_CONNECTOR_VGA,
1205 &ddc_i2c); 1206 &ddc_i2c,
1207 CONNECTOR_OBJECT_ID_VGA);
1206 } else { 1208 } else {
1207 /* DVI-I - tv dac, int tmds */ 1209 /* DVI-I - tv dac, int tmds */
1208 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_DVI_DDC); 1210 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_DVI_DDC);
@@ -1220,7 +1222,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1220 ATOM_DEVICE_DFP1_SUPPORT | 1222 ATOM_DEVICE_DFP1_SUPPORT |
1221 ATOM_DEVICE_CRT2_SUPPORT, 1223 ATOM_DEVICE_CRT2_SUPPORT,
1222 DRM_MODE_CONNECTOR_DVII, 1224 DRM_MODE_CONNECTOR_DVII,
1223 &ddc_i2c); 1225 &ddc_i2c,
1226 CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I);
1224 1227
1225 /* VGA - primary dac */ 1228 /* VGA - primary dac */
1226 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC); 1229 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC);
@@ -1232,7 +1235,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1232 radeon_add_legacy_connector(dev, 1, 1235 radeon_add_legacy_connector(dev, 1,
1233 ATOM_DEVICE_CRT1_SUPPORT, 1236 ATOM_DEVICE_CRT1_SUPPORT,
1234 DRM_MODE_CONNECTOR_VGA, 1237 DRM_MODE_CONNECTOR_VGA,
1235 &ddc_i2c); 1238 &ddc_i2c,
1239 CONNECTOR_OBJECT_ID_VGA);
1236 } 1240 }
1237 1241
1238 if (rdev->family != CHIP_R100 && rdev->family != CHIP_R200) { 1242 if (rdev->family != CHIP_R100 && rdev->family != CHIP_R200) {
@@ -1245,7 +1249,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1245 radeon_add_legacy_connector(dev, 2, 1249 radeon_add_legacy_connector(dev, 2,
1246 ATOM_DEVICE_TV1_SUPPORT, 1250 ATOM_DEVICE_TV1_SUPPORT,
1247 DRM_MODE_CONNECTOR_SVIDEO, 1251 DRM_MODE_CONNECTOR_SVIDEO,
1248 &ddc_i2c); 1252 &ddc_i2c,
1253 CONNECTOR_OBJECT_ID_SVIDEO);
1249 } 1254 }
1250 break; 1255 break;
1251 case CT_IBOOK: 1256 case CT_IBOOK:
@@ -1259,7 +1264,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1259 0), 1264 0),
1260 ATOM_DEVICE_LCD1_SUPPORT); 1265 ATOM_DEVICE_LCD1_SUPPORT);
1261 radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_LCD1_SUPPORT, 1266 radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_LCD1_SUPPORT,
1262 DRM_MODE_CONNECTOR_LVDS, &ddc_i2c); 1267 DRM_MODE_CONNECTOR_LVDS, &ddc_i2c,
1268 CONNECTOR_OBJECT_ID_LVDS);
1263 /* VGA - TV DAC */ 1269 /* VGA - TV DAC */
1264 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC); 1270 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC);
1265 radeon_add_legacy_encoder(dev, 1271 radeon_add_legacy_encoder(dev,
@@ -1268,7 +1274,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1268 2), 1274 2),
1269 ATOM_DEVICE_CRT2_SUPPORT); 1275 ATOM_DEVICE_CRT2_SUPPORT);
1270 radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_CRT2_SUPPORT, 1276 radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_CRT2_SUPPORT,
1271 DRM_MODE_CONNECTOR_VGA, &ddc_i2c); 1277 DRM_MODE_CONNECTOR_VGA, &ddc_i2c,
1278 CONNECTOR_OBJECT_ID_VGA);
1272 /* TV - TV DAC */ 1279 /* TV - TV DAC */
1273 radeon_add_legacy_encoder(dev, 1280 radeon_add_legacy_encoder(dev,
1274 radeon_get_encoder_id(dev, 1281 radeon_get_encoder_id(dev,
@@ -1277,7 +1284,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1277 ATOM_DEVICE_TV1_SUPPORT); 1284 ATOM_DEVICE_TV1_SUPPORT);
1278 radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT, 1285 radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT,
1279 DRM_MODE_CONNECTOR_SVIDEO, 1286 DRM_MODE_CONNECTOR_SVIDEO,
1280 &ddc_i2c); 1287 &ddc_i2c,
1288 CONNECTOR_OBJECT_ID_SVIDEO);
1281 break; 1289 break;
1282 case CT_POWERBOOK_EXTERNAL: 1290 case CT_POWERBOOK_EXTERNAL:
1283 DRM_INFO("Connector Table: %d (powerbook external tmds)\n", 1291 DRM_INFO("Connector Table: %d (powerbook external tmds)\n",
@@ -1290,7 +1298,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1290 0), 1298 0),
1291 ATOM_DEVICE_LCD1_SUPPORT); 1299 ATOM_DEVICE_LCD1_SUPPORT);
1292 radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_LCD1_SUPPORT, 1300 radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_LCD1_SUPPORT,
1293 DRM_MODE_CONNECTOR_LVDS, &ddc_i2c); 1301 DRM_MODE_CONNECTOR_LVDS, &ddc_i2c,
1302 CONNECTOR_OBJECT_ID_LVDS);
1294 /* DVI-I - primary dac, ext tmds */ 1303 /* DVI-I - primary dac, ext tmds */
1295 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC); 1304 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC);
1296 radeon_add_legacy_encoder(dev, 1305 radeon_add_legacy_encoder(dev,
@@ -1303,10 +1312,12 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1303 ATOM_DEVICE_CRT1_SUPPORT, 1312 ATOM_DEVICE_CRT1_SUPPORT,
1304 1), 1313 1),
1305 ATOM_DEVICE_CRT1_SUPPORT); 1314 ATOM_DEVICE_CRT1_SUPPORT);
1315 /* XXX some are SL */
1306 radeon_add_legacy_connector(dev, 1, 1316 radeon_add_legacy_connector(dev, 1,
1307 ATOM_DEVICE_DFP2_SUPPORT | 1317 ATOM_DEVICE_DFP2_SUPPORT |
1308 ATOM_DEVICE_CRT1_SUPPORT, 1318 ATOM_DEVICE_CRT1_SUPPORT,
1309 DRM_MODE_CONNECTOR_DVII, &ddc_i2c); 1319 DRM_MODE_CONNECTOR_DVII, &ddc_i2c,
1320 CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I);
1310 /* TV - TV DAC */ 1321 /* TV - TV DAC */
1311 radeon_add_legacy_encoder(dev, 1322 radeon_add_legacy_encoder(dev,
1312 radeon_get_encoder_id(dev, 1323 radeon_get_encoder_id(dev,
@@ -1315,7 +1326,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1315 ATOM_DEVICE_TV1_SUPPORT); 1326 ATOM_DEVICE_TV1_SUPPORT);
1316 radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT, 1327 radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT,
1317 DRM_MODE_CONNECTOR_SVIDEO, 1328 DRM_MODE_CONNECTOR_SVIDEO,
1318 &ddc_i2c); 1329 &ddc_i2c,
1330 CONNECTOR_OBJECT_ID_SVIDEO);
1319 break; 1331 break;
1320 case CT_POWERBOOK_INTERNAL: 1332 case CT_POWERBOOK_INTERNAL:
1321 DRM_INFO("Connector Table: %d (powerbook internal tmds)\n", 1333 DRM_INFO("Connector Table: %d (powerbook internal tmds)\n",
@@ -1328,7 +1340,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1328 0), 1340 0),
1329 ATOM_DEVICE_LCD1_SUPPORT); 1341 ATOM_DEVICE_LCD1_SUPPORT);
1330 radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_LCD1_SUPPORT, 1342 radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_LCD1_SUPPORT,
1331 DRM_MODE_CONNECTOR_LVDS, &ddc_i2c); 1343 DRM_MODE_CONNECTOR_LVDS, &ddc_i2c,
1344 CONNECTOR_OBJECT_ID_LVDS);
1332 /* DVI-I - primary dac, int tmds */ 1345 /* DVI-I - primary dac, int tmds */
1333 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC); 1346 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC);
1334 radeon_add_legacy_encoder(dev, 1347 radeon_add_legacy_encoder(dev,
@@ -1344,7 +1357,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1344 radeon_add_legacy_connector(dev, 1, 1357 radeon_add_legacy_connector(dev, 1,
1345 ATOM_DEVICE_DFP1_SUPPORT | 1358 ATOM_DEVICE_DFP1_SUPPORT |
1346 ATOM_DEVICE_CRT1_SUPPORT, 1359 ATOM_DEVICE_CRT1_SUPPORT,
1347 DRM_MODE_CONNECTOR_DVII, &ddc_i2c); 1360 DRM_MODE_CONNECTOR_DVII, &ddc_i2c,
1361 CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I);
1348 /* TV - TV DAC */ 1362 /* TV - TV DAC */
1349 radeon_add_legacy_encoder(dev, 1363 radeon_add_legacy_encoder(dev,
1350 radeon_get_encoder_id(dev, 1364 radeon_get_encoder_id(dev,
@@ -1353,7 +1367,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1353 ATOM_DEVICE_TV1_SUPPORT); 1367 ATOM_DEVICE_TV1_SUPPORT);
1354 radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT, 1368 radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT,
1355 DRM_MODE_CONNECTOR_SVIDEO, 1369 DRM_MODE_CONNECTOR_SVIDEO,
1356 &ddc_i2c); 1370 &ddc_i2c,
1371 CONNECTOR_OBJECT_ID_SVIDEO);
1357 break; 1372 break;
1358 case CT_POWERBOOK_VGA: 1373 case CT_POWERBOOK_VGA:
1359 DRM_INFO("Connector Table: %d (powerbook vga)\n", 1374 DRM_INFO("Connector Table: %d (powerbook vga)\n",
@@ -1366,7 +1381,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1366 0), 1381 0),
1367 ATOM_DEVICE_LCD1_SUPPORT); 1382 ATOM_DEVICE_LCD1_SUPPORT);
1368 radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_LCD1_SUPPORT, 1383 radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_LCD1_SUPPORT,
1369 DRM_MODE_CONNECTOR_LVDS, &ddc_i2c); 1384 DRM_MODE_CONNECTOR_LVDS, &ddc_i2c,
1385 CONNECTOR_OBJECT_ID_LVDS);
1370 /* VGA - primary dac */ 1386 /* VGA - primary dac */
1371 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC); 1387 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC);
1372 radeon_add_legacy_encoder(dev, 1388 radeon_add_legacy_encoder(dev,
@@ -1375,7 +1391,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1375 1), 1391 1),
1376 ATOM_DEVICE_CRT1_SUPPORT); 1392 ATOM_DEVICE_CRT1_SUPPORT);
1377 radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_CRT1_SUPPORT, 1393 radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_CRT1_SUPPORT,
1378 DRM_MODE_CONNECTOR_VGA, &ddc_i2c); 1394 DRM_MODE_CONNECTOR_VGA, &ddc_i2c,
1395 CONNECTOR_OBJECT_ID_VGA);
1379 /* TV - TV DAC */ 1396 /* TV - TV DAC */
1380 radeon_add_legacy_encoder(dev, 1397 radeon_add_legacy_encoder(dev,
1381 radeon_get_encoder_id(dev, 1398 radeon_get_encoder_id(dev,
@@ -1384,7 +1401,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1384 ATOM_DEVICE_TV1_SUPPORT); 1401 ATOM_DEVICE_TV1_SUPPORT);
1385 radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT, 1402 radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT,
1386 DRM_MODE_CONNECTOR_SVIDEO, 1403 DRM_MODE_CONNECTOR_SVIDEO,
1387 &ddc_i2c); 1404 &ddc_i2c,
1405 CONNECTOR_OBJECT_ID_SVIDEO);
1388 break; 1406 break;
1389 case CT_MINI_EXTERNAL: 1407 case CT_MINI_EXTERNAL:
1390 DRM_INFO("Connector Table: %d (mini external tmds)\n", 1408 DRM_INFO("Connector Table: %d (mini external tmds)\n",
@@ -1401,10 +1419,12 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1401 ATOM_DEVICE_CRT2_SUPPORT, 1419 ATOM_DEVICE_CRT2_SUPPORT,
1402 2), 1420 2),
1403 ATOM_DEVICE_CRT2_SUPPORT); 1421 ATOM_DEVICE_CRT2_SUPPORT);
1422 /* XXX are any DL? */
1404 radeon_add_legacy_connector(dev, 0, 1423 radeon_add_legacy_connector(dev, 0,
1405 ATOM_DEVICE_DFP2_SUPPORT | 1424 ATOM_DEVICE_DFP2_SUPPORT |
1406 ATOM_DEVICE_CRT2_SUPPORT, 1425 ATOM_DEVICE_CRT2_SUPPORT,
1407 DRM_MODE_CONNECTOR_DVII, &ddc_i2c); 1426 DRM_MODE_CONNECTOR_DVII, &ddc_i2c,
1427 CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I);
1408 /* TV - TV DAC */ 1428 /* TV - TV DAC */
1409 radeon_add_legacy_encoder(dev, 1429 radeon_add_legacy_encoder(dev,
1410 radeon_get_encoder_id(dev, 1430 radeon_get_encoder_id(dev,
@@ -1413,7 +1433,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1413 ATOM_DEVICE_TV1_SUPPORT); 1433 ATOM_DEVICE_TV1_SUPPORT);
1414 radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_TV1_SUPPORT, 1434 radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_TV1_SUPPORT,
1415 DRM_MODE_CONNECTOR_SVIDEO, 1435 DRM_MODE_CONNECTOR_SVIDEO,
1416 &ddc_i2c); 1436 &ddc_i2c,
1437 CONNECTOR_OBJECT_ID_SVIDEO);
1417 break; 1438 break;
1418 case CT_MINI_INTERNAL: 1439 case CT_MINI_INTERNAL:
1419 DRM_INFO("Connector Table: %d (mini internal tmds)\n", 1440 DRM_INFO("Connector Table: %d (mini internal tmds)\n",
@@ -1433,7 +1454,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1433 radeon_add_legacy_connector(dev, 0, 1454 radeon_add_legacy_connector(dev, 0,
1434 ATOM_DEVICE_DFP1_SUPPORT | 1455 ATOM_DEVICE_DFP1_SUPPORT |
1435 ATOM_DEVICE_CRT2_SUPPORT, 1456 ATOM_DEVICE_CRT2_SUPPORT,
1436 DRM_MODE_CONNECTOR_DVII, &ddc_i2c); 1457 DRM_MODE_CONNECTOR_DVII, &ddc_i2c,
1458 CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I);
1437 /* TV - TV DAC */ 1459 /* TV - TV DAC */
1438 radeon_add_legacy_encoder(dev, 1460 radeon_add_legacy_encoder(dev,
1439 radeon_get_encoder_id(dev, 1461 radeon_get_encoder_id(dev,
@@ -1442,7 +1464,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1442 ATOM_DEVICE_TV1_SUPPORT); 1464 ATOM_DEVICE_TV1_SUPPORT);
1443 radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_TV1_SUPPORT, 1465 radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_TV1_SUPPORT,
1444 DRM_MODE_CONNECTOR_SVIDEO, 1466 DRM_MODE_CONNECTOR_SVIDEO,
1445 &ddc_i2c); 1467 &ddc_i2c,
1468 CONNECTOR_OBJECT_ID_SVIDEO);
1446 break; 1469 break;
1447 case CT_IMAC_G5_ISIGHT: 1470 case CT_IMAC_G5_ISIGHT:
1448 DRM_INFO("Connector Table: %d (imac g5 isight)\n", 1471 DRM_INFO("Connector Table: %d (imac g5 isight)\n",
@@ -1455,7 +1478,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1455 0), 1478 0),
1456 ATOM_DEVICE_DFP1_SUPPORT); 1479 ATOM_DEVICE_DFP1_SUPPORT);
1457 radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_DFP1_SUPPORT, 1480 radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_DFP1_SUPPORT,
1458 DRM_MODE_CONNECTOR_DVID, &ddc_i2c); 1481 DRM_MODE_CONNECTOR_DVID, &ddc_i2c,
1482 CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D);
1459 /* VGA - tv dac */ 1483 /* VGA - tv dac */
1460 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_DVI_DDC); 1484 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_DVI_DDC);
1461 radeon_add_legacy_encoder(dev, 1485 radeon_add_legacy_encoder(dev,
@@ -1464,7 +1488,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1464 2), 1488 2),
1465 ATOM_DEVICE_CRT2_SUPPORT); 1489 ATOM_DEVICE_CRT2_SUPPORT);
1466 radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_CRT2_SUPPORT, 1490 radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_CRT2_SUPPORT,
1467 DRM_MODE_CONNECTOR_VGA, &ddc_i2c); 1491 DRM_MODE_CONNECTOR_VGA, &ddc_i2c,
1492 CONNECTOR_OBJECT_ID_VGA);
1468 /* TV - TV DAC */ 1493 /* TV - TV DAC */
1469 radeon_add_legacy_encoder(dev, 1494 radeon_add_legacy_encoder(dev,
1470 radeon_get_encoder_id(dev, 1495 radeon_get_encoder_id(dev,
@@ -1473,7 +1498,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1473 ATOM_DEVICE_TV1_SUPPORT); 1498 ATOM_DEVICE_TV1_SUPPORT);
1474 radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT, 1499 radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT,
1475 DRM_MODE_CONNECTOR_SVIDEO, 1500 DRM_MODE_CONNECTOR_SVIDEO,
1476 &ddc_i2c); 1501 &ddc_i2c,
1502 CONNECTOR_OBJECT_ID_SVIDEO);
1477 break; 1503 break;
1478 case CT_EMAC: 1504 case CT_EMAC:
1479 DRM_INFO("Connector Table: %d (emac)\n", 1505 DRM_INFO("Connector Table: %d (emac)\n",
@@ -1486,7 +1512,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1486 1), 1512 1),
1487 ATOM_DEVICE_CRT1_SUPPORT); 1513 ATOM_DEVICE_CRT1_SUPPORT);
1488 radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_CRT1_SUPPORT, 1514 radeon_add_legacy_connector(dev, 0, ATOM_DEVICE_CRT1_SUPPORT,
1489 DRM_MODE_CONNECTOR_VGA, &ddc_i2c); 1515 DRM_MODE_CONNECTOR_VGA, &ddc_i2c,
1516 CONNECTOR_OBJECT_ID_VGA);
1490 /* VGA - tv dac */ 1517 /* VGA - tv dac */
1491 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_CRT2_DDC); 1518 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_CRT2_DDC);
1492 radeon_add_legacy_encoder(dev, 1519 radeon_add_legacy_encoder(dev,
@@ -1495,7 +1522,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1495 2), 1522 2),
1496 ATOM_DEVICE_CRT2_SUPPORT); 1523 ATOM_DEVICE_CRT2_SUPPORT);
1497 radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_CRT2_SUPPORT, 1524 radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_CRT2_SUPPORT,
1498 DRM_MODE_CONNECTOR_VGA, &ddc_i2c); 1525 DRM_MODE_CONNECTOR_VGA, &ddc_i2c,
1526 CONNECTOR_OBJECT_ID_VGA);
1499 /* TV - TV DAC */ 1527 /* TV - TV DAC */
1500 radeon_add_legacy_encoder(dev, 1528 radeon_add_legacy_encoder(dev,
1501 radeon_get_encoder_id(dev, 1529 radeon_get_encoder_id(dev,
@@ -1504,7 +1532,8 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
1504 ATOM_DEVICE_TV1_SUPPORT); 1532 ATOM_DEVICE_TV1_SUPPORT);
1505 radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT, 1533 radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT,
1506 DRM_MODE_CONNECTOR_SVIDEO, 1534 DRM_MODE_CONNECTOR_SVIDEO,
1507 &ddc_i2c); 1535 &ddc_i2c,
1536 CONNECTOR_OBJECT_ID_SVIDEO);
1508 break; 1537 break;
1509 default: 1538 default:
1510 DRM_INFO("Connector table: %d (invalid)\n", 1539 DRM_INFO("Connector table: %d (invalid)\n",
@@ -1581,11 +1610,63 @@ static bool radeon_apply_legacy_quirks(struct drm_device *dev,
1581 return true; 1610 return true;
1582} 1611}
1583 1612
1613static bool radeon_apply_legacy_tv_quirks(struct drm_device *dev)
1614{
1615 /* Acer 5102 has non-existent TV port */
1616 if (dev->pdev->device == 0x5975 &&
1617 dev->pdev->subsystem_vendor == 0x1025 &&
1618 dev->pdev->subsystem_device == 0x009f)
1619 return false;
1620
1621 /* HP dc5750 has non-existent TV port */
1622 if (dev->pdev->device == 0x5974 &&
1623 dev->pdev->subsystem_vendor == 0x103c &&
1624 dev->pdev->subsystem_device == 0x280a)
1625 return false;
1626
1627 return true;
1628}
1629
1630static uint16_t combios_check_dl_dvi(struct drm_device *dev, int is_dvi_d)
1631{
1632 struct radeon_device *rdev = dev->dev_private;
1633 uint32_t ext_tmds_info;
1634
1635 if (rdev->flags & RADEON_IS_IGP) {
1636 if (is_dvi_d)
1637 return CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D;
1638 else
1639 return CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I;
1640 }
1641 ext_tmds_info = combios_get_table_offset(dev, COMBIOS_EXT_TMDS_INFO_TABLE);
1642 if (ext_tmds_info) {
1643 uint8_t rev = RBIOS8(ext_tmds_info);
1644 uint8_t flags = RBIOS8(ext_tmds_info + 4 + 5);
1645 if (rev >= 3) {
1646 if (is_dvi_d)
1647 return CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D;
1648 else
1649 return CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I;
1650 } else {
1651 if (flags & 1) {
1652 if (is_dvi_d)
1653 return CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D;
1654 else
1655 return CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I;
1656 }
1657 }
1658 }
1659 if (is_dvi_d)
1660 return CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D;
1661 else
1662 return CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I;
1663}
1664
1584bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev) 1665bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
1585{ 1666{
1586 struct radeon_device *rdev = dev->dev_private; 1667 struct radeon_device *rdev = dev->dev_private;
1587 uint32_t conn_info, entry, devices; 1668 uint32_t conn_info, entry, devices;
1588 uint16_t tmp; 1669 uint16_t tmp, connector_object_id;
1589 enum radeon_combios_ddc ddc_type; 1670 enum radeon_combios_ddc ddc_type;
1590 enum radeon_combios_connector connector; 1671 enum radeon_combios_connector connector;
1591 int i = 0; 1672 int i = 0;
@@ -1628,8 +1709,9 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
1628 break; 1709 break;
1629 } 1710 }
1630 1711
1631 radeon_apply_legacy_quirks(dev, i, &connector, 1712 if (!radeon_apply_legacy_quirks(dev, i, &connector,
1632 &ddc_i2c); 1713 &ddc_i2c))
1714 continue;
1633 1715
1634 switch (connector) { 1716 switch (connector) {
1635 case CONNECTOR_PROPRIETARY_LEGACY: 1717 case CONNECTOR_PROPRIETARY_LEGACY:
@@ -1644,7 +1726,8 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
1644 radeon_add_legacy_connector(dev, i, devices, 1726 radeon_add_legacy_connector(dev, i, devices,
1645 legacy_connector_convert 1727 legacy_connector_convert
1646 [connector], 1728 [connector],
1647 &ddc_i2c); 1729 &ddc_i2c,
1730 CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D);
1648 break; 1731 break;
1649 case CONNECTOR_CRT_LEGACY: 1732 case CONNECTOR_CRT_LEGACY:
1650 if (tmp & 0x1) { 1733 if (tmp & 0x1) {
@@ -1669,7 +1752,8 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
1669 devices, 1752 devices,
1670 legacy_connector_convert 1753 legacy_connector_convert
1671 [connector], 1754 [connector],
1672 &ddc_i2c); 1755 &ddc_i2c,
1756 CONNECTOR_OBJECT_ID_VGA);
1673 break; 1757 break;
1674 case CONNECTOR_DVI_I_LEGACY: 1758 case CONNECTOR_DVI_I_LEGACY:
1675 devices = 0; 1759 devices = 0;
@@ -1698,6 +1782,7 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
1698 ATOM_DEVICE_DFP2_SUPPORT, 1782 ATOM_DEVICE_DFP2_SUPPORT,
1699 0), 1783 0),
1700 ATOM_DEVICE_DFP2_SUPPORT); 1784 ATOM_DEVICE_DFP2_SUPPORT);
1785 connector_object_id = combios_check_dl_dvi(dev, 0);
1701 } else { 1786 } else {
1702 devices |= ATOM_DEVICE_DFP1_SUPPORT; 1787 devices |= ATOM_DEVICE_DFP1_SUPPORT;
1703 radeon_add_legacy_encoder(dev, 1788 radeon_add_legacy_encoder(dev,
@@ -1706,19 +1791,24 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
1706 ATOM_DEVICE_DFP1_SUPPORT, 1791 ATOM_DEVICE_DFP1_SUPPORT,
1707 0), 1792 0),
1708 ATOM_DEVICE_DFP1_SUPPORT); 1793 ATOM_DEVICE_DFP1_SUPPORT);
1794 connector_object_id = CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I;
1709 } 1795 }
1710 radeon_add_legacy_connector(dev, 1796 radeon_add_legacy_connector(dev,
1711 i, 1797 i,
1712 devices, 1798 devices,
1713 legacy_connector_convert 1799 legacy_connector_convert
1714 [connector], 1800 [connector],
1715 &ddc_i2c); 1801 &ddc_i2c,
1802 connector_object_id);
1716 break; 1803 break;
1717 case CONNECTOR_DVI_D_LEGACY: 1804 case CONNECTOR_DVI_D_LEGACY:
1718 if ((tmp >> 4) & 0x1) 1805 if ((tmp >> 4) & 0x1) {
1719 devices = ATOM_DEVICE_DFP2_SUPPORT; 1806 devices = ATOM_DEVICE_DFP2_SUPPORT;
1720 else 1807 connector_object_id = combios_check_dl_dvi(dev, 1);
1808 } else {
1721 devices = ATOM_DEVICE_DFP1_SUPPORT; 1809 devices = ATOM_DEVICE_DFP1_SUPPORT;
1810 connector_object_id = CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I;
1811 }
1722 radeon_add_legacy_encoder(dev, 1812 radeon_add_legacy_encoder(dev,
1723 radeon_get_encoder_id 1813 radeon_get_encoder_id
1724 (dev, devices, 0), 1814 (dev, devices, 0),
@@ -1726,7 +1816,8 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
1726 radeon_add_legacy_connector(dev, i, devices, 1816 radeon_add_legacy_connector(dev, i, devices,
1727 legacy_connector_convert 1817 legacy_connector_convert
1728 [connector], 1818 [connector],
1729 &ddc_i2c); 1819 &ddc_i2c,
1820 connector_object_id);
1730 break; 1821 break;
1731 case CONNECTOR_CTV_LEGACY: 1822 case CONNECTOR_CTV_LEGACY:
1732 case CONNECTOR_STV_LEGACY: 1823 case CONNECTOR_STV_LEGACY:
@@ -1740,7 +1831,8 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
1740 ATOM_DEVICE_TV1_SUPPORT, 1831 ATOM_DEVICE_TV1_SUPPORT,
1741 legacy_connector_convert 1832 legacy_connector_convert
1742 [connector], 1833 [connector],
1743 &ddc_i2c); 1834 &ddc_i2c,
1835 CONNECTOR_OBJECT_ID_SVIDEO);
1744 break; 1836 break;
1745 default: 1837 default:
1746 DRM_ERROR("Unknown connector type: %d\n", 1838 DRM_ERROR("Unknown connector type: %d\n",
@@ -1772,10 +1864,29 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
1772 ATOM_DEVICE_CRT1_SUPPORT | 1864 ATOM_DEVICE_CRT1_SUPPORT |
1773 ATOM_DEVICE_DFP1_SUPPORT, 1865 ATOM_DEVICE_DFP1_SUPPORT,
1774 DRM_MODE_CONNECTOR_DVII, 1866 DRM_MODE_CONNECTOR_DVII,
1775 &ddc_i2c); 1867 &ddc_i2c,
1868 CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I);
1776 } else { 1869 } else {
1777 DRM_DEBUG("No connector info found\n"); 1870 uint16_t crt_info =
1778 return false; 1871 combios_get_table_offset(dev, COMBIOS_CRT_INFO_TABLE);
1872 DRM_DEBUG("Found CRT table, assuming VGA connector\n");
1873 if (crt_info) {
1874 radeon_add_legacy_encoder(dev,
1875 radeon_get_encoder_id(dev,
1876 ATOM_DEVICE_CRT1_SUPPORT,
1877 1),
1878 ATOM_DEVICE_CRT1_SUPPORT);
1879 ddc_i2c = combios_setup_i2c_bus(RADEON_GPIO_VGA_DDC);
1880 radeon_add_legacy_connector(dev,
1881 0,
1882 ATOM_DEVICE_CRT1_SUPPORT,
1883 DRM_MODE_CONNECTOR_VGA,
1884 &ddc_i2c,
1885 CONNECTOR_OBJECT_ID_VGA);
1886 } else {
1887 DRM_DEBUG("No connector info found\n");
1888 return false;
1889 }
1779 } 1890 }
1780 } 1891 }
1781 1892
@@ -1870,7 +1981,8 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
1870 5, 1981 5,
1871 ATOM_DEVICE_LCD1_SUPPORT, 1982 ATOM_DEVICE_LCD1_SUPPORT,
1872 DRM_MODE_CONNECTOR_LVDS, 1983 DRM_MODE_CONNECTOR_LVDS,
1873 &ddc_i2c); 1984 &ddc_i2c,
1985 CONNECTOR_OBJECT_ID_LVDS);
1874 } 1986 }
1875 } 1987 }
1876 1988
@@ -1880,16 +1992,19 @@ bool radeon_get_legacy_connector_info_from_bios(struct drm_device *dev)
1880 combios_get_table_offset(dev, COMBIOS_TV_INFO_TABLE); 1992 combios_get_table_offset(dev, COMBIOS_TV_INFO_TABLE);
1881 if (tv_info) { 1993 if (tv_info) {
1882 if (RBIOS8(tv_info + 6) == 'T') { 1994 if (RBIOS8(tv_info + 6) == 'T') {
1883 radeon_add_legacy_encoder(dev, 1995 if (radeon_apply_legacy_tv_quirks(dev)) {
1884 radeon_get_encoder_id 1996 radeon_add_legacy_encoder(dev,
1885 (dev, 1997 radeon_get_encoder_id
1886 ATOM_DEVICE_TV1_SUPPORT, 1998 (dev,
1887 2), 1999 ATOM_DEVICE_TV1_SUPPORT,
1888 ATOM_DEVICE_TV1_SUPPORT); 2000 2),
1889 radeon_add_legacy_connector(dev, 6, 2001 ATOM_DEVICE_TV1_SUPPORT);
1890 ATOM_DEVICE_TV1_SUPPORT, 2002 radeon_add_legacy_connector(dev, 6,
1891 DRM_MODE_CONNECTOR_SVIDEO, 2003 ATOM_DEVICE_TV1_SUPPORT,
1892 &ddc_i2c); 2004 DRM_MODE_CONNECTOR_SVIDEO,
2005 &ddc_i2c,
2006 CONNECTOR_OBJECT_ID_SVIDEO);
2007 }
1893 } 2008 }
1894 } 2009 }
1895 } 2010 }
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
index e376be47a4a0..29763ceae3af 100644
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
@@ -178,25 +178,12 @@ static struct drm_display_mode *radeon_fp_native_mode(struct drm_encoder *encode
178 struct drm_device *dev = encoder->dev; 178 struct drm_device *dev = encoder->dev;
179 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 179 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
180 struct drm_display_mode *mode = NULL; 180 struct drm_display_mode *mode = NULL;
181 struct radeon_native_mode *native_mode = &radeon_encoder->native_mode; 181 struct drm_display_mode *native_mode = &radeon_encoder->native_mode;
182
183 if (native_mode->panel_xres != 0 &&
184 native_mode->panel_yres != 0 &&
185 native_mode->dotclock != 0) {
186 mode = drm_mode_create(dev);
187
188 mode->hdisplay = native_mode->panel_xres;
189 mode->vdisplay = native_mode->panel_yres;
190
191 mode->htotal = mode->hdisplay + native_mode->hblank;
192 mode->hsync_start = mode->hdisplay + native_mode->hoverplus;
193 mode->hsync_end = mode->hsync_start + native_mode->hsync_width;
194 mode->vtotal = mode->vdisplay + native_mode->vblank;
195 mode->vsync_start = mode->vdisplay + native_mode->voverplus;
196 mode->vsync_end = mode->vsync_start + native_mode->vsync_width;
197 mode->clock = native_mode->dotclock;
198 mode->flags = 0;
199 182
183 if (native_mode->hdisplay != 0 &&
184 native_mode->vdisplay != 0 &&
185 native_mode->clock != 0) {
186 mode = drm_mode_duplicate(dev, native_mode);
200 mode->type = DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_DRIVER; 187 mode->type = DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_DRIVER;
201 drm_mode_set_name(mode); 188 drm_mode_set_name(mode);
202 189
@@ -210,7 +197,7 @@ static void radeon_add_common_modes(struct drm_encoder *encoder, struct drm_conn
210 struct drm_device *dev = encoder->dev; 197 struct drm_device *dev = encoder->dev;
211 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 198 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
212 struct drm_display_mode *mode = NULL; 199 struct drm_display_mode *mode = NULL;
213 struct radeon_native_mode *native_mode = &radeon_encoder->native_mode; 200 struct drm_display_mode *native_mode = &radeon_encoder->native_mode;
214 int i; 201 int i;
215 struct mode_size { 202 struct mode_size {
216 int w; 203 int w;
@@ -236,11 +223,16 @@ static void radeon_add_common_modes(struct drm_encoder *encoder, struct drm_conn
236 }; 223 };
237 224
238 for (i = 0; i < 17; i++) { 225 for (i = 0; i < 17; i++) {
226 if (radeon_encoder->devices & (ATOM_DEVICE_TV_SUPPORT)) {
227 if (common_modes[i].w > 1024 ||
228 common_modes[i].h > 768)
229 continue;
230 }
239 if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { 231 if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) {
240 if (common_modes[i].w > native_mode->panel_xres || 232 if (common_modes[i].w > native_mode->hdisplay ||
241 common_modes[i].h > native_mode->panel_yres || 233 common_modes[i].h > native_mode->vdisplay ||
242 (common_modes[i].w == native_mode->panel_xres && 234 (common_modes[i].w == native_mode->hdisplay &&
243 common_modes[i].h == native_mode->panel_yres)) 235 common_modes[i].h == native_mode->vdisplay))
244 continue; 236 continue;
245 } 237 }
246 if (common_modes[i].w < 320 || common_modes[i].h < 200) 238 if (common_modes[i].w < 320 || common_modes[i].h < 200)
@@ -344,28 +336,23 @@ static void radeon_fixup_lvds_native_mode(struct drm_encoder *encoder,
344 struct drm_connector *connector) 336 struct drm_connector *connector)
345{ 337{
346 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 338 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
347 struct radeon_native_mode *native_mode = &radeon_encoder->native_mode; 339 struct drm_display_mode *native_mode = &radeon_encoder->native_mode;
348 340
349 /* Try to get native mode details from EDID if necessary */ 341 /* Try to get native mode details from EDID if necessary */
350 if (!native_mode->dotclock) { 342 if (!native_mode->clock) {
351 struct drm_display_mode *t, *mode; 343 struct drm_display_mode *t, *mode;
352 344
353 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) { 345 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) {
354 if (mode->hdisplay == native_mode->panel_xres && 346 if (mode->hdisplay == native_mode->hdisplay &&
355 mode->vdisplay == native_mode->panel_yres) { 347 mode->vdisplay == native_mode->vdisplay) {
356 native_mode->hblank = mode->htotal - mode->hdisplay; 348 *native_mode = *mode;
357 native_mode->hoverplus = mode->hsync_start - mode->hdisplay; 349 drm_mode_set_crtcinfo(native_mode, CRTC_INTERLACE_HALVE_V);
358 native_mode->hsync_width = mode->hsync_end - mode->hsync_start;
359 native_mode->vblank = mode->vtotal - mode->vdisplay;
360 native_mode->voverplus = mode->vsync_start - mode->vdisplay;
361 native_mode->vsync_width = mode->vsync_end - mode->vsync_start;
362 native_mode->dotclock = mode->clock;
363 DRM_INFO("Determined LVDS native mode details from EDID\n"); 350 DRM_INFO("Determined LVDS native mode details from EDID\n");
364 break; 351 break;
365 } 352 }
366 } 353 }
367 } 354 }
368 if (!native_mode->dotclock) { 355 if (!native_mode->clock) {
369 DRM_INFO("No LVDS native mode details, disabling RMX\n"); 356 DRM_INFO("No LVDS native mode details, disabling RMX\n");
370 radeon_encoder->rmx_type = RMX_OFF; 357 radeon_encoder->rmx_type = RMX_OFF;
371 } 358 }
@@ -410,13 +397,64 @@ static int radeon_lvds_get_modes(struct drm_connector *connector)
410static int radeon_lvds_mode_valid(struct drm_connector *connector, 397static int radeon_lvds_mode_valid(struct drm_connector *connector,
411 struct drm_display_mode *mode) 398 struct drm_display_mode *mode)
412{ 399{
400 struct drm_encoder *encoder = radeon_best_single_encoder(connector);
401
402 if ((mode->hdisplay < 320) || (mode->vdisplay < 240))
403 return MODE_PANEL;
404
405 if (encoder) {
406 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
407 struct drm_display_mode *native_mode = &radeon_encoder->native_mode;
408
409 /* AVIVO hardware supports downscaling modes larger than the panel
410 * to the panel size, but I'm not sure this is desirable.
411 */
412 if ((mode->hdisplay > native_mode->hdisplay) ||
413 (mode->vdisplay > native_mode->vdisplay))
414 return MODE_PANEL;
415
416 /* if scaling is disabled, block non-native modes */
417 if (radeon_encoder->rmx_type == RMX_OFF) {
418 if ((mode->hdisplay != native_mode->hdisplay) ||
419 (mode->vdisplay != native_mode->vdisplay))
420 return MODE_PANEL;
421 }
422 }
423
413 return MODE_OK; 424 return MODE_OK;
414} 425}
415 426
416static enum drm_connector_status radeon_lvds_detect(struct drm_connector *connector) 427static enum drm_connector_status radeon_lvds_detect(struct drm_connector *connector)
417{ 428{
418 enum drm_connector_status ret = connector_status_connected; 429 struct radeon_connector *radeon_connector = to_radeon_connector(connector);
430 struct drm_encoder *encoder = radeon_best_single_encoder(connector);
431 enum drm_connector_status ret = connector_status_disconnected;
432
433 if (encoder) {
434 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
435 struct drm_display_mode *native_mode = &radeon_encoder->native_mode;
436
437 /* check if panel is valid */
438 if (native_mode->hdisplay >= 320 && native_mode->vdisplay >= 240)
439 ret = connector_status_connected;
440
441 }
442
443 /* check for edid as well */
444 if (radeon_connector->edid)
445 ret = connector_status_connected;
446 else {
447 if (radeon_connector->ddc_bus) {
448 radeon_i2c_do_lock(radeon_connector, 1);
449 radeon_connector->edid = drm_get_edid(&radeon_connector->base,
450 &radeon_connector->ddc_bus->adapter);
451 radeon_i2c_do_lock(radeon_connector, 0);
452 if (radeon_connector->edid)
453 ret = connector_status_connected;
454 }
455 }
419 /* check acpi lid status ??? */ 456 /* check acpi lid status ??? */
457
420 radeon_connector_update_scratch_regs(connector, ret); 458 radeon_connector_update_scratch_regs(connector, ret);
421 return ret; 459 return ret;
422} 460}
@@ -427,6 +465,8 @@ static void radeon_connector_destroy(struct drm_connector *connector)
427 465
428 if (radeon_connector->ddc_bus) 466 if (radeon_connector->ddc_bus)
429 radeon_i2c_destroy(radeon_connector->ddc_bus); 467 radeon_i2c_destroy(radeon_connector->ddc_bus);
468 if (radeon_connector->edid)
469 kfree(radeon_connector->edid);
430 kfree(radeon_connector->con_priv); 470 kfree(radeon_connector->con_priv);
431 drm_sysfs_connector_remove(connector); 471 drm_sysfs_connector_remove(connector);
432 drm_connector_cleanup(connector); 472 drm_connector_cleanup(connector);
@@ -496,6 +536,8 @@ static int radeon_vga_get_modes(struct drm_connector *connector)
496static int radeon_vga_mode_valid(struct drm_connector *connector, 536static int radeon_vga_mode_valid(struct drm_connector *connector,
497 struct drm_display_mode *mode) 537 struct drm_display_mode *mode)
498{ 538{
539 /* XXX check mode bandwidth */
540 /* XXX verify against max DAC output frequency */
499 return MODE_OK; 541 return MODE_OK;
500} 542}
501 543
@@ -514,9 +556,33 @@ static enum drm_connector_status radeon_vga_detect(struct drm_connector *connect
514 radeon_i2c_do_lock(radeon_connector, 1); 556 radeon_i2c_do_lock(radeon_connector, 1);
515 dret = radeon_ddc_probe(radeon_connector); 557 dret = radeon_ddc_probe(radeon_connector);
516 radeon_i2c_do_lock(radeon_connector, 0); 558 radeon_i2c_do_lock(radeon_connector, 0);
517 if (dret) 559 if (dret) {
518 ret = connector_status_connected; 560 if (radeon_connector->edid) {
519 else { 561 kfree(radeon_connector->edid);
562 radeon_connector->edid = NULL;
563 }
564 radeon_i2c_do_lock(radeon_connector, 1);
565 radeon_connector->edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter);
566 radeon_i2c_do_lock(radeon_connector, 0);
567
568 if (!radeon_connector->edid) {
569 DRM_ERROR("%s: probed a monitor but no|invalid EDID\n",
570 drm_get_connector_name(connector));
571 ret = connector_status_connected;
572 } else {
573 radeon_connector->use_digital = !!(radeon_connector->edid->input & DRM_EDID_INPUT_DIGITAL);
574
575 /* some oems have boards with separate digital and analog connectors
576 * with a shared ddc line (often vga + hdmi)
577 */
578 if (radeon_connector->use_digital && radeon_connector->shared_ddc) {
579 kfree(radeon_connector->edid);
580 radeon_connector->edid = NULL;
581 ret = connector_status_disconnected;
582 } else
583 ret = connector_status_connected;
584 }
585 } else {
520 if (radeon_connector->dac_load_detect) { 586 if (radeon_connector->dac_load_detect) {
521 encoder_funcs = encoder->helper_private; 587 encoder_funcs = encoder->helper_private;
522 ret = encoder_funcs->detect(encoder, connector); 588 ret = encoder_funcs->detect(encoder, connector);
@@ -570,6 +636,8 @@ static int radeon_tv_get_modes(struct drm_connector *connector)
570static int radeon_tv_mode_valid(struct drm_connector *connector, 636static int radeon_tv_mode_valid(struct drm_connector *connector,
571 struct drm_display_mode *mode) 637 struct drm_display_mode *mode)
572{ 638{
639 if ((mode->hdisplay > 1024) || (mode->vdisplay > 768))
640 return MODE_CLOCK_RANGE;
573 return MODE_OK; 641 return MODE_OK;
574} 642}
575 643
@@ -644,20 +712,29 @@ static enum drm_connector_status radeon_dvi_detect(struct drm_connector *connect
644 dret = radeon_ddc_probe(radeon_connector); 712 dret = radeon_ddc_probe(radeon_connector);
645 radeon_i2c_do_lock(radeon_connector, 0); 713 radeon_i2c_do_lock(radeon_connector, 0);
646 if (dret) { 714 if (dret) {
715 if (radeon_connector->edid) {
716 kfree(radeon_connector->edid);
717 radeon_connector->edid = NULL;
718 }
647 radeon_i2c_do_lock(radeon_connector, 1); 719 radeon_i2c_do_lock(radeon_connector, 1);
648 radeon_connector->edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter); 720 radeon_connector->edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter);
649 radeon_i2c_do_lock(radeon_connector, 0); 721 radeon_i2c_do_lock(radeon_connector, 0);
650 722
651 if (!radeon_connector->edid) { 723 if (!radeon_connector->edid) {
652 DRM_ERROR("DDC responded but not EDID found for %s\n", 724 DRM_ERROR("%s: probed a monitor but no|invalid EDID\n",
653 drm_get_connector_name(connector)); 725 drm_get_connector_name(connector));
654 } else { 726 } else {
655 radeon_connector->use_digital = !!(radeon_connector->edid->input & DRM_EDID_INPUT_DIGITAL); 727 radeon_connector->use_digital = !!(radeon_connector->edid->input & DRM_EDID_INPUT_DIGITAL);
656 728
657 /* if this isn't a digital monitor 729 /* some oems have boards with separate digital and analog connectors
658 then we need to make sure we don't have any 730 * with a shared ddc line (often vga + hdmi)
659 TV conflicts */ 731 */
660 ret = connector_status_connected; 732 if ((!radeon_connector->use_digital) && radeon_connector->shared_ddc) {
733 kfree(radeon_connector->edid);
734 radeon_connector->edid = NULL;
735 ret = connector_status_disconnected;
736 } else
737 ret = connector_status_connected;
661 } 738 }
662 } 739 }
663 740
@@ -753,9 +830,27 @@ static void radeon_dvi_force(struct drm_connector *connector)
753 radeon_connector->use_digital = true; 830 radeon_connector->use_digital = true;
754} 831}
755 832
833static int radeon_dvi_mode_valid(struct drm_connector *connector,
834 struct drm_display_mode *mode)
835{
836 struct radeon_connector *radeon_connector = to_radeon_connector(connector);
837
838 /* XXX check mode bandwidth */
839
840 if (radeon_connector->use_digital && (mode->clock > 165000)) {
841 if ((radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I) ||
842 (radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D) ||
843 (radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_HDMI_TYPE_B))
844 return MODE_OK;
845 else
846 return MODE_CLOCK_HIGH;
847 }
848 return MODE_OK;
849}
850
756struct drm_connector_helper_funcs radeon_dvi_connector_helper_funcs = { 851struct drm_connector_helper_funcs radeon_dvi_connector_helper_funcs = {
757 .get_modes = radeon_dvi_get_modes, 852 .get_modes = radeon_dvi_get_modes,
758 .mode_valid = radeon_vga_mode_valid, 853 .mode_valid = radeon_dvi_mode_valid,
759 .best_encoder = radeon_dvi_encoder, 854 .best_encoder = radeon_dvi_encoder,
760}; 855};
761 856
@@ -775,13 +870,15 @@ radeon_add_atom_connector(struct drm_device *dev,
775 int connector_type, 870 int connector_type,
776 struct radeon_i2c_bus_rec *i2c_bus, 871 struct radeon_i2c_bus_rec *i2c_bus,
777 bool linkb, 872 bool linkb,
778 uint32_t igp_lane_info) 873 uint32_t igp_lane_info,
874 uint16_t connector_object_id)
779{ 875{
780 struct radeon_device *rdev = dev->dev_private; 876 struct radeon_device *rdev = dev->dev_private;
781 struct drm_connector *connector; 877 struct drm_connector *connector;
782 struct radeon_connector *radeon_connector; 878 struct radeon_connector *radeon_connector;
783 struct radeon_connector_atom_dig *radeon_dig_connector; 879 struct radeon_connector_atom_dig *radeon_dig_connector;
784 uint32_t subpixel_order = SubPixelNone; 880 uint32_t subpixel_order = SubPixelNone;
881 bool shared_ddc = false;
785 int ret; 882 int ret;
786 883
787 /* fixme - tv/cv/din */ 884 /* fixme - tv/cv/din */
@@ -795,6 +892,13 @@ radeon_add_atom_connector(struct drm_device *dev,
795 radeon_connector->devices |= supported_device; 892 radeon_connector->devices |= supported_device;
796 return; 893 return;
797 } 894 }
895 if (radeon_connector->ddc_bus && i2c_bus->valid) {
896 if (memcmp(&radeon_connector->ddc_bus->rec, i2c_bus,
897 sizeof(struct radeon_i2c_bus_rec)) == 0) {
898 radeon_connector->shared_ddc = true;
899 shared_ddc = true;
900 }
901 }
798 } 902 }
799 903
800 radeon_connector = kzalloc(sizeof(struct radeon_connector), GFP_KERNEL); 904 radeon_connector = kzalloc(sizeof(struct radeon_connector), GFP_KERNEL);
@@ -805,6 +909,8 @@ radeon_add_atom_connector(struct drm_device *dev,
805 909
806 radeon_connector->connector_id = connector_id; 910 radeon_connector->connector_id = connector_id;
807 radeon_connector->devices = supported_device; 911 radeon_connector->devices = supported_device;
912 radeon_connector->shared_ddc = shared_ddc;
913 radeon_connector->connector_object_id = connector_object_id;
808 switch (connector_type) { 914 switch (connector_type) {
809 case DRM_MODE_CONNECTOR_VGA: 915 case DRM_MODE_CONNECTOR_VGA:
810 drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type); 916 drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type);
@@ -956,7 +1062,8 @@ radeon_add_legacy_connector(struct drm_device *dev,
956 uint32_t connector_id, 1062 uint32_t connector_id,
957 uint32_t supported_device, 1063 uint32_t supported_device,
958 int connector_type, 1064 int connector_type,
959 struct radeon_i2c_bus_rec *i2c_bus) 1065 struct radeon_i2c_bus_rec *i2c_bus,
1066 uint16_t connector_object_id)
960{ 1067{
961 struct radeon_device *rdev = dev->dev_private; 1068 struct radeon_device *rdev = dev->dev_private;
962 struct drm_connector *connector; 1069 struct drm_connector *connector;
@@ -985,6 +1092,7 @@ radeon_add_legacy_connector(struct drm_device *dev,
985 1092
986 radeon_connector->connector_id = connector_id; 1093 radeon_connector->connector_id = connector_id;
987 radeon_connector->devices = supported_device; 1094 radeon_connector->devices = supported_device;
1095 radeon_connector->connector_object_id = connector_object_id;
988 switch (connector_type) { 1096 switch (connector_type) {
989 case DRM_MODE_CONNECTOR_VGA: 1097 case DRM_MODE_CONNECTOR_VGA:
990 drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type); 1098 drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type);
@@ -1042,6 +1150,13 @@ radeon_add_legacy_connector(struct drm_device *dev,
1042 if (ret) 1150 if (ret)
1043 goto failed; 1151 goto failed;
1044 radeon_connector->dac_load_detect = true; 1152 radeon_connector->dac_load_detect = true;
1153 /* RS400,RC410,RS480 chipset seems to report a lot
1154 * of false positive on load detect, we haven't yet
1155 * found a way to make load detect reliable on those
1156 * chipset, thus just disable it for TV.
1157 */
1158 if (rdev->family == CHIP_RS400 || rdev->family == CHIP_RS480)
1159 radeon_connector->dac_load_detect = false;
1045 drm_connector_attach_property(&radeon_connector->base, 1160 drm_connector_attach_property(&radeon_connector->base,
1046 rdev->mode_info.load_detect_property, 1161 rdev->mode_info.load_detect_property,
1047 1); 1162 1);
diff --git a/drivers/gpu/drm/radeon/radeon_cursor.c b/drivers/gpu/drm/radeon/radeon_cursor.c
index b13c79e38bc0..28772a37009c 100644
--- a/drivers/gpu/drm/radeon/radeon_cursor.c
+++ b/drivers/gpu/drm/radeon/radeon_cursor.c
@@ -109,9 +109,15 @@ static void radeon_set_cursor(struct drm_crtc *crtc, struct drm_gem_object *obj,
109 struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); 109 struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
110 struct radeon_device *rdev = crtc->dev->dev_private; 110 struct radeon_device *rdev = crtc->dev->dev_private;
111 111
112 if (ASIC_IS_AVIVO(rdev)) 112 if (ASIC_IS_AVIVO(rdev)) {
113 if (rdev->family >= CHIP_RV770) {
114 if (radeon_crtc->crtc_id)
115 WREG32(R700_D2CUR_SURFACE_ADDRESS_HIGH, 0);
116 else
117 WREG32(R700_D1CUR_SURFACE_ADDRESS_HIGH, 0);
118 }
113 WREG32(AVIVO_D1CUR_SURFACE_ADDRESS + radeon_crtc->crtc_offset, gpu_addr); 119 WREG32(AVIVO_D1CUR_SURFACE_ADDRESS + radeon_crtc->crtc_offset, gpu_addr);
114 else { 120 } else {
115 radeon_crtc->legacy_cursor_offset = gpu_addr - radeon_crtc->legacy_display_base_addr; 121 radeon_crtc->legacy_cursor_offset = gpu_addr - radeon_crtc->legacy_display_base_addr;
116 /* offset is from DISP(2)_BASE_ADDRESS */ 122 /* offset is from DISP(2)_BASE_ADDRESS */
117 WREG32(RADEON_CUR_OFFSET + radeon_crtc->crtc_offset, radeon_crtc->legacy_cursor_offset); 123 WREG32(RADEON_CUR_OFFSET + radeon_crtc->crtc_offset, radeon_crtc->legacy_cursor_offset);
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index 3d667031de6e..41bb76fbe734 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -444,20 +444,24 @@ static uint32_t cail_reg_read(struct card_info *info, uint32_t reg)
444 return r; 444 return r;
445} 445}
446 446
447static struct card_info atom_card_info = {
448 .dev = NULL,
449 .reg_read = cail_reg_read,
450 .reg_write = cail_reg_write,
451 .mc_read = cail_mc_read,
452 .mc_write = cail_mc_write,
453 .pll_read = cail_pll_read,
454 .pll_write = cail_pll_write,
455};
456
457int radeon_atombios_init(struct radeon_device *rdev) 447int radeon_atombios_init(struct radeon_device *rdev)
458{ 448{
459 atom_card_info.dev = rdev->ddev; 449 struct card_info *atom_card_info =
460 rdev->mode_info.atom_context = atom_parse(&atom_card_info, rdev->bios); 450 kzalloc(sizeof(struct card_info), GFP_KERNEL);
451
452 if (!atom_card_info)
453 return -ENOMEM;
454
455 rdev->mode_info.atom_card_info = atom_card_info;
456 atom_card_info->dev = rdev->ddev;
457 atom_card_info->reg_read = cail_reg_read;
458 atom_card_info->reg_write = cail_reg_write;
459 atom_card_info->mc_read = cail_mc_read;
460 atom_card_info->mc_write = cail_mc_write;
461 atom_card_info->pll_read = cail_pll_read;
462 atom_card_info->pll_write = cail_pll_write;
463
464 rdev->mode_info.atom_context = atom_parse(atom_card_info, rdev->bios);
461 radeon_atom_initialize_bios_scratch_regs(rdev->ddev); 465 radeon_atom_initialize_bios_scratch_regs(rdev->ddev);
462 return 0; 466 return 0;
463} 467}
@@ -465,6 +469,7 @@ int radeon_atombios_init(struct radeon_device *rdev)
465void radeon_atombios_fini(struct radeon_device *rdev) 469void radeon_atombios_fini(struct radeon_device *rdev)
466{ 470{
467 kfree(rdev->mode_info.atom_context); 471 kfree(rdev->mode_info.atom_context);
472 kfree(rdev->mode_info.atom_card_info);
468} 473}
469 474
470int radeon_combios_init(struct radeon_device *rdev) 475int radeon_combios_init(struct radeon_device *rdev)
@@ -582,10 +587,9 @@ int radeon_device_init(struct radeon_device *rdev,
582 DRM_INFO("register mmio size: %u\n", (unsigned)rdev->rmmio_size); 587 DRM_INFO("register mmio size: %u\n", (unsigned)rdev->rmmio_size);
583 588
584 /* if we have > 1 VGA cards, then disable the radeon VGA resources */ 589 /* if we have > 1 VGA cards, then disable the radeon VGA resources */
585 r = vga_client_register(rdev->pdev, rdev, NULL, radeon_vga_set_decode); 590 /* this will fail for cards that aren't VGA class devices, just
586 if (r) { 591 * ignore it */
587 return -EINVAL; 592 vga_client_register(rdev->pdev, rdev, NULL, radeon_vga_set_decode);
588 }
589 593
590 r = radeon_init(rdev); 594 r = radeon_init(rdev);
591 if (r) 595 if (r)
@@ -684,6 +688,8 @@ int radeon_resume_kms(struct drm_device *dev)
684 return -1; 688 return -1;
685 } 689 }
686 pci_set_master(dev->pdev); 690 pci_set_master(dev->pdev);
691 /* resume AGP if in use */
692 radeon_agp_resume(rdev);
687 radeon_resume(rdev); 693 radeon_resume(rdev);
688 radeon_restore_bios_scratch_regs(rdev); 694 radeon_restore_bios_scratch_regs(rdev);
689 fb_set_suspend(rdev->fbdev_info, 0); 695 fb_set_suspend(rdev->fbdev_info, 0);
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
index 3655d91993a6..c85df4afcb7a 100644
--- a/drivers/gpu/drm/radeon/radeon_display.c
+++ b/drivers/gpu/drm/radeon/radeon_display.c
@@ -137,9 +137,6 @@ static void radeon_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
137 if (size != 256) { 137 if (size != 256) {
138 return; 138 return;
139 } 139 }
140 if (crtc->fb == NULL) {
141 return;
142 }
143 140
144 /* userspace palettes are always correct as is */ 141 /* userspace palettes are always correct as is */
145 for (i = 0; i < 256; i++) { 142 for (i = 0; i < 256; i++) {
@@ -147,7 +144,6 @@ static void radeon_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
147 radeon_crtc->lut_g[i] = green[i] >> 6; 144 radeon_crtc->lut_g[i] = green[i] >> 6;
148 radeon_crtc->lut_b[i] = blue[i] >> 6; 145 radeon_crtc->lut_b[i] = blue[i] >> 6;
149 } 146 }
150
151 radeon_crtc_load_lut(crtc); 147 radeon_crtc_load_lut(crtc);
152} 148}
153 149
@@ -338,27 +334,19 @@ static bool radeon_setup_enc_conn(struct drm_device *dev)
338 334
339int radeon_ddc_get_modes(struct radeon_connector *radeon_connector) 335int radeon_ddc_get_modes(struct radeon_connector *radeon_connector)
340{ 336{
341 struct edid *edid;
342 int ret = 0; 337 int ret = 0;
343 338
344 if (!radeon_connector->ddc_bus) 339 if (!radeon_connector->ddc_bus)
345 return -1; 340 return -1;
346 if (!radeon_connector->edid) { 341 if (!radeon_connector->edid) {
347 radeon_i2c_do_lock(radeon_connector, 1); 342 radeon_i2c_do_lock(radeon_connector, 1);
348 edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter); 343 radeon_connector->edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter);
349 radeon_i2c_do_lock(radeon_connector, 0); 344 radeon_i2c_do_lock(radeon_connector, 0);
350 } else 345 }
351 edid = radeon_connector->edid;
352 346
353 if (edid) { 347 if (radeon_connector->edid) {
354 /* update digital bits here */ 348 drm_mode_connector_update_edid_property(&radeon_connector->base, radeon_connector->edid);
355 if (edid->input & DRM_EDID_INPUT_DIGITAL) 349 ret = drm_add_edid_modes(&radeon_connector->base, radeon_connector->edid);
356 radeon_connector->use_digital = 1;
357 else
358 radeon_connector->use_digital = 0;
359 drm_mode_connector_update_edid_property(&radeon_connector->base, edid);
360 ret = drm_add_edid_modes(&radeon_connector->base, edid);
361 kfree(edid);
362 return ret; 350 return ret;
363 } 351 }
364 drm_mode_connector_update_edid_property(&radeon_connector->base, NULL); 352 drm_mode_connector_update_edid_property(&radeon_connector->base, NULL);
@@ -765,7 +753,7 @@ bool radeon_crtc_scaling_mode_fixup(struct drm_crtc *crtc,
765 radeon_crtc->rmx_type = radeon_encoder->rmx_type; 753 radeon_crtc->rmx_type = radeon_encoder->rmx_type;
766 memcpy(&radeon_crtc->native_mode, 754 memcpy(&radeon_crtc->native_mode,
767 &radeon_encoder->native_mode, 755 &radeon_encoder->native_mode,
768 sizeof(struct radeon_native_mode)); 756 sizeof(struct drm_display_mode));
769 first = false; 757 first = false;
770 } else { 758 } else {
771 if (radeon_crtc->rmx_type != radeon_encoder->rmx_type) { 759 if (radeon_crtc->rmx_type != radeon_encoder->rmx_type) {
@@ -783,10 +771,10 @@ bool radeon_crtc_scaling_mode_fixup(struct drm_crtc *crtc,
783 if (radeon_crtc->rmx_type != RMX_OFF) { 771 if (radeon_crtc->rmx_type != RMX_OFF) {
784 fixed20_12 a, b; 772 fixed20_12 a, b;
785 a.full = rfixed_const(crtc->mode.vdisplay); 773 a.full = rfixed_const(crtc->mode.vdisplay);
786 b.full = rfixed_const(radeon_crtc->native_mode.panel_xres); 774 b.full = rfixed_const(radeon_crtc->native_mode.hdisplay);
787 radeon_crtc->vsc.full = rfixed_div(a, b); 775 radeon_crtc->vsc.full = rfixed_div(a, b);
788 a.full = rfixed_const(crtc->mode.hdisplay); 776 a.full = rfixed_const(crtc->mode.hdisplay);
789 b.full = rfixed_const(radeon_crtc->native_mode.panel_yres); 777 b.full = rfixed_const(radeon_crtc->native_mode.vdisplay);
790 radeon_crtc->hsc.full = rfixed_div(a, b); 778 radeon_crtc->hsc.full = rfixed_div(a, b);
791 } else { 779 } else {
792 radeon_crtc->vsc.full = rfixed_const(1); 780 radeon_crtc->vsc.full = rfixed_const(1);
diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c
index a65ab1a0dad2..d42bc512d75a 100644
--- a/drivers/gpu/drm/radeon/radeon_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_encoders.c
@@ -31,6 +31,10 @@
31 31
32extern int atom_debug; 32extern int atom_debug;
33 33
34/* evil but including atombios.h is much worse */
35bool radeon_atom_get_tv_timings(struct radeon_device *rdev, int index,
36 struct drm_display_mode *mode);
37
34uint32_t 38uint32_t
35radeon_get_encoder_id(struct drm_device *dev, uint32_t supported_device, uint8_t dac) 39radeon_get_encoder_id(struct drm_device *dev, uint32_t supported_device, uint8_t dac)
36{ 40{
@@ -167,49 +171,17 @@ void radeon_rmx_mode_fixup(struct drm_encoder *encoder,
167 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 171 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
168 struct drm_device *dev = encoder->dev; 172 struct drm_device *dev = encoder->dev;
169 struct radeon_device *rdev = dev->dev_private; 173 struct radeon_device *rdev = dev->dev_private;
170 struct radeon_native_mode *native_mode = &radeon_encoder->native_mode; 174 struct drm_display_mode *native_mode = &radeon_encoder->native_mode;
171 175
172 if (mode->hdisplay < native_mode->panel_xres || 176 if (mode->hdisplay < native_mode->hdisplay ||
173 mode->vdisplay < native_mode->panel_yres) { 177 mode->vdisplay < native_mode->vdisplay) {
174 if (ASIC_IS_AVIVO(rdev)) { 178 int mode_id = adjusted_mode->base.id;
175 adjusted_mode->hdisplay = native_mode->panel_xres; 179 *adjusted_mode = *native_mode;
176 adjusted_mode->vdisplay = native_mode->panel_yres; 180 if (!ASIC_IS_AVIVO(rdev)) {
177 adjusted_mode->htotal = native_mode->panel_xres + native_mode->hblank; 181 adjusted_mode->hdisplay = mode->hdisplay;
178 adjusted_mode->hsync_start = native_mode->panel_xres + native_mode->hoverplus; 182 adjusted_mode->vdisplay = mode->vdisplay;
179 adjusted_mode->hsync_end = adjusted_mode->hsync_start + native_mode->hsync_width;
180 adjusted_mode->vtotal = native_mode->panel_yres + native_mode->vblank;
181 adjusted_mode->vsync_start = native_mode->panel_yres + native_mode->voverplus;
182 adjusted_mode->vsync_end = adjusted_mode->vsync_start + native_mode->vsync_width;
183 /* update crtc values */
184 drm_mode_set_crtcinfo(adjusted_mode, CRTC_INTERLACE_HALVE_V);
185 /* adjust crtc values */
186 adjusted_mode->crtc_hdisplay = native_mode->panel_xres;
187 adjusted_mode->crtc_vdisplay = native_mode->panel_yres;
188 adjusted_mode->crtc_htotal = adjusted_mode->crtc_hdisplay + native_mode->hblank;
189 adjusted_mode->crtc_hsync_start = adjusted_mode->crtc_hdisplay + native_mode->hoverplus;
190 adjusted_mode->crtc_hsync_end = adjusted_mode->crtc_hsync_start + native_mode->hsync_width;
191 adjusted_mode->crtc_vtotal = adjusted_mode->crtc_vdisplay + native_mode->vblank;
192 adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + native_mode->voverplus;
193 adjusted_mode->crtc_vsync_end = adjusted_mode->crtc_vsync_start + native_mode->vsync_width;
194 } else {
195 adjusted_mode->htotal = native_mode->panel_xres + native_mode->hblank;
196 adjusted_mode->hsync_start = native_mode->panel_xres + native_mode->hoverplus;
197 adjusted_mode->hsync_end = adjusted_mode->hsync_start + native_mode->hsync_width;
198 adjusted_mode->vtotal = native_mode->panel_yres + native_mode->vblank;
199 adjusted_mode->vsync_start = native_mode->panel_yres + native_mode->voverplus;
200 adjusted_mode->vsync_end = adjusted_mode->vsync_start + native_mode->vsync_width;
201 /* update crtc values */
202 drm_mode_set_crtcinfo(adjusted_mode, CRTC_INTERLACE_HALVE_V);
203 /* adjust crtc values */
204 adjusted_mode->crtc_htotal = adjusted_mode->crtc_hdisplay + native_mode->hblank;
205 adjusted_mode->crtc_hsync_start = adjusted_mode->crtc_hdisplay + native_mode->hoverplus;
206 adjusted_mode->crtc_hsync_end = adjusted_mode->crtc_hsync_start + native_mode->hsync_width;
207 adjusted_mode->crtc_vtotal = adjusted_mode->crtc_vdisplay + native_mode->vblank;
208 adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + native_mode->voverplus;
209 adjusted_mode->crtc_vsync_end = adjusted_mode->crtc_vsync_start + native_mode->vsync_width;
210 } 183 }
211 adjusted_mode->flags = native_mode->flags; 184 adjusted_mode->base.id = mode_id;
212 adjusted_mode->clock = native_mode->dotclock;
213 } 185 }
214} 186}
215 187
@@ -219,7 +191,11 @@ static bool radeon_atom_mode_fixup(struct drm_encoder *encoder,
219 struct drm_display_mode *adjusted_mode) 191 struct drm_display_mode *adjusted_mode)
220{ 192{
221 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 193 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
194 struct drm_device *dev = encoder->dev;
195 struct radeon_device *rdev = dev->dev_private;
222 196
197 /* set the active encoder to connector routing */
198 radeon_encoder_set_active_device(encoder);
223 drm_mode_set_crtcinfo(adjusted_mode, 0); 199 drm_mode_set_crtcinfo(adjusted_mode, 0);
224 200
225 if (radeon_encoder->rmx_type != RMX_OFF) 201 if (radeon_encoder->rmx_type != RMX_OFF)
@@ -230,6 +206,18 @@ static bool radeon_atom_mode_fixup(struct drm_encoder *encoder,
230 && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2))) 206 && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2)))
231 adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2; 207 adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2;
232 208
209 if (radeon_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT)) {
210 struct radeon_encoder_atom_dac *tv_dac = radeon_encoder->enc_priv;
211 if (tv_dac) {
212 if (tv_dac->tv_std == TV_STD_NTSC ||
213 tv_dac->tv_std == TV_STD_NTSC_J ||
214 tv_dac->tv_std == TV_STD_PAL_M)
215 radeon_atom_get_tv_timings(rdev, 0, adjusted_mode);
216 else
217 radeon_atom_get_tv_timings(rdev, 1, adjusted_mode);
218 }
219 }
220
233 return true; 221 return true;
234} 222}
235 223
@@ -461,7 +449,7 @@ atombios_digital_setup(struct drm_encoder *encoder, int action)
461 case 1: 449 case 1:
462 args.v1.ucMisc = 0; 450 args.v1.ucMisc = 0;
463 args.v1.ucAction = action; 451 args.v1.ucAction = action;
464 if (drm_detect_hdmi_monitor((struct edid *)connector->edid_blob_ptr)) 452 if (drm_detect_hdmi_monitor(radeon_connector->edid))
465 args.v1.ucMisc |= PANEL_ENCODER_MISC_HDMI_TYPE; 453 args.v1.ucMisc |= PANEL_ENCODER_MISC_HDMI_TYPE;
466 args.v1.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10); 454 args.v1.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10);
467 if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { 455 if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) {
@@ -486,7 +474,7 @@ atombios_digital_setup(struct drm_encoder *encoder, int action)
486 if (dig->coherent_mode) 474 if (dig->coherent_mode)
487 args.v2.ucMisc |= PANEL_ENCODER_MISC_COHERENT; 475 args.v2.ucMisc |= PANEL_ENCODER_MISC_COHERENT;
488 } 476 }
489 if (drm_detect_hdmi_monitor((struct edid *)connector->edid_blob_ptr)) 477 if (drm_detect_hdmi_monitor(radeon_connector->edid))
490 args.v2.ucMisc |= PANEL_ENCODER_MISC_HDMI_TYPE; 478 args.v2.ucMisc |= PANEL_ENCODER_MISC_HDMI_TYPE;
491 args.v2.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10); 479 args.v2.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10);
492 args.v2.ucTruncate = 0; 480 args.v2.ucTruncate = 0;
@@ -544,7 +532,7 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
544 switch (connector->connector_type) { 532 switch (connector->connector_type) {
545 case DRM_MODE_CONNECTOR_DVII: 533 case DRM_MODE_CONNECTOR_DVII:
546 case DRM_MODE_CONNECTOR_HDMIB: /* HDMI-B is basically DL-DVI; analog works fine */ 534 case DRM_MODE_CONNECTOR_HDMIB: /* HDMI-B is basically DL-DVI; analog works fine */
547 if (drm_detect_hdmi_monitor((struct edid *)connector->edid_blob_ptr)) 535 if (drm_detect_hdmi_monitor(radeon_connector->edid))
548 return ATOM_ENCODER_MODE_HDMI; 536 return ATOM_ENCODER_MODE_HDMI;
549 else if (radeon_connector->use_digital) 537 else if (radeon_connector->use_digital)
550 return ATOM_ENCODER_MODE_DVI; 538 return ATOM_ENCODER_MODE_DVI;
@@ -554,7 +542,7 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
554 case DRM_MODE_CONNECTOR_DVID: 542 case DRM_MODE_CONNECTOR_DVID:
555 case DRM_MODE_CONNECTOR_HDMIA: 543 case DRM_MODE_CONNECTOR_HDMIA:
556 default: 544 default:
557 if (drm_detect_hdmi_monitor((struct edid *)connector->edid_blob_ptr)) 545 if (drm_detect_hdmi_monitor(radeon_connector->edid))
558 return ATOM_ENCODER_MODE_HDMI; 546 return ATOM_ENCODER_MODE_HDMI;
559 else 547 else
560 return ATOM_ENCODER_MODE_DVI; 548 return ATOM_ENCODER_MODE_DVI;
@@ -566,7 +554,7 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
566 /*if (radeon_output->MonType == MT_DP) 554 /*if (radeon_output->MonType == MT_DP)
567 return ATOM_ENCODER_MODE_DP; 555 return ATOM_ENCODER_MODE_DP;
568 else*/ 556 else*/
569 if (drm_detect_hdmi_monitor((struct edid *)connector->edid_blob_ptr)) 557 if (drm_detect_hdmi_monitor(radeon_connector->edid))
570 return ATOM_ENCODER_MODE_HDMI; 558 return ATOM_ENCODER_MODE_HDMI;
571 else 559 else
572 return ATOM_ENCODER_MODE_DVI; 560 return ATOM_ENCODER_MODE_DVI;
@@ -734,14 +722,17 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action)
734 atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, &crev); 722 atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, &crev);
735 723
736 args.v1.ucAction = action; 724 args.v1.ucAction = action;
737 725 if (action == ATOM_TRANSMITTER_ACTION_INIT) {
726 args.v1.usInitInfo = radeon_connector->connector_object_id;
727 } else {
728 if (radeon_encoder->pixel_clock > 165000)
729 args.v1.usPixelClock = cpu_to_le16((radeon_encoder->pixel_clock / 2) / 10);
730 else
731 args.v1.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10);
732 }
738 if (ASIC_IS_DCE32(rdev)) { 733 if (ASIC_IS_DCE32(rdev)) {
739 if (radeon_encoder->pixel_clock > 165000) { 734 if (radeon_encoder->pixel_clock > 165000)
740 args.v2.usPixelClock = cpu_to_le16((radeon_encoder->pixel_clock * 10 * 2) / 100); 735 args.v2.usPixelClock = cpu_to_le16((radeon_encoder->pixel_clock / 2) / 10);
741 args.v2.acConfig.fDualLinkConnector = 1;
742 } else {
743 args.v2.usPixelClock = cpu_to_le16((radeon_encoder->pixel_clock * 10 * 4) / 100);
744 }
745 if (dig->dig_block) 736 if (dig->dig_block)
746 args.v2.acConfig.ucEncoderSel = 1; 737 args.v2.acConfig.ucEncoderSel = 1;
747 738
@@ -766,7 +757,6 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action)
766 } 757 }
767 } else { 758 } else {
768 args.v1.ucConfig = ATOM_TRANSMITTER_CONFIG_CLKSRC_PPLL; 759 args.v1.ucConfig = ATOM_TRANSMITTER_CONFIG_CLKSRC_PPLL;
769 args.v1.usPixelClock = cpu_to_le16((radeon_encoder->pixel_clock) / 10);
770 760
771 switch (radeon_encoder->encoder_id) { 761 switch (radeon_encoder->encoder_id) {
772 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: 762 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
@@ -874,16 +864,9 @@ radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode)
874 DISPLAY_DEVICE_OUTPUT_CONTROL_PS_ALLOCATION args; 864 DISPLAY_DEVICE_OUTPUT_CONTROL_PS_ALLOCATION args;
875 int index = 0; 865 int index = 0;
876 bool is_dig = false; 866 bool is_dig = false;
877 int devices;
878 867
879 memset(&args, 0, sizeof(args)); 868 memset(&args, 0, sizeof(args));
880 869
881 /* on DPMS off we have no idea if active device is meaningful */
882 if (mode != DRM_MODE_DPMS_ON && !radeon_encoder->active_device)
883 devices = radeon_encoder->devices;
884 else
885 devices = radeon_encoder->active_device;
886
887 DRM_DEBUG("encoder dpms %d to mode %d, devices %08x, active_devices %08x\n", 870 DRM_DEBUG("encoder dpms %d to mode %d, devices %08x, active_devices %08x\n",
888 radeon_encoder->encoder_id, mode, radeon_encoder->devices, 871 radeon_encoder->encoder_id, mode, radeon_encoder->devices,
889 radeon_encoder->active_device); 872 radeon_encoder->active_device);
@@ -914,18 +897,18 @@ radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode)
914 break; 897 break;
915 case ENCODER_OBJECT_ID_INTERNAL_DAC1: 898 case ENCODER_OBJECT_ID_INTERNAL_DAC1:
916 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1: 899 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1:
917 if (devices & (ATOM_DEVICE_TV_SUPPORT)) 900 if (radeon_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT))
918 index = GetIndexIntoMasterTable(COMMAND, TV1OutputControl); 901 index = GetIndexIntoMasterTable(COMMAND, TV1OutputControl);
919 else if (devices & (ATOM_DEVICE_CV_SUPPORT)) 902 else if (radeon_encoder->active_device & (ATOM_DEVICE_CV_SUPPORT))
920 index = GetIndexIntoMasterTable(COMMAND, CV1OutputControl); 903 index = GetIndexIntoMasterTable(COMMAND, CV1OutputControl);
921 else 904 else
922 index = GetIndexIntoMasterTable(COMMAND, DAC1OutputControl); 905 index = GetIndexIntoMasterTable(COMMAND, DAC1OutputControl);
923 break; 906 break;
924 case ENCODER_OBJECT_ID_INTERNAL_DAC2: 907 case ENCODER_OBJECT_ID_INTERNAL_DAC2:
925 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2: 908 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2:
926 if (devices & (ATOM_DEVICE_TV_SUPPORT)) 909 if (radeon_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT))
927 index = GetIndexIntoMasterTable(COMMAND, TV1OutputControl); 910 index = GetIndexIntoMasterTable(COMMAND, TV1OutputControl);
928 else if (devices & (ATOM_DEVICE_CV_SUPPORT)) 911 else if (radeon_encoder->active_device & (ATOM_DEVICE_CV_SUPPORT))
929 index = GetIndexIntoMasterTable(COMMAND, CV1OutputControl); 912 index = GetIndexIntoMasterTable(COMMAND, CV1OutputControl);
930 else 913 else
931 index = GetIndexIntoMasterTable(COMMAND, DAC2OutputControl); 914 index = GetIndexIntoMasterTable(COMMAND, DAC2OutputControl);
@@ -1104,8 +1087,11 @@ atombios_apply_encoder_quirks(struct drm_encoder *encoder,
1104 } 1087 }
1105 1088
1106 /* set scaler clears this on some chips */ 1089 /* set scaler clears this on some chips */
1107 if (ASIC_IS_AVIVO(rdev) && (mode->flags & DRM_MODE_FLAG_INTERLACE)) 1090 if (!(radeon_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT))) {
1108 WREG32(AVIVO_D1MODE_DATA_FORMAT + radeon_crtc->crtc_offset, AVIVO_D1MODE_INTERLEAVE_EN); 1091 if (ASIC_IS_AVIVO(rdev) && (mode->flags & DRM_MODE_FLAG_INTERLACE))
1092 WREG32(AVIVO_D1MODE_DATA_FORMAT + radeon_crtc->crtc_offset,
1093 AVIVO_D1MODE_INTERLEAVE_EN);
1094 }
1109} 1095}
1110 1096
1111static void 1097static void
@@ -1153,6 +1139,7 @@ radeon_atom_encoder_mode_set(struct drm_encoder *encoder,
1153 1139
1154 /* setup and enable the encoder and transmitter */ 1140 /* setup and enable the encoder and transmitter */
1155 atombios_dig_encoder_setup(encoder, ATOM_ENABLE); 1141 atombios_dig_encoder_setup(encoder, ATOM_ENABLE);
1142 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_INIT);
1156 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_SETUP); 1143 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_SETUP);
1157 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE); 1144 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE);
1158 break; 1145 break;
@@ -1268,8 +1255,6 @@ static void radeon_atom_encoder_prepare(struct drm_encoder *encoder)
1268{ 1255{
1269 radeon_atom_output_lock(encoder, true); 1256 radeon_atom_output_lock(encoder, true);
1270 radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_OFF); 1257 radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_OFF);
1271
1272 radeon_encoder_set_active_device(encoder);
1273} 1258}
1274 1259
1275static void radeon_atom_encoder_commit(struct drm_encoder *encoder) 1260static void radeon_atom_encoder_commit(struct drm_encoder *encoder)
diff --git a/drivers/gpu/drm/radeon/radeon_gart.c b/drivers/gpu/drm/radeon/radeon_gart.c
index a931af065dd4..a68d7566178c 100644
--- a/drivers/gpu/drm/radeon/radeon_gart.c
+++ b/drivers/gpu/drm/radeon/radeon_gart.c
@@ -140,15 +140,15 @@ void radeon_gart_unbind(struct radeon_device *rdev, unsigned offset,
140 WARN(1, "trying to unbind memory to unitialized GART !\n"); 140 WARN(1, "trying to unbind memory to unitialized GART !\n");
141 return; 141 return;
142 } 142 }
143 t = offset / 4096; 143 t = offset / RADEON_GPU_PAGE_SIZE;
144 p = t / (PAGE_SIZE / 4096); 144 p = t / (PAGE_SIZE / RADEON_GPU_PAGE_SIZE);
145 for (i = 0; i < pages; i++, p++) { 145 for (i = 0; i < pages; i++, p++) {
146 if (rdev->gart.pages[p]) { 146 if (rdev->gart.pages[p]) {
147 pci_unmap_page(rdev->pdev, rdev->gart.pages_addr[p], 147 pci_unmap_page(rdev->pdev, rdev->gart.pages_addr[p],
148 PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); 148 PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);
149 rdev->gart.pages[p] = NULL; 149 rdev->gart.pages[p] = NULL;
150 rdev->gart.pages_addr[p] = 0; 150 rdev->gart.pages_addr[p] = 0;
151 for (j = 0; j < (PAGE_SIZE / 4096); j++, t++) { 151 for (j = 0; j < (PAGE_SIZE / RADEON_GPU_PAGE_SIZE); j++, t++) {
152 radeon_gart_set_page(rdev, t, 0); 152 radeon_gart_set_page(rdev, t, 0);
153 } 153 }
154 } 154 }
@@ -169,8 +169,8 @@ int radeon_gart_bind(struct radeon_device *rdev, unsigned offset,
169 DRM_ERROR("trying to bind memory to unitialized GART !\n"); 169 DRM_ERROR("trying to bind memory to unitialized GART !\n");
170 return -EINVAL; 170 return -EINVAL;
171 } 171 }
172 t = offset / 4096; 172 t = offset / RADEON_GPU_PAGE_SIZE;
173 p = t / (PAGE_SIZE / 4096); 173 p = t / (PAGE_SIZE / RADEON_GPU_PAGE_SIZE);
174 174
175 for (i = 0; i < pages; i++, p++) { 175 for (i = 0; i < pages; i++, p++) {
176 /* we need to support large memory configurations */ 176 /* we need to support large memory configurations */
@@ -185,9 +185,9 @@ int radeon_gart_bind(struct radeon_device *rdev, unsigned offset,
185 } 185 }
186 rdev->gart.pages[p] = pagelist[i]; 186 rdev->gart.pages[p] = pagelist[i];
187 page_base = rdev->gart.pages_addr[p]; 187 page_base = rdev->gart.pages_addr[p];
188 for (j = 0; j < (PAGE_SIZE / 4096); j++, t++) { 188 for (j = 0; j < (PAGE_SIZE / RADEON_GPU_PAGE_SIZE); j++, t++) {
189 radeon_gart_set_page(rdev, t, page_base); 189 radeon_gart_set_page(rdev, t, page_base);
190 page_base += 4096; 190 page_base += RADEON_GPU_PAGE_SIZE;
191 } 191 }
192 } 192 }
193 mb(); 193 mb();
@@ -200,14 +200,14 @@ int radeon_gart_init(struct radeon_device *rdev)
200 if (rdev->gart.pages) { 200 if (rdev->gart.pages) {
201 return 0; 201 return 0;
202 } 202 }
203 /* We need PAGE_SIZE >= 4096 */ 203 /* We need PAGE_SIZE >= RADEON_GPU_PAGE_SIZE */
204 if (PAGE_SIZE < 4096) { 204 if (PAGE_SIZE < RADEON_GPU_PAGE_SIZE) {
205 DRM_ERROR("Page size is smaller than GPU page size!\n"); 205 DRM_ERROR("Page size is smaller than GPU page size!\n");
206 return -EINVAL; 206 return -EINVAL;
207 } 207 }
208 /* Compute table size */ 208 /* Compute table size */
209 rdev->gart.num_cpu_pages = rdev->mc.gtt_size / PAGE_SIZE; 209 rdev->gart.num_cpu_pages = rdev->mc.gtt_size / PAGE_SIZE;
210 rdev->gart.num_gpu_pages = rdev->mc.gtt_size / 4096; 210 rdev->gart.num_gpu_pages = rdev->mc.gtt_size / RADEON_GPU_PAGE_SIZE;
211 DRM_INFO("GART: num cpu pages %u, num gpu pages %u\n", 211 DRM_INFO("GART: num cpu pages %u, num gpu pages %u\n",
212 rdev->gart.num_cpu_pages, rdev->gart.num_gpu_pages); 212 rdev->gart.num_cpu_pages, rdev->gart.num_gpu_pages);
213 /* Allocate pages table */ 213 /* Allocate pages table */
diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c
index 8e0a8759e428..a0fe6232dcb6 100644
--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
@@ -92,6 +92,13 @@ int radeon_irq_kms_init(struct radeon_device *rdev)
92 if (r) { 92 if (r) {
93 return r; 93 return r;
94 } 94 }
95 /* enable msi */
96 rdev->msi_enabled = 0;
97 if (rdev->family >= CHIP_RV380) {
98 int ret = pci_enable_msi(rdev->pdev);
99 if (!ret)
100 rdev->msi_enabled = 1;
101 }
95 drm_irq_install(rdev->ddev); 102 drm_irq_install(rdev->ddev);
96 rdev->irq.installed = true; 103 rdev->irq.installed = true;
97 DRM_INFO("radeon: irq initialized.\n"); 104 DRM_INFO("radeon: irq initialized.\n");
@@ -103,5 +110,7 @@ void radeon_irq_kms_fini(struct radeon_device *rdev)
103 if (rdev->irq.installed) { 110 if (rdev->irq.installed) {
104 rdev->irq.installed = false; 111 rdev->irq.installed = false;
105 drm_irq_uninstall(rdev->ddev); 112 drm_irq_uninstall(rdev->ddev);
113 if (rdev->msi_enabled)
114 pci_disable_msi(rdev->pdev);
106 } 115 }
107} 116}
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
index 36410f85d705..8d0b7aa87fa4 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
@@ -48,7 +48,7 @@ static void radeon_legacy_rmx_mode_set(struct drm_crtc *crtc,
48 u32 fp_horz_stretch, fp_vert_stretch, fp_horz_vert_active; 48 u32 fp_horz_stretch, fp_vert_stretch, fp_horz_vert_active;
49 u32 fp_h_sync_strt_wid, fp_crtc_h_total_disp; 49 u32 fp_h_sync_strt_wid, fp_crtc_h_total_disp;
50 u32 fp_v_sync_strt_wid, fp_crtc_v_total_disp; 50 u32 fp_v_sync_strt_wid, fp_crtc_v_total_disp;
51 struct radeon_native_mode *native_mode = &radeon_crtc->native_mode; 51 struct drm_display_mode *native_mode = &radeon_crtc->native_mode;
52 52
53 fp_vert_stretch = RREG32(RADEON_FP_VERT_STRETCH) & 53 fp_vert_stretch = RREG32(RADEON_FP_VERT_STRETCH) &
54 (RADEON_VERT_STRETCH_RESERVED | 54 (RADEON_VERT_STRETCH_RESERVED |
@@ -95,19 +95,19 @@ static void radeon_legacy_rmx_mode_set(struct drm_crtc *crtc,
95 95
96 fp_horz_vert_active = 0; 96 fp_horz_vert_active = 0;
97 97
98 if (native_mode->panel_xres == 0 || 98 if (native_mode->hdisplay == 0 ||
99 native_mode->panel_yres == 0) { 99 native_mode->vdisplay == 0) {
100 hscale = false; 100 hscale = false;
101 vscale = false; 101 vscale = false;
102 } else { 102 } else {
103 if (xres > native_mode->panel_xres) 103 if (xres > native_mode->hdisplay)
104 xres = native_mode->panel_xres; 104 xres = native_mode->hdisplay;
105 if (yres > native_mode->panel_yres) 105 if (yres > native_mode->vdisplay)
106 yres = native_mode->panel_yres; 106 yres = native_mode->vdisplay;
107 107
108 if (xres == native_mode->panel_xres) 108 if (xres == native_mode->hdisplay)
109 hscale = false; 109 hscale = false;
110 if (yres == native_mode->panel_yres) 110 if (yres == native_mode->vdisplay)
111 vscale = false; 111 vscale = false;
112 } 112 }
113 113
@@ -119,11 +119,11 @@ static void radeon_legacy_rmx_mode_set(struct drm_crtc *crtc,
119 else { 119 else {
120 inc = (fp_horz_stretch & RADEON_HORZ_AUTO_RATIO_INC) ? 1 : 0; 120 inc = (fp_horz_stretch & RADEON_HORZ_AUTO_RATIO_INC) ? 1 : 0;
121 scale = ((xres + inc) * RADEON_HORZ_STRETCH_RATIO_MAX) 121 scale = ((xres + inc) * RADEON_HORZ_STRETCH_RATIO_MAX)
122 / native_mode->panel_xres + 1; 122 / native_mode->hdisplay + 1;
123 fp_horz_stretch |= (((scale) & RADEON_HORZ_STRETCH_RATIO_MASK) | 123 fp_horz_stretch |= (((scale) & RADEON_HORZ_STRETCH_RATIO_MASK) |
124 RADEON_HORZ_STRETCH_BLEND | 124 RADEON_HORZ_STRETCH_BLEND |
125 RADEON_HORZ_STRETCH_ENABLE | 125 RADEON_HORZ_STRETCH_ENABLE |
126 ((native_mode->panel_xres/8-1) << 16)); 126 ((native_mode->hdisplay/8-1) << 16));
127 } 127 }
128 128
129 if (!vscale) 129 if (!vscale)
@@ -131,11 +131,11 @@ static void radeon_legacy_rmx_mode_set(struct drm_crtc *crtc,
131 else { 131 else {
132 inc = (fp_vert_stretch & RADEON_VERT_AUTO_RATIO_INC) ? 1 : 0; 132 inc = (fp_vert_stretch & RADEON_VERT_AUTO_RATIO_INC) ? 1 : 0;
133 scale = ((yres + inc) * RADEON_VERT_STRETCH_RATIO_MAX) 133 scale = ((yres + inc) * RADEON_VERT_STRETCH_RATIO_MAX)
134 / native_mode->panel_yres + 1; 134 / native_mode->vdisplay + 1;
135 fp_vert_stretch |= (((scale) & RADEON_VERT_STRETCH_RATIO_MASK) | 135 fp_vert_stretch |= (((scale) & RADEON_VERT_STRETCH_RATIO_MASK) |
136 RADEON_VERT_STRETCH_ENABLE | 136 RADEON_VERT_STRETCH_ENABLE |
137 RADEON_VERT_STRETCH_BLEND | 137 RADEON_VERT_STRETCH_BLEND |
138 ((native_mode->panel_yres-1) << 12)); 138 ((native_mode->vdisplay-1) << 12));
139 } 139 }
140 break; 140 break;
141 case RMX_CENTER: 141 case RMX_CENTER:
@@ -175,8 +175,8 @@ static void radeon_legacy_rmx_mode_set(struct drm_crtc *crtc,
175 ? RADEON_CRTC_V_SYNC_POL 175 ? RADEON_CRTC_V_SYNC_POL
176 : 0))); 176 : 0)));
177 177
178 fp_horz_vert_active = (((native_mode->panel_yres) & 0xfff) | 178 fp_horz_vert_active = (((native_mode->vdisplay) & 0xfff) |
179 (((native_mode->panel_xres / 8) & 0x1ff) << 16)); 179 (((native_mode->hdisplay / 8) & 0x1ff) << 16));
180 break; 180 break;
181 case RMX_OFF: 181 case RMX_OFF:
182 default: 182 default:
@@ -532,6 +532,10 @@ int radeon_crtc_set_base(struct drm_crtc *crtc, int x, int y,
532 radeon_fb = to_radeon_framebuffer(old_fb); 532 radeon_fb = to_radeon_framebuffer(old_fb);
533 radeon_gem_object_unpin(radeon_fb->obj); 533 radeon_gem_object_unpin(radeon_fb->obj);
534 } 534 }
535
536 /* Bytes per pixel may have changed */
537 radeon_bandwidth_update(rdev);
538
535 return 0; 539 return 0;
536} 540}
537 541
@@ -664,6 +668,9 @@ static bool radeon_set_crtc_timing(struct drm_crtc *crtc, struct drm_display_mod
664 668
665 WREG32(RADEON_DISP2_MERGE_CNTL, disp2_merge_cntl); 669 WREG32(RADEON_DISP2_MERGE_CNTL, disp2_merge_cntl);
666 WREG32(RADEON_CRTC2_GEN_CNTL, crtc2_gen_cntl); 670 WREG32(RADEON_CRTC2_GEN_CNTL, crtc2_gen_cntl);
671
672 WREG32(RADEON_FP_H2_SYNC_STRT_WID, crtc_h_sync_strt_wid);
673 WREG32(RADEON_FP_V2_SYNC_STRT_WID, crtc_v_sync_strt_wid);
667 } else { 674 } else {
668 uint32_t crtc_gen_cntl; 675 uint32_t crtc_gen_cntl;
669 uint32_t crtc_ext_cntl; 676 uint32_t crtc_ext_cntl;
@@ -1015,14 +1022,11 @@ static int radeon_crtc_mode_set(struct drm_crtc *crtc,
1015 int x, int y, struct drm_framebuffer *old_fb) 1022 int x, int y, struct drm_framebuffer *old_fb)
1016{ 1023{
1017 struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); 1024 struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
1018 struct drm_device *dev = crtc->dev;
1019 struct radeon_device *rdev = dev->dev_private;
1020 1025
1021 /* TODO TV */ 1026 /* TODO TV */
1022 radeon_crtc_set_base(crtc, x, y, old_fb); 1027 radeon_crtc_set_base(crtc, x, y, old_fb);
1023 radeon_set_crtc_timing(crtc, adjusted_mode); 1028 radeon_set_crtc_timing(crtc, adjusted_mode);
1024 radeon_set_pll(crtc, adjusted_mode); 1029 radeon_set_pll(crtc, adjusted_mode);
1025 radeon_bandwidth_update(rdev);
1026 if (radeon_crtc->crtc_id == 0) { 1030 if (radeon_crtc->crtc_id == 0) {
1027 radeon_legacy_rmx_mode_set(crtc, mode, adjusted_mode); 1031 radeon_legacy_rmx_mode_set(crtc, mode, adjusted_mode);
1028 } else { 1032 } else {
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
index 6ceb958fd194..00382122869b 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
@@ -107,8 +107,6 @@ static void radeon_legacy_lvds_prepare(struct drm_encoder *encoder)
107 else 107 else
108 radeon_combios_output_lock(encoder, true); 108 radeon_combios_output_lock(encoder, true);
109 radeon_legacy_lvds_dpms(encoder, DRM_MODE_DPMS_OFF); 109 radeon_legacy_lvds_dpms(encoder, DRM_MODE_DPMS_OFF);
110
111 radeon_encoder_set_active_device(encoder);
112} 110}
113 111
114static void radeon_legacy_lvds_commit(struct drm_encoder *encoder) 112static void radeon_legacy_lvds_commit(struct drm_encoder *encoder)
@@ -192,6 +190,8 @@ static bool radeon_legacy_lvds_mode_fixup(struct drm_encoder *encoder,
192{ 190{
193 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 191 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
194 192
193 /* set the active encoder to connector routing */
194 radeon_encoder_set_active_device(encoder);
195 drm_mode_set_crtcinfo(adjusted_mode, 0); 195 drm_mode_set_crtcinfo(adjusted_mode, 0);
196 196
197 if (radeon_encoder->rmx_type != RMX_OFF) 197 if (radeon_encoder->rmx_type != RMX_OFF)
@@ -218,7 +218,8 @@ static bool radeon_legacy_primary_dac_mode_fixup(struct drm_encoder *encoder,
218 struct drm_display_mode *mode, 218 struct drm_display_mode *mode,
219 struct drm_display_mode *adjusted_mode) 219 struct drm_display_mode *adjusted_mode)
220{ 220{
221 221 /* set the active encoder to connector routing */
222 radeon_encoder_set_active_device(encoder);
222 drm_mode_set_crtcinfo(adjusted_mode, 0); 223 drm_mode_set_crtcinfo(adjusted_mode, 0);
223 224
224 return true; 225 return true;
@@ -272,7 +273,6 @@ static void radeon_legacy_primary_dac_prepare(struct drm_encoder *encoder)
272 else 273 else
273 radeon_combios_output_lock(encoder, true); 274 radeon_combios_output_lock(encoder, true);
274 radeon_legacy_primary_dac_dpms(encoder, DRM_MODE_DPMS_OFF); 275 radeon_legacy_primary_dac_dpms(encoder, DRM_MODE_DPMS_OFF);
275 radeon_encoder_set_active_device(encoder);
276} 276}
277 277
278static void radeon_legacy_primary_dac_commit(struct drm_encoder *encoder) 278static void radeon_legacy_primary_dac_commit(struct drm_encoder *encoder)
@@ -468,7 +468,6 @@ static void radeon_legacy_tmds_int_prepare(struct drm_encoder *encoder)
468 else 468 else
469 radeon_combios_output_lock(encoder, true); 469 radeon_combios_output_lock(encoder, true);
470 radeon_legacy_tmds_int_dpms(encoder, DRM_MODE_DPMS_OFF); 470 radeon_legacy_tmds_int_dpms(encoder, DRM_MODE_DPMS_OFF);
471 radeon_encoder_set_active_device(encoder);
472} 471}
473 472
474static void radeon_legacy_tmds_int_commit(struct drm_encoder *encoder) 473static void radeon_legacy_tmds_int_commit(struct drm_encoder *encoder)
@@ -543,6 +542,14 @@ static void radeon_legacy_tmds_int_mode_set(struct drm_encoder *encoder,
543 542
544 fp_gen_cntl &= ~(RADEON_FP_FPON | RADEON_FP_TMDS_EN); 543 fp_gen_cntl &= ~(RADEON_FP_FPON | RADEON_FP_TMDS_EN);
545 544
545 fp_gen_cntl &= ~(RADEON_FP_RMX_HVSYNC_CONTROL_EN |
546 RADEON_FP_DFP_SYNC_SEL |
547 RADEON_FP_CRT_SYNC_SEL |
548 RADEON_FP_CRTC_LOCK_8DOT |
549 RADEON_FP_USE_SHADOW_EN |
550 RADEON_FP_CRTC_USE_SHADOW_VEND |
551 RADEON_FP_CRT_SYNC_ALT);
552
546 if (1) /* FIXME rgbBits == 8 */ 553 if (1) /* FIXME rgbBits == 8 */
547 fp_gen_cntl |= RADEON_FP_PANEL_FORMAT; /* 24 bit format */ 554 fp_gen_cntl |= RADEON_FP_PANEL_FORMAT; /* 24 bit format */
548 else 555 else
@@ -556,7 +563,7 @@ static void radeon_legacy_tmds_int_mode_set(struct drm_encoder *encoder,
556 else 563 else
557 fp_gen_cntl |= R200_FP_SOURCE_SEL_CRTC1; 564 fp_gen_cntl |= R200_FP_SOURCE_SEL_CRTC1;
558 } else 565 } else
559 fp_gen_cntl |= RADEON_FP_SEL_CRTC1; 566 fp_gen_cntl &= ~RADEON_FP_SEL_CRTC2;
560 } else { 567 } else {
561 if (ASIC_IS_R300(rdev) || rdev->family == CHIP_R200) { 568 if (ASIC_IS_R300(rdev) || rdev->family == CHIP_R200) {
562 fp_gen_cntl &= ~R200_FP_SOURCE_SEL_MASK; 569 fp_gen_cntl &= ~R200_FP_SOURCE_SEL_MASK;
@@ -593,7 +600,8 @@ static bool radeon_legacy_tmds_ext_mode_fixup(struct drm_encoder *encoder,
593 struct drm_display_mode *mode, 600 struct drm_display_mode *mode,
594 struct drm_display_mode *adjusted_mode) 601 struct drm_display_mode *adjusted_mode)
595{ 602{
596 603 /* set the active encoder to connector routing */
604 radeon_encoder_set_active_device(encoder);
597 drm_mode_set_crtcinfo(adjusted_mode, 0); 605 drm_mode_set_crtcinfo(adjusted_mode, 0);
598 606
599 return true; 607 return true;
@@ -636,7 +644,6 @@ static void radeon_legacy_tmds_ext_prepare(struct drm_encoder *encoder)
636 else 644 else
637 radeon_combios_output_lock(encoder, true); 645 radeon_combios_output_lock(encoder, true);
638 radeon_legacy_tmds_ext_dpms(encoder, DRM_MODE_DPMS_OFF); 646 radeon_legacy_tmds_ext_dpms(encoder, DRM_MODE_DPMS_OFF);
639 radeon_encoder_set_active_device(encoder);
640} 647}
641 648
642static void radeon_legacy_tmds_ext_commit(struct drm_encoder *encoder) 649static void radeon_legacy_tmds_ext_commit(struct drm_encoder *encoder)
@@ -735,7 +742,8 @@ static bool radeon_legacy_tv_dac_mode_fixup(struct drm_encoder *encoder,
735 struct drm_display_mode *mode, 742 struct drm_display_mode *mode,
736 struct drm_display_mode *adjusted_mode) 743 struct drm_display_mode *adjusted_mode)
737{ 744{
738 745 /* set the active encoder to connector routing */
746 radeon_encoder_set_active_device(encoder);
739 drm_mode_set_crtcinfo(adjusted_mode, 0); 747 drm_mode_set_crtcinfo(adjusted_mode, 0);
740 748
741 return true; 749 return true;
@@ -839,7 +847,6 @@ static void radeon_legacy_tv_dac_prepare(struct drm_encoder *encoder)
839 else 847 else
840 radeon_combios_output_lock(encoder, true); 848 radeon_combios_output_lock(encoder, true);
841 radeon_legacy_tv_dac_dpms(encoder, DRM_MODE_DPMS_OFF); 849 radeon_legacy_tv_dac_dpms(encoder, DRM_MODE_DPMS_OFF);
842 radeon_encoder_set_active_device(encoder);
843} 850}
844 851
845static void radeon_legacy_tv_dac_commit(struct drm_encoder *encoder) 852static void radeon_legacy_tv_dac_commit(struct drm_encoder *encoder)
diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h
index e61226817ccf..ace726aa0d76 100644
--- a/drivers/gpu/drm/radeon/radeon_mode.h
+++ b/drivers/gpu/drm/radeon/radeon_mode.h
@@ -172,6 +172,7 @@ enum radeon_connector_table {
172 172
173struct radeon_mode_info { 173struct radeon_mode_info {
174 struct atom_context *atom_context; 174 struct atom_context *atom_context;
175 struct card_info *atom_card_info;
175 enum radeon_connector_table connector_table; 176 enum radeon_connector_table connector_table;
176 bool mode_config_initialized; 177 bool mode_config_initialized;
177 struct radeon_crtc *crtcs[2]; 178 struct radeon_crtc *crtcs[2];
@@ -186,17 +187,6 @@ struct radeon_mode_info {
186 187
187}; 188};
188 189
189struct radeon_native_mode {
190 /* preferred mode */
191 uint32_t panel_xres, panel_yres;
192 uint32_t hoverplus, hsync_width;
193 uint32_t hblank;
194 uint32_t voverplus, vsync_width;
195 uint32_t vblank;
196 uint32_t dotclock;
197 uint32_t flags;
198};
199
200#define MAX_H_CODE_TIMING_LEN 32 190#define MAX_H_CODE_TIMING_LEN 32
201#define MAX_V_CODE_TIMING_LEN 32 191#define MAX_V_CODE_TIMING_LEN 32
202 192
@@ -228,7 +218,7 @@ struct radeon_crtc {
228 enum radeon_rmx_type rmx_type; 218 enum radeon_rmx_type rmx_type;
229 fixed20_12 vsc; 219 fixed20_12 vsc;
230 fixed20_12 hsc; 220 fixed20_12 hsc;
231 struct radeon_native_mode native_mode; 221 struct drm_display_mode native_mode;
232}; 222};
233 223
234struct radeon_encoder_primary_dac { 224struct radeon_encoder_primary_dac {
@@ -248,7 +238,7 @@ struct radeon_encoder_lvds {
248 bool use_bios_dividers; 238 bool use_bios_dividers;
249 uint32_t lvds_gen_cntl; 239 uint32_t lvds_gen_cntl;
250 /* panel mode */ 240 /* panel mode */
251 struct radeon_native_mode native_mode; 241 struct drm_display_mode native_mode;
252}; 242};
253 243
254struct radeon_encoder_tv_dac { 244struct radeon_encoder_tv_dac {
@@ -271,6 +261,16 @@ struct radeon_encoder_int_tmds {
271 struct radeon_tmds_pll tmds_pll[4]; 261 struct radeon_tmds_pll tmds_pll[4];
272}; 262};
273 263
264/* spread spectrum */
265struct radeon_atom_ss {
266 uint16_t percentage;
267 uint8_t type;
268 uint8_t step;
269 uint8_t delay;
270 uint8_t range;
271 uint8_t refdiv;
272};
273
274struct radeon_encoder_atom_dig { 274struct radeon_encoder_atom_dig {
275 /* atom dig */ 275 /* atom dig */
276 bool coherent_mode; 276 bool coherent_mode;
@@ -278,8 +278,9 @@ struct radeon_encoder_atom_dig {
278 /* atom lvds */ 278 /* atom lvds */
279 uint32_t lvds_misc; 279 uint32_t lvds_misc;
280 uint16_t panel_pwr_delay; 280 uint16_t panel_pwr_delay;
281 struct radeon_atom_ss *ss;
281 /* panel mode */ 282 /* panel mode */
282 struct radeon_native_mode native_mode; 283 struct drm_display_mode native_mode;
283}; 284};
284 285
285struct radeon_encoder_atom_dac { 286struct radeon_encoder_atom_dac {
@@ -294,7 +295,7 @@ struct radeon_encoder {
294 uint32_t flags; 295 uint32_t flags;
295 uint32_t pixel_clock; 296 uint32_t pixel_clock;
296 enum radeon_rmx_type rmx_type; 297 enum radeon_rmx_type rmx_type;
297 struct radeon_native_mode native_mode; 298 struct drm_display_mode native_mode;
298 void *enc_priv; 299 void *enc_priv;
299}; 300};
300 301
@@ -308,12 +309,15 @@ struct radeon_connector {
308 uint32_t connector_id; 309 uint32_t connector_id;
309 uint32_t devices; 310 uint32_t devices;
310 struct radeon_i2c_chan *ddc_bus; 311 struct radeon_i2c_chan *ddc_bus;
312 /* some systems have a an hdmi and vga port with a shared ddc line */
313 bool shared_ddc;
311 bool use_digital; 314 bool use_digital;
312 /* we need to mind the EDID between detect 315 /* we need to mind the EDID between detect
313 and get modes due to analog/digital/tvencoder */ 316 and get modes due to analog/digital/tvencoder */
314 struct edid *edid; 317 struct edid *edid;
315 void *con_priv; 318 void *con_priv;
316 bool dac_load_detect; 319 bool dac_load_detect;
320 uint16_t connector_object_id;
317}; 321};
318 322
319struct radeon_framebuffer { 323struct radeon_framebuffer {
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c
new file mode 100644
index 000000000000..46146c6a2a06
--- /dev/null
+++ b/drivers/gpu/drm/radeon/radeon_pm.c
@@ -0,0 +1,65 @@
1/*
2 * Permission is hereby granted, free of charge, to any person obtaining a
3 * copy of this software and associated documentation files (the "Software"),
4 * to deal in the Software without restriction, including without limitation
5 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
6 * and/or sell copies of the Software, and to permit persons to whom the
7 * Software is furnished to do so, subject to the following conditions:
8 *
9 * The above copyright notice and this permission notice shall be included in
10 * all copies or substantial portions of the Software.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
15 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
16 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
17 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
18 * OTHER DEALINGS IN THE SOFTWARE.
19 *
20 * Authors: Rafał Miłecki <zajec5@gmail.com>
21 */
22#include "drmP.h"
23#include "radeon.h"
24
25int radeon_debugfs_pm_init(struct radeon_device *rdev);
26
27int radeon_pm_init(struct radeon_device *rdev)
28{
29 if (radeon_debugfs_pm_init(rdev)) {
30 DRM_ERROR("Failed to register debugfs file for CP !\n");
31 }
32
33 return 0;
34}
35
36/*
37 * Debugfs info
38 */
39#if defined(CONFIG_DEBUG_FS)
40
41static int radeon_debugfs_pm_info(struct seq_file *m, void *data)
42{
43 struct drm_info_node *node = (struct drm_info_node *) m->private;
44 struct drm_device *dev = node->minor->dev;
45 struct radeon_device *rdev = dev->dev_private;
46
47 seq_printf(m, "engine clock: %u0 Hz\n", radeon_get_engine_clock(rdev));
48 seq_printf(m, "memory clock: %u0 Hz\n", radeon_get_memory_clock(rdev));
49
50 return 0;
51}
52
53static struct drm_info_list radeon_pm_info_list[] = {
54 {"radeon_pm_info", radeon_debugfs_pm_info, 0, NULL},
55};
56#endif
57
58int radeon_debugfs_pm_init(struct radeon_device *rdev)
59{
60#if defined(CONFIG_DEBUG_FS)
61 return radeon_debugfs_add_files(rdev, radeon_pm_info_list, ARRAY_SIZE(radeon_pm_info_list));
62#else
63 return 0;
64#endif
65}
diff --git a/drivers/gpu/drm/radeon/radeon_reg.h b/drivers/gpu/drm/radeon/radeon_reg.h
index bfa1ab9c93e1..29ab75903ec1 100644
--- a/drivers/gpu/drm/radeon/radeon_reg.h
+++ b/drivers/gpu/drm/radeon/radeon_reg.h
@@ -290,6 +290,8 @@
290#define RADEON_BUS_CNTL 0x0030 290#define RADEON_BUS_CNTL 0x0030
291# define RADEON_BUS_MASTER_DIS (1 << 6) 291# define RADEON_BUS_MASTER_DIS (1 << 6)
292# define RADEON_BUS_BIOS_DIS_ROM (1 << 12) 292# define RADEON_BUS_BIOS_DIS_ROM (1 << 12)
293# define RS600_BUS_MASTER_DIS (1 << 14)
294# define RS600_MSI_REARM (1 << 20) /* rs600/rs690/rs740 */
293# define RADEON_BUS_RD_DISCARD_EN (1 << 24) 295# define RADEON_BUS_RD_DISCARD_EN (1 << 24)
294# define RADEON_BUS_RD_ABORT_EN (1 << 25) 296# define RADEON_BUS_RD_ABORT_EN (1 << 25)
295# define RADEON_BUS_MSTR_DISCONNECT_EN (1 << 28) 297# define RADEON_BUS_MSTR_DISCONNECT_EN (1 << 28)
@@ -297,6 +299,9 @@
297# define RADEON_BUS_READ_BURST (1 << 30) 299# define RADEON_BUS_READ_BURST (1 << 30)
298#define RADEON_BUS_CNTL1 0x0034 300#define RADEON_BUS_CNTL1 0x0034
299# define RADEON_BUS_WAIT_ON_LOCK_EN (1 << 4) 301# define RADEON_BUS_WAIT_ON_LOCK_EN (1 << 4)
302/* rv370/rv380, rv410, r423/r430/r480, r5xx */
303#define RADEON_MSI_REARM_EN 0x0160
304# define RV370_MSI_REARM_EN (1 << 0)
300 305
301/* #define RADEON_PCIE_INDEX 0x0030 */ 306/* #define RADEON_PCIE_INDEX 0x0030 */
302/* #define RADEON_PCIE_DATA 0x0034 */ 307/* #define RADEON_PCIE_DATA 0x0034 */
@@ -3311,6 +3316,7 @@
3311#define RADEON_AIC_CNTL 0x01d0 3316#define RADEON_AIC_CNTL 0x01d0
3312# define RADEON_PCIGART_TRANSLATE_EN (1 << 0) 3317# define RADEON_PCIGART_TRANSLATE_EN (1 << 0)
3313# define RADEON_DIS_OUT_OF_PCI_GART_ACCESS (1 << 1) 3318# define RADEON_DIS_OUT_OF_PCI_GART_ACCESS (1 << 1)
3319# define RS400_MSI_REARM (1 << 3) /* rs400/rs480 */
3314#define RADEON_AIC_LO_ADDR 0x01dc 3320#define RADEON_AIC_LO_ADDR 0x01dc
3315#define RADEON_AIC_PT_BASE 0x01d8 3321#define RADEON_AIC_PT_BASE 0x01d8
3316#define RADEON_AIC_HI_ADDR 0x01e0 3322#define RADEON_AIC_HI_ADDR 0x01e0
diff --git a/drivers/gpu/drm/radeon/radeon_test.c b/drivers/gpu/drm/radeon/radeon_test.c
index 03c33cf4e14c..f8a465d9a1cf 100644
--- a/drivers/gpu/drm/radeon/radeon_test.c
+++ b/drivers/gpu/drm/radeon/radeon_test.c
@@ -42,7 +42,7 @@ void radeon_test_moves(struct radeon_device *rdev)
42 /* Number of tests = 42 /* Number of tests =
43 * (Total GTT - IB pool - writeback page - ring buffer) / test size 43 * (Total GTT - IB pool - writeback page - ring buffer) / test size
44 */ 44 */
45 n = (rdev->mc.gtt_size - RADEON_IB_POOL_SIZE*64*1024 - 4096 - 45 n = (rdev->mc.gtt_size - RADEON_IB_POOL_SIZE*64*1024 - RADEON_GPU_PAGE_SIZE -
46 rdev->cp.ring_size) / size; 46 rdev->cp.ring_size) / size;
47 47
48 gtt_obj = kzalloc(n * sizeof(*gtt_obj), GFP_KERNEL); 48 gtt_obj = kzalloc(n * sizeof(*gtt_obj), GFP_KERNEL);
@@ -102,7 +102,7 @@ void radeon_test_moves(struct radeon_device *rdev)
102 goto out_cleanup; 102 goto out_cleanup;
103 } 103 }
104 104
105 r = radeon_copy(rdev, gtt_addr, vram_addr, size / 4096, fence); 105 r = radeon_copy(rdev, gtt_addr, vram_addr, size / RADEON_GPU_PAGE_SIZE, fence);
106 if (r) { 106 if (r) {
107 DRM_ERROR("Failed GTT->VRAM copy %d\n", i); 107 DRM_ERROR("Failed GTT->VRAM copy %d\n", i);
108 goto out_cleanup; 108 goto out_cleanup;
@@ -145,7 +145,7 @@ void radeon_test_moves(struct radeon_device *rdev)
145 goto out_cleanup; 145 goto out_cleanup;
146 } 146 }
147 147
148 r = radeon_copy(rdev, vram_addr, gtt_addr, size / 4096, fence); 148 r = radeon_copy(rdev, vram_addr, gtt_addr, size / RADEON_GPU_PAGE_SIZE, fence);
149 if (r) { 149 if (r) {
150 DRM_ERROR("Failed VRAM->GTT copy %d\n", i); 150 DRM_ERROR("Failed VRAM->GTT copy %d\n", i);
151 goto out_cleanup; 151 goto out_cleanup;
diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
index 765bd184b6fc..1381e06d6af3 100644
--- a/drivers/gpu/drm/radeon/radeon_ttm.c
+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
@@ -295,6 +295,12 @@ static int radeon_move_vram_ram(struct ttm_buffer_object *bo,
295 if (unlikely(r)) { 295 if (unlikely(r)) {
296 return r; 296 return r;
297 } 297 }
298
299 r = ttm_tt_set_placement_caching(bo->ttm, tmp_mem.placement);
300 if (unlikely(r)) {
301 goto out_cleanup;
302 }
303
298 r = ttm_tt_bind(bo->ttm, &tmp_mem); 304 r = ttm_tt_bind(bo->ttm, &tmp_mem);
299 if (unlikely(r)) { 305 if (unlikely(r)) {
300 goto out_cleanup; 306 goto out_cleanup;
diff --git a/drivers/gpu/drm/radeon/rs400.c b/drivers/gpu/drm/radeon/rs400.c
index a769c296f6a6..ca037160a582 100644
--- a/drivers/gpu/drm/radeon/rs400.c
+++ b/drivers/gpu/drm/radeon/rs400.c
@@ -418,6 +418,8 @@ int rs400_resume(struct radeon_device *rdev)
418 rs400_gart_disable(rdev); 418 rs400_gart_disable(rdev);
419 /* Resume clock before doing reset */ 419 /* Resume clock before doing reset */
420 r300_clock_startup(rdev); 420 r300_clock_startup(rdev);
421 /* setup MC before calling post tables */
422 rs400_mc_program(rdev);
421 /* Reset gpu before posting otherwise ATOM will enter infinite loop */ 423 /* Reset gpu before posting otherwise ATOM will enter infinite loop */
422 if (radeon_gpu_reset(rdev)) { 424 if (radeon_gpu_reset(rdev)) {
423 dev_warn(rdev->dev, "GPU reset failed ! (0xE40=0x%08X, 0x7C0=0x%08X)\n", 425 dev_warn(rdev->dev, "GPU reset failed ! (0xE40=0x%08X, 0x7C0=0x%08X)\n",
diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c
index 10dfa78762da..5f117cd8736a 100644
--- a/drivers/gpu/drm/radeon/rs600.c
+++ b/drivers/gpu/drm/radeon/rs600.c
@@ -242,7 +242,7 @@ void rs600_irq_disable(struct radeon_device *rdev)
242 242
243int rs600_irq_process(struct radeon_device *rdev) 243int rs600_irq_process(struct radeon_device *rdev)
244{ 244{
245 uint32_t status; 245 uint32_t status, msi_rearm;
246 uint32_t r500_disp_int; 246 uint32_t r500_disp_int;
247 247
248 status = rs600_irq_ack(rdev, &r500_disp_int); 248 status = rs600_irq_ack(rdev, &r500_disp_int);
@@ -260,6 +260,22 @@ int rs600_irq_process(struct radeon_device *rdev)
260 drm_handle_vblank(rdev->ddev, 1); 260 drm_handle_vblank(rdev->ddev, 1);
261 status = rs600_irq_ack(rdev, &r500_disp_int); 261 status = rs600_irq_ack(rdev, &r500_disp_int);
262 } 262 }
263 if (rdev->msi_enabled) {
264 switch (rdev->family) {
265 case CHIP_RS600:
266 case CHIP_RS690:
267 case CHIP_RS740:
268 msi_rearm = RREG32(RADEON_BUS_CNTL) & ~RS600_MSI_REARM;
269 WREG32(RADEON_BUS_CNTL, msi_rearm);
270 WREG32(RADEON_BUS_CNTL, msi_rearm | RS600_MSI_REARM);
271 break;
272 default:
273 msi_rearm = RREG32(RADEON_MSI_REARM_EN) & ~RV370_MSI_REARM_EN;
274 WREG32(RADEON_MSI_REARM_EN, msi_rearm);
275 WREG32(RADEON_MSI_REARM_EN, msi_rearm | RV370_MSI_REARM_EN);
276 break;
277 }
278 }
263 return IRQ_HANDLED; 279 return IRQ_HANDLED;
264} 280}
265 281
@@ -472,6 +488,8 @@ int rs600_init(struct radeon_device *rdev)
472 } 488 }
473 /* Initialize clocks */ 489 /* Initialize clocks */
474 radeon_get_clock_info(rdev->ddev); 490 radeon_get_clock_info(rdev->ddev);
491 /* Initialize power management */
492 radeon_pm_init(rdev);
475 /* Get vram informations */ 493 /* Get vram informations */
476 rs600_vram_info(rdev); 494 rs600_vram_info(rdev);
477 /* Initialize memory controller (also test AGP) */ 495 /* Initialize memory controller (also test AGP) */
diff --git a/drivers/gpu/drm/radeon/rs690.c b/drivers/gpu/drm/radeon/rs690.c
index 025e3225346c..27547175cf93 100644
--- a/drivers/gpu/drm/radeon/rs690.c
+++ b/drivers/gpu/drm/radeon/rs690.c
@@ -706,6 +706,8 @@ int rs690_init(struct radeon_device *rdev)
706 } 706 }
707 /* Initialize clocks */ 707 /* Initialize clocks */
708 radeon_get_clock_info(rdev->ddev); 708 radeon_get_clock_info(rdev->ddev);
709 /* Initialize power management */
710 radeon_pm_init(rdev);
709 /* Get vram informations */ 711 /* Get vram informations */
710 rs690_vram_info(rdev); 712 rs690_vram_info(rdev);
711 /* Initialize memory controller (also test AGP) */ 713 /* Initialize memory controller (also test AGP) */
diff --git a/drivers/gpu/drm/radeon/rv515.c b/drivers/gpu/drm/radeon/rv515.c
index 41a34c23e6d8..ba68c9fe90a1 100644
--- a/drivers/gpu/drm/radeon/rv515.c
+++ b/drivers/gpu/drm/radeon/rv515.c
@@ -380,7 +380,6 @@ void rv515_mc_stop(struct radeon_device *rdev, struct rv515_mc_save *save)
380 save->d2crtc_control = RREG32(R_006880_D2CRTC_CONTROL); 380 save->d2crtc_control = RREG32(R_006880_D2CRTC_CONTROL);
381 381
382 /* Stop all video */ 382 /* Stop all video */
383 WREG32(R_000330_D1VGA_CONTROL, 0);
384 WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 0); 383 WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 0);
385 WREG32(R_000300_VGA_RENDER_CONTROL, 0); 384 WREG32(R_000300_VGA_RENDER_CONTROL, 0);
386 WREG32(R_0060E8_D1CRTC_UPDATE_LOCK, 1); 385 WREG32(R_0060E8_D1CRTC_UPDATE_LOCK, 1);
@@ -389,6 +388,8 @@ void rv515_mc_stop(struct radeon_device *rdev, struct rv515_mc_save *save)
389 WREG32(R_006880_D2CRTC_CONTROL, 0); 388 WREG32(R_006880_D2CRTC_CONTROL, 0);
390 WREG32(R_0060E8_D1CRTC_UPDATE_LOCK, 0); 389 WREG32(R_0060E8_D1CRTC_UPDATE_LOCK, 0);
391 WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 0); 390 WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 0);
391 WREG32(R_000330_D1VGA_CONTROL, 0);
392 WREG32(R_000338_D2VGA_CONTROL, 0);
392} 393}
393 394
394void rv515_mc_resume(struct radeon_device *rdev, struct rv515_mc_save *save) 395void rv515_mc_resume(struct radeon_device *rdev, struct rv515_mc_save *save)
@@ -402,14 +403,14 @@ void rv515_mc_resume(struct radeon_device *rdev, struct rv515_mc_save *save)
402 WREG32(R_000328_VGA_HDP_CONTROL, save->vga_hdp_control); 403 WREG32(R_000328_VGA_HDP_CONTROL, save->vga_hdp_control);
403 mdelay(1); 404 mdelay(1);
404 /* Restore video state */ 405 /* Restore video state */
406 WREG32(R_000330_D1VGA_CONTROL, save->d1vga_control);
407 WREG32(R_000338_D2VGA_CONTROL, save->d2vga_control);
405 WREG32(R_0060E8_D1CRTC_UPDATE_LOCK, 1); 408 WREG32(R_0060E8_D1CRTC_UPDATE_LOCK, 1);
406 WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 1); 409 WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 1);
407 WREG32(R_006080_D1CRTC_CONTROL, save->d1crtc_control); 410 WREG32(R_006080_D1CRTC_CONTROL, save->d1crtc_control);
408 WREG32(R_006880_D2CRTC_CONTROL, save->d2crtc_control); 411 WREG32(R_006880_D2CRTC_CONTROL, save->d2crtc_control);
409 WREG32(R_0060E8_D1CRTC_UPDATE_LOCK, 0); 412 WREG32(R_0060E8_D1CRTC_UPDATE_LOCK, 0);
410 WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 0); 413 WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 0);
411 WREG32(R_000330_D1VGA_CONTROL, save->d1vga_control);
412 WREG32(R_000338_D2VGA_CONTROL, save->d2vga_control);
413 WREG32(R_000300_VGA_RENDER_CONTROL, save->vga_render_control); 414 WREG32(R_000300_VGA_RENDER_CONTROL, save->vga_render_control);
414} 415}
415 416
@@ -585,6 +586,8 @@ int rv515_init(struct radeon_device *rdev)
585 } 586 }
586 /* Initialize clocks */ 587 /* Initialize clocks */
587 radeon_get_clock_info(rdev->ddev); 588 radeon_get_clock_info(rdev->ddev);
589 /* Initialize power management */
590 radeon_pm_init(rdev);
588 /* Get vram informations */ 591 /* Get vram informations */
589 rv515_vram_info(rdev); 592 rv515_vram_info(rdev);
590 /* Initialize memory controller (also test AGP) */ 593 /* Initialize memory controller (also test AGP) */
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
index 595ac638039d..b0efd0ddae7a 100644
--- a/drivers/gpu/drm/radeon/rv770.c
+++ b/drivers/gpu/drm/radeon/rv770.c
@@ -529,11 +529,11 @@ static void rv770_gpu_init(struct radeon_device *rdev)
529 if (rdev->family == CHIP_RV770) 529 if (rdev->family == CHIP_RV770)
530 gb_tiling_config |= BANK_TILING(1); 530 gb_tiling_config |= BANK_TILING(1);
531 else 531 else
532 gb_tiling_config |= BANK_TILING((mc_arb_ramcfg & NOOFBANK_SHIFT) >> NOOFBANK_MASK); 532 gb_tiling_config |= BANK_TILING((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT);
533 533
534 gb_tiling_config |= GROUP_SIZE(0); 534 gb_tiling_config |= GROUP_SIZE(0);
535 535
536 if (((mc_arb_ramcfg & NOOFROWS_MASK) & NOOFROWS_SHIFT) > 3) { 536 if (((mc_arb_ramcfg & NOOFROWS_MASK) >> NOOFROWS_SHIFT) > 3) {
537 gb_tiling_config |= ROW_TILING(3); 537 gb_tiling_config |= ROW_TILING(3);
538 gb_tiling_config |= SAMPLE_SPLIT(3); 538 gb_tiling_config |= SAMPLE_SPLIT(3);
539 } else { 539 } else {
@@ -579,14 +579,14 @@ static void rv770_gpu_init(struct radeon_device *rdev)
579 579
580 /* set HW defaults for 3D engine */ 580 /* set HW defaults for 3D engine */
581 WREG32(CP_QUEUE_THRESHOLDS, (ROQ_IB1_START(0x16) | 581 WREG32(CP_QUEUE_THRESHOLDS, (ROQ_IB1_START(0x16) |
582 ROQ_IB2_START(0x2b))); 582 ROQ_IB2_START(0x2b)));
583 583
584 WREG32(CP_MEQ_THRESHOLDS, STQ_SPLIT(0x30)); 584 WREG32(CP_MEQ_THRESHOLDS, STQ_SPLIT(0x30));
585 585
586 WREG32(TA_CNTL_AUX, (DISABLE_CUBE_ANISO | 586 WREG32(TA_CNTL_AUX, (DISABLE_CUBE_ANISO |
587 SYNC_GRADIENT | 587 SYNC_GRADIENT |
588 SYNC_WALKER | 588 SYNC_WALKER |
589 SYNC_ALIGNER)); 589 SYNC_ALIGNER));
590 590
591 sx_debug_1 = RREG32(SX_DEBUG_1); 591 sx_debug_1 = RREG32(SX_DEBUG_1);
592 sx_debug_1 |= ENABLE_NEW_SMX_ADDRESS; 592 sx_debug_1 |= ENABLE_NEW_SMX_ADDRESS;
@@ -598,9 +598,9 @@ static void rv770_gpu_init(struct radeon_device *rdev)
598 WREG32(SMX_DC_CTL0, smx_dc_ctl0); 598 WREG32(SMX_DC_CTL0, smx_dc_ctl0);
599 599
600 WREG32(SMX_EVENT_CTL, (ES_FLUSH_CTL(4) | 600 WREG32(SMX_EVENT_CTL, (ES_FLUSH_CTL(4) |
601 GS_FLUSH_CTL(4) | 601 GS_FLUSH_CTL(4) |
602 ACK_FLUSH_CTL(3) | 602 ACK_FLUSH_CTL(3) |
603 SYNC_FLUSH_CTL)); 603 SYNC_FLUSH_CTL));
604 604
605 if (rdev->family == CHIP_RV770) 605 if (rdev->family == CHIP_RV770)
606 WREG32(DB_DEBUG3, DB_CLK_OFF_DELAY(0x1f)); 606 WREG32(DB_DEBUG3, DB_CLK_OFF_DELAY(0x1f));
@@ -611,12 +611,12 @@ static void rv770_gpu_init(struct radeon_device *rdev)
611 } 611 }
612 612
613 WREG32(SX_EXPORT_BUFFER_SIZES, (COLOR_BUFFER_SIZE((rdev->config.rv770.sx_max_export_size / 4) - 1) | 613 WREG32(SX_EXPORT_BUFFER_SIZES, (COLOR_BUFFER_SIZE((rdev->config.rv770.sx_max_export_size / 4) - 1) |
614 POSITION_BUFFER_SIZE((rdev->config.rv770.sx_max_export_pos_size / 4) - 1) | 614 POSITION_BUFFER_SIZE((rdev->config.rv770.sx_max_export_pos_size / 4) - 1) |
615 SMX_BUFFER_SIZE((rdev->config.rv770.sx_max_export_smx_size / 4) - 1))); 615 SMX_BUFFER_SIZE((rdev->config.rv770.sx_max_export_smx_size / 4) - 1)));
616 616
617 WREG32(PA_SC_FIFO_SIZE, (SC_PRIM_FIFO_SIZE(rdev->config.rv770.sc_prim_fifo_size) | 617 WREG32(PA_SC_FIFO_SIZE, (SC_PRIM_FIFO_SIZE(rdev->config.rv770.sc_prim_fifo_size) |
618 SC_HIZ_TILE_FIFO_SIZE(rdev->config.rv770.sc_hiz_tile_fifo_size) | 618 SC_HIZ_TILE_FIFO_SIZE(rdev->config.rv770.sc_hiz_tile_fifo_size) |
619 SC_EARLYZ_TILE_FIFO_SIZE(rdev->config.rv770.sc_earlyz_tile_fifo_fize))); 619 SC_EARLYZ_TILE_FIFO_SIZE(rdev->config.rv770.sc_earlyz_tile_fifo_fize)));
620 620
621 WREG32(PA_SC_MULTI_CHIP_CNTL, 0); 621 WREG32(PA_SC_MULTI_CHIP_CNTL, 0);
622 622
@@ -774,14 +774,36 @@ int rv770_mc_init(struct radeon_device *rdev)
774{ 774{
775 fixed20_12 a; 775 fixed20_12 a;
776 u32 tmp; 776 u32 tmp;
777 int chansize, numchan;
777 int r; 778 int r;
778 779
779 /* Get VRAM informations */ 780 /* Get VRAM informations */
780 /* FIXME: Don't know how to determine vram width, need to check
781 * vram_width usage
782 */
783 rdev->mc.vram_width = 128;
784 rdev->mc.vram_is_ddr = true; 781 rdev->mc.vram_is_ddr = true;
782 tmp = RREG32(MC_ARB_RAMCFG);
783 if (tmp & CHANSIZE_OVERRIDE) {
784 chansize = 16;
785 } else if (tmp & CHANSIZE_MASK) {
786 chansize = 64;
787 } else {
788 chansize = 32;
789 }
790 tmp = RREG32(MC_SHARED_CHMAP);
791 switch ((tmp & NOOFCHAN_MASK) >> NOOFCHAN_SHIFT) {
792 case 0:
793 default:
794 numchan = 1;
795 break;
796 case 1:
797 numchan = 2;
798 break;
799 case 2:
800 numchan = 4;
801 break;
802 case 3:
803 numchan = 8;
804 break;
805 }
806 rdev->mc.vram_width = numchan * chansize;
785 /* Could aper size report 0 ? */ 807 /* Could aper size report 0 ? */
786 rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0); 808 rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
787 rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0); 809 rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);
@@ -961,10 +983,13 @@ int rv770_init(struct radeon_device *rdev)
961 r600_scratch_init(rdev); 983 r600_scratch_init(rdev);
962 /* Initialize surface registers */ 984 /* Initialize surface registers */
963 radeon_surface_init(rdev); 985 radeon_surface_init(rdev);
986 /* Initialize clocks */
964 radeon_get_clock_info(rdev->ddev); 987 radeon_get_clock_info(rdev->ddev);
965 r = radeon_clocks_init(rdev); 988 r = radeon_clocks_init(rdev);
966 if (r) 989 if (r)
967 return r; 990 return r;
991 /* Initialize power management */
992 radeon_pm_init(rdev);
968 /* Fence driver */ 993 /* Fence driver */
969 r = radeon_fence_driver_init(rdev); 994 r = radeon_fence_driver_init(rdev);
970 if (r) 995 if (r)
diff --git a/drivers/gpu/drm/radeon/rv770d.h b/drivers/gpu/drm/radeon/rv770d.h
index 4b9c3d6396ff..a1367ab6f261 100644
--- a/drivers/gpu/drm/radeon/rv770d.h
+++ b/drivers/gpu/drm/radeon/rv770d.h
@@ -129,6 +129,10 @@
129#define HDP_REG_COHERENCY_FLUSH_CNTL 0x54A0 129#define HDP_REG_COHERENCY_FLUSH_CNTL 0x54A0
130#define HDP_TILING_CONFIG 0x2F3C 130#define HDP_TILING_CONFIG 0x2F3C
131 131
132#define MC_SHARED_CHMAP 0x2004
133#define NOOFCHAN_SHIFT 12
134#define NOOFCHAN_MASK 0x00003000
135
132#define MC_ARB_RAMCFG 0x2760 136#define MC_ARB_RAMCFG 0x2760
133#define NOOFBANK_SHIFT 0 137#define NOOFBANK_SHIFT 0
134#define NOOFBANK_MASK 0x00000003 138#define NOOFBANK_MASK 0x00000003
@@ -142,6 +146,7 @@
142#define CHANSIZE_MASK 0x00000100 146#define CHANSIZE_MASK 0x00000100
143#define BURSTLENGTH_SHIFT 9 147#define BURSTLENGTH_SHIFT 9
144#define BURSTLENGTH_MASK 0x00000200 148#define BURSTLENGTH_MASK 0x00000200
149#define CHANSIZE_OVERRIDE (1 << 11)
145#define MC_VM_AGP_TOP 0x2028 150#define MC_VM_AGP_TOP 0x2028
146#define MC_VM_AGP_BOT 0x202C 151#define MC_VM_AGP_BOT 0x202C
147#define MC_VM_AGP_BASE 0x2030 152#define MC_VM_AGP_BASE 0x2030
diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c
index a55ee1a56c16..7bcb89f39ce8 100644
--- a/drivers/gpu/drm/ttm/ttm_tt.c
+++ b/drivers/gpu/drm/ttm/ttm_tt.c
@@ -279,6 +279,7 @@ int ttm_tt_set_placement_caching(struct ttm_tt *ttm, uint32_t placement)
279 279
280 return ttm_tt_set_caching(ttm, state); 280 return ttm_tt_set_caching(ttm, state);
281} 281}
282EXPORT_SYMBOL(ttm_tt_set_placement_caching);
282 283
283static void ttm_tt_free_alloced_pages(struct ttm_tt *ttm) 284static void ttm_tt_free_alloced_pages(struct ttm_tt *ttm)
284{ 285{
diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c
index d39877a7da63..b5a95193c694 100644
--- a/drivers/hwmon/adt7475.c
+++ b/drivers/hwmon/adt7475.c
@@ -350,8 +350,7 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *attr,
350 350
351 case FAULT: 351 case FAULT:
352 /* Note - only for remote1 and remote2 */ 352 /* Note - only for remote1 and remote2 */
353 out = data->alarms & (sattr->index ? 0x8000 : 0x4000); 353 out = !!(data->alarms & (sattr->index ? 0x8000 : 0x4000));
354 out = out ? 0 : 1;
355 break; 354 break;
356 355
357 default: 356 default:
@@ -863,7 +862,7 @@ static SENSOR_DEVICE_ATTR_2(pwm1_freq, S_IRUGO | S_IWUSR, show_pwmfreq,
863 set_pwmfreq, INPUT, 0); 862 set_pwmfreq, INPUT, 0);
864static SENSOR_DEVICE_ATTR_2(pwm1_enable, S_IRUGO | S_IWUSR, show_pwmctrl, 863static SENSOR_DEVICE_ATTR_2(pwm1_enable, S_IRUGO | S_IWUSR, show_pwmctrl,
865 set_pwmctrl, INPUT, 0); 864 set_pwmctrl, INPUT, 0);
866static SENSOR_DEVICE_ATTR_2(pwm1_auto_channel_temp, S_IRUGO | S_IWUSR, 865static SENSOR_DEVICE_ATTR_2(pwm1_auto_channels_temp, S_IRUGO | S_IWUSR,
867 show_pwmchan, set_pwmchan, INPUT, 0); 866 show_pwmchan, set_pwmchan, INPUT, 0);
868static SENSOR_DEVICE_ATTR_2(pwm1_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm, 867static SENSOR_DEVICE_ATTR_2(pwm1_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm,
869 set_pwm, MIN, 0); 868 set_pwm, MIN, 0);
@@ -875,7 +874,7 @@ static SENSOR_DEVICE_ATTR_2(pwm2_freq, S_IRUGO | S_IWUSR, show_pwmfreq,
875 set_pwmfreq, INPUT, 1); 874 set_pwmfreq, INPUT, 1);
876static SENSOR_DEVICE_ATTR_2(pwm2_enable, S_IRUGO | S_IWUSR, show_pwmctrl, 875static SENSOR_DEVICE_ATTR_2(pwm2_enable, S_IRUGO | S_IWUSR, show_pwmctrl,
877 set_pwmctrl, INPUT, 1); 876 set_pwmctrl, INPUT, 1);
878static SENSOR_DEVICE_ATTR_2(pwm2_auto_channel_temp, S_IRUGO | S_IWUSR, 877static SENSOR_DEVICE_ATTR_2(pwm2_auto_channels_temp, S_IRUGO | S_IWUSR,
879 show_pwmchan, set_pwmchan, INPUT, 1); 878 show_pwmchan, set_pwmchan, INPUT, 1);
880static SENSOR_DEVICE_ATTR_2(pwm2_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm, 879static SENSOR_DEVICE_ATTR_2(pwm2_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm,
881 set_pwm, MIN, 1); 880 set_pwm, MIN, 1);
@@ -887,7 +886,7 @@ static SENSOR_DEVICE_ATTR_2(pwm3_freq, S_IRUGO | S_IWUSR, show_pwmfreq,
887 set_pwmfreq, INPUT, 2); 886 set_pwmfreq, INPUT, 2);
888static SENSOR_DEVICE_ATTR_2(pwm3_enable, S_IRUGO | S_IWUSR, show_pwmctrl, 887static SENSOR_DEVICE_ATTR_2(pwm3_enable, S_IRUGO | S_IWUSR, show_pwmctrl,
889 set_pwmctrl, INPUT, 2); 888 set_pwmctrl, INPUT, 2);
890static SENSOR_DEVICE_ATTR_2(pwm3_auto_channel_temp, S_IRUGO | S_IWUSR, 889static SENSOR_DEVICE_ATTR_2(pwm3_auto_channels_temp, S_IRUGO | S_IWUSR,
891 show_pwmchan, set_pwmchan, INPUT, 2); 890 show_pwmchan, set_pwmchan, INPUT, 2);
892static SENSOR_DEVICE_ATTR_2(pwm3_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm, 891static SENSOR_DEVICE_ATTR_2(pwm3_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm,
893 set_pwm, MIN, 2); 892 set_pwm, MIN, 2);
@@ -947,19 +946,19 @@ static struct attribute *adt7475_attrs[] = {
947 &sensor_dev_attr_pwm1.dev_attr.attr, 946 &sensor_dev_attr_pwm1.dev_attr.attr,
948 &sensor_dev_attr_pwm1_freq.dev_attr.attr, 947 &sensor_dev_attr_pwm1_freq.dev_attr.attr,
949 &sensor_dev_attr_pwm1_enable.dev_attr.attr, 948 &sensor_dev_attr_pwm1_enable.dev_attr.attr,
950 &sensor_dev_attr_pwm1_auto_channel_temp.dev_attr.attr, 949 &sensor_dev_attr_pwm1_auto_channels_temp.dev_attr.attr,
951 &sensor_dev_attr_pwm1_auto_point1_pwm.dev_attr.attr, 950 &sensor_dev_attr_pwm1_auto_point1_pwm.dev_attr.attr,
952 &sensor_dev_attr_pwm1_auto_point2_pwm.dev_attr.attr, 951 &sensor_dev_attr_pwm1_auto_point2_pwm.dev_attr.attr,
953 &sensor_dev_attr_pwm2.dev_attr.attr, 952 &sensor_dev_attr_pwm2.dev_attr.attr,
954 &sensor_dev_attr_pwm2_freq.dev_attr.attr, 953 &sensor_dev_attr_pwm2_freq.dev_attr.attr,
955 &sensor_dev_attr_pwm2_enable.dev_attr.attr, 954 &sensor_dev_attr_pwm2_enable.dev_attr.attr,
956 &sensor_dev_attr_pwm2_auto_channel_temp.dev_attr.attr, 955 &sensor_dev_attr_pwm2_auto_channels_temp.dev_attr.attr,
957 &sensor_dev_attr_pwm2_auto_point1_pwm.dev_attr.attr, 956 &sensor_dev_attr_pwm2_auto_point1_pwm.dev_attr.attr,
958 &sensor_dev_attr_pwm2_auto_point2_pwm.dev_attr.attr, 957 &sensor_dev_attr_pwm2_auto_point2_pwm.dev_attr.attr,
959 &sensor_dev_attr_pwm3.dev_attr.attr, 958 &sensor_dev_attr_pwm3.dev_attr.attr,
960 &sensor_dev_attr_pwm3_freq.dev_attr.attr, 959 &sensor_dev_attr_pwm3_freq.dev_attr.attr,
961 &sensor_dev_attr_pwm3_enable.dev_attr.attr, 960 &sensor_dev_attr_pwm3_enable.dev_attr.attr,
962 &sensor_dev_attr_pwm3_auto_channel_temp.dev_attr.attr, 961 &sensor_dev_attr_pwm3_auto_channels_temp.dev_attr.attr,
963 &sensor_dev_attr_pwm3_auto_point1_pwm.dev_attr.attr, 962 &sensor_dev_attr_pwm3_auto_point1_pwm.dev_attr.attr,
964 &sensor_dev_attr_pwm3_auto_point2_pwm.dev_attr.attr, 963 &sensor_dev_attr_pwm3_auto_point2_pwm.dev_attr.attr,
965 NULL, 964 NULL,
@@ -1152,7 +1151,7 @@ static struct adt7475_data *adt7475_update_device(struct device *dev)
1152 } 1151 }
1153 1152
1154 /* Limits and settings, should never change update every 60 seconds */ 1153 /* Limits and settings, should never change update every 60 seconds */
1155 if (time_after(jiffies, data->limits_updated + HZ * 2) || 1154 if (time_after(jiffies, data->limits_updated + HZ * 60) ||
1156 !data->valid) { 1155 !data->valid) {
1157 data->config5 = adt7475_read(REG_CONFIG5); 1156 data->config5 = adt7475_read(REG_CONFIG5);
1158 1157
diff --git a/drivers/hwmon/dme1737.c b/drivers/hwmon/dme1737.c
index 2c2cb1ec94c5..27d62574284f 100644
--- a/drivers/hwmon/dme1737.c
+++ b/drivers/hwmon/dme1737.c
@@ -572,7 +572,7 @@ static struct dme1737_data *dme1737_update_device(struct device *dev)
572 572
573 /* Sample register contents every 1 sec */ 573 /* Sample register contents every 1 sec */
574 if (time_after(jiffies, data->last_update + HZ) || !data->valid) { 574 if (time_after(jiffies, data->last_update + HZ) || !data->valid) {
575 if (data->type != sch5027) { 575 if (data->type == dme1737) {
576 data->vid = dme1737_read(data, DME1737_REG_VID) & 576 data->vid = dme1737_read(data, DME1737_REG_VID) &
577 0x3f; 577 0x3f;
578 } 578 }
@@ -1621,9 +1621,6 @@ static struct attribute *dme1737_misc_attr[] = {
1621 &sensor_dev_attr_zone1_auto_point1_temp_hyst.dev_attr.attr, 1621 &sensor_dev_attr_zone1_auto_point1_temp_hyst.dev_attr.attr,
1622 &sensor_dev_attr_zone2_auto_point1_temp_hyst.dev_attr.attr, 1622 &sensor_dev_attr_zone2_auto_point1_temp_hyst.dev_attr.attr,
1623 &sensor_dev_attr_zone3_auto_point1_temp_hyst.dev_attr.attr, 1623 &sensor_dev_attr_zone3_auto_point1_temp_hyst.dev_attr.attr,
1624 /* Misc */
1625 &dev_attr_vrm.attr,
1626 &dev_attr_cpu0_vid.attr,
1627 NULL 1624 NULL
1628}; 1625};
1629 1626
@@ -1631,6 +1628,18 @@ static const struct attribute_group dme1737_misc_group = {
1631 .attrs = dme1737_misc_attr, 1628 .attrs = dme1737_misc_attr,
1632}; 1629};
1633 1630
1631/* The following struct holds VID-related attributes. Their creation
1632 depends on the chip type which is determined during module load. */
1633static struct attribute *dme1737_vid_attr[] = {
1634 &dev_attr_vrm.attr,
1635 &dev_attr_cpu0_vid.attr,
1636 NULL
1637};
1638
1639static const struct attribute_group dme1737_vid_group = {
1640 .attrs = dme1737_vid_attr,
1641};
1642
1634/* The following structs hold the PWM attributes, some of which are optional. 1643/* The following structs hold the PWM attributes, some of which are optional.
1635 * Their creation depends on the chip configuration which is determined during 1644 * Their creation depends on the chip configuration which is determined during
1636 * module load. */ 1645 * module load. */
@@ -1902,6 +1911,9 @@ static void dme1737_remove_files(struct device *dev)
1902 if (data->type != sch5027) { 1911 if (data->type != sch5027) {
1903 sysfs_remove_group(&dev->kobj, &dme1737_misc_group); 1912 sysfs_remove_group(&dev->kobj, &dme1737_misc_group);
1904 } 1913 }
1914 if (data->type == dme1737) {
1915 sysfs_remove_group(&dev->kobj, &dme1737_vid_group);
1916 }
1905 1917
1906 sysfs_remove_group(&dev->kobj, &dme1737_group); 1918 sysfs_remove_group(&dev->kobj, &dme1737_group);
1907 1919
@@ -1933,6 +1945,13 @@ static int dme1737_create_files(struct device *dev)
1933 goto exit_remove; 1945 goto exit_remove;
1934 } 1946 }
1935 1947
1948 /* Create VID-related sysfs attributes */
1949 if ((data->type == dme1737) &&
1950 (err = sysfs_create_group(&dev->kobj,
1951 &dme1737_vid_group))) {
1952 goto exit_remove;
1953 }
1954
1936 /* Create fan sysfs attributes */ 1955 /* Create fan sysfs attributes */
1937 for (ix = 0; ix < ARRAY_SIZE(dme1737_fan_group); ix++) { 1956 for (ix = 0; ix < ARRAY_SIZE(dme1737_fan_group); ix++) {
1938 if (data->has_fan & (1 << ix)) { 1957 if (data->has_fan & (1 << ix)) {
@@ -2127,7 +2146,7 @@ static int dme1737_init_device(struct device *dev)
2127 data->pwm_acz[2] = 4; /* pwm3 -> zone3 */ 2146 data->pwm_acz[2] = 4; /* pwm3 -> zone3 */
2128 2147
2129 /* Set VRM */ 2148 /* Set VRM */
2130 if (data->type != sch5027) { 2149 if (data->type == dme1737) {
2131 data->vrm = vid_which_vrm(); 2150 data->vrm = vid_which_vrm();
2132 } 2151 }
2133 2152
diff --git a/drivers/hwmon/fschmd.c b/drivers/hwmon/fschmd.c
index 2a7a85a6dc36..da1b1f9488af 100644
--- a/drivers/hwmon/fschmd.c
+++ b/drivers/hwmon/fschmd.c
@@ -819,7 +819,7 @@ static int watchdog_release(struct inode *inode, struct file *filp)
819static ssize_t watchdog_write(struct file *filp, const char __user *buf, 819static ssize_t watchdog_write(struct file *filp, const char __user *buf,
820 size_t count, loff_t *offset) 820 size_t count, loff_t *offset)
821{ 821{
822 size_t ret; 822 int ret;
823 struct fschmd_data *data = filp->private_data; 823 struct fschmd_data *data = filp->private_data;
824 824
825 if (count) { 825 if (count) {
diff --git a/drivers/hwmon/hp_accel.c b/drivers/hwmon/hp_accel.c
index 6679854c85b0..be475e844c2a 100644
--- a/drivers/hwmon/hp_accel.c
+++ b/drivers/hwmon/hp_accel.c
@@ -197,11 +197,13 @@ static struct dmi_system_id lis3lv02d_dmi_ids[] = {
197 AXIS_DMI_MATCH("HP2133", "HP 2133", xy_rotated_left), 197 AXIS_DMI_MATCH("HP2133", "HP 2133", xy_rotated_left),
198 AXIS_DMI_MATCH("HP2140", "HP 2140", xy_swap_inverted), 198 AXIS_DMI_MATCH("HP2140", "HP 2140", xy_swap_inverted),
199 AXIS_DMI_MATCH("NC653x", "HP Compaq 653", xy_rotated_left_usd), 199 AXIS_DMI_MATCH("NC653x", "HP Compaq 653", xy_rotated_left_usd),
200 AXIS_DMI_MATCH("NC673x", "HP Compaq 673", xy_rotated_left_usd), 200 AXIS_DMI_MATCH("NC6730b", "HP Compaq 6730b", xy_rotated_left_usd),
201 AXIS_DMI_MATCH("NC6730s", "HP Compaq 6730s", xy_swap),
201 AXIS_DMI_MATCH("NC651xx", "HP Compaq 651", xy_rotated_right), 202 AXIS_DMI_MATCH("NC651xx", "HP Compaq 651", xy_rotated_right),
202 AXIS_DMI_MATCH("NC6710x", "HP Compaq 6710", xy_swap_yz_inverted), 203 AXIS_DMI_MATCH("NC6710x", "HP Compaq 6710", xy_swap_yz_inverted),
203 AXIS_DMI_MATCH("NC6715x", "HP Compaq 6715", y_inverted), 204 AXIS_DMI_MATCH("NC6715x", "HP Compaq 6715", y_inverted),
204 AXIS_DMI_MATCH("NC693xx", "HP EliteBook 693", xy_rotated_right), 205 AXIS_DMI_MATCH("NC693xx", "HP EliteBook 693", xy_rotated_right),
206 AXIS_DMI_MATCH("NC693xx", "HP EliteBook 853", xy_swap),
205 /* Intel-based HP Pavilion dv5 */ 207 /* Intel-based HP Pavilion dv5 */
206 AXIS_DMI_MATCH2("HPDV5_I", 208 AXIS_DMI_MATCH2("HPDV5_I",
207 PRODUCT_NAME, "HP Pavilion dv5", 209 PRODUCT_NAME, "HP Pavilion dv5",
@@ -214,6 +216,7 @@ static struct dmi_system_id lis3lv02d_dmi_ids[] = {
214 y_inverted), 216 y_inverted),
215 AXIS_DMI_MATCH("DV7", "HP Pavilion dv7", x_inverted), 217 AXIS_DMI_MATCH("DV7", "HP Pavilion dv7", x_inverted),
216 AXIS_DMI_MATCH("HP8710", "HP Compaq 8710", y_inverted), 218 AXIS_DMI_MATCH("HP8710", "HP Compaq 8710", y_inverted),
219 AXIS_DMI_MATCH("HDX18", "HP HDX 18", x_inverted),
217 { NULL, } 220 { NULL, }
218/* Laptop models without axis info (yet): 221/* Laptop models without axis info (yet):
219 * "NC6910" "HP Compaq 6910" 222 * "NC6910" "HP Compaq 6910"
diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c
index ffeb2a10e1a7..a3749cb0f181 100644
--- a/drivers/hwmon/it87.c
+++ b/drivers/hwmon/it87.c
@@ -1028,12 +1028,11 @@ static int __init it87_find(unsigned short *address,
1028 chip_type, *address, sio_data->revision); 1028 chip_type, *address, sio_data->revision);
1029 1029
1030 /* Read GPIO config and VID value from LDN 7 (GPIO) */ 1030 /* Read GPIO config and VID value from LDN 7 (GPIO) */
1031 if (chip_type != IT8705F_DEVID) { 1031 if (sio_data->type != it87) {
1032 int reg; 1032 int reg;
1033 1033
1034 superio_select(GPIO); 1034 superio_select(GPIO);
1035 if ((chip_type == it8718) || 1035 if (sio_data->type == it8718 || sio_data->type == it8720)
1036 (chip_type == it8720))
1037 sio_data->vid_value = superio_inb(IT87_SIO_VID_REG); 1036 sio_data->vid_value = superio_inb(IT87_SIO_VID_REG);
1038 1037
1039 reg = superio_inb(IT87_SIO_PINX2_REG); 1038 reg = superio_inb(IT87_SIO_PINX2_REG);
diff --git a/drivers/hwmon/s3c-hwmon.c b/drivers/hwmon/s3c-hwmon.c
index 3a524f2fe493..71835412529f 100644
--- a/drivers/hwmon/s3c-hwmon.c
+++ b/drivers/hwmon/s3c-hwmon.c
@@ -323,14 +323,21 @@ static int __devinit s3c_hwmon_probe(struct platform_device *dev)
323 } 323 }
324 324
325 for (i = 0; i < ARRAY_SIZE(pdata->in); i++) { 325 for (i = 0; i < ARRAY_SIZE(pdata->in); i++) {
326 if (!pdata->in[i]) 326 struct s3c24xx_adc_hwmon_incfg *cfg = pdata->in[i];
327
328 if (!cfg)
327 continue; 329 continue;
328 330
329 if (pdata->in[i]->mult >= 0x10000) 331 if (cfg->mult >= 0x10000)
330 dev_warn(&dev->dev, 332 dev_warn(&dev->dev,
331 "channel %d multiplier too large\n", 333 "channel %d multiplier too large\n",
332 i); 334 i);
333 335
336 if (cfg->divider == 0) {
337 dev_err(&dev->dev, "channel %d divider zero\n", i);
338 continue;
339 }
340
334 ret = s3c_hwmon_create_attr(&dev->dev, pdata->in[i], 341 ret = s3c_hwmon_create_attr(&dev->dev, pdata->in[i],
335 &hwmon->attrs[i], i); 342 &hwmon->attrs[i], i);
336 if (ret) { 343 if (ret) {
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index 737335ff2b21..e8fe7f169e25 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -128,7 +128,7 @@ config I2C_PIIX4
128 ATI SB600 128 ATI SB600
129 ATI SB700 129 ATI SB700
130 ATI SB800 130 ATI SB800
131 AMD SB900 131 AMD Hudson-2
132 Serverworks OSB4 132 Serverworks OSB4
133 Serverworks CSB5 133 Serverworks CSB5
134 Serverworks CSB6 134 Serverworks CSB6
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
index 4afba3ec2a61..e3654d683e15 100644
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -120,19 +120,26 @@ struct imx_i2c_struct {
120 wait_queue_head_t queue; 120 wait_queue_head_t queue;
121 unsigned long i2csr; 121 unsigned long i2csr;
122 unsigned int disable_delay; 122 unsigned int disable_delay;
123 int stopped;
124 unsigned int ifdr; /* IMX_I2C_IFDR */
123}; 125};
124 126
125/** Functions for IMX I2C adapter driver *************************************** 127/** Functions for IMX I2C adapter driver ***************************************
126*******************************************************************************/ 128*******************************************************************************/
127 129
128static int i2c_imx_bus_busy(struct imx_i2c_struct *i2c_imx) 130static int i2c_imx_bus_busy(struct imx_i2c_struct *i2c_imx, int for_busy)
129{ 131{
130 unsigned long orig_jiffies = jiffies; 132 unsigned long orig_jiffies = jiffies;
133 unsigned int temp;
131 134
132 dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); 135 dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__);
133 136
134 /* wait for bus not busy */ 137 while (1) {
135 while (readb(i2c_imx->base + IMX_I2C_I2SR) & I2SR_IBB) { 138 temp = readb(i2c_imx->base + IMX_I2C_I2SR);
139 if (for_busy && (temp & I2SR_IBB))
140 break;
141 if (!for_busy && !(temp & I2SR_IBB))
142 break;
136 if (signal_pending(current)) { 143 if (signal_pending(current)) {
137 dev_dbg(&i2c_imx->adapter.dev, 144 dev_dbg(&i2c_imx->adapter.dev,
138 "<%s> I2C Interrupted\n", __func__); 145 "<%s> I2C Interrupted\n", __func__);
@@ -179,41 +186,62 @@ static int i2c_imx_acked(struct imx_i2c_struct *i2c_imx)
179 return 0; 186 return 0;
180} 187}
181 188
182static void i2c_imx_start(struct imx_i2c_struct *i2c_imx) 189static int i2c_imx_start(struct imx_i2c_struct *i2c_imx)
183{ 190{
184 unsigned int temp = 0; 191 unsigned int temp = 0;
192 int result;
185 193
186 dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); 194 dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__);
187 195
196 clk_enable(i2c_imx->clk);
197 writeb(i2c_imx->ifdr, i2c_imx->base + IMX_I2C_IFDR);
188 /* Enable I2C controller */ 198 /* Enable I2C controller */
199 writeb(0, i2c_imx->base + IMX_I2C_I2SR);
189 writeb(I2CR_IEN, i2c_imx->base + IMX_I2C_I2CR); 200 writeb(I2CR_IEN, i2c_imx->base + IMX_I2C_I2CR);
201
202 /* Wait controller to be stable */
203 udelay(50);
204
190 /* Start I2C transaction */ 205 /* Start I2C transaction */
191 temp = readb(i2c_imx->base + IMX_I2C_I2CR); 206 temp = readb(i2c_imx->base + IMX_I2C_I2CR);
192 temp |= I2CR_MSTA; 207 temp |= I2CR_MSTA;
193 writeb(temp, i2c_imx->base + IMX_I2C_I2CR); 208 writeb(temp, i2c_imx->base + IMX_I2C_I2CR);
209 result = i2c_imx_bus_busy(i2c_imx, 1);
210 if (result)
211 return result;
212 i2c_imx->stopped = 0;
213
194 temp |= I2CR_IIEN | I2CR_MTX | I2CR_TXAK; 214 temp |= I2CR_IIEN | I2CR_MTX | I2CR_TXAK;
195 writeb(temp, i2c_imx->base + IMX_I2C_I2CR); 215 writeb(temp, i2c_imx->base + IMX_I2C_I2CR);
216 return result;
196} 217}
197 218
198static void i2c_imx_stop(struct imx_i2c_struct *i2c_imx) 219static void i2c_imx_stop(struct imx_i2c_struct *i2c_imx)
199{ 220{
200 unsigned int temp = 0; 221 unsigned int temp = 0;
201 222
202 /* Stop I2C transaction */ 223 if (!i2c_imx->stopped) {
203 dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); 224 /* Stop I2C transaction */
204 temp = readb(i2c_imx->base + IMX_I2C_I2CR); 225 dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__);
205 temp &= ~I2CR_MSTA; 226 temp = readb(i2c_imx->base + IMX_I2C_I2CR);
206 writeb(temp, i2c_imx->base + IMX_I2C_I2CR); 227 temp &= ~(I2CR_MSTA | I2CR_MTX);
207 /* setup chip registers to defaults */ 228 writeb(temp, i2c_imx->base + IMX_I2C_I2CR);
208 writeb(I2CR_IEN, i2c_imx->base + IMX_I2C_I2CR); 229 i2c_imx->stopped = 1;
209 writeb(0, i2c_imx->base + IMX_I2C_I2SR); 230 }
210 /* 231 if (cpu_is_mx1()) {
211 * This delay caused by an i.MXL hardware bug. 232 /*
212 * If no (or too short) delay, no "STOP" bit will be generated. 233 * This delay caused by an i.MXL hardware bug.
213 */ 234 * If no (or too short) delay, no "STOP" bit will be generated.
214 udelay(i2c_imx->disable_delay); 235 */
236 udelay(i2c_imx->disable_delay);
237 }
238
239 if (!i2c_imx->stopped)
240 i2c_imx_bus_busy(i2c_imx, 0);
241
215 /* Disable I2C controller */ 242 /* Disable I2C controller */
216 writeb(0, i2c_imx->base + IMX_I2C_I2CR); 243 writeb(0, i2c_imx->base + IMX_I2C_I2CR);
244 clk_disable(i2c_imx->clk);
217} 245}
218 246
219static void __init i2c_imx_set_clk(struct imx_i2c_struct *i2c_imx, 247static void __init i2c_imx_set_clk(struct imx_i2c_struct *i2c_imx,
@@ -233,8 +261,8 @@ static void __init i2c_imx_set_clk(struct imx_i2c_struct *i2c_imx,
233 else 261 else
234 for (i = 0; i2c_clk_div[i][0] < div; i++); 262 for (i = 0; i2c_clk_div[i][0] < div; i++);
235 263
236 /* Write divider value to register */ 264 /* Store divider value */
237 writeb(i2c_clk_div[i][1], i2c_imx->base + IMX_I2C_IFDR); 265 i2c_imx->ifdr = i2c_clk_div[i][1];
238 266
239 /* 267 /*
240 * There dummy delay is calculated. 268 * There dummy delay is calculated.
@@ -341,11 +369,15 @@ static int i2c_imx_read(struct imx_i2c_struct *i2c_imx, struct i2c_msg *msgs)
341 if (result) 369 if (result)
342 return result; 370 return result;
343 if (i == (msgs->len - 1)) { 371 if (i == (msgs->len - 1)) {
372 /* It must generate STOP before read I2DR to prevent
373 controller from generating another clock cycle */
344 dev_dbg(&i2c_imx->adapter.dev, 374 dev_dbg(&i2c_imx->adapter.dev,
345 "<%s> clear MSTA\n", __func__); 375 "<%s> clear MSTA\n", __func__);
346 temp = readb(i2c_imx->base + IMX_I2C_I2CR); 376 temp = readb(i2c_imx->base + IMX_I2C_I2CR);
347 temp &= ~I2CR_MSTA; 377 temp &= ~(I2CR_MSTA | I2CR_MTX);
348 writeb(temp, i2c_imx->base + IMX_I2C_I2CR); 378 writeb(temp, i2c_imx->base + IMX_I2C_I2CR);
379 i2c_imx_bus_busy(i2c_imx, 0);
380 i2c_imx->stopped = 1;
349 } else if (i == (msgs->len - 2)) { 381 } else if (i == (msgs->len - 2)) {
350 dev_dbg(&i2c_imx->adapter.dev, 382 dev_dbg(&i2c_imx->adapter.dev,
351 "<%s> set TXAK\n", __func__); 383 "<%s> set TXAK\n", __func__);
@@ -370,14 +402,11 @@ static int i2c_imx_xfer(struct i2c_adapter *adapter,
370 402
371 dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); 403 dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__);
372 404
373 /* Check if i2c bus is not busy */ 405 /* Start I2C transfer */
374 result = i2c_imx_bus_busy(i2c_imx); 406 result = i2c_imx_start(i2c_imx);
375 if (result) 407 if (result)
376 goto fail0; 408 goto fail0;
377 409
378 /* Start I2C transfer */
379 i2c_imx_start(i2c_imx);
380
381 /* read/write data */ 410 /* read/write data */
382 for (i = 0; i < num; i++) { 411 for (i = 0; i < num; i++) {
383 if (i) { 412 if (i) {
@@ -386,6 +415,9 @@ static int i2c_imx_xfer(struct i2c_adapter *adapter,
386 temp = readb(i2c_imx->base + IMX_I2C_I2CR); 415 temp = readb(i2c_imx->base + IMX_I2C_I2CR);
387 temp |= I2CR_RSTA; 416 temp |= I2CR_RSTA;
388 writeb(temp, i2c_imx->base + IMX_I2C_I2CR); 417 writeb(temp, i2c_imx->base + IMX_I2C_I2CR);
418 result = i2c_imx_bus_busy(i2c_imx, 1);
419 if (result)
420 goto fail0;
389 } 421 }
390 dev_dbg(&i2c_imx->adapter.dev, 422 dev_dbg(&i2c_imx->adapter.dev,
391 "<%s> transfer message: %d\n", __func__, i); 423 "<%s> transfer message: %d\n", __func__, i);
@@ -500,7 +532,6 @@ static int __init i2c_imx_probe(struct platform_device *pdev)
500 dev_err(&pdev->dev, "can't get I2C clock\n"); 532 dev_err(&pdev->dev, "can't get I2C clock\n");
501 goto fail3; 533 goto fail3;
502 } 534 }
503 clk_enable(i2c_imx->clk);
504 535
505 /* Request IRQ */ 536 /* Request IRQ */
506 ret = request_irq(i2c_imx->irq, i2c_imx_isr, 0, pdev->name, i2c_imx); 537 ret = request_irq(i2c_imx->irq, i2c_imx_isr, 0, pdev->name, i2c_imx);
@@ -549,7 +580,6 @@ static int __init i2c_imx_probe(struct platform_device *pdev)
549fail5: 580fail5:
550 free_irq(i2c_imx->irq, i2c_imx); 581 free_irq(i2c_imx->irq, i2c_imx);
551fail4: 582fail4:
552 clk_disable(i2c_imx->clk);
553 clk_put(i2c_imx->clk); 583 clk_put(i2c_imx->clk);
554fail3: 584fail3:
555 release_mem_region(i2c_imx->res->start, resource_size(res)); 585 release_mem_region(i2c_imx->res->start, resource_size(res));
@@ -586,8 +616,6 @@ static int __exit i2c_imx_remove(struct platform_device *pdev)
586 if (pdata && pdata->exit) 616 if (pdata && pdata->exit)
587 pdata->exit(&pdev->dev); 617 pdata->exit(&pdev->dev);
588 618
589 /* Disable I2C clock */
590 clk_disable(i2c_imx->clk);
591 clk_put(i2c_imx->clk); 619 clk_put(i2c_imx->clk);
592 620
593 release_mem_region(i2c_imx->res->start, resource_size(i2c_imx->res)); 621 release_mem_region(i2c_imx->res->start, resource_size(i2c_imx->res));
diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
index d325e86e3103..f627001108b8 100644
--- a/drivers/i2c/busses/i2c-mpc.c
+++ b/drivers/i2c/busses/i2c-mpc.c
@@ -365,9 +365,6 @@ static int mpc_write(struct mpc_i2c *i2c, int target,
365 unsigned timeout = i2c->adap.timeout; 365 unsigned timeout = i2c->adap.timeout;
366 u32 flags = restart ? CCR_RSTA : 0; 366 u32 flags = restart ? CCR_RSTA : 0;
367 367
368 /* Start with MEN */
369 if (!restart)
370 writeccr(i2c, CCR_MEN);
371 /* Start as master */ 368 /* Start as master */
372 writeccr(i2c, CCR_MIEN | CCR_MEN | CCR_MSTA | CCR_MTX | flags); 369 writeccr(i2c, CCR_MIEN | CCR_MEN | CCR_MSTA | CCR_MTX | flags);
373 /* Write target byte */ 370 /* Write target byte */
@@ -396,9 +393,6 @@ static int mpc_read(struct mpc_i2c *i2c, int target,
396 int i, result; 393 int i, result;
397 u32 flags = restart ? CCR_RSTA : 0; 394 u32 flags = restart ? CCR_RSTA : 0;
398 395
399 /* Start with MEN */
400 if (!restart)
401 writeccr(i2c, CCR_MEN);
402 /* Switch to read - restart */ 396 /* Switch to read - restart */
403 writeccr(i2c, CCR_MIEN | CCR_MEN | CCR_MSTA | CCR_MTX | flags); 397 writeccr(i2c, CCR_MIEN | CCR_MEN | CCR_MSTA | CCR_MTX | flags);
404 /* Write target address byte - this time with the read flag set */ 398 /* Write target address byte - this time with the read flag set */
@@ -425,9 +419,9 @@ static int mpc_read(struct mpc_i2c *i2c, int target,
425 /* Generate txack on next to last byte */ 419 /* Generate txack on next to last byte */
426 if (i == length - 2) 420 if (i == length - 2)
427 writeccr(i2c, CCR_MIEN | CCR_MEN | CCR_MSTA | CCR_TXAK); 421 writeccr(i2c, CCR_MIEN | CCR_MEN | CCR_MSTA | CCR_TXAK);
428 /* Generate stop on last byte */ 422 /* Do not generate stop on last byte */
429 if (i == length - 1) 423 if (i == length - 1)
430 writeccr(i2c, CCR_MIEN | CCR_MEN | CCR_TXAK); 424 writeccr(i2c, CCR_MIEN | CCR_MEN | CCR_MSTA | CCR_MTX);
431 data[i] = readb(i2c->base + MPC_I2C_DR); 425 data[i] = readb(i2c->base + MPC_I2C_DR);
432 } 426 }
433 427
diff --git a/drivers/i2c/busses/i2c-piix4.c b/drivers/i2c/busses/i2c-piix4.c
index d26a972aacaa..1e245e9cad31 100644
--- a/drivers/i2c/busses/i2c-piix4.c
+++ b/drivers/i2c/busses/i2c-piix4.c
@@ -22,7 +22,7 @@
22 Intel PIIX4, 440MX 22 Intel PIIX4, 440MX
23 Serverworks OSB4, CSB5, CSB6, HT-1000, HT-1100 23 Serverworks OSB4, CSB5, CSB6, HT-1000, HT-1100
24 ATI IXP200, IXP300, IXP400, SB600, SB700, SB800 24 ATI IXP200, IXP300, IXP400, SB600, SB700, SB800
25 AMD SB900 25 AMD Hudson-2
26 SMSC Victory66 26 SMSC Victory66
27 27
28 Note: we assume there can only be one device, with one SMBus interface. 28 Note: we assume there can only be one device, with one SMBus interface.
@@ -233,9 +233,9 @@ static int __devinit piix4_setup_sb800(struct pci_dev *PIIX4_dev,
233 unsigned short smba_idx = 0xcd6; 233 unsigned short smba_idx = 0xcd6;
234 u8 smba_en_lo, smba_en_hi, i2ccfg, i2ccfg_offset = 0x10, smb_en = 0x2c; 234 u8 smba_en_lo, smba_en_hi, i2ccfg, i2ccfg_offset = 0x10, smb_en = 0x2c;
235 235
236 /* SB800 SMBus does not support forcing address */ 236 /* SB800 and later SMBus does not support forcing address */
237 if (force || force_addr) { 237 if (force || force_addr) {
238 dev_err(&PIIX4_dev->dev, "SB800 SMBus does not support " 238 dev_err(&PIIX4_dev->dev, "SMBus does not support "
239 "forcing address!\n"); 239 "forcing address!\n");
240 return -EINVAL; 240 return -EINVAL;
241 } 241 }
@@ -480,7 +480,7 @@ static struct pci_device_id piix4_ids[] = {
480 { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP300_SMBUS) }, 480 { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP300_SMBUS) },
481 { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_SMBUS) }, 481 { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_SMBUS) },
482 { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS) }, 482 { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS) },
483 { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_SB900_SMBUS) }, 483 { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_HUDSON2_SMBUS) },
484 { PCI_DEVICE(PCI_VENDOR_ID_SERVERWORKS, 484 { PCI_DEVICE(PCI_VENDOR_ID_SERVERWORKS,
485 PCI_DEVICE_ID_SERVERWORKS_OSB4) }, 485 PCI_DEVICE_ID_SERVERWORKS_OSB4) },
486 { PCI_DEVICE(PCI_VENDOR_ID_SERVERWORKS, 486 { PCI_DEVICE(PCI_VENDOR_ID_SERVERWORKS,
diff --git a/drivers/i2c/busses/i2c-pnx.c b/drivers/i2c/busses/i2c-pnx.c
index 6ff6c20f1e78..fbab6846ae64 100644
--- a/drivers/i2c/busses/i2c-pnx.c
+++ b/drivers/i2c/busses/i2c-pnx.c
@@ -19,7 +19,9 @@
19#include <linux/completion.h> 19#include <linux/completion.h>
20#include <linux/platform_device.h> 20#include <linux/platform_device.h>
21#include <linux/i2c-pnx.h> 21#include <linux/i2c-pnx.h>
22#include <linux/io.h>
22#include <mach/hardware.h> 23#include <mach/hardware.h>
24#include <mach/i2c.h>
23#include <asm/irq.h> 25#include <asm/irq.h>
24#include <asm/uaccess.h> 26#include <asm/uaccess.h>
25 27
@@ -54,6 +56,9 @@ static inline void i2c_pnx_arm_timer(struct i2c_adapter *adap)
54 struct timer_list *timer = &data->mif.timer; 56 struct timer_list *timer = &data->mif.timer;
55 int expires = I2C_PNX_TIMEOUT / (1000 / HZ); 57 int expires = I2C_PNX_TIMEOUT / (1000 / HZ);
56 58
59 if (expires <= 1)
60 expires = 2;
61
57 del_timer_sync(timer); 62 del_timer_sync(timer);
58 63
59 dev_dbg(&adap->dev, "Timer armed at %lu plus %u jiffies.\n", 64 dev_dbg(&adap->dev, "Timer armed at %lu plus %u jiffies.\n",
@@ -645,7 +650,7 @@ static int __devinit i2c_pnx_probe(struct platform_device *pdev)
645 return 0; 650 return 0;
646 651
647out_irq: 652out_irq:
648 free_irq(alg_data->irq, alg_data); 653 free_irq(alg_data->irq, i2c_pnx->adapter);
649out_clock: 654out_clock:
650 i2c_pnx->set_clock_stop(pdev); 655 i2c_pnx->set_clock_stop(pdev);
651out_unmap: 656out_unmap:
@@ -664,7 +669,7 @@ static int __devexit i2c_pnx_remove(struct platform_device *pdev)
664 struct i2c_adapter *adap = i2c_pnx->adapter; 669 struct i2c_adapter *adap = i2c_pnx->adapter;
665 struct i2c_pnx_algo_data *alg_data = adap->algo_data; 670 struct i2c_pnx_algo_data *alg_data = adap->algo_data;
666 671
667 free_irq(alg_data->irq, alg_data); 672 free_irq(alg_data->irq, i2c_pnx->adapter);
668 i2c_del_adapter(adap); 673 i2c_del_adapter(adap);
669 i2c_pnx->set_clock_stop(pdev); 674 i2c_pnx->set_clock_stop(pdev);
670 iounmap((void *)alg_data->ioaddr); 675 iounmap((void *)alg_data->ioaddr);
diff --git a/drivers/i2c/chips/tsl2550.c b/drivers/i2c/chips/tsl2550.c
index aa96bd2d27ea..a0702f36a72f 100644
--- a/drivers/i2c/chips/tsl2550.c
+++ b/drivers/i2c/chips/tsl2550.c
@@ -257,6 +257,7 @@ static DEVICE_ATTR(operating_mode, S_IWUSR | S_IRUGO,
257 257
258static ssize_t __tsl2550_show_lux(struct i2c_client *client, char *buf) 258static ssize_t __tsl2550_show_lux(struct i2c_client *client, char *buf)
259{ 259{
260 struct tsl2550_data *data = i2c_get_clientdata(client);
260 u8 ch0, ch1; 261 u8 ch0, ch1;
261 int ret; 262 int ret;
262 263
@@ -274,6 +275,8 @@ static ssize_t __tsl2550_show_lux(struct i2c_client *client, char *buf)
274 ret = tsl2550_calculate_lux(ch0, ch1); 275 ret = tsl2550_calculate_lux(ch0, ch1);
275 if (ret < 0) 276 if (ret < 0)
276 return ret; 277 return ret;
278 if (data->operating_mode == 1)
279 ret *= 5;
277 280
278 return sprintf(buf, "%d\n", ret); 281 return sprintf(buf, "%d\n", ret);
279} 282}
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 8d80fceca6a4..296504355142 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -762,6 +762,7 @@ int i2c_del_adapter(struct i2c_adapter *adap)
762{ 762{
763 int res = 0; 763 int res = 0;
764 struct i2c_adapter *found; 764 struct i2c_adapter *found;
765 struct i2c_client *client, *next;
765 766
766 /* First make sure that this adapter was ever added */ 767 /* First make sure that this adapter was ever added */
767 mutex_lock(&core_lock); 768 mutex_lock(&core_lock);
@@ -781,6 +782,16 @@ int i2c_del_adapter(struct i2c_adapter *adap)
781 if (res) 782 if (res)
782 return res; 783 return res;
783 784
785 /* Remove devices instantiated from sysfs */
786 list_for_each_entry_safe(client, next, &userspace_devices, detected) {
787 if (client->adapter == adap) {
788 dev_dbg(&adap->dev, "Removing %s at 0x%x\n",
789 client->name, client->addr);
790 list_del(&client->detected);
791 i2c_unregister_device(client);
792 }
793 }
794
784 /* Detach any active clients. This can't fail, thus we do not 795 /* Detach any active clients. This can't fail, thus we do not
785 checking the returned value. */ 796 checking the returned value. */
786 res = device_for_each_child(&adap->dev, NULL, __unregister_client); 797 res = device_for_each_child(&adap->dev, NULL, __unregister_client);
diff --git a/drivers/ieee802154/fakehard.c b/drivers/ieee802154/fakehard.c
index 96a2959ce877..7c544f7c74c4 100644
--- a/drivers/ieee802154/fakehard.c
+++ b/drivers/ieee802154/fakehard.c
@@ -260,15 +260,12 @@ static int ieee802154_fake_close(struct net_device *dev)
260static netdev_tx_t ieee802154_fake_xmit(struct sk_buff *skb, 260static netdev_tx_t ieee802154_fake_xmit(struct sk_buff *skb,
261 struct net_device *dev) 261 struct net_device *dev)
262{ 262{
263 skb->iif = dev->ifindex;
264 skb->dev = dev;
265 dev->stats.tx_packets++; 263 dev->stats.tx_packets++;
266 dev->stats.tx_bytes += skb->len; 264 dev->stats.tx_bytes += skb->len;
267 265
268 dev->trans_start = jiffies;
269
270 /* FIXME: do hardware work here ... */ 266 /* FIXME: do hardware work here ... */
271 267
268 dev_kfree_skb(skb);
272 return NETDEV_TX_OK; 269 return NETDEV_TX_OK;
273} 270}
274 271
diff --git a/drivers/input/ff-core.c b/drivers/input/ff-core.c
index 72c63e5dd630..38df81fcdc3a 100644
--- a/drivers/input/ff-core.c
+++ b/drivers/input/ff-core.c
@@ -337,16 +337,16 @@ int input_ff_create(struct input_dev *dev, int max_effects)
337 dev->ff = ff; 337 dev->ff = ff;
338 dev->flush = flush_effects; 338 dev->flush = flush_effects;
339 dev->event = input_ff_event; 339 dev->event = input_ff_event;
340 set_bit(EV_FF, dev->evbit); 340 __set_bit(EV_FF, dev->evbit);
341 341
342 /* Copy "true" bits into ff device bitmap */ 342 /* Copy "true" bits into ff device bitmap */
343 for (i = 0; i <= FF_MAX; i++) 343 for (i = 0; i <= FF_MAX; i++)
344 if (test_bit(i, dev->ffbit)) 344 if (test_bit(i, dev->ffbit))
345 set_bit(i, ff->ffbit); 345 __set_bit(i, ff->ffbit);
346 346
347 /* we can emulate RUMBLE with periodic effects */ 347 /* we can emulate RUMBLE with periodic effects */
348 if (test_bit(FF_PERIODIC, ff->ffbit)) 348 if (test_bit(FF_PERIODIC, ff->ffbit))
349 set_bit(FF_RUMBLE, dev->ffbit); 349 __set_bit(FF_RUMBLE, dev->ffbit);
350 350
351 return 0; 351 return 0;
352} 352}
@@ -362,12 +362,14 @@ EXPORT_SYMBOL_GPL(input_ff_create);
362 */ 362 */
363void input_ff_destroy(struct input_dev *dev) 363void input_ff_destroy(struct input_dev *dev)
364{ 364{
365 clear_bit(EV_FF, dev->evbit); 365 struct ff_device *ff = dev->ff;
366 if (dev->ff) { 366
367 if (dev->ff->destroy) 367 __clear_bit(EV_FF, dev->evbit);
368 dev->ff->destroy(dev->ff); 368 if (ff) {
369 kfree(dev->ff->private); 369 if (ff->destroy)
370 kfree(dev->ff); 370 ff->destroy(ff);
371 kfree(ff->private);
372 kfree(ff);
371 dev->ff = NULL; 373 dev->ff = NULL;
372 } 374 }
373} 375}
diff --git a/drivers/input/ff-memless.c b/drivers/input/ff-memless.c
index 2d1415e16834..b483b2995fa9 100644
--- a/drivers/input/ff-memless.c
+++ b/drivers/input/ff-memless.c
@@ -61,7 +61,6 @@ struct ml_device {
61 struct ml_effect_state states[FF_MEMLESS_EFFECTS]; 61 struct ml_effect_state states[FF_MEMLESS_EFFECTS];
62 int gain; 62 int gain;
63 struct timer_list timer; 63 struct timer_list timer;
64 spinlock_t timer_lock;
65 struct input_dev *dev; 64 struct input_dev *dev;
66 65
67 int (*play_effect)(struct input_dev *dev, void *data, 66 int (*play_effect)(struct input_dev *dev, void *data,
@@ -368,38 +367,38 @@ static void ml_effect_timer(unsigned long timer_data)
368{ 367{
369 struct input_dev *dev = (struct input_dev *)timer_data; 368 struct input_dev *dev = (struct input_dev *)timer_data;
370 struct ml_device *ml = dev->ff->private; 369 struct ml_device *ml = dev->ff->private;
370 unsigned long flags;
371 371
372 debug("timer: updating effects"); 372 debug("timer: updating effects");
373 373
374 spin_lock(&ml->timer_lock); 374 spin_lock_irqsave(&dev->event_lock, flags);
375 ml_play_effects(ml); 375 ml_play_effects(ml);
376 spin_unlock(&ml->timer_lock); 376 spin_unlock_irqrestore(&dev->event_lock, flags);
377} 377}
378 378
379/*
380 * Sets requested gain for FF effects. Called with dev->event_lock held.
381 */
379static void ml_ff_set_gain(struct input_dev *dev, u16 gain) 382static void ml_ff_set_gain(struct input_dev *dev, u16 gain)
380{ 383{
381 struct ml_device *ml = dev->ff->private; 384 struct ml_device *ml = dev->ff->private;
382 int i; 385 int i;
383 386
384 spin_lock_bh(&ml->timer_lock);
385
386 ml->gain = gain; 387 ml->gain = gain;
387 388
388 for (i = 0; i < FF_MEMLESS_EFFECTS; i++) 389 for (i = 0; i < FF_MEMLESS_EFFECTS; i++)
389 __clear_bit(FF_EFFECT_PLAYING, &ml->states[i].flags); 390 __clear_bit(FF_EFFECT_PLAYING, &ml->states[i].flags);
390 391
391 ml_play_effects(ml); 392 ml_play_effects(ml);
392
393 spin_unlock_bh(&ml->timer_lock);
394} 393}
395 394
395/*
396 * Start/stop specified FF effect. Called with dev->event_lock held.
397 */
396static int ml_ff_playback(struct input_dev *dev, int effect_id, int value) 398static int ml_ff_playback(struct input_dev *dev, int effect_id, int value)
397{ 399{
398 struct ml_device *ml = dev->ff->private; 400 struct ml_device *ml = dev->ff->private;
399 struct ml_effect_state *state = &ml->states[effect_id]; 401 struct ml_effect_state *state = &ml->states[effect_id];
400 unsigned long flags;
401
402 spin_lock_irqsave(&ml->timer_lock, flags);
403 402
404 if (value > 0) { 403 if (value > 0) {
405 debug("initiated play"); 404 debug("initiated play");
@@ -425,8 +424,6 @@ static int ml_ff_playback(struct input_dev *dev, int effect_id, int value)
425 ml_play_effects(ml); 424 ml_play_effects(ml);
426 } 425 }
427 426
428 spin_unlock_irqrestore(&ml->timer_lock, flags);
429
430 return 0; 427 return 0;
431} 428}
432 429
@@ -436,7 +433,7 @@ static int ml_ff_upload(struct input_dev *dev,
436 struct ml_device *ml = dev->ff->private; 433 struct ml_device *ml = dev->ff->private;
437 struct ml_effect_state *state = &ml->states[effect->id]; 434 struct ml_effect_state *state = &ml->states[effect->id];
438 435
439 spin_lock_bh(&ml->timer_lock); 436 spin_lock_irq(&dev->event_lock);
440 437
441 if (test_bit(FF_EFFECT_STARTED, &state->flags)) { 438 if (test_bit(FF_EFFECT_STARTED, &state->flags)) {
442 __clear_bit(FF_EFFECT_PLAYING, &state->flags); 439 __clear_bit(FF_EFFECT_PLAYING, &state->flags);
@@ -448,7 +445,7 @@ static int ml_ff_upload(struct input_dev *dev,
448 ml_schedule_timer(ml); 445 ml_schedule_timer(ml);
449 } 446 }
450 447
451 spin_unlock_bh(&ml->timer_lock); 448 spin_unlock_irq(&dev->event_lock);
452 449
453 return 0; 450 return 0;
454} 451}
@@ -482,7 +479,6 @@ int input_ff_create_memless(struct input_dev *dev, void *data,
482 ml->private = data; 479 ml->private = data;
483 ml->play_effect = play_effect; 480 ml->play_effect = play_effect;
484 ml->gain = 0xffff; 481 ml->gain = 0xffff;
485 spin_lock_init(&ml->timer_lock);
486 setup_timer(&ml->timer, ml_effect_timer, (unsigned long)dev); 482 setup_timer(&ml->timer, ml_effect_timer, (unsigned long)dev);
487 483
488 set_bit(FF_GAIN, dev->ffbit); 484 set_bit(FF_GAIN, dev->ffbit);
diff --git a/drivers/input/input.c b/drivers/input/input.c
index cc763c96fada..2266ecbfbc01 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -1292,17 +1292,24 @@ static int input_dev_uevent(struct device *device, struct kobj_uevent_env *env)
1292 return 0; 1292 return 0;
1293} 1293}
1294 1294
1295#define INPUT_DO_TOGGLE(dev, type, bits, on) \ 1295#define INPUT_DO_TOGGLE(dev, type, bits, on) \
1296 do { \ 1296 do { \
1297 int i; \ 1297 int i; \
1298 if (!test_bit(EV_##type, dev->evbit)) \ 1298 bool active; \
1299 break; \ 1299 \
1300 for (i = 0; i < type##_MAX; i++) { \ 1300 if (!test_bit(EV_##type, dev->evbit)) \
1301 if (!test_bit(i, dev->bits##bit) || \ 1301 break; \
1302 !test_bit(i, dev->bits)) \ 1302 \
1303 continue; \ 1303 for (i = 0; i < type##_MAX; i++) { \
1304 dev->event(dev, EV_##type, i, on); \ 1304 if (!test_bit(i, dev->bits##bit)) \
1305 } \ 1305 continue; \
1306 \
1307 active = test_bit(i, dev->bits); \
1308 if (!active && !on) \
1309 continue; \
1310 \
1311 dev->event(dev, EV_##type, i, on ? active : 0); \
1312 } \
1306 } while (0) 1313 } while (0)
1307 1314
1308#ifdef CONFIG_PM 1315#ifdef CONFIG_PM
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index a6512372c7a3..28e6110d1ff8 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -233,6 +233,7 @@ struct atkbd {
233 */ 233 */
234static void (*atkbd_platform_fixup)(struct atkbd *, const void *data); 234static void (*atkbd_platform_fixup)(struct atkbd *, const void *data);
235static void *atkbd_platform_fixup_data; 235static void *atkbd_platform_fixup_data;
236static unsigned int (*atkbd_platform_scancode_fixup)(struct atkbd *, unsigned int);
236 237
237static ssize_t atkbd_attr_show_helper(struct device *dev, char *buf, 238static ssize_t atkbd_attr_show_helper(struct device *dev, char *buf,
238 ssize_t (*handler)(struct atkbd *, char *)); 239 ssize_t (*handler)(struct atkbd *, char *));
@@ -393,6 +394,9 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,
393 394
394 input_event(dev, EV_MSC, MSC_RAW, code); 395 input_event(dev, EV_MSC, MSC_RAW, code);
395 396
397 if (atkbd_platform_scancode_fixup)
398 code = atkbd_platform_scancode_fixup(atkbd, code);
399
396 if (atkbd->translated) { 400 if (atkbd->translated) {
397 401
398 if (atkbd->emul || atkbd_need_xlate(atkbd->xl_bit, code)) { 402 if (atkbd->emul || atkbd_need_xlate(atkbd->xl_bit, code)) {
@@ -923,6 +927,22 @@ static unsigned int atkbd_volume_forced_release_keys[] = {
923}; 927};
924 928
925/* 929/*
930 * OQO 01+ multimedia keys (64--66) generate e0 6x upon release whereas
931 * they should be generating e4-e6 (0x80 | code).
932 */
933static unsigned int atkbd_oqo_01plus_scancode_fixup(struct atkbd *atkbd,
934 unsigned int code)
935{
936 if (atkbd->translated && atkbd->emul == 1 &&
937 (code == 0x64 || code == 0x65 || code == 0x66)) {
938 atkbd->emul = 0;
939 code |= 0x80;
940 }
941
942 return code;
943}
944
945/*
926 * atkbd_set_keycode_table() initializes keyboard's keycode table 946 * atkbd_set_keycode_table() initializes keyboard's keycode table
927 * according to the selected scancode set 947 * according to the selected scancode set
928 */ 948 */
@@ -1154,6 +1174,18 @@ static int atkbd_reconnect(struct serio *serio)
1154 return -1; 1174 return -1;
1155 1175
1156 atkbd_activate(atkbd); 1176 atkbd_activate(atkbd);
1177
1178 /*
1179 * Restore LED state and repeat rate. While input core
1180 * will do this for us at resume time reconnect may happen
1181 * because user requested it via sysfs or simply because
1182 * keyboard was unplugged and plugged in again so we need
1183 * to do it ourselves here.
1184 */
1185 atkbd_set_leds(atkbd);
1186 if (!atkbd->softrepeat)
1187 atkbd_set_repeat_rate(atkbd);
1188
1157 } 1189 }
1158 1190
1159 atkbd_enable(atkbd); 1191 atkbd_enable(atkbd);
@@ -1402,6 +1434,7 @@ static ssize_t atkbd_set_set(struct atkbd *atkbd, const char *buf, size_t count)
1402 1434
1403 atkbd->dev = new_dev; 1435 atkbd->dev = new_dev;
1404 atkbd->set = atkbd_select_set(atkbd, value, atkbd->extra); 1436 atkbd->set = atkbd_select_set(atkbd, value, atkbd->extra);
1437 atkbd_reset_state(atkbd);
1405 atkbd_activate(atkbd); 1438 atkbd_activate(atkbd);
1406 atkbd_set_keycode_table(atkbd); 1439 atkbd_set_keycode_table(atkbd);
1407 atkbd_set_device_attrs(atkbd); 1440 atkbd_set_device_attrs(atkbd);
@@ -1527,6 +1560,13 @@ static int __init atkbd_setup_forced_release(const struct dmi_system_id *id)
1527 return 0; 1560 return 0;
1528} 1561}
1529 1562
1563static int __init atkbd_setup_scancode_fixup(const struct dmi_system_id *id)
1564{
1565 atkbd_platform_scancode_fixup = id->driver_data;
1566
1567 return 0;
1568}
1569
1530static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = { 1570static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
1531 { 1571 {
1532 .ident = "Dell Laptop", 1572 .ident = "Dell Laptop",
@@ -1663,6 +1703,15 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
1663 .callback = atkbd_setup_forced_release, 1703 .callback = atkbd_setup_forced_release,
1664 .driver_data = atkdb_soltech_ta12_forced_release_keys, 1704 .driver_data = atkdb_soltech_ta12_forced_release_keys,
1665 }, 1705 },
1706 {
1707 .ident = "OQO Model 01+",
1708 .matches = {
1709 DMI_MATCH(DMI_SYS_VENDOR, "OQO"),
1710 DMI_MATCH(DMI_PRODUCT_NAME, "ZEPTO"),
1711 },
1712 .callback = atkbd_setup_scancode_fixup,
1713 .driver_data = atkbd_oqo_01plus_scancode_fixup,
1714 },
1666 { } 1715 { }
1667}; 1716};
1668 1717
diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c
index a88aff3816a0..77d130914259 100644
--- a/drivers/input/keyboard/gpio_keys.c
+++ b/drivers/input/keyboard/gpio_keys.c
@@ -147,6 +147,7 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev)
147 } 147 }
148 148
149 error = request_irq(irq, gpio_keys_isr, 149 error = request_irq(irq, gpio_keys_isr,
150 IRQF_SHARED |
150 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, 151 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
151 button->desc ? button->desc : "gpio_keys", 152 button->desc ? button->desc : "gpio_keys",
152 bdata); 153 bdata);
diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
index 02f4f8f1db6f..a9bb2544b2de 100644
--- a/drivers/input/misc/Kconfig
+++ b/drivers/input/misc/Kconfig
@@ -227,6 +227,7 @@ config INPUT_WINBOND_CIR
227 depends on X86 && PNP 227 depends on X86 && PNP
228 select NEW_LEDS 228 select NEW_LEDS
229 select LEDS_CLASS 229 select LEDS_CLASS
230 select LEDS_TRIGGERS
230 select BITREVERSE 231 select BITREVERSE
231 help 232 help
232 Say Y here if you want to use the IR remote functionality found 233 Say Y here if you want to use the IR remote functionality found
diff --git a/drivers/input/mouse/lifebook.c b/drivers/input/mouse/lifebook.c
index 5e6308694408..82811558ec33 100644
--- a/drivers/input/mouse/lifebook.c
+++ b/drivers/input/mouse/lifebook.c
@@ -107,8 +107,7 @@ static const struct dmi_system_id lifebook_dmi_table[] = {
107 .matches = { 107 .matches = {
108 DMI_MATCH(DMI_PRODUCT_NAME, "CF-72"), 108 DMI_MATCH(DMI_PRODUCT_NAME, "CF-72"),
109 }, 109 },
110 .callback = lifebook_set_serio_phys, 110 .callback = lifebook_set_6byte_proto,
111 .driver_data = "isa0060/serio3",
112 }, 111 },
113 { 112 {
114 .ident = "Lifebook B142", 113 .ident = "Lifebook B142",
diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
index 690aed905436..07c53798301a 100644
--- a/drivers/input/mouse/psmouse-base.c
+++ b/drivers/input/mouse/psmouse-base.c
@@ -581,7 +581,7 @@ static int cortron_detect(struct psmouse *psmouse, bool set_properties)
581static int psmouse_extensions(struct psmouse *psmouse, 581static int psmouse_extensions(struct psmouse *psmouse,
582 unsigned int max_proto, bool set_properties) 582 unsigned int max_proto, bool set_properties)
583{ 583{
584 bool synaptics_hardware = true; 584 bool synaptics_hardware = false;
585 585
586/* 586/*
587 * We always check for lifebook because it does not disturb mouse 587 * We always check for lifebook because it does not disturb mouse
@@ -1673,7 +1673,7 @@ static int psmouse_get_maxproto(char *buffer, struct kernel_param *kp)
1673{ 1673{
1674 int type = *((unsigned int *)kp->arg); 1674 int type = *((unsigned int *)kp->arg);
1675 1675
1676 return sprintf(buffer, "%s\n", psmouse_protocol_by_type(type)->name); 1676 return sprintf(buffer, "%s", psmouse_protocol_by_type(type)->name);
1677} 1677}
1678 1678
1679static int __init psmouse_init(void) 1679static int __init psmouse_init(void)
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index a537925f7651..2bcf1ace27c0 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -447,6 +447,27 @@ static struct dmi_system_id __initdata i8042_dmi_reset_table[] = {
447 DMI_MATCH(DMI_PRODUCT_NAME, "N10"), 447 DMI_MATCH(DMI_PRODUCT_NAME, "N10"),
448 }, 448 },
449 }, 449 },
450 {
451 .ident = "Dell Vostro 1320",
452 .matches = {
453 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
454 DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 1320"),
455 },
456 },
457 {
458 .ident = "Dell Vostro 1520",
459 .matches = {
460 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
461 DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 1520"),
462 },
463 },
464 {
465 .ident = "Dell Vostro 1720",
466 .matches = {
467 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
468 DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 1720"),
469 },
470 },
450 { } 471 { }
451}; 472};
452 473
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index a31578170ccc..1df02d25aca5 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -836,17 +836,32 @@ static int i8042_controller_selftest(void)
836static int i8042_controller_init(void) 836static int i8042_controller_init(void)
837{ 837{
838 unsigned long flags; 838 unsigned long flags;
839 int n = 0;
840 unsigned char ctr[2];
839 841
840/* 842/*
841 * Save the CTR for restoral on unload / reboot. 843 * Save the CTR for restore on unload / reboot.
842 */ 844 */
843 845
844 if (i8042_command(&i8042_ctr, I8042_CMD_CTL_RCTR)) { 846 do {
845 printk(KERN_ERR "i8042.c: Can't read CTR while initializing i8042.\n"); 847 if (n >= 10) {
846 return -EIO; 848 printk(KERN_ERR
847 } 849 "i8042.c: Unable to get stable CTR read.\n");
850 return -EIO;
851 }
852
853 if (n != 0)
854 udelay(50);
855
856 if (i8042_command(&ctr[n++ % 2], I8042_CMD_CTL_RCTR)) {
857 printk(KERN_ERR
858 "i8042.c: Can't read CTR while initializing i8042.\n");
859 return -EIO;
860 }
848 861
849 i8042_initial_ctr = i8042_ctr; 862 } while (n < 2 || ctr[0] != ctr[1]);
863
864 i8042_initial_ctr = i8042_ctr = ctr[0];
850 865
851/* 866/*
852 * Disable the keyboard interface and interrupt. 867 * Disable the keyboard interface and interrupt.
@@ -895,6 +910,12 @@ static int i8042_controller_init(void)
895 return -EIO; 910 return -EIO;
896 } 911 }
897 912
913/*
914 * Flush whatever accumulated while we were disabling keyboard port.
915 */
916
917 i8042_flush();
918
898 return 0; 919 return 0;
899} 920}
900 921
@@ -914,7 +935,7 @@ static void i8042_controller_reset(void)
914 i8042_ctr |= I8042_CTR_KBDDIS | I8042_CTR_AUXDIS; 935 i8042_ctr |= I8042_CTR_KBDDIS | I8042_CTR_AUXDIS;
915 i8042_ctr &= ~(I8042_CTR_KBDINT | I8042_CTR_AUXINT); 936 i8042_ctr &= ~(I8042_CTR_KBDINT | I8042_CTR_AUXINT);
916 937
917 if (i8042_command(&i8042_initial_ctr, I8042_CMD_CTL_WCTR)) 938 if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR))
918 printk(KERN_WARNING "i8042.c: Can't write CTR while resetting.\n"); 939 printk(KERN_WARNING "i8042.c: Can't write CTR while resetting.\n");
919 940
920/* 941/*
diff --git a/drivers/isdn/hardware/eicon/maintidi.c b/drivers/isdn/hardware/eicon/maintidi.c
index 23960cb6eaab..41c26e756452 100644
--- a/drivers/isdn/hardware/eicon/maintidi.c
+++ b/drivers/isdn/hardware/eicon/maintidi.c
@@ -959,8 +959,9 @@ static int process_idi_event (diva_strace_context_t* pLib,
959 } 959 }
960 if (!strncmp("State\\Layer2 No1", path, pVar->path_length)) { 960 if (!strncmp("State\\Layer2 No1", path, pVar->path_length)) {
961 char* tmp = &pLib->lines[0].pInterface->Layer2[0]; 961 char* tmp = &pLib->lines[0].pInterface->Layer2[0];
962 dword l2_state; 962 dword l2_state;
963 diva_strace_read_uint (pVar, &l2_state); 963 if (diva_strace_read_uint(pVar, &l2_state))
964 return -1;
964 965
965 switch (l2_state) { 966 switch (l2_state) {
966 case 0: 967 case 0:
diff --git a/drivers/isdn/hardware/eicon/message.c b/drivers/isdn/hardware/eicon/message.c
index 27d5dd68f4fb..ae89fb89da64 100644
--- a/drivers/isdn/hardware/eicon/message.c
+++ b/drivers/isdn/hardware/eicon/message.c
@@ -2692,7 +2692,7 @@ static byte connect_b3_req(dword Id, word Number, DIVA_CAPI_ADAPTER *a,
2692 if (!(fax_control_bits & T30_CONTROL_BIT_MORE_DOCUMENTS) 2692 if (!(fax_control_bits & T30_CONTROL_BIT_MORE_DOCUMENTS)
2693 || (fax_feature_bits & T30_FEATURE_BIT_MORE_DOCUMENTS)) 2693 || (fax_feature_bits & T30_FEATURE_BIT_MORE_DOCUMENTS))
2694 { 2694 {
2695 len = (byte)(&(((T30_INFO *) 0)->universal_6)); 2695 len = offsetof(T30_INFO, universal_6);
2696 fax_info_change = false; 2696 fax_info_change = false;
2697 if (ncpi->length >= 4) 2697 if (ncpi->length >= 4)
2698 { 2698 {
@@ -2754,7 +2754,7 @@ static byte connect_b3_req(dword Id, word Number, DIVA_CAPI_ADAPTER *a,
2754 for (i = 0; i < w; i++) 2754 for (i = 0; i < w; i++)
2755 ((T30_INFO *)(plci->fax_connect_info_buffer))->station_id[i] = fax_parms[4].info[1+i]; 2755 ((T30_INFO *)(plci->fax_connect_info_buffer))->station_id[i] = fax_parms[4].info[1+i];
2756 ((T30_INFO *)(plci->fax_connect_info_buffer))->head_line_len = 0; 2756 ((T30_INFO *)(plci->fax_connect_info_buffer))->head_line_len = 0;
2757 len = (byte)(((T30_INFO *) 0)->station_id + 20); 2757 len = offsetof(T30_INFO, station_id) + 20;
2758 w = fax_parms[5].length; 2758 w = fax_parms[5].length;
2759 if (w > 20) 2759 if (w > 20)
2760 w = 20; 2760 w = 20;
@@ -2788,7 +2788,7 @@ static byte connect_b3_req(dword Id, word Number, DIVA_CAPI_ADAPTER *a,
2788 } 2788 }
2789 else 2789 else
2790 { 2790 {
2791 len = (byte)(&(((T30_INFO *) 0)->universal_6)); 2791 len = offsetof(T30_INFO, universal_6);
2792 } 2792 }
2793 fax_info_change = true; 2793 fax_info_change = true;
2794 2794
@@ -2892,7 +2892,7 @@ static byte connect_b3_res(dword Id, word Number, DIVA_CAPI_ADAPTER *a,
2892 && (plci->nsf_control_bits & T30_NSF_CONTROL_BIT_ENABLE_NSF) 2892 && (plci->nsf_control_bits & T30_NSF_CONTROL_BIT_ENABLE_NSF)
2893 && (plci->nsf_control_bits & T30_NSF_CONTROL_BIT_NEGOTIATE_RESP)) 2893 && (plci->nsf_control_bits & T30_NSF_CONTROL_BIT_NEGOTIATE_RESP))
2894 { 2894 {
2895 len = ((byte)(((T30_INFO *) 0)->station_id + 20)); 2895 len = offsetof(T30_INFO, station_id) + 20;
2896 if (plci->fax_connect_info_length < len) 2896 if (plci->fax_connect_info_length < len)
2897 { 2897 {
2898 ((T30_INFO *)(plci->fax_connect_info_buffer))->station_id_len = 0; 2898 ((T30_INFO *)(plci->fax_connect_info_buffer))->station_id_len = 0;
@@ -3802,7 +3802,7 @@ static byte manufacturer_res(dword Id, word Number, DIVA_CAPI_ADAPTER *a,
3802 break; 3802 break;
3803 } 3803 }
3804 ncpi = &m_parms[1]; 3804 ncpi = &m_parms[1];
3805 len = ((byte)(((T30_INFO *) 0)->station_id + 20)); 3805 len = offsetof(T30_INFO, station_id) + 20;
3806 if (plci->fax_connect_info_length < len) 3806 if (plci->fax_connect_info_length < len)
3807 { 3807 {
3808 ((T30_INFO *)(plci->fax_connect_info_buffer))->station_id_len = 0; 3808 ((T30_INFO *)(plci->fax_connect_info_buffer))->station_id_len = 0;
@@ -6844,7 +6844,7 @@ static void nl_ind(PLCI *plci)
6844 if ((plci->requested_options_conn | plci->requested_options | a->requested_options_table[plci->appl->Id-1]) 6844 if ((plci->requested_options_conn | plci->requested_options | a->requested_options_table[plci->appl->Id-1])
6845 & ((1L << PRIVATE_FAX_SUB_SEP_PWD) | (1L << PRIVATE_FAX_NONSTANDARD))) 6845 & ((1L << PRIVATE_FAX_SUB_SEP_PWD) | (1L << PRIVATE_FAX_NONSTANDARD)))
6846 { 6846 {
6847 i = ((word)(((T30_INFO *) 0)->station_id + 20)) + ((T30_INFO *)plci->NL.RBuffer->P)->head_line_len; 6847 i = offsetof(T30_INFO, station_id) + 20 + ((T30_INFO *)plci->NL.RBuffer->P)->head_line_len;
6848 while (i < plci->NL.RBuffer->length) 6848 while (i < plci->NL.RBuffer->length)
6849 plci->ncpi_buffer[++len] = plci->NL.RBuffer->P[i++]; 6849 plci->ncpi_buffer[++len] = plci->NL.RBuffer->P[i++];
6850 } 6850 }
@@ -7236,7 +7236,7 @@ static void nl_ind(PLCI *plci)
7236 { 7236 {
7237 plci->RData[1].P = plci->RData[0].P; 7237 plci->RData[1].P = plci->RData[0].P;
7238 plci->RData[1].PLength = plci->RData[0].PLength; 7238 plci->RData[1].PLength = plci->RData[0].PLength;
7239 plci->RData[0].P = v120_header_buffer + (-((int) v120_header_buffer) & 3); 7239 plci->RData[0].P = v120_header_buffer + (-((unsigned long)v120_header_buffer) & 3);
7240 if ((plci->NL.RBuffer->P[0] & V120_HEADER_EXTEND_BIT) || (plci->NL.RLength == 1)) 7240 if ((plci->NL.RBuffer->P[0] & V120_HEADER_EXTEND_BIT) || (plci->NL.RLength == 1))
7241 plci->RData[0].PLength = 1; 7241 plci->RData[0].PLength = 1;
7242 else 7242 else
@@ -8473,7 +8473,7 @@ static word add_b23(PLCI *plci, API_PARSE *bp)
8473 fax_control_bits |= T30_CONTROL_BIT_ACCEPT_SEL_POLLING; 8473 fax_control_bits |= T30_CONTROL_BIT_ACCEPT_SEL_POLLING;
8474 } 8474 }
8475 len = nlc[0]; 8475 len = nlc[0];
8476 pos = ((byte)(((T30_INFO *) 0)->station_id + 20)); 8476 pos = offsetof(T30_INFO, station_id) + 20;
8477 if (pos < plci->fax_connect_info_length) 8477 if (pos < plci->fax_connect_info_length)
8478 { 8478 {
8479 for (i = 1 + plci->fax_connect_info_buffer[pos]; i != 0; i--) 8479 for (i = 1 + plci->fax_connect_info_buffer[pos]; i != 0; i--)
@@ -8525,7 +8525,7 @@ static word add_b23(PLCI *plci, API_PARSE *bp)
8525 } 8525 }
8526 8526
8527 PUT_WORD(&(((T30_INFO *)&nlc[1])->control_bits_low), fax_control_bits); 8527 PUT_WORD(&(((T30_INFO *)&nlc[1])->control_bits_low), fax_control_bits);
8528 len = ((byte)(((T30_INFO *) 0)->station_id + 20)); 8528 len = offsetof(T30_INFO, station_id) + 20;
8529 for (i = 0; i < len; i++) 8529 for (i = 0; i < len; i++)
8530 plci->fax_connect_info_buffer[i] = nlc[1+i]; 8530 plci->fax_connect_info_buffer[i] = nlc[1+i];
8531 ((T30_INFO *) plci->fax_connect_info_buffer)->head_line_len = 0; 8531 ((T30_INFO *) plci->fax_connect_info_buffer)->head_line_len = 0;
diff --git a/drivers/isdn/hardware/mISDN/hfcmulti.c b/drivers/isdn/hardware/mISDN/hfcmulti.c
index faed794cf75a..a6624ad252c5 100644
--- a/drivers/isdn/hardware/mISDN/hfcmulti.c
+++ b/drivers/isdn/hardware/mISDN/hfcmulti.c
@@ -5481,7 +5481,7 @@ HFCmulti_init(void)
5481 if (err) { 5481 if (err) {
5482 printk(KERN_ERR "error registering embedded driver: " 5482 printk(KERN_ERR "error registering embedded driver: "
5483 "%x\n", err); 5483 "%x\n", err);
5484 return -err; 5484 return err;
5485 } 5485 }
5486 HFC_cnt++; 5486 HFC_cnt++;
5487 printk(KERN_INFO "%d devices registered\n", HFC_cnt); 5487 printk(KERN_INFO "%d devices registered\n", HFC_cnt);
diff --git a/drivers/isdn/hisax/amd7930_fn.c b/drivers/isdn/hisax/amd7930_fn.c
index bf526a7a63af..d6fdf1f66754 100644
--- a/drivers/isdn/hisax/amd7930_fn.c
+++ b/drivers/isdn/hisax/amd7930_fn.c
@@ -594,6 +594,7 @@ Amd7930_l1hw(struct PStack *st, int pr, void *arg)
594 if (cs->debug & L1_DEB_WARN) 594 if (cs->debug & L1_DEB_WARN)
595 debugl1(cs, "Amd7930: l1hw: l2l1 tx_skb exist this shouldn't happen"); 595 debugl1(cs, "Amd7930: l1hw: l2l1 tx_skb exist this shouldn't happen");
596 skb_queue_tail(&cs->sq, skb); 596 skb_queue_tail(&cs->sq, skb);
597 spin_unlock_irqrestore(&cs->lock, flags);
597 break; 598 break;
598 } 599 }
599 if (cs->debug & DEB_DLOG_HEX) 600 if (cs->debug & DEB_DLOG_HEX)
diff --git a/drivers/isdn/hisax/diva.c b/drivers/isdn/hisax/diva.c
index 018bd293e580..0b0c2e5d806b 100644
--- a/drivers/isdn/hisax/diva.c
+++ b/drivers/isdn/hisax/diva.c
@@ -382,7 +382,7 @@ MemwaitforXFW(struct IsdnCardState *cs, int hscx)
382{ 382{
383 int to = 50; 383 int to = 50;
384 384
385 while ((!(MemReadHSCX(cs, hscx, HSCX_STAR) & 0x44) == 0x40) && to) { 385 while (((MemReadHSCX(cs, hscx, HSCX_STAR) & 0x44) != 0x40) && to) {
386 udelay(1); 386 udelay(1);
387 to--; 387 to--;
388 } 388 }
diff --git a/drivers/isdn/hisax/elsa_ser.c b/drivers/isdn/hisax/elsa_ser.c
index f181db464392..1657bba7879e 100644
--- a/drivers/isdn/hisax/elsa_ser.c
+++ b/drivers/isdn/hisax/elsa_ser.c
@@ -477,62 +477,62 @@ static void
477modem_set_init(struct IsdnCardState *cs) { 477modem_set_init(struct IsdnCardState *cs) {
478 int timeout; 478 int timeout;
479 479
480#define RCV_DELAY 20000 480#define RCV_DELAY 20
481 modem_write_cmd(cs, MInit_1, strlen(MInit_1)); 481 modem_write_cmd(cs, MInit_1, strlen(MInit_1));
482 timeout = 1000; 482 timeout = 1000;
483 while(timeout-- && cs->hw.elsa.transcnt) 483 while(timeout-- && cs->hw.elsa.transcnt)
484 udelay(1000); 484 udelay(1000);
485 debugl1(cs, "msi tout=%d", timeout); 485 debugl1(cs, "msi tout=%d", timeout);
486 udelay(RCV_DELAY); 486 mdelay(RCV_DELAY);
487 modem_write_cmd(cs, MInit_2, strlen(MInit_2)); 487 modem_write_cmd(cs, MInit_2, strlen(MInit_2));
488 timeout = 1000; 488 timeout = 1000;
489 while(timeout-- && cs->hw.elsa.transcnt) 489 while(timeout-- && cs->hw.elsa.transcnt)
490 udelay(1000); 490 udelay(1000);
491 debugl1(cs, "msi tout=%d", timeout); 491 debugl1(cs, "msi tout=%d", timeout);
492 udelay(RCV_DELAY); 492 mdelay(RCV_DELAY);
493 modem_write_cmd(cs, MInit_3, strlen(MInit_3)); 493 modem_write_cmd(cs, MInit_3, strlen(MInit_3));
494 timeout = 1000; 494 timeout = 1000;
495 while(timeout-- && cs->hw.elsa.transcnt) 495 while(timeout-- && cs->hw.elsa.transcnt)
496 udelay(1000); 496 udelay(1000);
497 debugl1(cs, "msi tout=%d", timeout); 497 debugl1(cs, "msi tout=%d", timeout);
498 udelay(RCV_DELAY); 498 mdelay(RCV_DELAY);
499 modem_write_cmd(cs, MInit_4, strlen(MInit_4)); 499 modem_write_cmd(cs, MInit_4, strlen(MInit_4));
500 timeout = 1000; 500 timeout = 1000;
501 while(timeout-- && cs->hw.elsa.transcnt) 501 while(timeout-- && cs->hw.elsa.transcnt)
502 udelay(1000); 502 udelay(1000);
503 debugl1(cs, "msi tout=%d", timeout); 503 debugl1(cs, "msi tout=%d", timeout);
504 udelay(RCV_DELAY ); 504 mdelay(RCV_DELAY);
505 modem_write_cmd(cs, MInit_5, strlen(MInit_5)); 505 modem_write_cmd(cs, MInit_5, strlen(MInit_5));
506 timeout = 1000; 506 timeout = 1000;
507 while(timeout-- && cs->hw.elsa.transcnt) 507 while(timeout-- && cs->hw.elsa.transcnt)
508 udelay(1000); 508 udelay(1000);
509 debugl1(cs, "msi tout=%d", timeout); 509 debugl1(cs, "msi tout=%d", timeout);
510 udelay(RCV_DELAY); 510 mdelay(RCV_DELAY);
511 modem_write_cmd(cs, MInit_6, strlen(MInit_6)); 511 modem_write_cmd(cs, MInit_6, strlen(MInit_6));
512 timeout = 1000; 512 timeout = 1000;
513 while(timeout-- && cs->hw.elsa.transcnt) 513 while(timeout-- && cs->hw.elsa.transcnt)
514 udelay(1000); 514 udelay(1000);
515 debugl1(cs, "msi tout=%d", timeout); 515 debugl1(cs, "msi tout=%d", timeout);
516 udelay(RCV_DELAY); 516 mdelay(RCV_DELAY);
517 modem_write_cmd(cs, MInit_7, strlen(MInit_7)); 517 modem_write_cmd(cs, MInit_7, strlen(MInit_7));
518 timeout = 1000; 518 timeout = 1000;
519 while(timeout-- && cs->hw.elsa.transcnt) 519 while(timeout-- && cs->hw.elsa.transcnt)
520 udelay(1000); 520 udelay(1000);
521 debugl1(cs, "msi tout=%d", timeout); 521 debugl1(cs, "msi tout=%d", timeout);
522 udelay(RCV_DELAY); 522 mdelay(RCV_DELAY);
523} 523}
524 524
525static void 525static void
526modem_set_dial(struct IsdnCardState *cs, int outgoing) { 526modem_set_dial(struct IsdnCardState *cs, int outgoing) {
527 int timeout; 527 int timeout;
528#define RCV_DELAY 20000 528#define RCV_DELAY 20
529 529
530 modem_write_cmd(cs, MInit_speed28800, strlen(MInit_speed28800)); 530 modem_write_cmd(cs, MInit_speed28800, strlen(MInit_speed28800));
531 timeout = 1000; 531 timeout = 1000;
532 while(timeout-- && cs->hw.elsa.transcnt) 532 while(timeout-- && cs->hw.elsa.transcnt)
533 udelay(1000); 533 udelay(1000);
534 debugl1(cs, "msi tout=%d", timeout); 534 debugl1(cs, "msi tout=%d", timeout);
535 udelay(RCV_DELAY); 535 mdelay(RCV_DELAY);
536 if (outgoing) 536 if (outgoing)
537 modem_write_cmd(cs, MInit_dialout, strlen(MInit_dialout)); 537 modem_write_cmd(cs, MInit_dialout, strlen(MInit_dialout));
538 else 538 else
@@ -541,7 +541,7 @@ modem_set_dial(struct IsdnCardState *cs, int outgoing) {
541 while(timeout-- && cs->hw.elsa.transcnt) 541 while(timeout-- && cs->hw.elsa.transcnt)
542 udelay(1000); 542 udelay(1000);
543 debugl1(cs, "msi tout=%d", timeout); 543 debugl1(cs, "msi tout=%d", timeout);
544 udelay(RCV_DELAY); 544 mdelay(RCV_DELAY);
545} 545}
546 546
547static void 547static void
diff --git a/drivers/isdn/hisax/hfc_usb.c b/drivers/isdn/hisax/hfc_usb.c
index 9de54202c90c..a420b64472e3 100644
--- a/drivers/isdn/hisax/hfc_usb.c
+++ b/drivers/isdn/hisax/hfc_usb.c
@@ -817,8 +817,8 @@ collect_rx_frame(usb_fifo * fifo, __u8 * data, int len, int finish)
817 } 817 }
818 /* we have a complete hdlc packet */ 818 /* we have a complete hdlc packet */
819 if (finish) { 819 if (finish) {
820 if ((!fifo->skbuff->data[fifo->skbuff->len - 1]) 820 if (fifo->skbuff->len > 3 &&
821 && (fifo->skbuff->len > 3)) { 821 !fifo->skbuff->data[fifo->skbuff->len - 1]) {
822 822
823 if (fifon == HFCUSB_D_RX) { 823 if (fifon == HFCUSB_D_RX) {
824 DBG(HFCUSB_DBG_DCHANNEL, 824 DBG(HFCUSB_DBG_DCHANNEL,
diff --git a/drivers/isdn/hisax/hscx_irq.c b/drivers/isdn/hisax/hscx_irq.c
index 7b1ad5e4ecda..2387d76c721a 100644
--- a/drivers/isdn/hisax/hscx_irq.c
+++ b/drivers/isdn/hisax/hscx_irq.c
@@ -32,7 +32,7 @@ waitforXFW(struct IsdnCardState *cs, int hscx)
32{ 32{
33 int to = 50; 33 int to = 50;
34 34
35 while ((!(READHSCX(cs, hscx, HSCX_STAR) & 0x44) == 0x40) && to) { 35 while (((READHSCX(cs, hscx, HSCX_STAR) & 0x44) != 0x40) && to) {
36 udelay(1); 36 udelay(1);
37 to--; 37 to--;
38 } 38 }
diff --git a/drivers/isdn/hisax/icc.c b/drivers/isdn/hisax/icc.c
index 9aba646ba221..c80cbb8a2ef9 100644
--- a/drivers/isdn/hisax/icc.c
+++ b/drivers/isdn/hisax/icc.c
@@ -468,6 +468,7 @@ ICC_l1hw(struct PStack *st, int pr, void *arg)
468 if (cs->debug & L1_DEB_WARN) 468 if (cs->debug & L1_DEB_WARN)
469 debugl1(cs, " l2l1 tx_skb exist this shouldn't happen"); 469 debugl1(cs, " l2l1 tx_skb exist this shouldn't happen");
470 skb_queue_tail(&cs->sq, skb); 470 skb_queue_tail(&cs->sq, skb);
471 spin_unlock_irqrestore(&cs->lock, flags);
471 break; 472 break;
472 } 473 }
473 if (cs->debug & DEB_DLOG_HEX) 474 if (cs->debug & DEB_DLOG_HEX)
diff --git a/drivers/isdn/i4l/isdn_net.h b/drivers/isdn/i4l/isdn_net.h
index 74032d0881ef..7511f08effa5 100644
--- a/drivers/isdn/i4l/isdn_net.h
+++ b/drivers/isdn/i4l/isdn_net.h
@@ -83,19 +83,19 @@ static __inline__ isdn_net_local * isdn_net_get_locked_lp(isdn_net_dev *nd)
83 83
84 spin_lock_irqsave(&nd->queue_lock, flags); 84 spin_lock_irqsave(&nd->queue_lock, flags);
85 lp = nd->queue; /* get lp on top of queue */ 85 lp = nd->queue; /* get lp on top of queue */
86 spin_lock(&nd->queue->xmit_lock);
87 while (isdn_net_lp_busy(nd->queue)) { 86 while (isdn_net_lp_busy(nd->queue)) {
88 spin_unlock(&nd->queue->xmit_lock);
89 nd->queue = nd->queue->next; 87 nd->queue = nd->queue->next;
90 if (nd->queue == lp) { /* not found -- should never happen */ 88 if (nd->queue == lp) { /* not found -- should never happen */
91 lp = NULL; 89 lp = NULL;
92 goto errout; 90 goto errout;
93 } 91 }
94 spin_lock(&nd->queue->xmit_lock);
95 } 92 }
96 lp = nd->queue; 93 lp = nd->queue;
97 nd->queue = nd->queue->next; 94 nd->queue = nd->queue->next;
95 spin_unlock_irqrestore(&nd->queue_lock, flags);
96 spin_lock(&lp->xmit_lock);
98 local_bh_disable(); 97 local_bh_disable();
98 return lp;
99errout: 99errout:
100 spin_unlock_irqrestore(&nd->queue_lock, flags); 100 spin_unlock_irqrestore(&nd->queue_lock, flags);
101 return lp; 101 return lp;
diff --git a/drivers/isdn/i4l/isdn_ppp.c b/drivers/isdn/i4l/isdn_ppp.c
index 2d14b64202a3..642d5aaf53ce 100644
--- a/drivers/isdn/i4l/isdn_ppp.c
+++ b/drivers/isdn/i4l/isdn_ppp.c
@@ -1535,10 +1535,8 @@ static int isdn_ppp_mp_bundle_array_init(void)
1535 int sz = ISDN_MAX_CHANNELS*sizeof(ippp_bundle); 1535 int sz = ISDN_MAX_CHANNELS*sizeof(ippp_bundle);
1536 if( (isdn_ppp_bundle_arr = kzalloc(sz, GFP_KERNEL)) == NULL ) 1536 if( (isdn_ppp_bundle_arr = kzalloc(sz, GFP_KERNEL)) == NULL )
1537 return -ENOMEM; 1537 return -ENOMEM;
1538 for (i = 0; i < ISDN_MAX_CHANNELS; i++) { 1538 for( i = 0; i < ISDN_MAX_CHANNELS; i++ )
1539 spin_lock_init(&isdn_ppp_bundle_arr[i].lock); 1539 spin_lock_init(&isdn_ppp_bundle_arr[i].lock);
1540 skb_queue_head_init(&isdn_ppp_bundle_arr[i].frags);
1541 }
1542 return 0; 1540 return 0;
1543} 1541}
1544 1542
@@ -1571,7 +1569,7 @@ static int isdn_ppp_mp_init( isdn_net_local * lp, ippp_bundle * add_to )
1571 if ((lp->netdev->pb = isdn_ppp_mp_bundle_alloc()) == NULL) 1569 if ((lp->netdev->pb = isdn_ppp_mp_bundle_alloc()) == NULL)
1572 return -ENOMEM; 1570 return -ENOMEM;
1573 lp->next = lp->last = lp; /* nobody else in a queue */ 1571 lp->next = lp->last = lp; /* nobody else in a queue */
1574 skb_queue_head_init(&lp->netdev->pb->frags); 1572 lp->netdev->pb->frags = NULL;
1575 lp->netdev->pb->frames = 0; 1573 lp->netdev->pb->frames = 0;
1576 lp->netdev->pb->seq = UINT_MAX; 1574 lp->netdev->pb->seq = UINT_MAX;
1577 } 1575 }
@@ -1583,29 +1581,28 @@ static int isdn_ppp_mp_init( isdn_net_local * lp, ippp_bundle * add_to )
1583 1581
1584static u32 isdn_ppp_mp_get_seq( int short_seq, 1582static u32 isdn_ppp_mp_get_seq( int short_seq,
1585 struct sk_buff * skb, u32 last_seq ); 1583 struct sk_buff * skb, u32 last_seq );
1586static void isdn_ppp_mp_discard(ippp_bundle *mp, struct sk_buff *from, 1584static struct sk_buff * isdn_ppp_mp_discard( ippp_bundle * mp,
1587 struct sk_buff *to); 1585 struct sk_buff * from, struct sk_buff * to );
1588static void isdn_ppp_mp_reassembly(isdn_net_dev *net_dev, isdn_net_local *lp, 1586static void isdn_ppp_mp_reassembly( isdn_net_dev * net_dev, isdn_net_local * lp,
1589 struct sk_buff *from, struct sk_buff *to, 1587 struct sk_buff * from, struct sk_buff * to );
1590 u32 lastseq); 1588static void isdn_ppp_mp_free_skb( ippp_bundle * mp, struct sk_buff * skb );
1591static void isdn_ppp_mp_free_skb(ippp_bundle *mp, struct sk_buff *skb);
1592static void isdn_ppp_mp_print_recv_pkt( int slot, struct sk_buff * skb ); 1589static void isdn_ppp_mp_print_recv_pkt( int slot, struct sk_buff * skb );
1593 1590
1594static void isdn_ppp_mp_receive(isdn_net_dev * net_dev, isdn_net_local * lp, 1591static void isdn_ppp_mp_receive(isdn_net_dev * net_dev, isdn_net_local * lp,
1595 struct sk_buff *skb) 1592 struct sk_buff *skb)
1596{ 1593{
1597 struct sk_buff *newfrag, *frag, *start, *nextf;
1598 u32 newseq, minseq, thisseq;
1599 isdn_mppp_stats *stats;
1600 struct ippp_struct *is; 1594 struct ippp_struct *is;
1595 isdn_net_local * lpq;
1596 ippp_bundle * mp;
1597 isdn_mppp_stats * stats;
1598 struct sk_buff * newfrag, * frag, * start, *nextf;
1599 u32 newseq, minseq, thisseq;
1601 unsigned long flags; 1600 unsigned long flags;
1602 isdn_net_local *lpq;
1603 ippp_bundle *mp;
1604 int slot; 1601 int slot;
1605 1602
1606 spin_lock_irqsave(&net_dev->pb->lock, flags); 1603 spin_lock_irqsave(&net_dev->pb->lock, flags);
1607 mp = net_dev->pb; 1604 mp = net_dev->pb;
1608 stats = &mp->stats; 1605 stats = &mp->stats;
1609 slot = lp->ppp_slot; 1606 slot = lp->ppp_slot;
1610 if (slot < 0 || slot >= ISDN_MAX_CHANNELS) { 1607 if (slot < 0 || slot >= ISDN_MAX_CHANNELS) {
1611 printk(KERN_ERR "%s: lp->ppp_slot(%d)\n", 1608 printk(KERN_ERR "%s: lp->ppp_slot(%d)\n",
@@ -1616,19 +1613,20 @@ static void isdn_ppp_mp_receive(isdn_net_dev * net_dev, isdn_net_local * lp,
1616 return; 1613 return;
1617 } 1614 }
1618 is = ippp_table[slot]; 1615 is = ippp_table[slot];
1619 if (++mp->frames > stats->max_queue_len) 1616 if( ++mp->frames > stats->max_queue_len )
1620 stats->max_queue_len = mp->frames; 1617 stats->max_queue_len = mp->frames;
1621 1618
1622 if (is->debug & 0x8) 1619 if (is->debug & 0x8)
1623 isdn_ppp_mp_print_recv_pkt(lp->ppp_slot, skb); 1620 isdn_ppp_mp_print_recv_pkt(lp->ppp_slot, skb);
1624 1621
1625 newseq = isdn_ppp_mp_get_seq(is->mpppcfg & SC_IN_SHORT_SEQ, 1622 newseq = isdn_ppp_mp_get_seq(is->mpppcfg & SC_IN_SHORT_SEQ,
1626 skb, is->last_link_seqno); 1623 skb, is->last_link_seqno);
1624
1627 1625
1628 /* if this packet seq # is less than last already processed one, 1626 /* if this packet seq # is less than last already processed one,
1629 * toss it right away, but check for sequence start case first 1627 * toss it right away, but check for sequence start case first
1630 */ 1628 */
1631 if (mp->seq > MP_LONGSEQ_MAX && (newseq & MP_LONGSEQ_MAXBIT)) { 1629 if( mp->seq > MP_LONGSEQ_MAX && (newseq & MP_LONGSEQ_MAXBIT) ) {
1632 mp->seq = newseq; /* the first packet: required for 1630 mp->seq = newseq; /* the first packet: required for
1633 * rfc1990 non-compliant clients -- 1631 * rfc1990 non-compliant clients --
1634 * prevents constant packet toss */ 1632 * prevents constant packet toss */
@@ -1638,7 +1636,7 @@ static void isdn_ppp_mp_receive(isdn_net_dev * net_dev, isdn_net_local * lp,
1638 spin_unlock_irqrestore(&mp->lock, flags); 1636 spin_unlock_irqrestore(&mp->lock, flags);
1639 return; 1637 return;
1640 } 1638 }
1641 1639
1642 /* find the minimum received sequence number over all links */ 1640 /* find the minimum received sequence number over all links */
1643 is->last_link_seqno = minseq = newseq; 1641 is->last_link_seqno = minseq = newseq;
1644 for (lpq = net_dev->queue;;) { 1642 for (lpq = net_dev->queue;;) {
@@ -1659,31 +1657,22 @@ static void isdn_ppp_mp_receive(isdn_net_dev * net_dev, isdn_net_local * lp,
1659 * packets */ 1657 * packets */
1660 newfrag = skb; 1658 newfrag = skb;
1661 1659
1662 /* Insert new fragment into the proper sequence slot. */ 1660 /* if this new fragment is before the first one, then enqueue it now. */
1663 skb_queue_walk(&mp->frags, frag) { 1661 if ((frag = mp->frags) == NULL || MP_LT(newseq, MP_SEQ(frag))) {
1664 if (MP_SEQ(frag) == newseq) { 1662 newfrag->next = frag;
1665 isdn_ppp_mp_free_skb(mp, newfrag); 1663 mp->frags = frag = newfrag;
1666 newfrag = NULL; 1664 newfrag = NULL;
1667 break; 1665 }
1668 }
1669 if (MP_LT(newseq, MP_SEQ(frag))) {
1670 __skb_queue_before(&mp->frags, frag, newfrag);
1671 newfrag = NULL;
1672 break;
1673 }
1674 }
1675 if (newfrag)
1676 __skb_queue_tail(&mp->frags, newfrag);
1677 1666
1678 frag = skb_peek(&mp->frags); 1667 start = MP_FLAGS(frag) & MP_BEGIN_FRAG &&
1679 start = ((MP_FLAGS(frag) & MP_BEGIN_FRAG) && 1668 MP_SEQ(frag) == mp->seq ? frag : NULL;
1680 (MP_SEQ(frag) == mp->seq)) ? frag : NULL;
1681 if (!start)
1682 goto check_overflow;
1683 1669
1684 /* main fragment traversing loop 1670 /*
1671 * main fragment traversing loop
1685 * 1672 *
1686 * try to accomplish several tasks: 1673 * try to accomplish several tasks:
1674 * - insert new fragment into the proper sequence slot (once that's done
1675 * newfrag will be set to NULL)
1687 * - reassemble any complete fragment sequence (non-null 'start' 1676 * - reassemble any complete fragment sequence (non-null 'start'
1688 * indicates there is a continguous sequence present) 1677 * indicates there is a continguous sequence present)
1689 * - discard any incomplete sequences that are below minseq -- due 1678 * - discard any incomplete sequences that are below minseq -- due
@@ -1692,46 +1681,71 @@ static void isdn_ppp_mp_receive(isdn_net_dev * net_dev, isdn_net_local * lp,
1692 * come to complete such sequence and it should be discarded 1681 * come to complete such sequence and it should be discarded
1693 * 1682 *
1694 * loop completes when we accomplished the following tasks: 1683 * loop completes when we accomplished the following tasks:
1684 * - new fragment is inserted in the proper sequence ('newfrag' is
1685 * set to NULL)
1695 * - we hit a gap in the sequence, so no reassembly/processing is 1686 * - we hit a gap in the sequence, so no reassembly/processing is
1696 * possible ('start' would be set to NULL) 1687 * possible ('start' would be set to NULL)
1697 * 1688 *
1698 * algorithm for this code is derived from code in the book 1689 * algorithm for this code is derived from code in the book
1699 * 'PPP Design And Debugging' by James Carlson (Addison-Wesley) 1690 * 'PPP Design And Debugging' by James Carlson (Addison-Wesley)
1700 */ 1691 */
1701 skb_queue_walk_safe(&mp->frags, frag, nextf) { 1692 while (start != NULL || newfrag != NULL) {
1702 thisseq = MP_SEQ(frag); 1693
1703 1694 thisseq = MP_SEQ(frag);
1704 /* check for misplaced start */ 1695 nextf = frag->next;
1705 if (start != frag && (MP_FLAGS(frag) & MP_BEGIN_FRAG)) { 1696
1706 printk(KERN_WARNING"isdn_mppp(seq %d): new " 1697 /* drop any duplicate fragments */
1707 "BEGIN flag with no prior END", thisseq); 1698 if (newfrag != NULL && thisseq == newseq) {
1708 stats->seqerrs++; 1699 isdn_ppp_mp_free_skb(mp, newfrag);
1709 stats->frame_drops++; 1700 newfrag = NULL;
1710 isdn_ppp_mp_discard(mp, start, frag); 1701 }
1711 start = frag; 1702
1712 } else if (MP_LE(thisseq, minseq)) { 1703 /* insert new fragment before next element if possible. */
1713 if (MP_FLAGS(frag) & MP_BEGIN_FRAG) 1704 if (newfrag != NULL && (nextf == NULL ||
1705 MP_LT(newseq, MP_SEQ(nextf)))) {
1706 newfrag->next = nextf;
1707 frag->next = nextf = newfrag;
1708 newfrag = NULL;
1709 }
1710
1711 if (start != NULL) {
1712 /* check for misplaced start */
1713 if (start != frag && (MP_FLAGS(frag) & MP_BEGIN_FRAG)) {
1714 printk(KERN_WARNING"isdn_mppp(seq %d): new "
1715 "BEGIN flag with no prior END", thisseq);
1716 stats->seqerrs++;
1717 stats->frame_drops++;
1718 start = isdn_ppp_mp_discard(mp, start,frag);
1719 nextf = frag->next;
1720 }
1721 } else if (MP_LE(thisseq, minseq)) {
1722 if (MP_FLAGS(frag) & MP_BEGIN_FRAG)
1714 start = frag; 1723 start = frag;
1715 else { 1724 else {
1716 if (MP_FLAGS(frag) & MP_END_FRAG) 1725 if (MP_FLAGS(frag) & MP_END_FRAG)
1717 stats->frame_drops++; 1726 stats->frame_drops++;
1718 __skb_unlink(skb, &mp->frags); 1727 if( mp->frags == frag )
1728 mp->frags = nextf;
1719 isdn_ppp_mp_free_skb(mp, frag); 1729 isdn_ppp_mp_free_skb(mp, frag);
1730 frag = nextf;
1720 continue; 1731 continue;
1721 } 1732 }
1722 } 1733 }
1723 1734
1724 /* if we have end fragment, then we have full reassembly 1735 /* if start is non-null and we have end fragment, then
1725 * sequence -- reassemble and process packet now 1736 * we have full reassembly sequence -- reassemble
1737 * and process packet now
1726 */ 1738 */
1727 if (MP_FLAGS(frag) & MP_END_FRAG) { 1739 if (start != NULL && (MP_FLAGS(frag) & MP_END_FRAG)) {
1728 minseq = mp->seq = (thisseq+1) & MP_LONGSEQ_MASK; 1740 minseq = mp->seq = (thisseq+1) & MP_LONGSEQ_MASK;
1729 /* Reassemble the packet then dispatch it */ 1741 /* Reassemble the packet then dispatch it */
1730 isdn_ppp_mp_reassembly(net_dev, lp, start, frag, thisseq); 1742 isdn_ppp_mp_reassembly(net_dev, lp, start, nextf);
1743
1744 start = NULL;
1745 frag = NULL;
1731 1746
1732 start = NULL; 1747 mp->frags = nextf;
1733 frag = NULL; 1748 }
1734 }
1735 1749
1736 /* check if need to update start pointer: if we just 1750 /* check if need to update start pointer: if we just
1737 * reassembled the packet and sequence is contiguous 1751 * reassembled the packet and sequence is contiguous
@@ -1742,25 +1756,26 @@ static void isdn_ppp_mp_receive(isdn_net_dev * net_dev, isdn_net_local * lp,
1742 * below low watermark and set start to the next frag or 1756 * below low watermark and set start to the next frag or
1743 * clear start ptr. 1757 * clear start ptr.
1744 */ 1758 */
1745 if (nextf != (struct sk_buff *)&mp->frags && 1759 if (nextf != NULL &&
1746 ((thisseq+1) & MP_LONGSEQ_MASK) == MP_SEQ(nextf)) { 1760 ((thisseq+1) & MP_LONGSEQ_MASK) == MP_SEQ(nextf)) {
1747 /* if we just reassembled and the next one is here, 1761 /* if we just reassembled and the next one is here,
1748 * then start another reassembly. 1762 * then start another reassembly. */
1749 */ 1763
1750 if (frag == NULL) { 1764 if (frag == NULL) {
1751 if (MP_FLAGS(nextf) & MP_BEGIN_FRAG) 1765 if (MP_FLAGS(nextf) & MP_BEGIN_FRAG)
1752 start = nextf; 1766 start = nextf;
1753 else { 1767 else
1754 printk(KERN_WARNING"isdn_mppp(seq %d):" 1768 {
1755 " END flag with no following " 1769 printk(KERN_WARNING"isdn_mppp(seq %d):"
1756 "BEGIN", thisseq); 1770 " END flag with no following "
1771 "BEGIN", thisseq);
1757 stats->seqerrs++; 1772 stats->seqerrs++;
1758 } 1773 }
1759 } 1774 }
1760 } else { 1775
1761 if (nextf != (struct sk_buff *)&mp->frags && 1776 } else {
1762 frag != NULL && 1777 if ( nextf != NULL && frag != NULL &&
1763 MP_LT(thisseq, minseq)) { 1778 MP_LT(thisseq, minseq)) {
1764 /* we've got a break in the sequence 1779 /* we've got a break in the sequence
1765 * and we not at the end yet 1780 * and we not at the end yet
1766 * and we did not just reassembled 1781 * and we did not just reassembled
@@ -1769,39 +1784,41 @@ static void isdn_ppp_mp_receive(isdn_net_dev * net_dev, isdn_net_local * lp,
1769 * discard all the frames below low watermark 1784 * discard all the frames below low watermark
1770 * and start over */ 1785 * and start over */
1771 stats->frame_drops++; 1786 stats->frame_drops++;
1772 isdn_ppp_mp_discard(mp, start, nextf); 1787 mp->frags = isdn_ppp_mp_discard(mp,start,nextf);
1773 } 1788 }
1774 /* break in the sequence, no reassembly */ 1789 /* break in the sequence, no reassembly */
1775 start = NULL; 1790 start = NULL;
1776 } 1791 }
1777 if (!start) 1792
1778 break; 1793 frag = nextf;
1779 } 1794 } /* while -- main loop */
1780 1795
1781check_overflow: 1796 if (mp->frags == NULL)
1797 mp->frags = frag;
1798
1782 /* rather straighforward way to deal with (not very) possible 1799 /* rather straighforward way to deal with (not very) possible
1783 * queue overflow 1800 * queue overflow */
1784 */
1785 if (mp->frames > MP_MAX_QUEUE_LEN) { 1801 if (mp->frames > MP_MAX_QUEUE_LEN) {
1786 stats->overflows++; 1802 stats->overflows++;
1787 skb_queue_walk_safe(&mp->frags, frag, nextf) { 1803 while (mp->frames > MP_MAX_QUEUE_LEN) {
1788 if (mp->frames <= MP_MAX_QUEUE_LEN) 1804 frag = mp->frags->next;
1789 break; 1805 isdn_ppp_mp_free_skb(mp, mp->frags);
1790 __skb_unlink(frag, &mp->frags); 1806 mp->frags = frag;
1791 isdn_ppp_mp_free_skb(mp, frag);
1792 } 1807 }
1793 } 1808 }
1794 spin_unlock_irqrestore(&mp->lock, flags); 1809 spin_unlock_irqrestore(&mp->lock, flags);
1795} 1810}
1796 1811
1797static void isdn_ppp_mp_cleanup(isdn_net_local *lp) 1812static void isdn_ppp_mp_cleanup( isdn_net_local * lp )
1798{ 1813{
1799 struct sk_buff *skb, *tmp; 1814 struct sk_buff * frag = lp->netdev->pb->frags;
1800 1815 struct sk_buff * nextfrag;
1801 skb_queue_walk_safe(&lp->netdev->pb->frags, skb, tmp) { 1816 while( frag ) {
1802 __skb_unlink(skb, &lp->netdev->pb->frags); 1817 nextfrag = frag->next;
1803 isdn_ppp_mp_free_skb(lp->netdev->pb, skb); 1818 isdn_ppp_mp_free_skb(lp->netdev->pb, frag);
1804 } 1819 frag = nextfrag;
1820 }
1821 lp->netdev->pb->frags = NULL;
1805} 1822}
1806 1823
1807static u32 isdn_ppp_mp_get_seq( int short_seq, 1824static u32 isdn_ppp_mp_get_seq( int short_seq,
@@ -1838,115 +1855,72 @@ static u32 isdn_ppp_mp_get_seq( int short_seq,
1838 return seq; 1855 return seq;
1839} 1856}
1840 1857
1841static void isdn_ppp_mp_discard(ippp_bundle *mp, struct sk_buff *from, 1858struct sk_buff * isdn_ppp_mp_discard( ippp_bundle * mp,
1842 struct sk_buff *to) 1859 struct sk_buff * from, struct sk_buff * to )
1843{ 1860{
1844 if (from) { 1861 if( from )
1845 struct sk_buff *skb, *tmp; 1862 while (from != to) {
1846 int freeing = 0; 1863 struct sk_buff * next = from->next;
1847 1864 isdn_ppp_mp_free_skb(mp, from);
1848 skb_queue_walk_safe(&mp->frags, skb, tmp) { 1865 from = next;
1849 if (skb == to)
1850 break;
1851 if (skb == from)
1852 freeing = 1;
1853 if (!freeing)
1854 continue;
1855 __skb_unlink(skb, &mp->frags);
1856 isdn_ppp_mp_free_skb(mp, skb);
1857 } 1866 }
1858 } 1867 return from;
1859}
1860
1861static unsigned int calc_tot_len(struct sk_buff_head *queue,
1862 struct sk_buff *from, struct sk_buff *to)
1863{
1864 unsigned int tot_len = 0;
1865 struct sk_buff *skb;
1866 int found_start = 0;
1867
1868 skb_queue_walk(queue, skb) {
1869 if (skb == from)
1870 found_start = 1;
1871 if (!found_start)
1872 continue;
1873 tot_len += skb->len - MP_HEADER_LEN;
1874 if (skb == to)
1875 break;
1876 }
1877 return tot_len;
1878} 1868}
1879 1869
1880/* Reassemble packet using fragments in the reassembly queue from 1870void isdn_ppp_mp_reassembly( isdn_net_dev * net_dev, isdn_net_local * lp,
1881 * 'from' until 'to', inclusive. 1871 struct sk_buff * from, struct sk_buff * to )
1882 */
1883static void isdn_ppp_mp_reassembly(isdn_net_dev *net_dev, isdn_net_local *lp,
1884 struct sk_buff *from, struct sk_buff *to,
1885 u32 lastseq)
1886{ 1872{
1887 ippp_bundle *mp = net_dev->pb; 1873 ippp_bundle * mp = net_dev->pb;
1888 unsigned int tot_len;
1889 struct sk_buff *skb;
1890 int proto; 1874 int proto;
1875 struct sk_buff * skb;
1876 unsigned int tot_len;
1891 1877
1892 if (lp->ppp_slot < 0 || lp->ppp_slot >= ISDN_MAX_CHANNELS) { 1878 if (lp->ppp_slot < 0 || lp->ppp_slot >= ISDN_MAX_CHANNELS) {
1893 printk(KERN_ERR "%s: lp->ppp_slot(%d) out of range\n", 1879 printk(KERN_ERR "%s: lp->ppp_slot(%d) out of range\n",
1894 __func__, lp->ppp_slot); 1880 __func__, lp->ppp_slot);
1895 return; 1881 return;
1896 } 1882 }
1897 1883 if( MP_FLAGS(from) == (MP_BEGIN_FRAG | MP_END_FRAG) ) {
1898 tot_len = calc_tot_len(&mp->frags, from, to); 1884 if( ippp_table[lp->ppp_slot]->debug & 0x40 )
1899
1900 if (MP_FLAGS(from) == (MP_BEGIN_FRAG | MP_END_FRAG)) {
1901 if (ippp_table[lp->ppp_slot]->debug & 0x40)
1902 printk(KERN_DEBUG "isdn_mppp: reassembly: frame %d, " 1885 printk(KERN_DEBUG "isdn_mppp: reassembly: frame %d, "
1903 "len %d\n", MP_SEQ(from), from->len); 1886 "len %d\n", MP_SEQ(from), from->len );
1904 skb = from; 1887 skb = from;
1905 skb_pull(skb, MP_HEADER_LEN); 1888 skb_pull(skb, MP_HEADER_LEN);
1906 __skb_unlink(skb, &mp->frags);
1907 mp->frames--; 1889 mp->frames--;
1908 } else { 1890 } else {
1909 struct sk_buff *walk, *tmp; 1891 struct sk_buff * frag;
1910 int found_start = 0; 1892 int n;
1911 1893
1912 if (ippp_table[lp->ppp_slot]->debug & 0x40) 1894 for(tot_len=n=0, frag=from; frag != to; frag=frag->next, n++)
1913 printk(KERN_DEBUG"isdn_mppp: reassembling frames %d " 1895 tot_len += frag->len - MP_HEADER_LEN;
1914 "to %d, len %d\n", MP_SEQ(from), lastseq,
1915 tot_len);
1916 1896
1917 skb = dev_alloc_skb(tot_len); 1897 if( ippp_table[lp->ppp_slot]->debug & 0x40 )
1918 if (!skb) 1898 printk(KERN_DEBUG"isdn_mppp: reassembling frames %d "
1899 "to %d, len %d\n", MP_SEQ(from),
1900 (MP_SEQ(from)+n-1) & MP_LONGSEQ_MASK, tot_len );
1901 if( (skb = dev_alloc_skb(tot_len)) == NULL ) {
1919 printk(KERN_ERR "isdn_mppp: cannot allocate sk buff " 1902 printk(KERN_ERR "isdn_mppp: cannot allocate sk buff "
1920 "of size %d\n", tot_len); 1903 "of size %d\n", tot_len);
1921 1904 isdn_ppp_mp_discard(mp, from, to);
1922 found_start = 0; 1905 return;
1923 skb_queue_walk_safe(&mp->frags, walk, tmp) { 1906 }
1924 if (walk == from)
1925 found_start = 1;
1926 if (!found_start)
1927 continue;
1928 1907
1929 if (skb) { 1908 while( from != to ) {
1930 unsigned int len = walk->len - MP_HEADER_LEN; 1909 unsigned int len = from->len - MP_HEADER_LEN;
1931 skb_copy_from_linear_data_offset(walk, MP_HEADER_LEN,
1932 skb_put(skb, len),
1933 len);
1934 }
1935 __skb_unlink(walk, &mp->frags);
1936 isdn_ppp_mp_free_skb(mp, walk);
1937 1910
1938 if (walk == to) 1911 skb_copy_from_linear_data_offset(from, MP_HEADER_LEN,
1939 break; 1912 skb_put(skb,len),
1913 len);
1914 frag = from->next;
1915 isdn_ppp_mp_free_skb(mp, from);
1916 from = frag;
1940 } 1917 }
1941 } 1918 }
1942 if (!skb)
1943 return;
1944
1945 proto = isdn_ppp_strip_proto(skb); 1919 proto = isdn_ppp_strip_proto(skb);
1946 isdn_ppp_push_higher(net_dev, lp, skb, proto); 1920 isdn_ppp_push_higher(net_dev, lp, skb, proto);
1947} 1921}
1948 1922
1949static void isdn_ppp_mp_free_skb(ippp_bundle *mp, struct sk_buff *skb) 1923static void isdn_ppp_mp_free_skb(ippp_bundle * mp, struct sk_buff * skb)
1950{ 1924{
1951 dev_kfree_skb(skb); 1925 dev_kfree_skb(skb);
1952 mp->frames--; 1926 mp->frames--;
diff --git a/drivers/isdn/mISDN/stack.c b/drivers/isdn/mISDN/stack.c
index 3e1532a180ff..0d05ec43012c 100644
--- a/drivers/isdn/mISDN/stack.c
+++ b/drivers/isdn/mISDN/stack.c
@@ -364,7 +364,7 @@ add_layer2(struct mISDNchannel *ch, struct mISDNstack *st)
364static int 364static int
365st_own_ctrl(struct mISDNchannel *ch, u_int cmd, void *arg) 365st_own_ctrl(struct mISDNchannel *ch, u_int cmd, void *arg)
366{ 366{
367 if (!ch->st || ch->st->layer1) 367 if (!ch->st || !ch->st->layer1)
368 return -EINVAL; 368 return -EINVAL;
369 return ch->st->layer1->ctrl(ch->st->layer1, cmd, arg); 369 return ch->st->layer1->ctrl(ch->st->layer1, cmd, arg);
370} 370}
diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c
index 7467980b8cf9..e5225d28f392 100644
--- a/drivers/leds/leds-gpio.c
+++ b/drivers/leds/leds-gpio.c
@@ -78,6 +78,8 @@ static int __devinit create_gpio_led(const struct gpio_led *template,
78{ 78{
79 int ret, state; 79 int ret, state;
80 80
81 led_dat->gpio = -1;
82
81 /* skip leds that aren't available */ 83 /* skip leds that aren't available */
82 if (!gpio_is_valid(template->gpio)) { 84 if (!gpio_is_valid(template->gpio)) {
83 printk(KERN_INFO "Skipping unavailable LED gpio %d (%s)\n", 85 printk(KERN_INFO "Skipping unavailable LED gpio %d (%s)\n",
diff --git a/drivers/md/Makefile b/drivers/md/Makefile
index 1dc4185bd781..e355e7f6a536 100644
--- a/drivers/md/Makefile
+++ b/drivers/md/Makefile
@@ -46,7 +46,7 @@ obj-$(CONFIG_DM_LOG_USERSPACE) += dm-log-userspace.o
46obj-$(CONFIG_DM_ZERO) += dm-zero.o 46obj-$(CONFIG_DM_ZERO) += dm-zero.o
47 47
48quiet_cmd_unroll = UNROLL $@ 48quiet_cmd_unroll = UNROLL $@
49 cmd_unroll = $(PERL) $(srctree)/$(src)/unroll.pl $(UNROLL) \ 49 cmd_unroll = $(AWK) -f$(srctree)/$(src)/unroll.awk -vN=$(UNROLL) \
50 < $< > $@ || ( rm -f $@ && exit 1 ) 50 < $< > $@ || ( rm -f $@ && exit 1 )
51 51
52ifeq ($(CONFIG_ALTIVEC),y) 52ifeq ($(CONFIG_ALTIVEC),y)
@@ -59,56 +59,56 @@ endif
59 59
60targets += raid6int1.c 60targets += raid6int1.c
61$(obj)/raid6int1.c: UNROLL := 1 61$(obj)/raid6int1.c: UNROLL := 1
62$(obj)/raid6int1.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE 62$(obj)/raid6int1.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE
63 $(call if_changed,unroll) 63 $(call if_changed,unroll)
64 64
65targets += raid6int2.c 65targets += raid6int2.c
66$(obj)/raid6int2.c: UNROLL := 2 66$(obj)/raid6int2.c: UNROLL := 2
67$(obj)/raid6int2.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE 67$(obj)/raid6int2.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE
68 $(call if_changed,unroll) 68 $(call if_changed,unroll)
69 69
70targets += raid6int4.c 70targets += raid6int4.c
71$(obj)/raid6int4.c: UNROLL := 4 71$(obj)/raid6int4.c: UNROLL := 4
72$(obj)/raid6int4.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE 72$(obj)/raid6int4.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE
73 $(call if_changed,unroll) 73 $(call if_changed,unroll)
74 74
75targets += raid6int8.c 75targets += raid6int8.c
76$(obj)/raid6int8.c: UNROLL := 8 76$(obj)/raid6int8.c: UNROLL := 8
77$(obj)/raid6int8.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE 77$(obj)/raid6int8.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE
78 $(call if_changed,unroll) 78 $(call if_changed,unroll)
79 79
80targets += raid6int16.c 80targets += raid6int16.c
81$(obj)/raid6int16.c: UNROLL := 16 81$(obj)/raid6int16.c: UNROLL := 16
82$(obj)/raid6int16.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE 82$(obj)/raid6int16.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE
83 $(call if_changed,unroll) 83 $(call if_changed,unroll)
84 84
85targets += raid6int32.c 85targets += raid6int32.c
86$(obj)/raid6int32.c: UNROLL := 32 86$(obj)/raid6int32.c: UNROLL := 32
87$(obj)/raid6int32.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE 87$(obj)/raid6int32.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE
88 $(call if_changed,unroll) 88 $(call if_changed,unroll)
89 89
90CFLAGS_raid6altivec1.o += $(altivec_flags) 90CFLAGS_raid6altivec1.o += $(altivec_flags)
91targets += raid6altivec1.c 91targets += raid6altivec1.c
92$(obj)/raid6altivec1.c: UNROLL := 1 92$(obj)/raid6altivec1.c: UNROLL := 1
93$(obj)/raid6altivec1.c: $(src)/raid6altivec.uc $(src)/unroll.pl FORCE 93$(obj)/raid6altivec1.c: $(src)/raid6altivec.uc $(src)/unroll.awk FORCE
94 $(call if_changed,unroll) 94 $(call if_changed,unroll)
95 95
96CFLAGS_raid6altivec2.o += $(altivec_flags) 96CFLAGS_raid6altivec2.o += $(altivec_flags)
97targets += raid6altivec2.c 97targets += raid6altivec2.c
98$(obj)/raid6altivec2.c: UNROLL := 2 98$(obj)/raid6altivec2.c: UNROLL := 2
99$(obj)/raid6altivec2.c: $(src)/raid6altivec.uc $(src)/unroll.pl FORCE 99$(obj)/raid6altivec2.c: $(src)/raid6altivec.uc $(src)/unroll.awk FORCE
100 $(call if_changed,unroll) 100 $(call if_changed,unroll)
101 101
102CFLAGS_raid6altivec4.o += $(altivec_flags) 102CFLAGS_raid6altivec4.o += $(altivec_flags)
103targets += raid6altivec4.c 103targets += raid6altivec4.c
104$(obj)/raid6altivec4.c: UNROLL := 4 104$(obj)/raid6altivec4.c: UNROLL := 4
105$(obj)/raid6altivec4.c: $(src)/raid6altivec.uc $(src)/unroll.pl FORCE 105$(obj)/raid6altivec4.c: $(src)/raid6altivec.uc $(src)/unroll.awk FORCE
106 $(call if_changed,unroll) 106 $(call if_changed,unroll)
107 107
108CFLAGS_raid6altivec8.o += $(altivec_flags) 108CFLAGS_raid6altivec8.o += $(altivec_flags)
109targets += raid6altivec8.c 109targets += raid6altivec8.c
110$(obj)/raid6altivec8.c: UNROLL := 8 110$(obj)/raid6altivec8.c: UNROLL := 8
111$(obj)/raid6altivec8.c: $(src)/raid6altivec.uc $(src)/unroll.pl FORCE 111$(obj)/raid6altivec8.c: $(src)/raid6altivec.uc $(src)/unroll.awk FORCE
112 $(call if_changed,unroll) 112 $(call if_changed,unroll)
113 113
114quiet_cmd_mktable = TABLE $@ 114quiet_cmd_mktable = TABLE $@
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index 6986b0059d23..60e2b322db11 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -1624,10 +1624,11 @@ int bitmap_create(mddev_t *mddev)
1624 bitmap->offset = mddev->bitmap_offset; 1624 bitmap->offset = mddev->bitmap_offset;
1625 if (file) { 1625 if (file) {
1626 get_file(file); 1626 get_file(file);
1627 do_sync_mapping_range(file->f_mapping, 0, LLONG_MAX, 1627 /* As future accesses to this file will use bmap,
1628 SYNC_FILE_RANGE_WAIT_BEFORE | 1628 * and bypass the page cache, we must sync the file
1629 SYNC_FILE_RANGE_WRITE | 1629 * first.
1630 SYNC_FILE_RANGE_WAIT_AFTER); 1630 */
1631 vfs_fsync(file, file->f_dentry, 1);
1631 } 1632 }
1632 /* read superblock from bitmap file (this sets bitmap->chunksize) */ 1633 /* read superblock from bitmap file (this sets bitmap->chunksize) */
1633 err = bitmap_read_sb(bitmap); 1634 err = bitmap_read_sb(bitmap);
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 26ba42a79129..b182f86a19dd 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -944,6 +944,14 @@ static int super_90_validate(mddev_t *mddev, mdk_rdev_t *rdev)
944 desc->raid_disk < mddev->raid_disks */) { 944 desc->raid_disk < mddev->raid_disks */) {
945 set_bit(In_sync, &rdev->flags); 945 set_bit(In_sync, &rdev->flags);
946 rdev->raid_disk = desc->raid_disk; 946 rdev->raid_disk = desc->raid_disk;
947 } else if (desc->state & (1<<MD_DISK_ACTIVE)) {
948 /* active but not in sync implies recovery up to
949 * reshape position. We don't know exactly where
950 * that is, so set to zero for now */
951 if (mddev->minor_version >= 91) {
952 rdev->recovery_offset = 0;
953 rdev->raid_disk = desc->raid_disk;
954 }
947 } 955 }
948 if (desc->state & (1<<MD_DISK_WRITEMOSTLY)) 956 if (desc->state & (1<<MD_DISK_WRITEMOSTLY))
949 set_bit(WriteMostly, &rdev->flags); 957 set_bit(WriteMostly, &rdev->flags);
@@ -1032,8 +1040,19 @@ static void super_90_sync(mddev_t *mddev, mdk_rdev_t *rdev)
1032 list_for_each_entry(rdev2, &mddev->disks, same_set) { 1040 list_for_each_entry(rdev2, &mddev->disks, same_set) {
1033 mdp_disk_t *d; 1041 mdp_disk_t *d;
1034 int desc_nr; 1042 int desc_nr;
1035 if (rdev2->raid_disk >= 0 && test_bit(In_sync, &rdev2->flags) 1043 int is_active = test_bit(In_sync, &rdev2->flags);
1036 && !test_bit(Faulty, &rdev2->flags)) 1044
1045 if (rdev2->raid_disk >= 0 &&
1046 sb->minor_version >= 91)
1047 /* we have nowhere to store the recovery_offset,
1048 * but if it is not below the reshape_position,
1049 * we can piggy-back on that.
1050 */
1051 is_active = 1;
1052 if (rdev2->raid_disk < 0 ||
1053 test_bit(Faulty, &rdev2->flags))
1054 is_active = 0;
1055 if (is_active)
1037 desc_nr = rdev2->raid_disk; 1056 desc_nr = rdev2->raid_disk;
1038 else 1057 else
1039 desc_nr = next_spare++; 1058 desc_nr = next_spare++;
@@ -1043,16 +1062,16 @@ static void super_90_sync(mddev_t *mddev, mdk_rdev_t *rdev)
1043 d->number = rdev2->desc_nr; 1062 d->number = rdev2->desc_nr;
1044 d->major = MAJOR(rdev2->bdev->bd_dev); 1063 d->major = MAJOR(rdev2->bdev->bd_dev);
1045 d->minor = MINOR(rdev2->bdev->bd_dev); 1064 d->minor = MINOR(rdev2->bdev->bd_dev);
1046 if (rdev2->raid_disk >= 0 && test_bit(In_sync, &rdev2->flags) 1065 if (is_active)
1047 && !test_bit(Faulty, &rdev2->flags))
1048 d->raid_disk = rdev2->raid_disk; 1066 d->raid_disk = rdev2->raid_disk;
1049 else 1067 else
1050 d->raid_disk = rdev2->desc_nr; /* compatibility */ 1068 d->raid_disk = rdev2->desc_nr; /* compatibility */
1051 if (test_bit(Faulty, &rdev2->flags)) 1069 if (test_bit(Faulty, &rdev2->flags))
1052 d->state = (1<<MD_DISK_FAULTY); 1070 d->state = (1<<MD_DISK_FAULTY);
1053 else if (test_bit(In_sync, &rdev2->flags)) { 1071 else if (is_active) {
1054 d->state = (1<<MD_DISK_ACTIVE); 1072 d->state = (1<<MD_DISK_ACTIVE);
1055 d->state |= (1<<MD_DISK_SYNC); 1073 if (test_bit(In_sync, &rdev2->flags))
1074 d->state |= (1<<MD_DISK_SYNC);
1056 active++; 1075 active++;
1057 working++; 1076 working++;
1058 } else { 1077 } else {
@@ -1382,8 +1401,6 @@ static void super_1_sync(mddev_t *mddev, mdk_rdev_t *rdev)
1382 1401
1383 if (rdev->raid_disk >= 0 && 1402 if (rdev->raid_disk >= 0 &&
1384 !test_bit(In_sync, &rdev->flags)) { 1403 !test_bit(In_sync, &rdev->flags)) {
1385 if (mddev->curr_resync_completed > rdev->recovery_offset)
1386 rdev->recovery_offset = mddev->curr_resync_completed;
1387 if (rdev->recovery_offset > 0) { 1404 if (rdev->recovery_offset > 0) {
1388 sb->feature_map |= 1405 sb->feature_map |=
1389 cpu_to_le32(MD_FEATURE_RECOVERY_OFFSET); 1406 cpu_to_le32(MD_FEATURE_RECOVERY_OFFSET);
@@ -1917,6 +1934,14 @@ static void sync_sbs(mddev_t * mddev, int nospares)
1917 */ 1934 */
1918 mdk_rdev_t *rdev; 1935 mdk_rdev_t *rdev;
1919 1936
1937 /* First make sure individual recovery_offsets are correct */
1938 list_for_each_entry(rdev, &mddev->disks, same_set) {
1939 if (rdev->raid_disk >= 0 &&
1940 !test_bit(In_sync, &rdev->flags) &&
1941 mddev->curr_resync_completed > rdev->recovery_offset)
1942 rdev->recovery_offset = mddev->curr_resync_completed;
1943
1944 }
1920 list_for_each_entry(rdev, &mddev->disks, same_set) { 1945 list_for_each_entry(rdev, &mddev->disks, same_set) {
1921 if (rdev->sb_events == mddev->events || 1946 if (rdev->sb_events == mddev->events ||
1922 (nospares && 1947 (nospares &&
@@ -2631,7 +2656,7 @@ static void analyze_sbs(mddev_t * mddev)
2631 rdev->desc_nr = i++; 2656 rdev->desc_nr = i++;
2632 rdev->raid_disk = rdev->desc_nr; 2657 rdev->raid_disk = rdev->desc_nr;
2633 set_bit(In_sync, &rdev->flags); 2658 set_bit(In_sync, &rdev->flags);
2634 } else if (rdev->raid_disk >= mddev->raid_disks) { 2659 } else if (rdev->raid_disk >= (mddev->raid_disks - min(0, mddev->delta_disks))) {
2635 rdev->raid_disk = -1; 2660 rdev->raid_disk = -1;
2636 clear_bit(In_sync, &rdev->flags); 2661 clear_bit(In_sync, &rdev->flags);
2637 } 2662 }
@@ -6504,8 +6529,9 @@ void md_do_sync(mddev_t *mddev)
6504 skip: 6529 skip:
6505 mddev->curr_resync = 0; 6530 mddev->curr_resync = 0;
6506 mddev->curr_resync_completed = 0; 6531 mddev->curr_resync_completed = 0;
6507 mddev->resync_min = 0; 6532 if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery))
6508 mddev->resync_max = MaxSector; 6533 /* We completed so max setting can be forgotten. */
6534 mddev->resync_max = MaxSector;
6509 sysfs_notify(&mddev->kobj, NULL, "sync_completed"); 6535 sysfs_notify(&mddev->kobj, NULL, "sync_completed");
6510 wake_up(&resync_wait); 6536 wake_up(&resync_wait);
6511 set_bit(MD_RECOVERY_DONE, &mddev->recovery); 6537 set_bit(MD_RECOVERY_DONE, &mddev->recovery);
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index d1b9bd5fd4f6..e07ce2e033a9 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -64,7 +64,7 @@ static void * r1bio_pool_alloc(gfp_t gfp_flags, void *data)
64 64
65 /* allocate a r1bio with room for raid_disks entries in the bios array */ 65 /* allocate a r1bio with room for raid_disks entries in the bios array */
66 r1_bio = kzalloc(size, gfp_flags); 66 r1_bio = kzalloc(size, gfp_flags);
67 if (!r1_bio) 67 if (!r1_bio && pi->mddev)
68 unplug_slaves(pi->mddev); 68 unplug_slaves(pi->mddev);
69 69
70 return r1_bio; 70 return r1_bio;
@@ -1650,11 +1650,12 @@ static void raid1d(mddev_t *mddev)
1650 r1_bio->sector, 1650 r1_bio->sector,
1651 r1_bio->sectors); 1651 r1_bio->sectors);
1652 unfreeze_array(conf); 1652 unfreeze_array(conf);
1653 } 1653 } else
1654 md_error(mddev,
1655 conf->mirrors[r1_bio->read_disk].rdev);
1654 1656
1655 bio = r1_bio->bios[r1_bio->read_disk]; 1657 bio = r1_bio->bios[r1_bio->read_disk];
1656 if ((disk=read_balance(conf, r1_bio)) == -1 || 1658 if ((disk=read_balance(conf, r1_bio)) == -1) {
1657 disk == r1_bio->read_disk) {
1658 printk(KERN_ALERT "raid1: %s: unrecoverable I/O" 1659 printk(KERN_ALERT "raid1: %s: unrecoverable I/O"
1659 " read error for block %llu\n", 1660 " read error for block %llu\n",
1660 bdevname(bio->bi_bdev,b), 1661 bdevname(bio->bi_bdev,b),
@@ -1683,6 +1684,7 @@ static void raid1d(mddev_t *mddev)
1683 generic_make_request(bio); 1684 generic_make_request(bio);
1684 } 1685 }
1685 } 1686 }
1687 cond_resched();
1686 } 1688 }
1687 if (unplug) 1689 if (unplug)
1688 unplug_slaves(mddev); 1690 unplug_slaves(mddev);
@@ -1978,13 +1980,14 @@ static int run(mddev_t *mddev)
1978 conf->poolinfo = kmalloc(sizeof(*conf->poolinfo), GFP_KERNEL); 1980 conf->poolinfo = kmalloc(sizeof(*conf->poolinfo), GFP_KERNEL);
1979 if (!conf->poolinfo) 1981 if (!conf->poolinfo)
1980 goto out_no_mem; 1982 goto out_no_mem;
1981 conf->poolinfo->mddev = mddev; 1983 conf->poolinfo->mddev = NULL;
1982 conf->poolinfo->raid_disks = mddev->raid_disks; 1984 conf->poolinfo->raid_disks = mddev->raid_disks;
1983 conf->r1bio_pool = mempool_create(NR_RAID1_BIOS, r1bio_pool_alloc, 1985 conf->r1bio_pool = mempool_create(NR_RAID1_BIOS, r1bio_pool_alloc,
1984 r1bio_pool_free, 1986 r1bio_pool_free,
1985 conf->poolinfo); 1987 conf->poolinfo);
1986 if (!conf->r1bio_pool) 1988 if (!conf->r1bio_pool)
1987 goto out_no_mem; 1989 goto out_no_mem;
1990 conf->poolinfo->mddev = mddev;
1988 1991
1989 spin_lock_init(&conf->device_lock); 1992 spin_lock_init(&conf->device_lock);
1990 mddev->queue->queue_lock = &conf->device_lock; 1993 mddev->queue->queue_lock = &conf->device_lock;
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index 51c4c5c4d87a..c2cb7b87b440 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -68,7 +68,7 @@ static void * r10bio_pool_alloc(gfp_t gfp_flags, void *data)
68 68
69 /* allocate a r10bio with room for raid_disks entries in the bios array */ 69 /* allocate a r10bio with room for raid_disks entries in the bios array */
70 r10_bio = kzalloc(size, gfp_flags); 70 r10_bio = kzalloc(size, gfp_flags);
71 if (!r10_bio) 71 if (!r10_bio && conf->mddev)
72 unplug_slaves(conf->mddev); 72 unplug_slaves(conf->mddev);
73 73
74 return r10_bio; 74 return r10_bio;
@@ -1632,6 +1632,7 @@ static void raid10d(mddev_t *mddev)
1632 generic_make_request(bio); 1632 generic_make_request(bio);
1633 } 1633 }
1634 } 1634 }
1635 cond_resched();
1635 } 1636 }
1636 if (unplug) 1637 if (unplug)
1637 unplug_slaves(mddev); 1638 unplug_slaves(mddev);
@@ -2095,7 +2096,6 @@ static int run(mddev_t *mddev)
2095 if (!conf->tmppage) 2096 if (!conf->tmppage)
2096 goto out_free_conf; 2097 goto out_free_conf;
2097 2098
2098 conf->mddev = mddev;
2099 conf->raid_disks = mddev->raid_disks; 2099 conf->raid_disks = mddev->raid_disks;
2100 conf->near_copies = nc; 2100 conf->near_copies = nc;
2101 conf->far_copies = fc; 2101 conf->far_copies = fc;
@@ -2132,6 +2132,7 @@ static int run(mddev_t *mddev)
2132 goto out_free_conf; 2132 goto out_free_conf;
2133 } 2133 }
2134 2134
2135 conf->mddev = mddev;
2135 spin_lock_init(&conf->device_lock); 2136 spin_lock_init(&conf->device_lock);
2136 mddev->queue->queue_lock = &conf->device_lock; 2137 mddev->queue->queue_lock = &conf->device_lock;
2137 2138
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 94829804ab7f..d29215d966da 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -156,13 +156,16 @@ static inline int raid6_next_disk(int disk, int raid_disks)
156static int raid6_idx_to_slot(int idx, struct stripe_head *sh, 156static int raid6_idx_to_slot(int idx, struct stripe_head *sh,
157 int *count, int syndrome_disks) 157 int *count, int syndrome_disks)
158{ 158{
159 int slot; 159 int slot = *count;
160 160
161 if (sh->ddf_layout)
162 (*count)++;
161 if (idx == sh->pd_idx) 163 if (idx == sh->pd_idx)
162 return syndrome_disks; 164 return syndrome_disks;
163 if (idx == sh->qd_idx) 165 if (idx == sh->qd_idx)
164 return syndrome_disks + 1; 166 return syndrome_disks + 1;
165 slot = (*count)++; 167 if (!sh->ddf_layout)
168 (*count)++;
166 return slot; 169 return slot;
167} 170}
168 171
@@ -717,7 +720,7 @@ static int set_syndrome_sources(struct page **srcs, struct stripe_head *sh)
717 int i; 720 int i;
718 721
719 for (i = 0; i < disks; i++) 722 for (i = 0; i < disks; i++)
720 srcs[i] = (void *)raid6_empty_zero_page; 723 srcs[i] = NULL;
721 724
722 count = 0; 725 count = 0;
723 i = d0_idx; 726 i = d0_idx;
@@ -727,9 +730,8 @@ static int set_syndrome_sources(struct page **srcs, struct stripe_head *sh)
727 srcs[slot] = sh->dev[i].page; 730 srcs[slot] = sh->dev[i].page;
728 i = raid6_next_disk(i, disks); 731 i = raid6_next_disk(i, disks);
729 } while (i != d0_idx); 732 } while (i != d0_idx);
730 BUG_ON(count != syndrome_disks);
731 733
732 return count; 734 return syndrome_disks;
733} 735}
734 736
735static struct dma_async_tx_descriptor * 737static struct dma_async_tx_descriptor *
@@ -814,7 +816,7 @@ ops_run_compute6_2(struct stripe_head *sh, struct raid5_percpu *percpu)
814 * slot number conversion for 'faila' and 'failb' 816 * slot number conversion for 'faila' and 'failb'
815 */ 817 */
816 for (i = 0; i < disks ; i++) 818 for (i = 0; i < disks ; i++)
817 blocks[i] = (void *)raid6_empty_zero_page; 819 blocks[i] = NULL;
818 count = 0; 820 count = 0;
819 i = d0_idx; 821 i = d0_idx;
820 do { 822 do {
@@ -828,7 +830,6 @@ ops_run_compute6_2(struct stripe_head *sh, struct raid5_percpu *percpu)
828 failb = slot; 830 failb = slot;
829 i = raid6_next_disk(i, disks); 831 i = raid6_next_disk(i, disks);
830 } while (i != d0_idx); 832 } while (i != d0_idx);
831 BUG_ON(count != syndrome_disks);
832 833
833 BUG_ON(faila == failb); 834 BUG_ON(faila == failb);
834 if (failb < faila) 835 if (failb < faila)
@@ -845,7 +846,7 @@ ops_run_compute6_2(struct stripe_head *sh, struct raid5_percpu *percpu)
845 init_async_submit(&submit, ASYNC_TX_FENCE, NULL, 846 init_async_submit(&submit, ASYNC_TX_FENCE, NULL,
846 ops_complete_compute, sh, 847 ops_complete_compute, sh,
847 to_addr_conv(sh, percpu)); 848 to_addr_conv(sh, percpu));
848 return async_gen_syndrome(blocks, 0, count+2, 849 return async_gen_syndrome(blocks, 0, syndrome_disks+2,
849 STRIPE_SIZE, &submit); 850 STRIPE_SIZE, &submit);
850 } else { 851 } else {
851 struct page *dest; 852 struct page *dest;
@@ -1139,7 +1140,7 @@ static void ops_run_check_pq(struct stripe_head *sh, struct raid5_percpu *percpu
1139 &sh->ops.zero_sum_result, percpu->spare_page, &submit); 1140 &sh->ops.zero_sum_result, percpu->spare_page, &submit);
1140} 1141}
1141 1142
1142static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request) 1143static void __raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
1143{ 1144{
1144 int overlap_clear = 0, i, disks = sh->disks; 1145 int overlap_clear = 0, i, disks = sh->disks;
1145 struct dma_async_tx_descriptor *tx = NULL; 1146 struct dma_async_tx_descriptor *tx = NULL;
@@ -1204,22 +1205,55 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
1204 put_cpu(); 1205 put_cpu();
1205} 1206}
1206 1207
1208#ifdef CONFIG_MULTICORE_RAID456
1209static void async_run_ops(void *param, async_cookie_t cookie)
1210{
1211 struct stripe_head *sh = param;
1212 unsigned long ops_request = sh->ops.request;
1213
1214 clear_bit_unlock(STRIPE_OPS_REQ_PENDING, &sh->state);
1215 wake_up(&sh->ops.wait_for_ops);
1216
1217 __raid_run_ops(sh, ops_request);
1218 release_stripe(sh);
1219}
1220
1221static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
1222{
1223 /* since handle_stripe can be called outside of raid5d context
1224 * we need to ensure sh->ops.request is de-staged before another
1225 * request arrives
1226 */
1227 wait_event(sh->ops.wait_for_ops,
1228 !test_and_set_bit_lock(STRIPE_OPS_REQ_PENDING, &sh->state));
1229 sh->ops.request = ops_request;
1230
1231 atomic_inc(&sh->count);
1232 async_schedule(async_run_ops, sh);
1233}
1234#else
1235#define raid_run_ops __raid_run_ops
1236#endif
1237
1207static int grow_one_stripe(raid5_conf_t *conf) 1238static int grow_one_stripe(raid5_conf_t *conf)
1208{ 1239{
1209 struct stripe_head *sh; 1240 struct stripe_head *sh;
1241 int disks = max(conf->raid_disks, conf->previous_raid_disks);
1210 sh = kmem_cache_alloc(conf->slab_cache, GFP_KERNEL); 1242 sh = kmem_cache_alloc(conf->slab_cache, GFP_KERNEL);
1211 if (!sh) 1243 if (!sh)
1212 return 0; 1244 return 0;
1213 memset(sh, 0, sizeof(*sh) + (conf->raid_disks-1)*sizeof(struct r5dev)); 1245 memset(sh, 0, sizeof(*sh) + (disks-1)*sizeof(struct r5dev));
1214 sh->raid_conf = conf; 1246 sh->raid_conf = conf;
1215 spin_lock_init(&sh->lock); 1247 spin_lock_init(&sh->lock);
1248 #ifdef CONFIG_MULTICORE_RAID456
1249 init_waitqueue_head(&sh->ops.wait_for_ops);
1250 #endif
1216 1251
1217 if (grow_buffers(sh, conf->raid_disks)) { 1252 if (grow_buffers(sh, disks)) {
1218 shrink_buffers(sh, conf->raid_disks); 1253 shrink_buffers(sh, disks);
1219 kmem_cache_free(conf->slab_cache, sh); 1254 kmem_cache_free(conf->slab_cache, sh);
1220 return 0; 1255 return 0;
1221 } 1256 }
1222 sh->disks = conf->raid_disks;
1223 /* we just created an active stripe so... */ 1257 /* we just created an active stripe so... */
1224 atomic_set(&sh->count, 1); 1258 atomic_set(&sh->count, 1);
1225 atomic_inc(&conf->active_stripes); 1259 atomic_inc(&conf->active_stripes);
@@ -1231,7 +1265,7 @@ static int grow_one_stripe(raid5_conf_t *conf)
1231static int grow_stripes(raid5_conf_t *conf, int num) 1265static int grow_stripes(raid5_conf_t *conf, int num)
1232{ 1266{
1233 struct kmem_cache *sc; 1267 struct kmem_cache *sc;
1234 int devs = conf->raid_disks; 1268 int devs = max(conf->raid_disks, conf->previous_raid_disks);
1235 1269
1236 sprintf(conf->cache_name[0], 1270 sprintf(conf->cache_name[0],
1237 "raid%d-%s", conf->level, mdname(conf->mddev)); 1271 "raid%d-%s", conf->level, mdname(conf->mddev));
@@ -1329,6 +1363,9 @@ static int resize_stripes(raid5_conf_t *conf, int newsize)
1329 1363
1330 nsh->raid_conf = conf; 1364 nsh->raid_conf = conf;
1331 spin_lock_init(&nsh->lock); 1365 spin_lock_init(&nsh->lock);
1366 #ifdef CONFIG_MULTICORE_RAID456
1367 init_waitqueue_head(&nsh->ops.wait_for_ops);
1368 #endif
1332 1369
1333 list_add(&nsh->lru, &newstripes); 1370 list_add(&nsh->lru, &newstripes);
1334 } 1371 }
@@ -1899,10 +1936,15 @@ static sector_t compute_blocknr(struct stripe_head *sh, int i, int previous)
1899 case ALGORITHM_PARITY_N: 1936 case ALGORITHM_PARITY_N:
1900 break; 1937 break;
1901 case ALGORITHM_ROTATING_N_CONTINUE: 1938 case ALGORITHM_ROTATING_N_CONTINUE:
1939 /* Like left_symmetric, but P is before Q */
1902 if (sh->pd_idx == 0) 1940 if (sh->pd_idx == 0)
1903 i--; /* P D D D Q */ 1941 i--; /* P D D D Q */
1904 else if (i > sh->pd_idx) 1942 else {
1905 i -= 2; /* D D Q P D */ 1943 /* D D Q P D */
1944 if (i < sh->pd_idx)
1945 i += raid_disks;
1946 i -= (sh->pd_idx + 1);
1947 }
1906 break; 1948 break;
1907 case ALGORITHM_LEFT_ASYMMETRIC_6: 1949 case ALGORITHM_LEFT_ASYMMETRIC_6:
1908 case ALGORITHM_RIGHT_ASYMMETRIC_6: 1950 case ALGORITHM_RIGHT_ASYMMETRIC_6:
@@ -2896,7 +2938,7 @@ static void handle_stripe_expansion(raid5_conf_t *conf, struct stripe_head *sh,
2896 * 2938 *
2897 */ 2939 */
2898 2940
2899static bool handle_stripe5(struct stripe_head *sh) 2941static void handle_stripe5(struct stripe_head *sh)
2900{ 2942{
2901 raid5_conf_t *conf = sh->raid_conf; 2943 raid5_conf_t *conf = sh->raid_conf;
2902 int disks = sh->disks, i; 2944 int disks = sh->disks, i;
@@ -3167,11 +3209,9 @@ static bool handle_stripe5(struct stripe_head *sh)
3167 ops_run_io(sh, &s); 3209 ops_run_io(sh, &s);
3168 3210
3169 return_io(return_bi); 3211 return_io(return_bi);
3170
3171 return blocked_rdev == NULL;
3172} 3212}
3173 3213
3174static bool handle_stripe6(struct stripe_head *sh) 3214static void handle_stripe6(struct stripe_head *sh)
3175{ 3215{
3176 raid5_conf_t *conf = sh->raid_conf; 3216 raid5_conf_t *conf = sh->raid_conf;
3177 int disks = sh->disks; 3217 int disks = sh->disks;
@@ -3455,17 +3495,14 @@ static bool handle_stripe6(struct stripe_head *sh)
3455 ops_run_io(sh, &s); 3495 ops_run_io(sh, &s);
3456 3496
3457 return_io(return_bi); 3497 return_io(return_bi);
3458
3459 return blocked_rdev == NULL;
3460} 3498}
3461 3499
3462/* returns true if the stripe was handled */ 3500static void handle_stripe(struct stripe_head *sh)
3463static bool handle_stripe(struct stripe_head *sh)
3464{ 3501{
3465 if (sh->raid_conf->level == 6) 3502 if (sh->raid_conf->level == 6)
3466 return handle_stripe6(sh); 3503 handle_stripe6(sh);
3467 else 3504 else
3468 return handle_stripe5(sh); 3505 handle_stripe5(sh);
3469} 3506}
3470 3507
3471static void raid5_activate_delayed(raid5_conf_t *conf) 3508static void raid5_activate_delayed(raid5_conf_t *conf)
@@ -3503,9 +3540,10 @@ static void unplug_slaves(mddev_t *mddev)
3503{ 3540{
3504 raid5_conf_t *conf = mddev->private; 3541 raid5_conf_t *conf = mddev->private;
3505 int i; 3542 int i;
3543 int devs = max(conf->raid_disks, conf->previous_raid_disks);
3506 3544
3507 rcu_read_lock(); 3545 rcu_read_lock();
3508 for (i = 0; i < conf->raid_disks; i++) { 3546 for (i = 0; i < devs; i++) {
3509 mdk_rdev_t *rdev = rcu_dereference(conf->disks[i].rdev); 3547 mdk_rdev_t *rdev = rcu_dereference(conf->disks[i].rdev);
3510 if (rdev && !test_bit(Faulty, &rdev->flags) && atomic_read(&rdev->nr_pending)) { 3548 if (rdev && !test_bit(Faulty, &rdev->flags) && atomic_read(&rdev->nr_pending)) {
3511 struct request_queue *r_queue = bdev_get_queue(rdev->bdev); 3549 struct request_queue *r_queue = bdev_get_queue(rdev->bdev);
@@ -4011,6 +4049,8 @@ static sector_t reshape_request(mddev_t *mddev, sector_t sector_nr, int *skipped
4011 sector_nr = conf->reshape_progress; 4049 sector_nr = conf->reshape_progress;
4012 sector_div(sector_nr, new_data_disks); 4050 sector_div(sector_nr, new_data_disks);
4013 if (sector_nr) { 4051 if (sector_nr) {
4052 mddev->curr_resync_completed = sector_nr;
4053 sysfs_notify(&mddev->kobj, NULL, "sync_completed");
4014 *skipped = 1; 4054 *skipped = 1;
4015 return sector_nr; 4055 return sector_nr;
4016 } 4056 }
@@ -4277,9 +4317,7 @@ static inline sector_t sync_request(mddev_t *mddev, sector_t sector_nr, int *ski
4277 clear_bit(STRIPE_INSYNC, &sh->state); 4317 clear_bit(STRIPE_INSYNC, &sh->state);
4278 spin_unlock(&sh->lock); 4318 spin_unlock(&sh->lock);
4279 4319
4280 /* wait for any blocked device to be handled */ 4320 handle_stripe(sh);
4281 while (unlikely(!handle_stripe(sh)))
4282 ;
4283 release_stripe(sh); 4321 release_stripe(sh);
4284 4322
4285 return STRIPE_SECTORS; 4323 return STRIPE_SECTORS;
@@ -4349,37 +4387,6 @@ static int retry_aligned_read(raid5_conf_t *conf, struct bio *raid_bio)
4349 return handled; 4387 return handled;
4350} 4388}
4351 4389
4352#ifdef CONFIG_MULTICORE_RAID456
4353static void __process_stripe(void *param, async_cookie_t cookie)
4354{
4355 struct stripe_head *sh = param;
4356
4357 handle_stripe(sh);
4358 release_stripe(sh);
4359}
4360
4361static void process_stripe(struct stripe_head *sh, struct list_head *domain)
4362{
4363 async_schedule_domain(__process_stripe, sh, domain);
4364}
4365
4366static void synchronize_stripe_processing(struct list_head *domain)
4367{
4368 async_synchronize_full_domain(domain);
4369}
4370#else
4371static void process_stripe(struct stripe_head *sh, struct list_head *domain)
4372{
4373 handle_stripe(sh);
4374 release_stripe(sh);
4375 cond_resched();
4376}
4377
4378static void synchronize_stripe_processing(struct list_head *domain)
4379{
4380}
4381#endif
4382
4383 4390
4384/* 4391/*
4385 * This is our raid5 kernel thread. 4392 * This is our raid5 kernel thread.
@@ -4393,7 +4400,6 @@ static void raid5d(mddev_t *mddev)
4393 struct stripe_head *sh; 4400 struct stripe_head *sh;
4394 raid5_conf_t *conf = mddev->private; 4401 raid5_conf_t *conf = mddev->private;
4395 int handled; 4402 int handled;
4396 LIST_HEAD(raid_domain);
4397 4403
4398 pr_debug("+++ raid5d active\n"); 4404 pr_debug("+++ raid5d active\n");
4399 4405
@@ -4430,7 +4436,9 @@ static void raid5d(mddev_t *mddev)
4430 spin_unlock_irq(&conf->device_lock); 4436 spin_unlock_irq(&conf->device_lock);
4431 4437
4432 handled++; 4438 handled++;
4433 process_stripe(sh, &raid_domain); 4439 handle_stripe(sh);
4440 release_stripe(sh);
4441 cond_resched();
4434 4442
4435 spin_lock_irq(&conf->device_lock); 4443 spin_lock_irq(&conf->device_lock);
4436 } 4444 }
@@ -4438,7 +4446,6 @@ static void raid5d(mddev_t *mddev)
4438 4446
4439 spin_unlock_irq(&conf->device_lock); 4447 spin_unlock_irq(&conf->device_lock);
4440 4448
4441 synchronize_stripe_processing(&raid_domain);
4442 async_tx_issue_pending_all(); 4449 async_tx_issue_pending_all();
4443 unplug_slaves(mddev); 4450 unplug_slaves(mddev);
4444 4451
@@ -4558,13 +4565,9 @@ raid5_size(mddev_t *mddev, sector_t sectors, int raid_disks)
4558 4565
4559 if (!sectors) 4566 if (!sectors)
4560 sectors = mddev->dev_sectors; 4567 sectors = mddev->dev_sectors;
4561 if (!raid_disks) { 4568 if (!raid_disks)
4562 /* size is defined by the smallest of previous and new size */ 4569 /* size is defined by the smallest of previous and new size */
4563 if (conf->raid_disks < conf->previous_raid_disks) 4570 raid_disks = min(conf->raid_disks, conf->previous_raid_disks);
4564 raid_disks = conf->raid_disks;
4565 else
4566 raid_disks = conf->previous_raid_disks;
4567 }
4568 4571
4569 sectors &= ~((sector_t)mddev->chunk_sectors - 1); 4572 sectors &= ~((sector_t)mddev->chunk_sectors - 1);
4570 sectors &= ~((sector_t)mddev->new_chunk_sectors - 1); 4573 sectors &= ~((sector_t)mddev->new_chunk_sectors - 1);
@@ -4665,7 +4668,7 @@ static int raid5_alloc_percpu(raid5_conf_t *conf)
4665 } 4668 }
4666 per_cpu_ptr(conf->percpu, cpu)->spare_page = spare_page; 4669 per_cpu_ptr(conf->percpu, cpu)->spare_page = spare_page;
4667 } 4670 }
4668 scribble = kmalloc(scribble_len(conf->raid_disks), GFP_KERNEL); 4671 scribble = kmalloc(conf->scribble_len, GFP_KERNEL);
4669 if (!scribble) { 4672 if (!scribble) {
4670 err = -ENOMEM; 4673 err = -ENOMEM;
4671 break; 4674 break;
@@ -4686,7 +4689,7 @@ static int raid5_alloc_percpu(raid5_conf_t *conf)
4686static raid5_conf_t *setup_conf(mddev_t *mddev) 4689static raid5_conf_t *setup_conf(mddev_t *mddev)
4687{ 4690{
4688 raid5_conf_t *conf; 4691 raid5_conf_t *conf;
4689 int raid_disk, memory; 4692 int raid_disk, memory, max_disks;
4690 mdk_rdev_t *rdev; 4693 mdk_rdev_t *rdev;
4691 struct disk_info *disk; 4694 struct disk_info *disk;
4692 4695
@@ -4722,15 +4725,28 @@ static raid5_conf_t *setup_conf(mddev_t *mddev)
4722 conf = kzalloc(sizeof(raid5_conf_t), GFP_KERNEL); 4725 conf = kzalloc(sizeof(raid5_conf_t), GFP_KERNEL);
4723 if (conf == NULL) 4726 if (conf == NULL)
4724 goto abort; 4727 goto abort;
4728 spin_lock_init(&conf->device_lock);
4729 init_waitqueue_head(&conf->wait_for_stripe);
4730 init_waitqueue_head(&conf->wait_for_overlap);
4731 INIT_LIST_HEAD(&conf->handle_list);
4732 INIT_LIST_HEAD(&conf->hold_list);
4733 INIT_LIST_HEAD(&conf->delayed_list);
4734 INIT_LIST_HEAD(&conf->bitmap_list);
4735 INIT_LIST_HEAD(&conf->inactive_list);
4736 atomic_set(&conf->active_stripes, 0);
4737 atomic_set(&conf->preread_active_stripes, 0);
4738 atomic_set(&conf->active_aligned_reads, 0);
4739 conf->bypass_threshold = BYPASS_THRESHOLD;
4725 4740
4726 conf->raid_disks = mddev->raid_disks; 4741 conf->raid_disks = mddev->raid_disks;
4727 conf->scribble_len = scribble_len(conf->raid_disks);
4728 if (mddev->reshape_position == MaxSector) 4742 if (mddev->reshape_position == MaxSector)
4729 conf->previous_raid_disks = mddev->raid_disks; 4743 conf->previous_raid_disks = mddev->raid_disks;
4730 else 4744 else
4731 conf->previous_raid_disks = mddev->raid_disks - mddev->delta_disks; 4745 conf->previous_raid_disks = mddev->raid_disks - mddev->delta_disks;
4746 max_disks = max(conf->raid_disks, conf->previous_raid_disks);
4747 conf->scribble_len = scribble_len(max_disks);
4732 4748
4733 conf->disks = kzalloc(conf->raid_disks * sizeof(struct disk_info), 4749 conf->disks = kzalloc(max_disks * sizeof(struct disk_info),
4734 GFP_KERNEL); 4750 GFP_KERNEL);
4735 if (!conf->disks) 4751 if (!conf->disks)
4736 goto abort; 4752 goto abort;
@@ -4744,24 +4760,11 @@ static raid5_conf_t *setup_conf(mddev_t *mddev)
4744 if (raid5_alloc_percpu(conf) != 0) 4760 if (raid5_alloc_percpu(conf) != 0)
4745 goto abort; 4761 goto abort;
4746 4762
4747 spin_lock_init(&conf->device_lock);
4748 init_waitqueue_head(&conf->wait_for_stripe);
4749 init_waitqueue_head(&conf->wait_for_overlap);
4750 INIT_LIST_HEAD(&conf->handle_list);
4751 INIT_LIST_HEAD(&conf->hold_list);
4752 INIT_LIST_HEAD(&conf->delayed_list);
4753 INIT_LIST_HEAD(&conf->bitmap_list);
4754 INIT_LIST_HEAD(&conf->inactive_list);
4755 atomic_set(&conf->active_stripes, 0);
4756 atomic_set(&conf->preread_active_stripes, 0);
4757 atomic_set(&conf->active_aligned_reads, 0);
4758 conf->bypass_threshold = BYPASS_THRESHOLD;
4759
4760 pr_debug("raid5: run(%s) called.\n", mdname(mddev)); 4763 pr_debug("raid5: run(%s) called.\n", mdname(mddev));
4761 4764
4762 list_for_each_entry(rdev, &mddev->disks, same_set) { 4765 list_for_each_entry(rdev, &mddev->disks, same_set) {
4763 raid_disk = rdev->raid_disk; 4766 raid_disk = rdev->raid_disk;
4764 if (raid_disk >= conf->raid_disks 4767 if (raid_disk >= max_disks
4765 || raid_disk < 0) 4768 || raid_disk < 0)
4766 continue; 4769 continue;
4767 disk = conf->disks + raid_disk; 4770 disk = conf->disks + raid_disk;
@@ -4793,7 +4796,7 @@ static raid5_conf_t *setup_conf(mddev_t *mddev)
4793 } 4796 }
4794 4797
4795 memory = conf->max_nr_stripes * (sizeof(struct stripe_head) + 4798 memory = conf->max_nr_stripes * (sizeof(struct stripe_head) +
4796 conf->raid_disks * ((sizeof(struct bio) + PAGE_SIZE))) / 1024; 4799 max_disks * ((sizeof(struct bio) + PAGE_SIZE))) / 1024;
4797 if (grow_stripes(conf, conf->max_nr_stripes)) { 4800 if (grow_stripes(conf, conf->max_nr_stripes)) {
4798 printk(KERN_ERR 4801 printk(KERN_ERR
4799 "raid5: couldn't allocate %dkB for buffers\n", memory); 4802 "raid5: couldn't allocate %dkB for buffers\n", memory);
@@ -4820,11 +4823,40 @@ static raid5_conf_t *setup_conf(mddev_t *mddev)
4820 return ERR_PTR(-ENOMEM); 4823 return ERR_PTR(-ENOMEM);
4821} 4824}
4822 4825
4826
4827static int only_parity(int raid_disk, int algo, int raid_disks, int max_degraded)
4828{
4829 switch (algo) {
4830 case ALGORITHM_PARITY_0:
4831 if (raid_disk < max_degraded)
4832 return 1;
4833 break;
4834 case ALGORITHM_PARITY_N:
4835 if (raid_disk >= raid_disks - max_degraded)
4836 return 1;
4837 break;
4838 case ALGORITHM_PARITY_0_6:
4839 if (raid_disk == 0 ||
4840 raid_disk == raid_disks - 1)
4841 return 1;
4842 break;
4843 case ALGORITHM_LEFT_ASYMMETRIC_6:
4844 case ALGORITHM_RIGHT_ASYMMETRIC_6:
4845 case ALGORITHM_LEFT_SYMMETRIC_6:
4846 case ALGORITHM_RIGHT_SYMMETRIC_6:
4847 if (raid_disk == raid_disks - 1)
4848 return 1;
4849 }
4850 return 0;
4851}
4852
4823static int run(mddev_t *mddev) 4853static int run(mddev_t *mddev)
4824{ 4854{
4825 raid5_conf_t *conf; 4855 raid5_conf_t *conf;
4826 int working_disks = 0, chunk_size; 4856 int working_disks = 0, chunk_size;
4857 int dirty_parity_disks = 0;
4827 mdk_rdev_t *rdev; 4858 mdk_rdev_t *rdev;
4859 sector_t reshape_offset = 0;
4828 4860
4829 if (mddev->recovery_cp != MaxSector) 4861 if (mddev->recovery_cp != MaxSector)
4830 printk(KERN_NOTICE "raid5: %s is not clean" 4862 printk(KERN_NOTICE "raid5: %s is not clean"
@@ -4858,6 +4890,7 @@ static int run(mddev_t *mddev)
4858 "on a stripe boundary\n"); 4890 "on a stripe boundary\n");
4859 return -EINVAL; 4891 return -EINVAL;
4860 } 4892 }
4893 reshape_offset = here_new * mddev->new_chunk_sectors;
4861 /* here_new is the stripe we will write to */ 4894 /* here_new is the stripe we will write to */
4862 here_old = mddev->reshape_position; 4895 here_old = mddev->reshape_position;
4863 sector_div(here_old, mddev->chunk_sectors * 4896 sector_div(here_old, mddev->chunk_sectors *
@@ -4913,12 +4946,54 @@ static int run(mddev_t *mddev)
4913 /* 4946 /*
4914 * 0 for a fully functional array, 1 or 2 for a degraded array. 4947 * 0 for a fully functional array, 1 or 2 for a degraded array.
4915 */ 4948 */
4916 list_for_each_entry(rdev, &mddev->disks, same_set) 4949 list_for_each_entry(rdev, &mddev->disks, same_set) {
4917 if (rdev->raid_disk >= 0 && 4950 if (rdev->raid_disk < 0)
4918 test_bit(In_sync, &rdev->flags)) 4951 continue;
4952 if (test_bit(In_sync, &rdev->flags))
4919 working_disks++; 4953 working_disks++;
4954 /* This disc is not fully in-sync. However if it
4955 * just stored parity (beyond the recovery_offset),
4956 * when we don't need to be concerned about the
4957 * array being dirty.
4958 * When reshape goes 'backwards', we never have
4959 * partially completed devices, so we only need
4960 * to worry about reshape going forwards.
4961 */
4962 /* Hack because v0.91 doesn't store recovery_offset properly. */
4963 if (mddev->major_version == 0 &&
4964 mddev->minor_version > 90)
4965 rdev->recovery_offset = reshape_offset;
4966
4967 printk("%d: w=%d pa=%d pr=%d m=%d a=%d r=%d op1=%d op2=%d\n",
4968 rdev->raid_disk, working_disks, conf->prev_algo,
4969 conf->previous_raid_disks, conf->max_degraded,
4970 conf->algorithm, conf->raid_disks,
4971 only_parity(rdev->raid_disk,
4972 conf->prev_algo,
4973 conf->previous_raid_disks,
4974 conf->max_degraded),
4975 only_parity(rdev->raid_disk,
4976 conf->algorithm,
4977 conf->raid_disks,
4978 conf->max_degraded));
4979 if (rdev->recovery_offset < reshape_offset) {
4980 /* We need to check old and new layout */
4981 if (!only_parity(rdev->raid_disk,
4982 conf->algorithm,
4983 conf->raid_disks,
4984 conf->max_degraded))
4985 continue;
4986 }
4987 if (!only_parity(rdev->raid_disk,
4988 conf->prev_algo,
4989 conf->previous_raid_disks,
4990 conf->max_degraded))
4991 continue;
4992 dirty_parity_disks++;
4993 }
4920 4994
4921 mddev->degraded = conf->raid_disks - working_disks; 4995 mddev->degraded = (max(conf->raid_disks, conf->previous_raid_disks)
4996 - working_disks);
4922 4997
4923 if (mddev->degraded > conf->max_degraded) { 4998 if (mddev->degraded > conf->max_degraded) {
4924 printk(KERN_ERR "raid5: not enough operational devices for %s" 4999 printk(KERN_ERR "raid5: not enough operational devices for %s"
@@ -4931,7 +5006,7 @@ static int run(mddev_t *mddev)
4931 mddev->dev_sectors &= ~(mddev->chunk_sectors - 1); 5006 mddev->dev_sectors &= ~(mddev->chunk_sectors - 1);
4932 mddev->resync_max_sectors = mddev->dev_sectors; 5007 mddev->resync_max_sectors = mddev->dev_sectors;
4933 5008
4934 if (mddev->degraded > 0 && 5009 if (mddev->degraded > dirty_parity_disks &&
4935 mddev->recovery_cp != MaxSector) { 5010 mddev->recovery_cp != MaxSector) {
4936 if (mddev->ok_start_degraded) 5011 if (mddev->ok_start_degraded)
4937 printk(KERN_WARNING 5012 printk(KERN_WARNING
@@ -5357,9 +5432,11 @@ static int raid5_start_reshape(mddev_t *mddev)
5357 !test_bit(Faulty, &rdev->flags)) { 5432 !test_bit(Faulty, &rdev->flags)) {
5358 if (raid5_add_disk(mddev, rdev) == 0) { 5433 if (raid5_add_disk(mddev, rdev) == 0) {
5359 char nm[20]; 5434 char nm[20];
5360 set_bit(In_sync, &rdev->flags); 5435 if (rdev->raid_disk >= conf->previous_raid_disks)
5436 set_bit(In_sync, &rdev->flags);
5437 else
5438 rdev->recovery_offset = 0;
5361 added_devices++; 5439 added_devices++;
5362 rdev->recovery_offset = 0;
5363 sprintf(nm, "rd%d", rdev->raid_disk); 5440 sprintf(nm, "rd%d", rdev->raid_disk);
5364 if (sysfs_create_link(&mddev->kobj, 5441 if (sysfs_create_link(&mddev->kobj,
5365 &rdev->kobj, nm)) 5442 &rdev->kobj, nm))
diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h
index 2390e0e83daf..dd708359b451 100644
--- a/drivers/md/raid5.h
+++ b/drivers/md/raid5.h
@@ -214,12 +214,20 @@ struct stripe_head {
214 int disks; /* disks in stripe */ 214 int disks; /* disks in stripe */
215 enum check_states check_state; 215 enum check_states check_state;
216 enum reconstruct_states reconstruct_state; 216 enum reconstruct_states reconstruct_state;
217 /* stripe_operations 217 /**
218 * struct stripe_operations
218 * @target - STRIPE_OP_COMPUTE_BLK target 219 * @target - STRIPE_OP_COMPUTE_BLK target
220 * @target2 - 2nd compute target in the raid6 case
221 * @zero_sum_result - P and Q verification flags
222 * @request - async service request flags for raid_run_ops
219 */ 223 */
220 struct stripe_operations { 224 struct stripe_operations {
221 int target, target2; 225 int target, target2;
222 enum sum_check_flags zero_sum_result; 226 enum sum_check_flags zero_sum_result;
227 #ifdef CONFIG_MULTICORE_RAID456
228 unsigned long request;
229 wait_queue_head_t wait_for_ops;
230 #endif
223 } ops; 231 } ops;
224 struct r5dev { 232 struct r5dev {
225 struct bio req; 233 struct bio req;
@@ -294,6 +302,8 @@ struct r6_state {
294#define STRIPE_FULL_WRITE 13 /* all blocks are set to be overwritten */ 302#define STRIPE_FULL_WRITE 13 /* all blocks are set to be overwritten */
295#define STRIPE_BIOFILL_RUN 14 303#define STRIPE_BIOFILL_RUN 14
296#define STRIPE_COMPUTE_RUN 15 304#define STRIPE_COMPUTE_RUN 15
305#define STRIPE_OPS_REQ_PENDING 16
306
297/* 307/*
298 * Operation request flags 308 * Operation request flags
299 */ 309 */
@@ -478,7 +488,7 @@ static inline int algorithm_valid_raid6(int layout)
478{ 488{
479 return (layout >= 0 && layout <= 5) 489 return (layout >= 0 && layout <= 5)
480 || 490 ||
481 (layout == 8 || layout == 10) 491 (layout >= 8 && layout <= 10)
482 || 492 ||
483 (layout >= 16 && layout <= 20); 493 (layout >= 16 && layout <= 20);
484} 494}
diff --git a/drivers/md/raid6altivec.uc b/drivers/md/raid6altivec.uc
index 699dfeee4944..2654d5c854be 100644
--- a/drivers/md/raid6altivec.uc
+++ b/drivers/md/raid6altivec.uc
@@ -15,7 +15,7 @@
15 * 15 *
16 * $#-way unrolled portable integer math RAID-6 instruction set 16 * $#-way unrolled portable integer math RAID-6 instruction set
17 * 17 *
18 * This file is postprocessed using unroll.pl 18 * This file is postprocessed using unroll.awk
19 * 19 *
20 * <benh> hpa: in process, 20 * <benh> hpa: in process,
21 * you can just "steal" the vec unit with enable_kernel_altivec() (but 21 * you can just "steal" the vec unit with enable_kernel_altivec() (but
diff --git a/drivers/md/raid6int.uc b/drivers/md/raid6int.uc
index f9bf9cba357f..d1e276a14fab 100644
--- a/drivers/md/raid6int.uc
+++ b/drivers/md/raid6int.uc
@@ -15,7 +15,7 @@
15 * 15 *
16 * $#-way unrolled portable integer math RAID-6 instruction set 16 * $#-way unrolled portable integer math RAID-6 instruction set
17 * 17 *
18 * This file is postprocessed using unroll.pl 18 * This file is postprocessed using unroll.awk
19 */ 19 */
20 20
21#include <linux/raid/pq.h> 21#include <linux/raid/pq.h>
diff --git a/drivers/md/raid6test/Makefile b/drivers/md/raid6test/Makefile
index 58ffdf4f5161..2874cbef529d 100644
--- a/drivers/md/raid6test/Makefile
+++ b/drivers/md/raid6test/Makefile
@@ -7,7 +7,7 @@ CC = gcc
7OPTFLAGS = -O2 # Adjust as desired 7OPTFLAGS = -O2 # Adjust as desired
8CFLAGS = -I.. -I ../../../include -g $(OPTFLAGS) 8CFLAGS = -I.. -I ../../../include -g $(OPTFLAGS)
9LD = ld 9LD = ld
10PERL = perl 10AWK = awk
11AR = ar 11AR = ar
12RANLIB = ranlib 12RANLIB = ranlib
13 13
@@ -35,35 +35,35 @@ raid6.a: raid6int1.o raid6int2.o raid6int4.o raid6int8.o raid6int16.o \
35raid6test: test.c raid6.a 35raid6test: test.c raid6.a
36 $(CC) $(CFLAGS) -o raid6test $^ 36 $(CC) $(CFLAGS) -o raid6test $^
37 37
38raid6altivec1.c: raid6altivec.uc ../unroll.pl 38raid6altivec1.c: raid6altivec.uc ../unroll.awk
39 $(PERL) ../unroll.pl 1 < raid6altivec.uc > $@ 39 $(AWK) ../unroll.awk -vN=1 < raid6altivec.uc > $@
40 40
41raid6altivec2.c: raid6altivec.uc ../unroll.pl 41raid6altivec2.c: raid6altivec.uc ../unroll.awk
42 $(PERL) ../unroll.pl 2 < raid6altivec.uc > $@ 42 $(AWK) ../unroll.awk -vN=2 < raid6altivec.uc > $@
43 43
44raid6altivec4.c: raid6altivec.uc ../unroll.pl 44raid6altivec4.c: raid6altivec.uc ../unroll.awk
45 $(PERL) ../unroll.pl 4 < raid6altivec.uc > $@ 45 $(AWK) ../unroll.awk -vN=4 < raid6altivec.uc > $@
46 46
47raid6altivec8.c: raid6altivec.uc ../unroll.pl 47raid6altivec8.c: raid6altivec.uc ../unroll.awk
48 $(PERL) ../unroll.pl 8 < raid6altivec.uc > $@ 48 $(AWK) ../unroll.awk -vN=8 < raid6altivec.uc > $@
49 49
50raid6int1.c: raid6int.uc ../unroll.pl 50raid6int1.c: raid6int.uc ../unroll.awk
51 $(PERL) ../unroll.pl 1 < raid6int.uc > $@ 51 $(AWK) ../unroll.awk -vN=1 < raid6int.uc > $@
52 52
53raid6int2.c: raid6int.uc ../unroll.pl 53raid6int2.c: raid6int.uc ../unroll.awk
54 $(PERL) ../unroll.pl 2 < raid6int.uc > $@ 54 $(AWK) ../unroll.awk -vN=2 < raid6int.uc > $@
55 55
56raid6int4.c: raid6int.uc ../unroll.pl 56raid6int4.c: raid6int.uc ../unroll.awk
57 $(PERL) ../unroll.pl 4 < raid6int.uc > $@ 57 $(AWK) ../unroll.awk -vN=4 < raid6int.uc > $@
58 58
59raid6int8.c: raid6int.uc ../unroll.pl 59raid6int8.c: raid6int.uc ../unroll.awk
60 $(PERL) ../unroll.pl 8 < raid6int.uc > $@ 60 $(AWK) ../unroll.awk -vN=8 < raid6int.uc > $@
61 61
62raid6int16.c: raid6int.uc ../unroll.pl 62raid6int16.c: raid6int.uc ../unroll.awk
63 $(PERL) ../unroll.pl 16 < raid6int.uc > $@ 63 $(AWK) ../unroll.awk -vN=16 < raid6int.uc > $@
64 64
65raid6int32.c: raid6int.uc ../unroll.pl 65raid6int32.c: raid6int.uc ../unroll.awk
66 $(PERL) ../unroll.pl 32 < raid6int.uc > $@ 66 $(AWK) ../unroll.awk -vN=32 < raid6int.uc > $@
67 67
68raid6tables.c: mktables 68raid6tables.c: mktables
69 ./mktables > raid6tables.c 69 ./mktables > raid6tables.c
diff --git a/drivers/md/unroll.awk b/drivers/md/unroll.awk
new file mode 100644
index 000000000000..c6aa03631df8
--- /dev/null
+++ b/drivers/md/unroll.awk
@@ -0,0 +1,20 @@
1
2# This filter requires one command line option of form -vN=n
3# where n must be a decimal number.
4#
5# Repeat each input line containing $$ n times, replacing $$ with 0...n-1.
6# Replace each $# with n, and each $* with a single $.
7
8BEGIN {
9 n = N + 0
10}
11{
12 if (/\$\$/) { rep = n } else { rep = 1 }
13 for (i = 0; i < rep; ++i) {
14 tmp = $0
15 gsub(/\$\$/, i, tmp)
16 gsub(/\$\#/, n, tmp)
17 gsub(/\$\*/, "$", tmp)
18 print tmp
19 }
20}
diff --git a/drivers/md/unroll.pl b/drivers/md/unroll.pl
deleted file mode 100644
index 3acc710a20ea..000000000000
--- a/drivers/md/unroll.pl
+++ /dev/null
@@ -1,24 +0,0 @@
1#!/usr/bin/perl
2#
3# Take a piece of C code and for each line which contains the sequence $$
4# repeat n times with $ replaced by 0...n-1; the sequence $# is replaced
5# by the unrolling factor, and $* with a single $
6#
7
8($n) = @ARGV;
9$n += 0;
10
11while ( defined($line = <STDIN>) ) {
12 if ( $line =~ /\$\$/ ) {
13 $rep = $n;
14 } else {
15 $rep = 1;
16 }
17 for ( $i = 0 ; $i < $rep ; $i++ ) {
18 $tmp = $line;
19 $tmp =~ s/\$\$/$i/g;
20 $tmp =~ s/\$\#/$n/g;
21 $tmp =~ s/\$\*/\$/g;
22 print $tmp;
23 }
24}
diff --git a/drivers/media/common/ir-functions.c b/drivers/media/common/ir-functions.c
index 655474b29e21..abd4791acb0e 100644
--- a/drivers/media/common/ir-functions.c
+++ b/drivers/media/common/ir-functions.c
@@ -64,7 +64,7 @@ void ir_input_init(struct input_dev *dev, struct ir_input_state *ir,
64 64
65 ir->ir_type = ir_type; 65 ir->ir_type = ir_type;
66 66
67 memset(ir->ir_codes, sizeof(ir->ir_codes), 0); 67 memset(ir->ir_codes, 0, sizeof(ir->ir_codes));
68 68
69 /* 69 /*
70 * FIXME: This is a temporary workaround to use the new IR tables 70 * FIXME: This is a temporary workaround to use the new IR tables
diff --git a/drivers/media/common/tuners/tda18271-fe.c b/drivers/media/common/tuners/tda18271-fe.c
index 64595112000d..3a50ce96fcb9 100644
--- a/drivers/media/common/tuners/tda18271-fe.c
+++ b/drivers/media/common/tuners/tda18271-fe.c
@@ -616,13 +616,13 @@ static int tda18271_rf_tracking_filters_init(struct dvb_frontend *fe, u32 freq)
616 case RF2: 616 case RF2:
617 map[i].rf_a1 = (prog_cal[RF2] - prog_tab[RF2] - 617 map[i].rf_a1 = (prog_cal[RF2] - prog_tab[RF2] -
618 prog_cal[RF1] + prog_tab[RF1]) / 618 prog_cal[RF1] + prog_tab[RF1]) /
619 ((rf_freq[RF2] - rf_freq[RF1]) / 1000); 619 (s32)((rf_freq[RF2] - rf_freq[RF1]) / 1000);
620 map[i].rf2 = rf_freq[RF2] / 1000; 620 map[i].rf2 = rf_freq[RF2] / 1000;
621 break; 621 break;
622 case RF3: 622 case RF3:
623 map[i].rf_a2 = (prog_cal[RF3] - prog_tab[RF3] - 623 map[i].rf_a2 = (prog_cal[RF3] - prog_tab[RF3] -
624 prog_cal[RF2] + prog_tab[RF2]) / 624 prog_cal[RF2] + prog_tab[RF2]) /
625 ((rf_freq[RF3] - rf_freq[RF2]) / 1000); 625 (s32)((rf_freq[RF3] - rf_freq[RF2]) / 1000);
626 map[i].rf_b2 = prog_cal[RF2] - prog_tab[RF2]; 626 map[i].rf_b2 = prog_cal[RF2] - prog_tab[RF2];
627 map[i].rf3 = rf_freq[RF3] / 1000; 627 map[i].rf3 = rf_freq[RF3] / 1000;
628 break; 628 break;
@@ -1000,12 +1000,12 @@ static int tda18271_set_analog_params(struct dvb_frontend *fe,
1000 struct tda18271_std_map_item *map; 1000 struct tda18271_std_map_item *map;
1001 char *mode; 1001 char *mode;
1002 int ret; 1002 int ret;
1003 u32 freq = params->frequency * 62500; 1003 u32 freq = params->frequency * 125 *
1004 ((params->mode == V4L2_TUNER_RADIO) ? 1 : 1000) / 2;
1004 1005
1005 priv->mode = TDA18271_ANALOG; 1006 priv->mode = TDA18271_ANALOG;
1006 1007
1007 if (params->mode == V4L2_TUNER_RADIO) { 1008 if (params->mode == V4L2_TUNER_RADIO) {
1008 freq = freq / 1000;
1009 map = &std_map->fm_radio; 1009 map = &std_map->fm_radio;
1010 mode = "fm"; 1010 mode = "fm";
1011 } else if (params->std & V4L2_STD_MN) { 1011 } else if (params->std & V4L2_STD_MN) {
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c
index ddf639ed2fd8..98082416aa52 100644
--- a/drivers/media/dvb/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb/dvb-core/dvb_frontend.c
@@ -31,6 +31,7 @@
31#include <linux/wait.h> 31#include <linux/wait.h>
32#include <linux/slab.h> 32#include <linux/slab.h>
33#include <linux/poll.h> 33#include <linux/poll.h>
34#include <linux/semaphore.h>
34#include <linux/module.h> 35#include <linux/module.h>
35#include <linux/list.h> 36#include <linux/list.h>
36#include <linux/freezer.h> 37#include <linux/freezer.h>
diff --git a/drivers/media/dvb/dvb-usb/Kconfig b/drivers/media/dvb/dvb-usb/Kconfig
index 9744b0692417..0e4b97fba384 100644
--- a/drivers/media/dvb/dvb-usb/Kconfig
+++ b/drivers/media/dvb/dvb-usb/Kconfig
@@ -75,7 +75,7 @@ config DVB_USB_DIB0700
75 select DVB_DIB3000MC if !DVB_FE_CUSTOMISE 75 select DVB_DIB3000MC if !DVB_FE_CUSTOMISE
76 select DVB_S5H1411 if !DVB_FE_CUSTOMISE 76 select DVB_S5H1411 if !DVB_FE_CUSTOMISE
77 select DVB_LGDT3305 if !DVB_FE_CUSTOMISE 77 select DVB_LGDT3305 if !DVB_FE_CUSTOMISE
78 select DVB_TUNER_DIB0070 78 select DVB_TUNER_DIB0070 if !DVB_FE_CUSTOMISE
79 select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMISE 79 select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMISE
80 select MEDIA_TUNER_MT2266 if !MEDIA_TUNER_CUSTOMISE 80 select MEDIA_TUNER_MT2266 if !MEDIA_TUNER_CUSTOMISE
81 select MEDIA_TUNER_XC2028 if !MEDIA_TUNER_CUSTOMISE 81 select MEDIA_TUNER_XC2028 if !MEDIA_TUNER_CUSTOMISE
diff --git a/drivers/media/dvb/dvb-usb/ce6230.c b/drivers/media/dvb/dvb-usb/ce6230.c
index 0737c6377892..3df2045b7d2d 100644
--- a/drivers/media/dvb/dvb-usb/ce6230.c
+++ b/drivers/media/dvb/dvb-usb/ce6230.c
@@ -105,7 +105,7 @@ static int ce6230_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[],
105 int i = 0; 105 int i = 0;
106 struct req_t req; 106 struct req_t req;
107 int ret = 0; 107 int ret = 0;
108 memset(&req, 0, sizeof(&req)); 108 memset(&req, 0, sizeof(req));
109 109
110 if (num > 2) 110 if (num > 2)
111 return -EINVAL; 111 return -EINVAL;
diff --git a/drivers/media/dvb/dvb-usb/cxusb.c b/drivers/media/dvb/dvb-usb/cxusb.c
index f65591fb7cec..2a53dd096eef 100644
--- a/drivers/media/dvb/dvb-usb/cxusb.c
+++ b/drivers/media/dvb/dvb-usb/cxusb.c
@@ -663,6 +663,14 @@ static struct zl10353_config cxusb_zl10353_xc3028_config = {
663 .parallel_ts = 1, 663 .parallel_ts = 1,
664}; 664};
665 665
666static struct zl10353_config cxusb_zl10353_xc3028_config_no_i2c_gate = {
667 .demod_address = 0x0f,
668 .if2 = 45600,
669 .no_tuner = 1,
670 .parallel_ts = 1,
671 .disable_i2c_gate_ctrl = 1,
672};
673
666static struct mt352_config cxusb_mt352_xc3028_config = { 674static struct mt352_config cxusb_mt352_xc3028_config = {
667 .demod_address = 0x0f, 675 .demod_address = 0x0f,
668 .if2 = 4560, 676 .if2 = 4560,
@@ -894,7 +902,7 @@ static int cxusb_dualdig4_frontend_attach(struct dvb_usb_adapter *adap)
894 cxusb_bluebird_gpio_pulse(adap->dev, 0x02, 1); 902 cxusb_bluebird_gpio_pulse(adap->dev, 0x02, 1);
895 903
896 if ((adap->fe = dvb_attach(zl10353_attach, 904 if ((adap->fe = dvb_attach(zl10353_attach,
897 &cxusb_zl10353_xc3028_config, 905 &cxusb_zl10353_xc3028_config_no_i2c_gate,
898 &adap->dev->i2c_adap)) == NULL) 906 &adap->dev->i2c_adap)) == NULL)
899 return -EIO; 907 return -EIO;
900 908
diff --git a/drivers/media/dvb/dvb-usb/dib0700_devices.c b/drivers/media/dvb/dvb-usb/dib0700_devices.c
index 0b2812aa30a4..6bd8951ea02b 100644
--- a/drivers/media/dvb/dvb-usb/dib0700_devices.c
+++ b/drivers/media/dvb/dvb-usb/dib0700_devices.c
@@ -1925,7 +1925,7 @@ struct dvb_usb_device_properties dib0700_devices[] = {
1925 { NULL }, 1925 { NULL },
1926 }, 1926 },
1927 { "Leadtek Winfast DTV Dongle (STK7700P based)", 1927 { "Leadtek Winfast DTV Dongle (STK7700P based)",
1928 { &dib0700_usb_id_table[8] }, 1928 { &dib0700_usb_id_table[8], &dib0700_usb_id_table[34] },
1929 { NULL }, 1929 { NULL },
1930 }, 1930 },
1931 { "AVerMedia AVerTV DVB-T Express", 1931 { "AVerMedia AVerTV DVB-T Express",
@@ -2064,7 +2064,7 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2064 }, 2064 },
2065 }, 2065 },
2066 2066
2067 .num_device_descs = 12, 2067 .num_device_descs = 11,
2068 .devices = { 2068 .devices = {
2069 { "DiBcom STK7070P reference design", 2069 { "DiBcom STK7070P reference design",
2070 { &dib0700_usb_id_table[15], NULL }, 2070 { &dib0700_usb_id_table[15], NULL },
@@ -2098,11 +2098,6 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2098 { &dib0700_usb_id_table[30], NULL }, 2098 { &dib0700_usb_id_table[30], NULL },
2099 { NULL }, 2099 { NULL },
2100 }, 2100 },
2101 { "Terratec Cinergy T USB XXS/ T3",
2102 { &dib0700_usb_id_table[33],
2103 &dib0700_usb_id_table[52], NULL },
2104 { NULL },
2105 },
2106 { "Elgato EyeTV DTT", 2101 { "Elgato EyeTV DTT",
2107 { &dib0700_usb_id_table[49], NULL }, 2102 { &dib0700_usb_id_table[49], NULL },
2108 { NULL }, 2103 { NULL },
@@ -2343,8 +2338,10 @@ struct dvb_usb_device_properties dib0700_devices[] = {
2343 { &dib0700_usb_id_table[59], NULL }, 2338 { &dib0700_usb_id_table[59], NULL },
2344 { NULL }, 2339 { NULL },
2345 }, 2340 },
2346 { "Terratec Cinergy T USB XXS (HD)", 2341 { "Terratec Cinergy T USB XXS (HD)/ T3",
2347 { &dib0700_usb_id_table[34], &dib0700_usb_id_table[60] }, 2342 { &dib0700_usb_id_table[33],
2343 &dib0700_usb_id_table[52],
2344 &dib0700_usb_id_table[60], NULL},
2348 { NULL }, 2345 { NULL },
2349 }, 2346 },
2350 }, 2347 },
diff --git a/drivers/media/dvb/firewire/firedtv-avc.c b/drivers/media/dvb/firewire/firedtv-avc.c
index d1b67fe0f011..485d061319ab 100644
--- a/drivers/media/dvb/firewire/firedtv-avc.c
+++ b/drivers/media/dvb/firewire/firedtv-avc.c
@@ -1050,28 +1050,28 @@ int avc_ca_pmt(struct firedtv *fdtv, char *msg, int length)
1050 c->operand[4] = 0; /* slot */ 1050 c->operand[4] = 0; /* slot */
1051 c->operand[5] = SFE_VENDOR_TAG_CA_PMT; /* ca tag */ 1051 c->operand[5] = SFE_VENDOR_TAG_CA_PMT; /* ca tag */
1052 c->operand[6] = 0; /* more/last */ 1052 c->operand[6] = 0; /* more/last */
1053 /* c->operand[7] = XXXprogram_info_length + 17; */ /* length */ 1053 /* Use three bytes for length field in case length > 127 */
1054 c->operand[8] = list_management; 1054 c->operand[10] = list_management;
1055 c->operand[9] = 0x01; /* pmt_cmd=OK_descramble */ 1055 c->operand[11] = 0x01; /* pmt_cmd=OK_descramble */
1056 1056
1057 /* TS program map table */ 1057 /* TS program map table */
1058 1058
1059 c->operand[10] = 0x02; /* Table id=2 */ 1059 c->operand[12] = 0x02; /* Table id=2 */
1060 c->operand[11] = 0x80; /* Section syntax + length */ 1060 c->operand[13] = 0x80; /* Section syntax + length */
1061 /* c->operand[12] = XXXprogram_info_length + 12; */ 1061 /* c->operand[14] = XXXprogram_info_length + 12; */
1062 c->operand[13] = msg[1]; /* Program number */ 1062 c->operand[15] = msg[1]; /* Program number */
1063 c->operand[14] = msg[2]; 1063 c->operand[16] = msg[2];
1064 c->operand[15] = 0x01; /* Version number=0 + current/next=1 */ 1064 c->operand[17] = 0x01; /* Version number=0 + current/next=1 */
1065 c->operand[16] = 0x00; /* Section number=0 */ 1065 c->operand[18] = 0x00; /* Section number=0 */
1066 c->operand[17] = 0x00; /* Last section number=0 */ 1066 c->operand[19] = 0x00; /* Last section number=0 */
1067 c->operand[18] = 0x1f; /* PCR_PID=1FFF */ 1067 c->operand[20] = 0x1f; /* PCR_PID=1FFF */
1068 c->operand[19] = 0xff; 1068 c->operand[21] = 0xff;
1069 c->operand[20] = (program_info_length >> 8); /* Program info length */ 1069 c->operand[22] = (program_info_length >> 8); /* Program info length */
1070 c->operand[21] = (program_info_length & 0xff); 1070 c->operand[23] = (program_info_length & 0xff);
1071 1071
1072 /* CA descriptors at programme level */ 1072 /* CA descriptors at programme level */
1073 read_pos = 6; 1073 read_pos = 6;
1074 write_pos = 22; 1074 write_pos = 24;
1075 if (program_info_length > 0) { 1075 if (program_info_length > 0) {
1076 pmt_cmd_id = msg[read_pos++]; 1076 pmt_cmd_id = msg[read_pos++];
1077 if (pmt_cmd_id != 1 && pmt_cmd_id != 4) 1077 if (pmt_cmd_id != 1 && pmt_cmd_id != 4)
@@ -1113,8 +1113,10 @@ int avc_ca_pmt(struct firedtv *fdtv, char *msg, int length)
1113 c->operand[write_pos++] = 0x00; 1113 c->operand[write_pos++] = 0x00;
1114 c->operand[write_pos++] = 0x00; 1114 c->operand[write_pos++] = 0x00;
1115 1115
1116 c->operand[7] = write_pos - 8; 1116 c->operand[7] = 0x82;
1117 c->operand[12] = write_pos - 13; 1117 c->operand[8] = (write_pos - 10) >> 8;
1118 c->operand[9] = (write_pos - 10) & 0xff;
1119 c->operand[14] = write_pos - 15;
1118 1120
1119 crc32_csum = crc32_be(0, &c->operand[10], c->operand[12] - 1); 1121 crc32_csum = crc32_be(0, &c->operand[10], c->operand[12] - 1);
1120 c->operand[write_pos - 4] = (crc32_csum >> 24) & 0xff; 1122 c->operand[write_pos - 4] = (crc32_csum >> 24) & 0xff;
diff --git a/drivers/media/dvb/firewire/firedtv-fe.c b/drivers/media/dvb/firewire/firedtv-fe.c
index 7ba43630a25d..e49cdc88b0c7 100644
--- a/drivers/media/dvb/firewire/firedtv-fe.c
+++ b/drivers/media/dvb/firewire/firedtv-fe.c
@@ -141,18 +141,12 @@ static int fdtv_read_uncorrected_blocks(struct dvb_frontend *fe, u32 *ucblocks)
141 return -EOPNOTSUPP; 141 return -EOPNOTSUPP;
142} 142}
143 143
144#define ACCEPTED 0x9
145
146static int fdtv_set_frontend(struct dvb_frontend *fe, 144static int fdtv_set_frontend(struct dvb_frontend *fe,
147 struct dvb_frontend_parameters *params) 145 struct dvb_frontend_parameters *params)
148{ 146{
149 struct firedtv *fdtv = fe->sec_priv; 147 struct firedtv *fdtv = fe->sec_priv;
150 148
151 /* FIXME: avc_tuner_dsd never returns ACCEPTED. Check status? */ 149 return avc_tuner_dsd(fdtv, params);
152 if (avc_tuner_dsd(fdtv, params) != ACCEPTED)
153 return -EINVAL;
154 else
155 return 0; /* not sure of this... */
156} 150}
157 151
158static int fdtv_get_frontend(struct dvb_frontend *fe, 152static int fdtv_get_frontend(struct dvb_frontend *fe,
diff --git a/drivers/media/dvb/frontends/dib0070.h b/drivers/media/dvb/frontends/dib0070.h
index 8a2e1e710adb..eec9e52ffa75 100644
--- a/drivers/media/dvb/frontends/dib0070.h
+++ b/drivers/media/dvb/frontends/dib0070.h
@@ -51,6 +51,7 @@ struct dib0070_config {
51#if defined(CONFIG_DVB_TUNER_DIB0070) || (defined(CONFIG_DVB_TUNER_DIB0070_MODULE) && defined(MODULE)) 51#if defined(CONFIG_DVB_TUNER_DIB0070) || (defined(CONFIG_DVB_TUNER_DIB0070_MODULE) && defined(MODULE))
52extern struct dvb_frontend *dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct dib0070_config *cfg); 52extern struct dvb_frontend *dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct dib0070_config *cfg);
53extern u16 dib0070_wbd_offset(struct dvb_frontend *); 53extern u16 dib0070_wbd_offset(struct dvb_frontend *);
54extern void dib0070_ctrl_agc_filter(struct dvb_frontend *, u8 open);
54#else 55#else
55static inline struct dvb_frontend *dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct dib0070_config *cfg) 56static inline struct dvb_frontend *dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct dib0070_config *cfg)
56{ 57{
@@ -63,7 +64,11 @@ static inline u16 dib0070_wbd_offset(struct dvb_frontend *fe)
63 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 64 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
64 return -ENODEV; 65 return -ENODEV;
65} 66}
67
68static inline void dib0070_ctrl_agc_filter(struct dvb_frontend *fe, u8 open)
69{
70 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
71}
66#endif 72#endif
67extern void dib0070_ctrl_agc_filter(struct dvb_frontend *, u8 open);
68 73
69#endif 74#endif
diff --git a/drivers/media/dvb/frontends/dib7000p.c b/drivers/media/dvb/frontends/dib7000p.c
index 55ef6eeb0769..0781f94e05d2 100644
--- a/drivers/media/dvb/frontends/dib7000p.c
+++ b/drivers/media/dvb/frontends/dib7000p.c
@@ -1375,6 +1375,11 @@ struct dvb_frontend * dib7000p_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr,
1375 if (dib7000p_identify(st) != 0) 1375 if (dib7000p_identify(st) != 0)
1376 goto error; 1376 goto error;
1377 1377
1378 /* FIXME: make sure the dev.parent field is initialized, or else
1379 request_firmware() will hit an OOPS (this should be moved somewhere
1380 more common) */
1381 st->i2c_master.gated_tuner_i2c_adap.dev.parent = i2c_adap->dev.parent;
1382
1378 dibx000_init_i2c_master(&st->i2c_master, DIB7000P, st->i2c_adap, st->i2c_addr); 1383 dibx000_init_i2c_master(&st->i2c_master, DIB7000P, st->i2c_adap, st->i2c_addr);
1379 1384
1380 dib7000p_demod_reset(st); 1385 dib7000p_demod_reset(st);
diff --git a/drivers/media/dvb/pt1/pt1.c b/drivers/media/dvb/pt1/pt1.c
index 81e623a90f09..1fd8306371e2 100644
--- a/drivers/media/dvb/pt1/pt1.c
+++ b/drivers/media/dvb/pt1/pt1.c
@@ -27,6 +27,7 @@
27#include <linux/pci.h> 27#include <linux/pci.h>
28#include <linux/kthread.h> 28#include <linux/kthread.h>
29#include <linux/freezer.h> 29#include <linux/freezer.h>
30#include <linux/vmalloc.h>
30 31
31#include "dvbdev.h" 32#include "dvbdev.h"
32#include "dvb_demux.h" 33#include "dvb_demux.h"
diff --git a/drivers/media/dvb/siano/Kconfig b/drivers/media/dvb/siano/Kconfig
index 8c1aed77ea30..85a222c4eaa0 100644
--- a/drivers/media/dvb/siano/Kconfig
+++ b/drivers/media/dvb/siano/Kconfig
@@ -4,7 +4,7 @@
4 4
5config SMS_SIANO_MDTV 5config SMS_SIANO_MDTV
6 tristate "Siano SMS1xxx based MDTV receiver" 6 tristate "Siano SMS1xxx based MDTV receiver"
7 depends on DVB_CORE && INPUT 7 depends on DVB_CORE && INPUT && HAS_DMA
8 ---help--- 8 ---help---
9 Choose Y or M here if you have MDTV receiver with a Siano chipset. 9 Choose Y or M here if you have MDTV receiver with a Siano chipset.
10 10
diff --git a/drivers/media/dvb/siano/smsusb.c b/drivers/media/dvb/siano/smsusb.c
index cb8a358b7310..8f88a586b0dd 100644
--- a/drivers/media/dvb/siano/smsusb.c
+++ b/drivers/media/dvb/siano/smsusb.c
@@ -529,6 +529,12 @@ struct usb_device_id smsusb_id_table[] = {
529 .driver_info = SMS1XXX_BOARD_SIANO_NICE }, 529 .driver_info = SMS1XXX_BOARD_SIANO_NICE },
530 { USB_DEVICE(0x187f, 0x0301), 530 { USB_DEVICE(0x187f, 0x0301),
531 .driver_info = SMS1XXX_BOARD_SIANO_VENICE }, 531 .driver_info = SMS1XXX_BOARD_SIANO_VENICE },
532 { USB_DEVICE(0x2040, 0xb900),
533 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
534 { USB_DEVICE(0x2040, 0xb910),
535 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
536 { USB_DEVICE(0x2040, 0xc000),
537 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
532 { } /* Terminating entry */ 538 { } /* Terminating entry */
533 }; 539 };
534 540
diff --git a/drivers/media/radio/radio-gemtek-pci.c b/drivers/media/radio/radio-gemtek-pci.c
index c3f579de6e71..c6cf11661868 100644
--- a/drivers/media/radio/radio-gemtek-pci.c
+++ b/drivers/media/radio/radio-gemtek-pci.c
@@ -181,12 +181,10 @@ static void gemtek_pci_mute(struct gemtek_pci *card)
181 181
182static void gemtek_pci_unmute(struct gemtek_pci *card) 182static void gemtek_pci_unmute(struct gemtek_pci *card)
183{ 183{
184 mutex_lock(&card->lock);
185 if (card->mute) { 184 if (card->mute) {
186 gemtek_pci_setfrequency(card, card->current_frequency); 185 gemtek_pci_setfrequency(card, card->current_frequency);
187 card->mute = false; 186 card->mute = false;
188 } 187 }
189 mutex_unlock(&card->lock);
190} 188}
191 189
192static int gemtek_pci_getsignal(struct gemtek_pci *card) 190static int gemtek_pci_getsignal(struct gemtek_pci *card)
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index 939d1e512974..a6724019c66f 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -1299,7 +1299,7 @@ set_tvnorm(struct bttv *btv, unsigned int norm)
1299 1299
1300 tvnorm = &bttv_tvnorms[norm]; 1300 tvnorm = &bttv_tvnorms[norm];
1301 1301
1302 if (!memcmp(&bttv_tvnorms[btv->tvnorm].cropcap, &tvnorm->cropcap, 1302 if (memcmp(&bttv_tvnorms[btv->tvnorm].cropcap, &tvnorm->cropcap,
1303 sizeof (tvnorm->cropcap))) { 1303 sizeof (tvnorm->cropcap))) {
1304 bttv_crop_reset(&btv->crop[0], norm); 1304 bttv_crop_reset(&btv->crop[0], norm);
1305 btv->crop[1] = btv->crop[0]; /* current = default */ 1305 btv->crop[1] = btv->crop[0]; /* current = default */
@@ -3800,11 +3800,34 @@ bttv_irq_next_video(struct bttv *btv, struct bttv_buffer_set *set)
3800 if (!V4L2_FIELD_HAS_BOTH(item->vb.field) && 3800 if (!V4L2_FIELD_HAS_BOTH(item->vb.field) &&
3801 (item->vb.queue.next != &btv->capture)) { 3801 (item->vb.queue.next != &btv->capture)) {
3802 item = list_entry(item->vb.queue.next, struct bttv_buffer, vb.queue); 3802 item = list_entry(item->vb.queue.next, struct bttv_buffer, vb.queue);
3803 /* Mike Isely <isely@pobox.com> - Only check
3804 * and set up the bottom field in the logic
3805 * below. Don't ever do the top field. This
3806 * of course means that if we set up the
3807 * bottom field in the above code that we'll
3808 * actually skip a field. But that's OK.
3809 * Having processed only a single buffer this
3810 * time, then the next time around the first
3811 * available buffer should be for a top field.
3812 * That will then cause us here to set up a
3813 * top then a bottom field in the normal way.
3814 * The alternative to this understanding is
3815 * that we set up the second available buffer
3816 * as a top field, but that's out of order
3817 * since this driver always processes the top
3818 * field first - the effect will be the two
3819 * buffers being returned in the wrong order,
3820 * with the second buffer also being delayed
3821 * by one field time (owing to the fifo nature
3822 * of videobuf). Worse still, we'll be stuck
3823 * doing fields out of order now every time
3824 * until something else causes a field to be
3825 * dropped. By effectively forcing a field to
3826 * drop this way then we always get back into
3827 * sync within a single frame time. (Out of
3828 * order fields can screw up deinterlacing
3829 * algorithms.) */
3803 if (!V4L2_FIELD_HAS_BOTH(item->vb.field)) { 3830 if (!V4L2_FIELD_HAS_BOTH(item->vb.field)) {
3804 if (NULL == set->top &&
3805 V4L2_FIELD_TOP == item->vb.field) {
3806 set->top = item;
3807 }
3808 if (NULL == set->bottom && 3831 if (NULL == set->bottom &&
3809 V4L2_FIELD_BOTTOM == item->vb.field) { 3832 V4L2_FIELD_BOTTOM == item->vb.field) {
3810 set->bottom = item; 3833 set->bottom = item;
diff --git a/drivers/media/video/davinci/vpif_display.c b/drivers/media/video/davinci/vpif_display.c
index c015da813dda..d14cfb200ed0 100644
--- a/drivers/media/video/davinci/vpif_display.c
+++ b/drivers/media/video/davinci/vpif_display.c
@@ -1426,7 +1426,6 @@ static __init int vpif_probe(struct platform_device *pdev)
1426 struct vpif_display_config *config; 1426 struct vpif_display_config *config;
1427 int i, j = 0, k, q, m, err = 0; 1427 int i, j = 0, k, q, m, err = 0;
1428 struct i2c_adapter *i2c_adap; 1428 struct i2c_adapter *i2c_adap;
1429 struct vpif_config *config;
1430 struct common_obj *common; 1429 struct common_obj *common;
1431 struct channel_obj *ch; 1430 struct channel_obj *ch;
1432 struct video_device *vfd; 1431 struct video_device *vfd;
diff --git a/drivers/media/video/em28xx/em28xx-audio.c b/drivers/media/video/em28xx/em28xx-audio.c
index 7bd8a70f0a0b..ac947aecb9c3 100644
--- a/drivers/media/video/em28xx/em28xx-audio.c
+++ b/drivers/media/video/em28xx/em28xx-audio.c
@@ -383,6 +383,11 @@ static int snd_em28xx_hw_capture_free(struct snd_pcm_substream *substream)
383 383
384static int snd_em28xx_prepare(struct snd_pcm_substream *substream) 384static int snd_em28xx_prepare(struct snd_pcm_substream *substream)
385{ 385{
386 struct em28xx *dev = snd_pcm_substream_chip(substream);
387
388 dev->adev.hwptr_done_capture = 0;
389 dev->adev.capture_transfer_done = 0;
390
386 return 0; 391 return 0;
387} 392}
388 393
diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c
index bdb249bd9d5d..c0fd5c6feeac 100644
--- a/drivers/media/video/em28xx/em28xx-cards.c
+++ b/drivers/media/video/em28xx/em28xx-cards.c
@@ -1584,8 +1584,8 @@ struct em28xx_board em28xx_boards[] = {
1584 [EM2870_BOARD_REDDO_DVB_C_USB_BOX] = { 1584 [EM2870_BOARD_REDDO_DVB_C_USB_BOX] = {
1585 .name = "Reddo DVB-C USB TV Box", 1585 .name = "Reddo DVB-C USB TV Box",
1586 .tuner_type = TUNER_ABSENT, 1586 .tuner_type = TUNER_ABSENT,
1587 .tuner_gpio = reddo_dvb_c_usb_box,
1587 .has_dvb = 1, 1588 .has_dvb = 1,
1588 .dvb_gpio = reddo_dvb_c_usb_box,
1589 }, 1589 },
1590}; 1590};
1591const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards); 1591const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards);
diff --git a/drivers/media/video/gspca/m5602/m5602_s5k4aa.c b/drivers/media/video/gspca/m5602/m5602_s5k4aa.c
index 59400e858965..a27afeb6f39b 100644
--- a/drivers/media/video/gspca/m5602/m5602_s5k4aa.c
+++ b/drivers/media/video/gspca/m5602/m5602_s5k4aa.c
@@ -35,12 +35,25 @@ static
35 const 35 const
36 struct dmi_system_id s5k4aa_vflip_dmi_table[] = { 36 struct dmi_system_id s5k4aa_vflip_dmi_table[] = {
37 { 37 {
38 .ident = "BRUNEINIT",
39 .matches = {
40 DMI_MATCH(DMI_SYS_VENDOR, "BRUNENIT"),
41 DMI_MATCH(DMI_PRODUCT_NAME, "BRUNENIT"),
42 DMI_MATCH(DMI_BOARD_VERSION, "00030D0000000001")
43 }
44 }, {
38 .ident = "Fujitsu-Siemens Amilo Xa 2528", 45 .ident = "Fujitsu-Siemens Amilo Xa 2528",
39 .matches = { 46 .matches = {
40 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), 47 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
41 DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Xa 2528") 48 DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Xa 2528")
42 } 49 }
43 }, { 50 }, {
51 .ident = "Fujitsu-Siemens Amilo Xi 2528",
52 .matches = {
53 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
54 DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Xi 2528")
55 }
56 }, {
44 .ident = "Fujitsu-Siemens Amilo Xi 2550", 57 .ident = "Fujitsu-Siemens Amilo Xi 2550",
45 .matches = { 58 .matches = {
46 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), 59 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
@@ -57,6 +70,13 @@ static
57 .matches = { 70 .matches = {
58 DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), 71 DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"),
59 DMI_MATCH(DMI_PRODUCT_NAME, "GX700"), 72 DMI_MATCH(DMI_PRODUCT_NAME, "GX700"),
73 DMI_MATCH(DMI_BIOS_DATE, "12/02/2008")
74 }
75 }, {
76 .ident = "MSI GX700",
77 .matches = {
78 DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"),
79 DMI_MATCH(DMI_PRODUCT_NAME, "GX700"),
60 DMI_MATCH(DMI_BIOS_DATE, "07/26/2007") 80 DMI_MATCH(DMI_BIOS_DATE, "07/26/2007")
61 } 81 }
62 }, { 82 }, {
diff --git a/drivers/media/video/gspca/mr97310a.c b/drivers/media/video/gspca/mr97310a.c
index 140c8f320e47..f8328b9efae5 100644
--- a/drivers/media/video/gspca/mr97310a.c
+++ b/drivers/media/video/gspca/mr97310a.c
@@ -483,7 +483,7 @@ static int start_cif_cam(struct gspca_dev *gspca_dev)
483 data[3] = 0x2c; /* reg 2, H size/8 */ 483 data[3] = 0x2c; /* reg 2, H size/8 */
484 data[4] = 0x48; /* reg 3, V size/4 */ 484 data[4] = 0x48; /* reg 3, V size/4 */
485 data[6] = 0x06; /* reg 5, H start */ 485 data[6] = 0x06; /* reg 5, H start */
486 data[8] = 0x06 + sd->sensor_type; /* reg 7, V start */ 486 data[8] = 0x06 - sd->sensor_type; /* reg 7, V start */
487 break; 487 break;
488 } 488 }
489 err_code = mr_write(gspca_dev, 11); 489 err_code = mr_write(gspca_dev, 11);
diff --git a/drivers/media/video/gspca/ov519.c b/drivers/media/video/gspca/ov519.c
index 2f6e135d94bc..a5c190e93799 100644
--- a/drivers/media/video/gspca/ov519.c
+++ b/drivers/media/video/gspca/ov519.c
@@ -2919,7 +2919,7 @@ static void ov518_pkt_scan(struct gspca_dev *gspca_dev,
2919 /* A false positive here is likely, until OVT gives me 2919 /* A false positive here is likely, until OVT gives me
2920 * the definitive SOF/EOF format */ 2920 * the definitive SOF/EOF format */
2921 if ((!(data[0] | data[1] | data[2] | data[3] | data[5])) && data[6]) { 2921 if ((!(data[0] | data[1] | data[2] | data[3] | data[5])) && data[6]) {
2922 gspca_frame_add(gspca_dev, LAST_PACKET, frame, data, 0); 2922 frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame, data, 0);
2923 gspca_frame_add(gspca_dev, FIRST_PACKET, frame, data, 0); 2923 gspca_frame_add(gspca_dev, FIRST_PACKET, frame, data, 0);
2924 sd->packet_nr = 0; 2924 sd->packet_nr = 0;
2925 } 2925 }
diff --git a/drivers/media/video/gspca/stv06xx/stv06xx.c b/drivers/media/video/gspca/stv06xx/stv06xx.c
index 65489d6b0d89..bfae63f5584c 100644
--- a/drivers/media/video/gspca/stv06xx/stv06xx.c
+++ b/drivers/media/video/gspca/stv06xx/stv06xx.c
@@ -394,7 +394,8 @@ frame_data:
394 PDEBUG(D_PACK, "End of frame detected"); 394 PDEBUG(D_PACK, "End of frame detected");
395 395
396 /* Complete the last frame (if any) */ 396 /* Complete the last frame (if any) */
397 gspca_frame_add(gspca_dev, LAST_PACKET, frame, data, 0); 397 frame = gspca_frame_add(gspca_dev, LAST_PACKET,
398 frame, data, 0);
398 399
399 if (chunk_len) 400 if (chunk_len)
400 PDEBUG(D_ERR, "Chunk length is " 401 PDEBUG(D_ERR, "Chunk length is "
diff --git a/drivers/media/video/mx1_camera.c b/drivers/media/video/mx1_camera.c
index 5f37952c75cf..72802291e812 100644
--- a/drivers/media/video/mx1_camera.c
+++ b/drivers/media/video/mx1_camera.c
@@ -28,6 +28,7 @@
28#include <linux/moduleparam.h> 28#include <linux/moduleparam.h>
29#include <linux/mutex.h> 29#include <linux/mutex.h>
30#include <linux/platform_device.h> 30#include <linux/platform_device.h>
31#include <linux/sched.h>
31#include <linux/time.h> 32#include <linux/time.h>
32#include <linux/version.h> 33#include <linux/version.h>
33#include <linux/videodev2.h> 34#include <linux/videodev2.h>
diff --git a/drivers/media/video/mx3_camera.c b/drivers/media/video/mx3_camera.c
index dff2e5e2d8c6..7db82bdf6f31 100644
--- a/drivers/media/video/mx3_camera.c
+++ b/drivers/media/video/mx3_camera.c
@@ -17,6 +17,7 @@
17#include <linux/clk.h> 17#include <linux/clk.h>
18#include <linux/vmalloc.h> 18#include <linux/vmalloc.h>
19#include <linux/interrupt.h> 19#include <linux/interrupt.h>
20#include <linux/sched.h>
20 21
21#include <media/v4l2-common.h> 22#include <media/v4l2-common.h>
22#include <media/v4l2-dev.h> 23#include <media/v4l2-dev.h>
diff --git a/drivers/media/video/pxa_camera.c b/drivers/media/video/pxa_camera.c
index 6952e9602d5d..51b683c63b70 100644
--- a/drivers/media/video/pxa_camera.c
+++ b/drivers/media/video/pxa_camera.c
@@ -26,6 +26,7 @@
26#include <linux/device.h> 26#include <linux/device.h>
27#include <linux/platform_device.h> 27#include <linux/platform_device.h>
28#include <linux/clk.h> 28#include <linux/clk.h>
29#include <linux/sched.h>
29 30
30#include <media/v4l2-common.h> 31#include <media/v4l2-common.h>
31#include <media/v4l2-dev.h> 32#include <media/v4l2-dev.h>
@@ -1432,7 +1433,9 @@ static int pxa_camera_set_fmt(struct soc_camera_device *icd,
1432 icd->sense = &sense; 1433 icd->sense = &sense;
1433 1434
1434 cam_f.fmt.pix.pixelformat = cam_fmt->fourcc; 1435 cam_f.fmt.pix.pixelformat = cam_fmt->fourcc;
1435 ret = v4l2_subdev_call(sd, video, s_fmt, f); 1436 ret = v4l2_subdev_call(sd, video, s_fmt, &cam_f);
1437 cam_f.fmt.pix.pixelformat = pix->pixelformat;
1438 *pix = cam_f.fmt.pix;
1436 1439
1437 icd->sense = NULL; 1440 icd->sense = NULL;
1438 1441
diff --git a/drivers/media/video/s2255drv.c b/drivers/media/video/s2255drv.c
index 9e3262c0ba37..2c0bb06cab3b 100644
--- a/drivers/media/video/s2255drv.c
+++ b/drivers/media/video/s2255drv.c
@@ -598,11 +598,6 @@ static int s2255_got_frame(struct s2255_dev *dev, int chn, int jpgsize)
598 buf = list_entry(dma_q->active.next, 598 buf = list_entry(dma_q->active.next,
599 struct s2255_buffer, vb.queue); 599 struct s2255_buffer, vb.queue);
600 600
601 if (!waitqueue_active(&buf->vb.done)) {
602 /* no one active */
603 rc = -1;
604 goto unlock;
605 }
606 list_del(&buf->vb.queue); 601 list_del(&buf->vb.queue);
607 do_gettimeofday(&buf->vb.ts); 602 do_gettimeofday(&buf->vb.ts);
608 dprintk(100, "[%p/%d] wakeup\n", buf, buf->vb.i); 603 dprintk(100, "[%p/%d] wakeup\n", buf, buf->vb.i);
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c
index 71145bff94fa..09013229d4aa 100644
--- a/drivers/media/video/saa7134/saa7134-cards.c
+++ b/drivers/media/video/saa7134/saa7134-cards.c
@@ -3428,6 +3428,7 @@ struct saa7134_board saa7134_boards[] = {
3428 .tuner_config = 3, 3428 .tuner_config = 3,
3429 .mpeg = SAA7134_MPEG_DVB, 3429 .mpeg = SAA7134_MPEG_DVB,
3430 .ts_type = SAA7134_MPEG_TS_SERIAL, 3430 .ts_type = SAA7134_MPEG_TS_SERIAL,
3431 .ts_force_val = 1,
3431 .gpiomask = 0x0800100, /* GPIO 21 is an INPUT */ 3432 .gpiomask = 0x0800100, /* GPIO 21 is an INPUT */
3432 .inputs = {{ 3433 .inputs = {{
3433 .name = name_tv, 3434 .name = name_tv,
diff --git a/drivers/media/video/saa7134/saa7134-ts.c b/drivers/media/video/saa7134/saa7134-ts.c
index 3fa652279ac0..03488ba4c99c 100644
--- a/drivers/media/video/saa7134/saa7134-ts.c
+++ b/drivers/media/video/saa7134/saa7134-ts.c
@@ -262,11 +262,13 @@ int saa7134_ts_start(struct saa7134_dev *dev)
262 switch (saa7134_boards[dev->board].ts_type) { 262 switch (saa7134_boards[dev->board].ts_type) {
263 case SAA7134_MPEG_TS_PARALLEL: 263 case SAA7134_MPEG_TS_PARALLEL:
264 saa_writeb(SAA7134_TS_SERIAL0, 0x40); 264 saa_writeb(SAA7134_TS_SERIAL0, 0x40);
265 saa_writeb(SAA7134_TS_PARALLEL, 0xec); 265 saa_writeb(SAA7134_TS_PARALLEL, 0xec |
266 (saa7134_boards[dev->board].ts_force_val << 4));
266 break; 267 break;
267 case SAA7134_MPEG_TS_SERIAL: 268 case SAA7134_MPEG_TS_SERIAL:
268 saa_writeb(SAA7134_TS_SERIAL0, 0xd8); 269 saa_writeb(SAA7134_TS_SERIAL0, 0xd8);
269 saa_writeb(SAA7134_TS_PARALLEL, 0x6c); 270 saa_writeb(SAA7134_TS_PARALLEL, 0x6c |
271 (saa7134_boards[dev->board].ts_force_val << 4));
270 saa_writeb(SAA7134_TS_PARALLEL_SERIAL, 0xbc); 272 saa_writeb(SAA7134_TS_PARALLEL_SERIAL, 0xbc);
271 saa_writeb(SAA7134_TS_SERIAL1, 0x02); 273 saa_writeb(SAA7134_TS_SERIAL1, 0x02);
272 break; 274 break;
diff --git a/drivers/media/video/saa7134/saa7134.h b/drivers/media/video/saa7134/saa7134.h
index 6ee3e9b7769e..f8697d46ff5f 100644
--- a/drivers/media/video/saa7134/saa7134.h
+++ b/drivers/media/video/saa7134/saa7134.h
@@ -360,6 +360,7 @@ struct saa7134_board {
360 enum saa7134_mpeg_type mpeg; 360 enum saa7134_mpeg_type mpeg;
361 enum saa7134_mpeg_ts_type ts_type; 361 enum saa7134_mpeg_ts_type ts_type;
362 unsigned int vid_port_opts; 362 unsigned int vid_port_opts;
363 unsigned int ts_force_val:1;
363}; 364};
364 365
365#define card_has_radio(dev) (NULL != saa7134_boards[dev->board].radio.name) 366#define card_has_radio(dev) (NULL != saa7134_boards[dev->board].radio.name)
diff --git a/drivers/media/video/saa7164/saa7164-cmd.c b/drivers/media/video/saa7164/saa7164-cmd.c
index c45966edc0cf..9c1d3ac43869 100644
--- a/drivers/media/video/saa7164/saa7164-cmd.c
+++ b/drivers/media/video/saa7164/saa7164-cmd.c
@@ -347,7 +347,7 @@ int saa7164_cmd_send(struct saa7164_dev *dev, u8 id, tmComResCmd_t command,
347 347
348 /* Prepare some basic command/response structures */ 348 /* Prepare some basic command/response structures */
349 memset(&command_t, 0, sizeof(command_t)); 349 memset(&command_t, 0, sizeof(command_t));
350 memset(&response_t, 0, sizeof(&response_t)); 350 memset(&response_t, 0, sizeof(response_t));
351 pcommand_t = &command_t; 351 pcommand_t = &command_t;
352 presponse_t = &response_t; 352 presponse_t = &response_t;
353 command_t.id = id; 353 command_t.id = id;
diff --git a/drivers/media/video/sh_mobile_ceu_camera.c b/drivers/media/video/sh_mobile_ceu_camera.c
index 65ac474c517a..9c8b7c7b89ee 100644
--- a/drivers/media/video/sh_mobile_ceu_camera.c
+++ b/drivers/media/video/sh_mobile_ceu_camera.c
@@ -31,6 +31,7 @@
31#include <linux/platform_device.h> 31#include <linux/platform_device.h>
32#include <linux/videodev2.h> 32#include <linux/videodev2.h>
33#include <linux/pm_runtime.h> 33#include <linux/pm_runtime.h>
34#include <linux/sched.h>
34 35
35#include <media/v4l2-common.h> 36#include <media/v4l2-common.h>
36#include <media/v4l2-dev.h> 37#include <media/v4l2-dev.h>
@@ -1173,8 +1174,8 @@ static int get_scales(struct soc_camera_device *icd,
1173 width_in = scale_up(cam->ceu_rect.width, *scale_h); 1174 width_in = scale_up(cam->ceu_rect.width, *scale_h);
1174 height_in = scale_up(cam->ceu_rect.height, *scale_v); 1175 height_in = scale_up(cam->ceu_rect.height, *scale_v);
1175 1176
1176 *scale_h = calc_generic_scale(cam->ceu_rect.width, icd->user_width); 1177 *scale_h = calc_generic_scale(width_in, icd->user_width);
1177 *scale_v = calc_generic_scale(cam->ceu_rect.height, icd->user_height); 1178 *scale_v = calc_generic_scale(height_in, icd->user_height);
1178 1179
1179 return 0; 1180 return 0;
1180} 1181}
@@ -1723,11 +1724,12 @@ static int __devinit sh_mobile_ceu_probe(struct platform_device *pdev)
1723 1724
1724 err = soc_camera_host_register(&pcdev->ici); 1725 err = soc_camera_host_register(&pcdev->ici);
1725 if (err) 1726 if (err)
1726 goto exit_free_irq; 1727 goto exit_free_clk;
1727 1728
1728 return 0; 1729 return 0;
1729 1730
1730exit_free_irq: 1731exit_free_clk:
1732 pm_runtime_disable(&pdev->dev);
1731 free_irq(pcdev->irq, pcdev); 1733 free_irq(pcdev->irq, pcdev);
1732exit_release_mem: 1734exit_release_mem:
1733 if (platform_get_resource(pdev, IORESOURCE_MEM, 1)) 1735 if (platform_get_resource(pdev, IORESOURCE_MEM, 1))
@@ -1747,6 +1749,7 @@ static int __devexit sh_mobile_ceu_remove(struct platform_device *pdev)
1747 struct sh_mobile_ceu_dev, ici); 1749 struct sh_mobile_ceu_dev, ici);
1748 1750
1749 soc_camera_host_unregister(soc_host); 1751 soc_camera_host_unregister(soc_host);
1752 pm_runtime_disable(&pdev->dev);
1750 free_irq(pcdev->irq, pcdev); 1753 free_irq(pcdev->irq, pcdev);
1751 if (platform_get_resource(pdev, IORESOURCE_MEM, 1)) 1754 if (platform_get_resource(pdev, IORESOURCE_MEM, 1))
1752 dma_release_declared_memory(&pdev->dev); 1755 dma_release_declared_memory(&pdev->dev);
diff --git a/drivers/media/video/soc_camera.c b/drivers/media/video/soc_camera.c
index 59aa7a3694c2..95fdeb23c2c1 100644
--- a/drivers/media/video/soc_camera.c
+++ b/drivers/media/video/soc_camera.c
@@ -1097,6 +1097,13 @@ static int default_s_crop(struct soc_camera_device *icd, struct v4l2_crop *a)
1097 return v4l2_subdev_call(sd, video, s_crop, a); 1097 return v4l2_subdev_call(sd, video, s_crop, a);
1098} 1098}
1099 1099
1100static void soc_camera_device_init(struct device *dev, void *pdata)
1101{
1102 dev->platform_data = pdata;
1103 dev->bus = &soc_camera_bus_type;
1104 dev->release = dummy_release;
1105}
1106
1100int soc_camera_host_register(struct soc_camera_host *ici) 1107int soc_camera_host_register(struct soc_camera_host *ici)
1101{ 1108{
1102 struct soc_camera_host *ix; 1109 struct soc_camera_host *ix;
@@ -1158,15 +1165,19 @@ void soc_camera_host_unregister(struct soc_camera_host *ici)
1158 1165
1159 list_for_each_entry(icd, &devices, list) { 1166 list_for_each_entry(icd, &devices, list) {
1160 if (icd->iface == ici->nr) { 1167 if (icd->iface == ici->nr) {
1168 void *pdata = icd->dev.platform_data;
1161 /* The bus->remove will be called */ 1169 /* The bus->remove will be called */
1162 device_unregister(&icd->dev); 1170 device_unregister(&icd->dev);
1163 /* Not before device_unregister(), .remove 1171 /*
1164 * needs parent to call ici->ops->remove() */ 1172 * Not before device_unregister(), .remove
1165 icd->dev.parent = NULL; 1173 * needs parent to call ici->ops->remove().
1166 1174 * If the host module is loaded again, device_register()
1167 /* If the host module is loaded again, device_register() 1175 * would complain "already initialised," since 2.6.32
1168 * would complain "already initialised" */ 1176 * this is also needed to prevent use-after-free of the
1169 memset(&icd->dev.kobj, 0, sizeof(icd->dev.kobj)); 1177 * device private data.
1178 */
1179 memset(&icd->dev, 0, sizeof(icd->dev));
1180 soc_camera_device_init(&icd->dev, pdata);
1170 } 1181 }
1171 } 1182 }
1172 1183
@@ -1198,10 +1209,7 @@ static int soc_camera_device_register(struct soc_camera_device *icd)
1198 * man, stay reasonable... */ 1209 * man, stay reasonable... */
1199 return -ENOMEM; 1210 return -ENOMEM;
1200 1211
1201 icd->devnum = num; 1212 icd->devnum = num;
1202 icd->dev.bus = &soc_camera_bus_type;
1203
1204 icd->dev.release = dummy_release;
1205 icd->use_count = 0; 1213 icd->use_count = 0;
1206 icd->host_priv = NULL; 1214 icd->host_priv = NULL;
1207 mutex_init(&icd->video_lock); 1215 mutex_init(&icd->video_lock);
@@ -1309,12 +1317,13 @@ static int __devinit soc_camera_pdrv_probe(struct platform_device *pdev)
1309 icd->iface = icl->bus_id; 1317 icd->iface = icl->bus_id;
1310 icd->pdev = &pdev->dev; 1318 icd->pdev = &pdev->dev;
1311 platform_set_drvdata(pdev, icd); 1319 platform_set_drvdata(pdev, icd);
1312 icd->dev.platform_data = icl;
1313 1320
1314 ret = soc_camera_device_register(icd); 1321 ret = soc_camera_device_register(icd);
1315 if (ret < 0) 1322 if (ret < 0)
1316 goto escdevreg; 1323 goto escdevreg;
1317 1324
1325 soc_camera_device_init(&icd->dev, icl);
1326
1318 icd->user_width = DEFAULT_WIDTH; 1327 icd->user_width = DEFAULT_WIDTH;
1319 icd->user_height = DEFAULT_HEIGHT; 1328 icd->user_height = DEFAULT_HEIGHT;
1320 1329
diff --git a/drivers/media/video/uvc/uvc_ctrl.c b/drivers/media/video/uvc/uvc_ctrl.c
index c3225a561748..1b89735e62fd 100644
--- a/drivers/media/video/uvc/uvc_ctrl.c
+++ b/drivers/media/video/uvc/uvc_ctrl.c
@@ -348,7 +348,7 @@ static void uvc_ctrl_set_zoom(struct uvc_control_mapping *mapping,
348 __s32 value, __u8 *data) 348 __s32 value, __u8 *data)
349{ 349{
350 data[0] = value == 0 ? 0 : (value > 0) ? 1 : 0xff; 350 data[0] = value == 0 ? 0 : (value > 0) ? 1 : 0xff;
351 data[2] = min(abs(value), 0xff); 351 data[2] = min((int)abs(value), 0xff);
352} 352}
353 353
354static struct uvc_control_mapping uvc_ctrl_mappings[] = { 354static struct uvc_control_mapping uvc_ctrl_mappings[] = {
diff --git a/drivers/media/video/uvc/uvc_video.c b/drivers/media/video/uvc/uvc_video.c
index f960e8ea4f17..a6e41d12b221 100644
--- a/drivers/media/video/uvc/uvc_video.c
+++ b/drivers/media/video/uvc/uvc_video.c
@@ -90,7 +90,8 @@ static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,
90 ctrl->dwMaxVideoFrameSize = 90 ctrl->dwMaxVideoFrameSize =
91 frame->dwMaxVideoFrameBufferSize; 91 frame->dwMaxVideoFrameBufferSize;
92 92
93 if (stream->dev->quirks & UVC_QUIRK_FIX_BANDWIDTH && 93 if (!(format->flags & UVC_FMT_FLAG_COMPRESSED) &&
94 stream->dev->quirks & UVC_QUIRK_FIX_BANDWIDTH &&
94 stream->intf->num_altsetting > 1) { 95 stream->intf->num_altsetting > 1) {
95 u32 interval; 96 u32 interval;
96 u32 bandwidth; 97 u32 bandwidth;
diff --git a/drivers/media/video/videobuf-dma-contig.c b/drivers/media/video/videobuf-dma-contig.c
index 635ffc7b0391..c3065c4bcba9 100644
--- a/drivers/media/video/videobuf-dma-contig.c
+++ b/drivers/media/video/videobuf-dma-contig.c
@@ -19,6 +19,7 @@
19#include <linux/mm.h> 19#include <linux/mm.h>
20#include <linux/pagemap.h> 20#include <linux/pagemap.h>
21#include <linux/dma-mapping.h> 21#include <linux/dma-mapping.h>
22#include <linux/sched.h>
22#include <media/videobuf-dma-contig.h> 23#include <media/videobuf-dma-contig.h>
23 24
24struct videobuf_dma_contig_memory { 25struct videobuf_dma_contig_memory {
diff --git a/drivers/mfd/twl4030-core.c b/drivers/mfd/twl4030-core.c
index e832e975da60..a1c47ee95c0e 100644
--- a/drivers/mfd/twl4030-core.c
+++ b/drivers/mfd/twl4030-core.c
@@ -795,7 +795,7 @@ twl4030_probe(struct i2c_client *client, const struct i2c_device_id *id)
795 twl->client = i2c_new_dummy(client->adapter, 795 twl->client = i2c_new_dummy(client->adapter,
796 twl->address); 796 twl->address);
797 if (!twl->client) { 797 if (!twl->client) {
798 dev_err(&twl->client->dev, 798 dev_err(&client->dev,
799 "can't attach client %d\n", i); 799 "can't attach client %d\n", i);
800 status = -ENOMEM; 800 status = -ENOMEM;
801 goto fail; 801 goto fail;
diff --git a/drivers/mfd/wm831x-core.c b/drivers/mfd/wm831x-core.c
index 49b7885c2702..7f27576ca046 100644
--- a/drivers/mfd/wm831x-core.c
+++ b/drivers/mfd/wm831x-core.c
@@ -29,7 +29,7 @@
29/* Current settings - values are 2*2^(reg_val/4) microamps. These are 29/* Current settings - values are 2*2^(reg_val/4) microamps. These are
30 * exported since they are used by multiple drivers. 30 * exported since they are used by multiple drivers.
31 */ 31 */
32int wm831x_isinkv_values[WM831X_ISINK_MAX_ISEL] = { 32int wm831x_isinkv_values[WM831X_ISINK_MAX_ISEL + 1] = {
33 2, 33 2,
34 2, 34 2,
35 3, 35 3,
diff --git a/drivers/mfd/wm831x-irq.c b/drivers/mfd/wm831x-irq.c
index d3015dfb9134..ac056ea6b66e 100644
--- a/drivers/mfd/wm831x-irq.c
+++ b/drivers/mfd/wm831x-irq.c
@@ -507,6 +507,8 @@ int wm831x_irq_init(struct wm831x *wm831x, int irq)
507{ 507{
508 int i, ret; 508 int i, ret;
509 509
510 mutex_init(&wm831x->irq_lock);
511
510 if (!irq) { 512 if (!irq) {
511 dev_warn(wm831x->dev, 513 dev_warn(wm831x->dev,
512 "No interrupt specified - functionality limited\n"); 514 "No interrupt specified - functionality limited\n");
@@ -521,7 +523,6 @@ int wm831x_irq_init(struct wm831x *wm831x, int irq)
521 } 523 }
522 524
523 wm831x->irq = irq; 525 wm831x->irq = irq;
524 mutex_init(&wm831x->irq_lock);
525 INIT_WORK(&wm831x->irq_work, wm831x_irq_worker); 526 INIT_WORK(&wm831x->irq_work, wm831x_irq_worker);
526 527
527 /* Mask the individual interrupt sources */ 528 /* Mask the individual interrupt sources */
diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c
index db39f4a52f53..2cb2736d65aa 100644
--- a/drivers/misc/eeprom/at24.c
+++ b/drivers/misc/eeprom/at24.c
@@ -158,6 +158,7 @@ static ssize_t at24_eeprom_read(struct at24_data *at24, char *buf,
158 struct i2c_msg msg[2]; 158 struct i2c_msg msg[2];
159 u8 msgbuf[2]; 159 u8 msgbuf[2];
160 struct i2c_client *client; 160 struct i2c_client *client;
161 unsigned long timeout, read_time;
161 int status, i; 162 int status, i;
162 163
163 memset(msg, 0, sizeof(msg)); 164 memset(msg, 0, sizeof(msg));
@@ -183,47 +184,60 @@ static ssize_t at24_eeprom_read(struct at24_data *at24, char *buf,
183 if (count > io_limit) 184 if (count > io_limit)
184 count = io_limit; 185 count = io_limit;
185 186
186 /* Smaller eeproms can work given some SMBus extension calls */
187 if (at24->use_smbus) { 187 if (at24->use_smbus) {
188 /* Smaller eeproms can work given some SMBus extension calls */
188 if (count > I2C_SMBUS_BLOCK_MAX) 189 if (count > I2C_SMBUS_BLOCK_MAX)
189 count = I2C_SMBUS_BLOCK_MAX; 190 count = I2C_SMBUS_BLOCK_MAX;
190 status = i2c_smbus_read_i2c_block_data(client, offset, 191 } else {
191 count, buf); 192 /*
192 dev_dbg(&client->dev, "smbus read %zu@%d --> %d\n", 193 * When we have a better choice than SMBus calls, use a
193 count, offset, status); 194 * combined I2C message. Write address; then read up to
194 return (status < 0) ? -EIO : status; 195 * io_limit data bytes. Note that read page rollover helps us
196 * here (unlike writes). msgbuf is u8 and will cast to our
197 * needs.
198 */
199 i = 0;
200 if (at24->chip.flags & AT24_FLAG_ADDR16)
201 msgbuf[i++] = offset >> 8;
202 msgbuf[i++] = offset;
203
204 msg[0].addr = client->addr;
205 msg[0].buf = msgbuf;
206 msg[0].len = i;
207
208 msg[1].addr = client->addr;
209 msg[1].flags = I2C_M_RD;
210 msg[1].buf = buf;
211 msg[1].len = count;
195 } 212 }
196 213
197 /* 214 /*
198 * When we have a better choice than SMBus calls, use a combined 215 * Reads fail if the previous write didn't complete yet. We may
199 * I2C message. Write address; then read up to io_limit data bytes. 216 * loop a few times until this one succeeds, waiting at least
200 * Note that read page rollover helps us here (unlike writes). 217 * long enough for one entire page write to work.
201 * msgbuf is u8 and will cast to our needs.
202 */ 218 */
203 i = 0; 219 timeout = jiffies + msecs_to_jiffies(write_timeout);
204 if (at24->chip.flags & AT24_FLAG_ADDR16) 220 do {
205 msgbuf[i++] = offset >> 8; 221 read_time = jiffies;
206 msgbuf[i++] = offset; 222 if (at24->use_smbus) {
207 223 status = i2c_smbus_read_i2c_block_data(client, offset,
208 msg[0].addr = client->addr; 224 count, buf);
209 msg[0].buf = msgbuf; 225 } else {
210 msg[0].len = i; 226 status = i2c_transfer(client->adapter, msg, 2);
227 if (status == 2)
228 status = count;
229 }
230 dev_dbg(&client->dev, "read %zu@%d --> %d (%ld)\n",
231 count, offset, status, jiffies);
211 232
212 msg[1].addr = client->addr; 233 if (status == count)
213 msg[1].flags = I2C_M_RD; 234 return count;
214 msg[1].buf = buf;
215 msg[1].len = count;
216 235
217 status = i2c_transfer(client->adapter, msg, 2); 236 /* REVISIT: at HZ=100, this is sloooow */
218 dev_dbg(&client->dev, "i2c read %zu@%d --> %d\n", 237 msleep(1);
219 count, offset, status); 238 } while (time_before(read_time, timeout));
220 239
221 if (status == 2) 240 return -ETIMEDOUT;
222 return count;
223 else if (status >= 0)
224 return -EIO;
225 else
226 return status;
227} 241}
228 242
229static ssize_t at24_read(struct at24_data *at24, 243static ssize_t at24_read(struct at24_data *at24,
diff --git a/drivers/misc/sgi-gru/gruprocfs.c b/drivers/misc/sgi-gru/gruprocfs.c
index ccd4408a26c7..3f2375c5ba5b 100644
--- a/drivers/misc/sgi-gru/gruprocfs.c
+++ b/drivers/misc/sgi-gru/gruprocfs.c
@@ -161,14 +161,15 @@ static int options_show(struct seq_file *s, void *p)
161static ssize_t options_write(struct file *file, const char __user *userbuf, 161static ssize_t options_write(struct file *file, const char __user *userbuf,
162 size_t count, loff_t *data) 162 size_t count, loff_t *data)
163{ 163{
164 unsigned long val; 164 char buf[20];
165 char buf[80];
166 165
167 if (strncpy_from_user(buf, userbuf, sizeof(buf) - 1) < 0) 166 if (count >= sizeof(buf))
167 return -EINVAL;
168 if (copy_from_user(buf, userbuf, count))
168 return -EFAULT; 169 return -EFAULT;
169 buf[count - 1] = '\0'; 170 buf[count] = '\0';
170 if (!strict_strtoul(buf, 10, &val)) 171 if (strict_strtoul(buf, 0, &gru_options))
171 gru_options = val; 172 return -EINVAL;
172 173
173 return count; 174 return count;
174} 175}
diff --git a/drivers/mmc/host/omap.c b/drivers/mmc/host/omap.c
index e7a331de5733..b8fd7af1ceeb 100644
--- a/drivers/mmc/host/omap.c
+++ b/drivers/mmc/host/omap.c
@@ -1529,6 +1529,7 @@ static int mmc_omap_remove(struct platform_device *pdev)
1529 host->pdata->cleanup(&pdev->dev); 1529 host->pdata->cleanup(&pdev->dev);
1530 1530
1531 mmc_omap_fclk_enable(host, 0); 1531 mmc_omap_fclk_enable(host, 0);
1532 free_irq(host->irq, host);
1532 clk_put(host->fclk); 1533 clk_put(host->fclk);
1533 clk_disable(host->iclk); 1534 clk_disable(host->iclk);
1534 clk_put(host->iclk); 1535 clk_put(host->iclk);
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
index 4487cc097911..0aecaaebef3d 100644
--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -2013,7 +2013,7 @@ static struct platform_driver omap_hsmmc_driver = {
2013static int __init omap_hsmmc_init(void) 2013static int __init omap_hsmmc_init(void)
2014{ 2014{
2015 /* Register the MMC driver */ 2015 /* Register the MMC driver */
2016 return platform_driver_register(&omap_hsmmc_driver); 2016 return platform_driver_probe(&omap_hsmmc_driver, omap_hsmmc_probe);
2017} 2017}
2018 2018
2019static void __exit omap_hsmmc_cleanup(void) 2019static void __exit omap_hsmmc_cleanup(void)
diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
index b00d67319058..9fb480bb0e0a 100644
--- a/drivers/mmc/host/pxamci.c
+++ b/drivers/mmc/host/pxamci.c
@@ -760,6 +760,8 @@ static int pxamci_remove(struct platform_device *pdev)
760 if (mmc) { 760 if (mmc) {
761 struct pxamci_host *host = mmc_priv(mmc); 761 struct pxamci_host *host = mmc_priv(mmc);
762 762
763 mmc_remove_host(mmc);
764
763 if (host->pdata) { 765 if (host->pdata) {
764 gpio_cd = host->pdata->gpio_card_detect; 766 gpio_cd = host->pdata->gpio_card_detect;
765 gpio_ro = host->pdata->gpio_card_ro; 767 gpio_ro = host->pdata->gpio_card_ro;
@@ -779,8 +781,6 @@ static int pxamci_remove(struct platform_device *pdev)
779 if (host->pdata && host->pdata->exit) 781 if (host->pdata && host->pdata->exit)
780 host->pdata->exit(&pdev->dev, mmc); 782 host->pdata->exit(&pdev->dev, mmc);
781 783
782 mmc_remove_host(mmc);
783
784 pxamci_stop_clock(host); 784 pxamci_stop_clock(host);
785 writel(TXFIFO_WR_REQ|RXFIFO_RD_REQ|CLK_IS_OFF|STOP_CMD| 785 writel(TXFIFO_WR_REQ|RXFIFO_RD_REQ|CLK_IS_OFF|STOP_CMD|
786 END_CMD_RES|PRG_DONE|DATA_TRAN_DONE, 786 END_CMD_RES|PRG_DONE|DATA_TRAN_DONE,
diff --git a/drivers/mtd/maps/Kconfig b/drivers/mtd/maps/Kconfig
index 841e085ab74a..14be0755d7cd 100644
--- a/drivers/mtd/maps/Kconfig
+++ b/drivers/mtd/maps/Kconfig
@@ -486,6 +486,7 @@ config MTD_BFIN_ASYNC
486 486
487config MTD_GPIO_ADDR 487config MTD_GPIO_ADDR
488 tristate "GPIO-assisted Flash Chip Support" 488 tristate "GPIO-assisted Flash Chip Support"
489 depends on GENERIC_GPIO || GPIOLIB
489 depends on MTD_COMPLEX_MAPPINGS 490 depends on MTD_COMPLEX_MAPPINGS
490 select MTD_PARTITIONS 491 select MTD_PARTITIONS
491 help 492 help
diff --git a/drivers/mtd/maps/Makefile b/drivers/mtd/maps/Makefile
index 1d5cf8636723..ae2f6dbe43c3 100644
--- a/drivers/mtd/maps/Makefile
+++ b/drivers/mtd/maps/Makefile
@@ -58,4 +58,6 @@ obj-$(CONFIG_MTD_PLATRAM) += plat-ram.o
58obj-$(CONFIG_MTD_OMAP_NOR) += omap_nor.o 58obj-$(CONFIG_MTD_OMAP_NOR) += omap_nor.o
59obj-$(CONFIG_MTD_INTEL_VR_NOR) += intel_vr_nor.o 59obj-$(CONFIG_MTD_INTEL_VR_NOR) += intel_vr_nor.o
60obj-$(CONFIG_MTD_BFIN_ASYNC) += bfin-async-flash.o 60obj-$(CONFIG_MTD_BFIN_ASYNC) += bfin-async-flash.o
61obj-$(CONFIG_MTD_RBTX4939) += rbtx4939-flash.o
62obj-$(CONFIG_MTD_VMU) += vmu-flash.o
61obj-$(CONFIG_MTD_GPIO_ADDR) += gpio-addr-flash.o 63obj-$(CONFIG_MTD_GPIO_ADDR) += gpio-addr-flash.o
diff --git a/drivers/mtd/maps/gpio-addr-flash.c b/drivers/mtd/maps/gpio-addr-flash.c
index 44ef9a49a860..1ad5caf9fe69 100644
--- a/drivers/mtd/maps/gpio-addr-flash.c
+++ b/drivers/mtd/maps/gpio-addr-flash.c
@@ -13,7 +13,9 @@
13 * Licensed under the GPL-2 or later. 13 * Licensed under the GPL-2 or later.
14 */ 14 */
15 15
16#include <linux/gpio.h>
16#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/io.h>
17#include <linux/kernel.h> 19#include <linux/kernel.h>
18#include <linux/module.h> 20#include <linux/module.h>
19#include <linux/mtd/mtd.h> 21#include <linux/mtd/mtd.h>
@@ -23,9 +25,6 @@
23#include <linux/platform_device.h> 25#include <linux/platform_device.h>
24#include <linux/types.h> 26#include <linux/types.h>
25 27
26#include <asm/gpio.h>
27#include <asm/io.h>
28
29#define pr_devinit(fmt, args...) ({ static const __devinitconst char __fmt[] = fmt; printk(__fmt, ## args); }) 28#define pr_devinit(fmt, args...) ({ static const __devinitconst char __fmt[] = fmt; printk(__fmt, ## args); })
30 29
31#define DRIVER_NAME "gpio-addr-flash" 30#define DRIVER_NAME "gpio-addr-flash"
diff --git a/drivers/mtd/maps/sa1100-flash.c b/drivers/mtd/maps/sa1100-flash.c
index fdb97f3d30e9..d7a47574d21e 100644
--- a/drivers/mtd/maps/sa1100-flash.c
+++ b/drivers/mtd/maps/sa1100-flash.c
@@ -209,8 +209,8 @@ static int sa1100_probe_subdev(struct sa_subdev_info *subdev, struct resource *r
209 } 209 }
210 subdev->mtd->owner = THIS_MODULE; 210 subdev->mtd->owner = THIS_MODULE;
211 211
212 printk(KERN_INFO "SA1100 flash: CFI device at 0x%08lx, %dMiB, " 212 printk(KERN_INFO "SA1100 flash: CFI device at 0x%08lx, %uMiB, %d-bit\n",
213 "%d-bit\n", phys, subdev->mtd->size >> 20, 213 phys, (unsigned)(subdev->mtd->size >> 20),
214 subdev->map.bankwidth * 8); 214 subdev->map.bankwidth * 8);
215 215
216 return 0; 216 return 0;
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 22113865438b..2957cc70da3d 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -761,6 +761,7 @@ static int nand_wait(struct mtd_info *mtd, struct nand_chip *chip)
761 * @mtd: mtd info structure 761 * @mtd: mtd info structure
762 * @chip: nand chip info structure 762 * @chip: nand chip info structure
763 * @buf: buffer to store read data 763 * @buf: buffer to store read data
764 * @page: page number to read
764 * 765 *
765 * Not for syndrome calculating ecc controllers, which use a special oob layout 766 * Not for syndrome calculating ecc controllers, which use a special oob layout
766 */ 767 */
@@ -777,6 +778,7 @@ static int nand_read_page_raw(struct mtd_info *mtd, struct nand_chip *chip,
777 * @mtd: mtd info structure 778 * @mtd: mtd info structure
778 * @chip: nand chip info structure 779 * @chip: nand chip info structure
779 * @buf: buffer to store read data 780 * @buf: buffer to store read data
781 * @page: page number to read
780 * 782 *
781 * We need a special oob layout and handling even when OOB isn't used. 783 * We need a special oob layout and handling even when OOB isn't used.
782 */ 784 */
@@ -818,6 +820,7 @@ static int nand_read_page_raw_syndrome(struct mtd_info *mtd, struct nand_chip *c
818 * @mtd: mtd info structure 820 * @mtd: mtd info structure
819 * @chip: nand chip info structure 821 * @chip: nand chip info structure
820 * @buf: buffer to store read data 822 * @buf: buffer to store read data
823 * @page: page number to read
821 */ 824 */
822static int nand_read_page_swecc(struct mtd_info *mtd, struct nand_chip *chip, 825static int nand_read_page_swecc(struct mtd_info *mtd, struct nand_chip *chip,
823 uint8_t *buf, int page) 826 uint8_t *buf, int page)
@@ -939,6 +942,7 @@ static int nand_read_subpage(struct mtd_info *mtd, struct nand_chip *chip, uint3
939 * @mtd: mtd info structure 942 * @mtd: mtd info structure
940 * @chip: nand chip info structure 943 * @chip: nand chip info structure
941 * @buf: buffer to store read data 944 * @buf: buffer to store read data
945 * @page: page number to read
942 * 946 *
943 * Not for syndrome calculating ecc controllers which need a special oob layout 947 * Not for syndrome calculating ecc controllers which need a special oob layout
944 */ 948 */
@@ -983,6 +987,7 @@ static int nand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
983 * @mtd: mtd info structure 987 * @mtd: mtd info structure
984 * @chip: nand chip info structure 988 * @chip: nand chip info structure
985 * @buf: buffer to store read data 989 * @buf: buffer to store read data
990 * @page: page number to read
986 * 991 *
987 * Hardware ECC for large page chips, require OOB to be read first. 992 * Hardware ECC for large page chips, require OOB to be read first.
988 * For this ECC mode, the write_page method is re-used from ECC_HW. 993 * For this ECC mode, the write_page method is re-used from ECC_HW.
@@ -1031,6 +1036,7 @@ static int nand_read_page_hwecc_oob_first(struct mtd_info *mtd,
1031 * @mtd: mtd info structure 1036 * @mtd: mtd info structure
1032 * @chip: nand chip info structure 1037 * @chip: nand chip info structure
1033 * @buf: buffer to store read data 1038 * @buf: buffer to store read data
1039 * @page: page number to read
1034 * 1040 *
1035 * The hw generator calculates the error syndrome automatically. Therefor 1041 * The hw generator calculates the error syndrome automatically. Therefor
1036 * we need a special oob layout and handling. 1042 * we need a special oob layout and handling.
diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
index e1f7d0a78b9d..14cec04c34f9 100644
--- a/drivers/mtd/ubi/build.c
+++ b/drivers/mtd/ubi/build.c
@@ -42,6 +42,7 @@
42#include <linux/log2.h> 42#include <linux/log2.h>
43#include <linux/kthread.h> 43#include <linux/kthread.h>
44#include <linux/reboot.h> 44#include <linux/reboot.h>
45#include <linux/kernel.h>
45#include "ubi.h" 46#include "ubi.h"
46 47
47/* Maximum length of the 'mtd=' parameter */ 48/* Maximum length of the 'mtd=' parameter */
@@ -1257,7 +1258,7 @@ static int __init bytes_str_to_int(const char *str)
1257 unsigned long result; 1258 unsigned long result;
1258 1259
1259 result = simple_strtoul(str, &endp, 0); 1260 result = simple_strtoul(str, &endp, 0);
1260 if (str == endp || result < 0) { 1261 if (str == endp || result >= INT_MAX) {
1261 printk(KERN_ERR "UBI error: incorrect bytes count: \"%s\"\n", 1262 printk(KERN_ERR "UBI error: incorrect bytes count: \"%s\"\n",
1262 str); 1263 str);
1263 return -EINVAL; 1264 return -EINVAL;
diff --git a/drivers/mtd/ubi/scan.c b/drivers/mtd/ubi/scan.c
index e7161adc419d..90af61a2c3e4 100644
--- a/drivers/mtd/ubi/scan.c
+++ b/drivers/mtd/ubi/scan.c
@@ -794,16 +794,15 @@ static int process_eb(struct ubi_device *ubi, struct ubi_scan_info *si,
794 * number. 794 * number.
795 */ 795 */
796 image_seq = be32_to_cpu(ech->image_seq); 796 image_seq = be32_to_cpu(ech->image_seq);
797 if (!si->image_seq_set) { 797 if (!ubi->image_seq && image_seq)
798 ubi->image_seq = image_seq; 798 ubi->image_seq = image_seq;
799 si->image_seq_set = 1; 799 if (ubi->image_seq && image_seq &&
800 } else if (ubi->image_seq && ubi->image_seq != image_seq) { 800 ubi->image_seq != image_seq) {
801 ubi_err("bad image sequence number %d in PEB %d, " 801 ubi_err("bad image sequence number %d in PEB %d, "
802 "expected %d", image_seq, pnum, ubi->image_seq); 802 "expected %d", image_seq, pnum, ubi->image_seq);
803 ubi_dbg_dump_ec_hdr(ech); 803 ubi_dbg_dump_ec_hdr(ech);
804 return -EINVAL; 804 return -EINVAL;
805 } 805 }
806
807 } 806 }
808 807
809 /* OK, we've done with the EC header, let's look at the VID header */ 808 /* OK, we've done with the EC header, let's look at the VID header */
diff --git a/drivers/mtd/ubi/scan.h b/drivers/mtd/ubi/scan.h
index bab31695dace..ff179ad7ca55 100644
--- a/drivers/mtd/ubi/scan.h
+++ b/drivers/mtd/ubi/scan.h
@@ -103,7 +103,6 @@ struct ubi_scan_volume {
103 * @ec_sum: a temporary variable used when calculating @mean_ec 103 * @ec_sum: a temporary variable used when calculating @mean_ec
104 * @ec_count: a temporary variable used when calculating @mean_ec 104 * @ec_count: a temporary variable used when calculating @mean_ec
105 * @corr_count: count of corrupted PEBs 105 * @corr_count: count of corrupted PEBs
106 * @image_seq_set: indicates @ubi->image_seq is known
107 * 106 *
108 * This data structure contains the result of scanning and may be used by other 107 * This data structure contains the result of scanning and may be used by other
109 * UBI sub-systems to build final UBI data structures, further error-recovery 108 * UBI sub-systems to build final UBI data structures, further error-recovery
@@ -127,7 +126,6 @@ struct ubi_scan_info {
127 uint64_t ec_sum; 126 uint64_t ec_sum;
128 int ec_count; 127 int ec_count;
129 int corr_count; 128 int corr_count;
130 int image_seq_set;
131}; 129};
132 130
133struct ubi_device; 131struct ubi_device;
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index e19ca4bb7510..b2f71f79baaf 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -975,7 +975,7 @@ config ENC28J60_WRITEVERIFY
975 975
976config ETHOC 976config ETHOC
977 tristate "OpenCores 10/100 Mbps Ethernet MAC support" 977 tristate "OpenCores 10/100 Mbps Ethernet MAC support"
978 depends on NET_ETHERNET && HAS_IOMEM 978 depends on NET_ETHERNET && HAS_IOMEM && HAS_DMA
979 select MII 979 select MII
980 select PHYLIB 980 select PHYLIB
981 select CRC32 981 select CRC32
diff --git a/drivers/net/arm/ep93xx_eth.c b/drivers/net/arm/ep93xx_eth.c
index 2be49c817995..b25467ac895c 100644
--- a/drivers/net/arm/ep93xx_eth.c
+++ b/drivers/net/arm/ep93xx_eth.c
@@ -628,15 +628,6 @@ static int ep93xx_open(struct net_device *dev)
628 if (ep93xx_alloc_buffers(ep)) 628 if (ep93xx_alloc_buffers(ep))
629 return -ENOMEM; 629 return -ENOMEM;
630 630
631 if (is_zero_ether_addr(dev->dev_addr)) {
632 random_ether_addr(dev->dev_addr);
633 printk(KERN_INFO "%s: generated random MAC address "
634 "%.2x:%.2x:%.2x:%.2x:%.2x:%.2x.\n", dev->name,
635 dev->dev_addr[0], dev->dev_addr[1],
636 dev->dev_addr[2], dev->dev_addr[3],
637 dev->dev_addr[4], dev->dev_addr[5]);
638 }
639
640 napi_enable(&ep->napi); 631 napi_enable(&ep->napi);
641 632
642 if (ep93xx_start_hw(dev)) { 633 if (ep93xx_start_hw(dev)) {
@@ -877,6 +868,9 @@ static int ep93xx_eth_probe(struct platform_device *pdev)
877 ep->mii.mdio_write = ep93xx_mdio_write; 868 ep->mii.mdio_write = ep93xx_mdio_write;
878 ep->mdc_divisor = 40; /* Max HCLK 100 MHz, min MDIO clk 2.5 MHz. */ 869 ep->mdc_divisor = 40; /* Max HCLK 100 MHz, min MDIO clk 2.5 MHz. */
879 870
871 if (is_zero_ether_addr(dev->dev_addr))
872 random_ether_addr(dev->dev_addr);
873
880 err = register_netdev(dev); 874 err = register_netdev(dev);
881 if (err) { 875 if (err) {
882 dev_err(&pdev->dev, "Failed to register netdev\n"); 876 dev_err(&pdev->dev, "Failed to register netdev\n");
diff --git a/drivers/net/au1000_eth.c b/drivers/net/au1000_eth.c
index 04f63c77071d..3f4b4300f533 100644
--- a/drivers/net/au1000_eth.c
+++ b/drivers/net/au1000_eth.c
@@ -34,6 +34,7 @@
34 * 34 *
35 * 35 *
36 */ 36 */
37#include <linux/capability.h>
37#include <linux/dma-mapping.h> 38#include <linux/dma-mapping.h>
38#include <linux/module.h> 39#include <linux/module.h>
39#include <linux/kernel.h> 40#include <linux/kernel.h>
@@ -1087,7 +1088,14 @@ static struct net_device * au1000_probe(int port_num)
1087 return NULL; 1088 return NULL;
1088 } 1089 }
1089 1090
1090 if ((err = register_netdev(dev)) != 0) { 1091 dev->base_addr = base;
1092 dev->irq = irq;
1093 dev->netdev_ops = &au1000_netdev_ops;
1094 SET_ETHTOOL_OPS(dev, &au1000_ethtool_ops);
1095 dev->watchdog_timeo = ETH_TX_TIMEOUT;
1096
1097 err = register_netdev(dev);
1098 if (err != 0) {
1091 printk(KERN_ERR "%s: Cannot register net device, error %d\n", 1099 printk(KERN_ERR "%s: Cannot register net device, error %d\n",
1092 DRV_NAME, err); 1100 DRV_NAME, err);
1093 free_netdev(dev); 1101 free_netdev(dev);
@@ -1208,12 +1216,6 @@ static struct net_device * au1000_probe(int port_num)
1208 aup->tx_db_inuse[i] = pDB; 1216 aup->tx_db_inuse[i] = pDB;
1209 } 1217 }
1210 1218
1211 dev->base_addr = base;
1212 dev->irq = irq;
1213 dev->netdev_ops = &au1000_netdev_ops;
1214 SET_ETHTOOL_OPS(dev, &au1000_ethtool_ops);
1215 dev->watchdog_timeo = ETH_TX_TIMEOUT;
1216
1217 /* 1219 /*
1218 * The boot code uses the ethernet controller, so reset it to start 1220 * The boot code uses the ethernet controller, so reset it to start
1219 * fresh. au1000_init() expects that the device is in reset state. 1221 * fresh. au1000_init() expects that the device is in reset state.
diff --git a/drivers/net/b44.c b/drivers/net/b44.c
index e046943ef29d..2a9132343b66 100644
--- a/drivers/net/b44.c
+++ b/drivers/net/b44.c
@@ -912,9 +912,6 @@ static irqreturn_t b44_interrupt(int irq, void *dev_id)
912 bp->istat = istat; 912 bp->istat = istat;
913 __b44_disable_ints(bp); 913 __b44_disable_ints(bp);
914 __napi_schedule(&bp->napi); 914 __napi_schedule(&bp->napi);
915 } else {
916 printk(KERN_ERR PFX "%s: Error, poll already scheduled\n",
917 dev->name);
918 } 915 }
919 916
920irq_ack: 917irq_ack:
diff --git a/drivers/net/benet/be.h b/drivers/net/benet/be.h
index a80da0e14a52..3b79a225628a 100644
--- a/drivers/net/benet/be.h
+++ b/drivers/net/benet/be.h
@@ -259,6 +259,8 @@ struct be_adapter {
259 u32 port_num; 259 u32 port_num;
260 bool promiscuous; 260 bool promiscuous;
261 u32 cap; 261 u32 cap;
262 u32 rx_fc; /* Rx flow control */
263 u32 tx_fc; /* Tx flow control */
262}; 264};
263 265
264extern const struct ethtool_ops be_ethtool_ops; 266extern const struct ethtool_ops be_ethtool_ops;
diff --git a/drivers/net/benet/be_cmds.h b/drivers/net/benet/be_cmds.h
index 49953787e41c..e5f9676cf1bc 100644
--- a/drivers/net/benet/be_cmds.h
+++ b/drivers/net/benet/be_cmds.h
@@ -68,7 +68,7 @@ enum {
68#define CQE_STATUS_COMPL_MASK 0xFFFF 68#define CQE_STATUS_COMPL_MASK 0xFFFF
69#define CQE_STATUS_COMPL_SHIFT 0 /* bits 0 - 15 */ 69#define CQE_STATUS_COMPL_SHIFT 0 /* bits 0 - 15 */
70#define CQE_STATUS_EXTD_MASK 0xFFFF 70#define CQE_STATUS_EXTD_MASK 0xFFFF
71#define CQE_STATUS_EXTD_SHIFT 0 /* bits 0 - 15 */ 71#define CQE_STATUS_EXTD_SHIFT 16 /* bits 16 - 31 */
72 72
73struct be_mcc_compl { 73struct be_mcc_compl {
74 u32 status; /* dword 0 */ 74 u32 status; /* dword 0 */
diff --git a/drivers/net/benet/be_ethtool.c b/drivers/net/benet/be_ethtool.c
index cda5bf2fc50a..f0fd95b43c07 100644
--- a/drivers/net/benet/be_ethtool.c
+++ b/drivers/net/benet/be_ethtool.c
@@ -323,10 +323,12 @@ be_set_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *ecmd)
323 323
324 if (ecmd->autoneg != 0) 324 if (ecmd->autoneg != 0)
325 return -EINVAL; 325 return -EINVAL;
326 adapter->tx_fc = ecmd->tx_pause;
327 adapter->rx_fc = ecmd->rx_pause;
326 328
327 status = be_cmd_set_flow_control(adapter, ecmd->tx_pause, 329 status = be_cmd_set_flow_control(adapter,
328 ecmd->rx_pause); 330 adapter->tx_fc, adapter->rx_fc);
329 if (!status) 331 if (status)
330 dev_warn(&adapter->pdev->dev, "Pause param set failed.\n"); 332 dev_warn(&adapter->pdev->dev, "Pause param set failed.\n");
331 333
332 return status; 334 return status;
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
index 1f941f027718..876b357101fa 100644
--- a/drivers/net/benet/be_main.c
+++ b/drivers/net/benet/be_main.c
@@ -1610,11 +1610,21 @@ static int be_open(struct net_device *netdev)
1610 1610
1611 status = be_cmd_link_status_query(adapter, &link_up); 1611 status = be_cmd_link_status_query(adapter, &link_up);
1612 if (status) 1612 if (status)
1613 return status; 1613 goto ret_sts;
1614 be_link_status_update(adapter, link_up); 1614 be_link_status_update(adapter, link_up);
1615 1615
1616 status = be_vid_config(adapter);
1617 if (status)
1618 goto ret_sts;
1619
1620 status = be_cmd_set_flow_control(adapter,
1621 adapter->tx_fc, adapter->rx_fc);
1622 if (status)
1623 goto ret_sts;
1624
1616 schedule_delayed_work(&adapter->work, msecs_to_jiffies(100)); 1625 schedule_delayed_work(&adapter->work, msecs_to_jiffies(100));
1617 return 0; 1626ret_sts:
1627 return status;
1618} 1628}
1619 1629
1620static int be_setup(struct be_adapter *adapter) 1630static int be_setup(struct be_adapter *adapter)
@@ -1648,17 +1658,8 @@ static int be_setup(struct be_adapter *adapter)
1648 if (status != 0) 1658 if (status != 0)
1649 goto rx_qs_destroy; 1659 goto rx_qs_destroy;
1650 1660
1651 status = be_vid_config(adapter);
1652 if (status != 0)
1653 goto mccqs_destroy;
1654
1655 status = be_cmd_set_flow_control(adapter, true, true);
1656 if (status != 0)
1657 goto mccqs_destroy;
1658 return 0; 1661 return 0;
1659 1662
1660mccqs_destroy:
1661 be_mcc_queues_destroy(adapter);
1662rx_qs_destroy: 1663rx_qs_destroy:
1663 be_rx_queues_destroy(adapter); 1664 be_rx_queues_destroy(adapter);
1664tx_qs_destroy: 1665tx_qs_destroy:
@@ -1909,6 +1910,10 @@ static void be_netdev_init(struct net_device *netdev)
1909 1910
1910 adapter->rx_csum = true; 1911 adapter->rx_csum = true;
1911 1912
1913 /* Default settings for Rx and Tx flow control */
1914 adapter->rx_fc = true;
1915 adapter->tx_fc = true;
1916
1912 netif_set_gso_max_size(netdev, 65535); 1917 netif_set_gso_max_size(netdev, 65535);
1913 1918
1914 BE_SET_NETDEV_OPS(netdev, &be_netdev_ops); 1919 BE_SET_NETDEV_OPS(netdev, &be_netdev_ops);
@@ -2171,6 +2176,7 @@ static int be_suspend(struct pci_dev *pdev, pm_message_t state)
2171 be_close(netdev); 2176 be_close(netdev);
2172 rtnl_unlock(); 2177 rtnl_unlock();
2173 } 2178 }
2179 be_cmd_get_flow_control(adapter, &adapter->tx_fc, &adapter->rx_fc);
2174 be_clear(adapter); 2180 be_clear(adapter);
2175 2181
2176 pci_save_state(pdev); 2182 pci_save_state(pdev);
diff --git a/drivers/net/bnx2.h b/drivers/net/bnx2.h
index 6c7f795d12de..a4d83409f205 100644
--- a/drivers/net/bnx2.h
+++ b/drivers/net/bnx2.h
@@ -361,9 +361,12 @@ struct l2_fhdr {
361#define BNX2_L2CTX_CTX_TYPE_CTX_BD_CHN_TYPE_VALUE (1<<28) 361#define BNX2_L2CTX_CTX_TYPE_CTX_BD_CHN_TYPE_VALUE (1<<28)
362 362
363#define BNX2_L2CTX_HOST_BDIDX 0x00000004 363#define BNX2_L2CTX_HOST_BDIDX 0x00000004
364#define BNX2_L2CTX_STATUSB_NUM_SHIFT 16 364#define BNX2_L2CTX_L5_STATUSB_NUM_SHIFT 16
365#define BNX2_L2CTX_STATUSB_NUM(sb_id) \ 365#define BNX2_L2CTX_L2_STATUSB_NUM_SHIFT 24
366 (((sb_id) > 0) ? (((sb_id) + 7) << BNX2_L2CTX_STATUSB_NUM_SHIFT) : 0) 366#define BNX2_L2CTX_L5_STATUSB_NUM(sb_id) \
367 (((sb_id) > 0) ? (((sb_id) + 7) << BNX2_L2CTX_L5_STATUSB_NUM_SHIFT) : 0)
368#define BNX2_L2CTX_L2_STATUSB_NUM(sb_id) \
369 (((sb_id) > 0) ? (((sb_id) + 7) << BNX2_L2CTX_L2_STATUSB_NUM_SHIFT) : 0)
367#define BNX2_L2CTX_HOST_BSEQ 0x00000008 370#define BNX2_L2CTX_HOST_BSEQ 0x00000008
368#define BNX2_L2CTX_NX_BSEQ 0x0000000c 371#define BNX2_L2CTX_NX_BSEQ 0x0000000c
369#define BNX2_L2CTX_NX_BDHADDR_HI 0x00000010 372#define BNX2_L2CTX_NX_BDHADDR_HI 0x00000010
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 69c5b15e22da..40fb5eefc72e 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -691,7 +691,7 @@ static int bond_check_dev_link(struct bonding *bond,
691 struct net_device *slave_dev, int reporting) 691 struct net_device *slave_dev, int reporting)
692{ 692{
693 const struct net_device_ops *slave_ops = slave_dev->netdev_ops; 693 const struct net_device_ops *slave_ops = slave_dev->netdev_ops;
694 static int (*ioctl)(struct net_device *, struct ifreq *, int); 694 int (*ioctl)(struct net_device *, struct ifreq *, int);
695 struct ifreq ifr; 695 struct ifreq ifr;
696 struct mii_ioctl_data *mii; 696 struct mii_ioctl_data *mii;
697 697
@@ -3665,10 +3665,10 @@ static int bond_xmit_hash_policy_l23(struct sk_buff *skb,
3665 3665
3666 if (skb->protocol == htons(ETH_P_IP)) { 3666 if (skb->protocol == htons(ETH_P_IP)) {
3667 return ((ntohl(iph->saddr ^ iph->daddr) & 0xffff) ^ 3667 return ((ntohl(iph->saddr ^ iph->daddr) & 0xffff) ^
3668 (data->h_dest[5] ^ bond_dev->dev_addr[5])) % count; 3668 (data->h_dest[5] ^ data->h_source[5])) % count;
3669 } 3669 }
3670 3670
3671 return (data->h_dest[5] ^ bond_dev->dev_addr[5]) % count; 3671 return (data->h_dest[5] ^ data->h_source[5]) % count;
3672} 3672}
3673 3673
3674/* 3674/*
@@ -3695,7 +3695,7 @@ static int bond_xmit_hash_policy_l34(struct sk_buff *skb,
3695 3695
3696 } 3696 }
3697 3697
3698 return (data->h_dest[5] ^ bond_dev->dev_addr[5]) % count; 3698 return (data->h_dest[5] ^ data->h_source[5]) % count;
3699} 3699}
3700 3700
3701/* 3701/*
@@ -3706,7 +3706,7 @@ static int bond_xmit_hash_policy_l2(struct sk_buff *skb,
3706{ 3706{
3707 struct ethhdr *data = (struct ethhdr *)skb->data; 3707 struct ethhdr *data = (struct ethhdr *)skb->data;
3708 3708
3709 return (data->h_dest[5] ^ bond_dev->dev_addr[5]) % count; 3709 return (data->h_dest[5] ^ data->h_source[5]) % count;
3710} 3710}
3711 3711
3712/*-------------------------- Device entry points ----------------------------*/ 3712/*-------------------------- Device entry points ----------------------------*/
diff --git a/drivers/net/can/Kconfig b/drivers/net/can/Kconfig
index df32c109b7ac..772f6d2489ce 100644
--- a/drivers/net/can/Kconfig
+++ b/drivers/net/can/Kconfig
@@ -35,66 +35,16 @@ config CAN_CALC_BITTIMING
35 arguments "tq", "prop_seg", "phase_seg1", "phase_seg2" and "sjw". 35 arguments "tq", "prop_seg", "phase_seg1", "phase_seg2" and "sjw".
36 If unsure, say Y. 36 If unsure, say Y.
37 37
38config CAN_SJA1000
39 depends on CAN_DEV && HAS_IOMEM
40 tristate "Philips SJA1000"
41 ---help---
42 Driver for the SJA1000 CAN controllers from Philips or NXP
43
44config CAN_SJA1000_ISA
45 depends on CAN_SJA1000 && ISA
46 tristate "ISA Bus based legacy SJA1000 driver"
47 ---help---
48 This driver adds legacy support for SJA1000 chips connected to
49 the ISA bus using I/O port, memory mapped or indirect access.
50
51config CAN_SJA1000_PLATFORM
52 depends on CAN_SJA1000
53 tristate "Generic Platform Bus based SJA1000 driver"
54 ---help---
55 This driver adds support for the SJA1000 chips connected to
56 the "platform bus" (Linux abstraction for directly to the
57 processor attached devices). Which can be found on various
58 boards from Phytec (http://www.phytec.de) like the PCM027,
59 PCM038.
60
61config CAN_SJA1000_OF_PLATFORM
62 depends on CAN_SJA1000 && PPC_OF
63 tristate "Generic OF Platform Bus based SJA1000 driver"
64 ---help---
65 This driver adds support for the SJA1000 chips connected to
66 the OpenFirmware "platform bus" found on embedded systems with
67 OpenFirmware bindings, e.g. if you have a PowerPC based system
68 you may want to enable this option.
69
70config CAN_EMS_PCI
71 tristate "EMS CPC-PCI, CPC-PCIe and CPC-104P Card"
72 depends on PCI && CAN_SJA1000
73 ---help---
74 This driver is for the one, two or four channel CPC-PCI,
75 CPC-PCIe and CPC-104P cards from EMS Dr. Thomas Wuensche
76 (http://www.ems-wuensche.de).
77
78config CAN_EMS_USB
79 tristate "EMS CPC-USB/ARM7 CAN/USB interface"
80 depends on USB && CAN_DEV
81 ---help---
82 This driver is for the one channel CPC-USB/ARM7 CAN/USB interface
83 from from EMS Dr. Thomas Wuensche (http://www.ems-wuensche.de).
84
85config CAN_KVASER_PCI
86 tristate "Kvaser PCIcanx and Kvaser PCIcan PCI Cards"
87 depends on PCI && CAN_SJA1000
88 ---help---
89 This driver is for the the PCIcanx and PCIcan cards (1, 2 or
90 4 channel) from Kvaser (http://www.kvaser.com).
91
92config CAN_AT91 38config CAN_AT91
93 tristate "Atmel AT91 onchip CAN controller" 39 tristate "Atmel AT91 onchip CAN controller"
94 depends on CAN && CAN_DEV && ARCH_AT91SAM9263 40 depends on CAN_DEV && ARCH_AT91SAM9263
95 ---help--- 41 ---help---
96 This is a driver for the SoC CAN controller in Atmel's AT91SAM9263. 42 This is a driver for the SoC CAN controller in Atmel's AT91SAM9263.
97 43
44source "drivers/net/can/sja1000/Kconfig"
45
46source "drivers/net/can/usb/Kconfig"
47
98config CAN_DEBUG_DEVICES 48config CAN_DEBUG_DEVICES
99 bool "CAN devices debugging messages" 49 bool "CAN devices debugging messages"
100 depends on CAN 50 depends on CAN
diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c
index f0b9a1e1db46..2868fe842a41 100644
--- a/drivers/net/can/dev.c
+++ b/drivers/net/can/dev.c
@@ -589,6 +589,22 @@ static int can_changelink(struct net_device *dev,
589 return 0; 589 return 0;
590} 590}
591 591
592static size_t can_get_size(const struct net_device *dev)
593{
594 struct can_priv *priv = netdev_priv(dev);
595 size_t size;
596
597 size = nla_total_size(sizeof(u32)); /* IFLA_CAN_STATE */
598 size += sizeof(struct can_ctrlmode); /* IFLA_CAN_CTRLMODE */
599 size += nla_total_size(sizeof(u32)); /* IFLA_CAN_RESTART_MS */
600 size += sizeof(struct can_bittiming); /* IFLA_CAN_BITTIMING */
601 size += sizeof(struct can_clock); /* IFLA_CAN_CLOCK */
602 if (priv->bittiming_const) /* IFLA_CAN_BITTIMING_CONST */
603 size += sizeof(struct can_bittiming_const);
604
605 return size;
606}
607
592static int can_fill_info(struct sk_buff *skb, const struct net_device *dev) 608static int can_fill_info(struct sk_buff *skb, const struct net_device *dev)
593{ 609{
594 struct can_priv *priv = netdev_priv(dev); 610 struct can_priv *priv = netdev_priv(dev);
@@ -613,6 +629,11 @@ nla_put_failure:
613 return -EMSGSIZE; 629 return -EMSGSIZE;
614} 630}
615 631
632static size_t can_get_xstats_size(const struct net_device *dev)
633{
634 return sizeof(struct can_device_stats);
635}
636
616static int can_fill_xstats(struct sk_buff *skb, const struct net_device *dev) 637static int can_fill_xstats(struct sk_buff *skb, const struct net_device *dev)
617{ 638{
618 struct can_priv *priv = netdev_priv(dev); 639 struct can_priv *priv = netdev_priv(dev);
@@ -639,7 +660,9 @@ static struct rtnl_link_ops can_link_ops __read_mostly = {
639 .setup = can_setup, 660 .setup = can_setup,
640 .newlink = can_newlink, 661 .newlink = can_newlink,
641 .changelink = can_changelink, 662 .changelink = can_changelink,
663 .get_size = can_get_size,
642 .fill_info = can_fill_info, 664 .fill_info = can_fill_info,
665 .get_xstats_size = can_get_xstats_size,
643 .fill_xstats = can_fill_xstats, 666 .fill_xstats = can_fill_xstats,
644}; 667};
645 668
diff --git a/drivers/net/can/sja1000/Kconfig b/drivers/net/can/sja1000/Kconfig
new file mode 100644
index 000000000000..4c674927f247
--- /dev/null
+++ b/drivers/net/can/sja1000/Kconfig
@@ -0,0 +1,47 @@
1menuconfig CAN_SJA1000
2 tristate "Philips/NXP SJA1000 devices"
3 depends on CAN_DEV && HAS_IOMEM
4
5if CAN_SJA1000
6
7config CAN_SJA1000_ISA
8 tristate "ISA Bus based legacy SJA1000 driver"
9 depends on ISA
10 ---help---
11 This driver adds legacy support for SJA1000 chips connected to
12 the ISA bus using I/O port, memory mapped or indirect access.
13
14config CAN_SJA1000_PLATFORM
15 tristate "Generic Platform Bus based SJA1000 driver"
16 ---help---
17 This driver adds support for the SJA1000 chips connected to
18 the "platform bus" (Linux abstraction for directly to the
19 processor attached devices). Which can be found on various
20 boards from Phytec (http://www.phytec.de) like the PCM027,
21 PCM038.
22
23config CAN_SJA1000_OF_PLATFORM
24 tristate "Generic OF Platform Bus based SJA1000 driver"
25 depends on PPC_OF
26 ---help---
27 This driver adds support for the SJA1000 chips connected to
28 the OpenFirmware "platform bus" found on embedded systems with
29 OpenFirmware bindings, e.g. if you have a PowerPC based system
30 you may want to enable this option.
31
32config CAN_EMS_PCI
33 tristate "EMS CPC-PCI, CPC-PCIe and CPC-104P Card"
34 depends on PCI
35 ---help---
36 This driver is for the one, two or four channel CPC-PCI,
37 CPC-PCIe and CPC-104P cards from EMS Dr. Thomas Wuensche
38 (http://www.ems-wuensche.de).
39
40config CAN_KVASER_PCI
41 tristate "Kvaser PCIcanx and Kvaser PCIcan PCI Cards"
42 depends on PCI
43 ---help---
44 This driver is for the the PCIcanx and PCIcan cards (1, 2 or
45 4 channel) from Kvaser (http://www.kvaser.com).
46
47endif
diff --git a/drivers/net/can/usb/Kconfig b/drivers/net/can/usb/Kconfig
new file mode 100644
index 000000000000..bbc78e0b8a15
--- /dev/null
+++ b/drivers/net/can/usb/Kconfig
@@ -0,0 +1,10 @@
1menu "CAN USB interfaces"
2 depends on USB && CAN_DEV
3
4config CAN_EMS_USB
5 tristate "EMS CPC-USB/ARM7 CAN/USB interface"
6 ---help---
7 This driver is for the one channel CPC-USB/ARM7 CAN/USB interface
8 from from EMS Dr. Thomas Wuensche (http://www.ems-wuensche.de).
9
10endmenu
diff --git a/drivers/net/can/usb/Makefile b/drivers/net/can/usb/Makefile
index c3f75ba701b1..0afd51d4c7a5 100644
--- a/drivers/net/can/usb/Makefile
+++ b/drivers/net/can/usb/Makefile
@@ -3,3 +3,5 @@
3# 3#
4 4
5obj-$(CONFIG_CAN_EMS_USB) += ems_usb.o 5obj-$(CONFIG_CAN_EMS_USB) += ems_usb.o
6
7ccflags-$(CONFIG_CAN_DEBUG_DEVICES) := -DDEBUG
diff --git a/drivers/net/can/usb/ems_usb.c b/drivers/net/can/usb/ems_usb.c
index 9012e0abc626..abdbd9c2b788 100644
--- a/drivers/net/can/usb/ems_usb.c
+++ b/drivers/net/can/usb/ems_usb.c
@@ -319,7 +319,7 @@ static void ems_usb_rx_can_msg(struct ems_usb *dev, struct ems_cpc_msg *msg)
319 319
320 cf = (struct can_frame *)skb_put(skb, sizeof(struct can_frame)); 320 cf = (struct can_frame *)skb_put(skb, sizeof(struct can_frame));
321 321
322 cf->can_id = msg->msg.can_msg.id; 322 cf->can_id = le32_to_cpu(msg->msg.can_msg.id);
323 cf->can_dlc = min_t(u8, msg->msg.can_msg.length, 8); 323 cf->can_dlc = min_t(u8, msg->msg.can_msg.length, 8);
324 324
325 if (msg->type == CPC_MSG_TYPE_EXT_CAN_FRAME 325 if (msg->type == CPC_MSG_TYPE_EXT_CAN_FRAME
@@ -813,6 +813,9 @@ static netdev_tx_t ems_usb_start_xmit(struct sk_buff *skb, struct net_device *ne
813 msg->length = CPC_CAN_MSG_MIN_SIZE + cf->can_dlc; 813 msg->length = CPC_CAN_MSG_MIN_SIZE + cf->can_dlc;
814 } 814 }
815 815
816 /* Respect byte order */
817 msg->msg.can_msg.id = cpu_to_le32(msg->msg.can_msg.id);
818
816 for (i = 0; i < MAX_TX_URBS; i++) { 819 for (i = 0; i < MAX_TX_URBS; i++) {
817 if (dev->tx_contexts[i].echo_index == MAX_TX_URBS) { 820 if (dev->tx_contexts[i].echo_index == MAX_TX_URBS) {
818 context = &dev->tx_contexts[i]; 821 context = &dev->tx_contexts[i];
diff --git a/drivers/net/cassini.c b/drivers/net/cassini.c
index 05916aafa4f1..f857afe8e488 100644
--- a/drivers/net/cassini.c
+++ b/drivers/net/cassini.c
@@ -4342,11 +4342,11 @@ static int cas_open(struct net_device *dev)
4342 cas_unlock_all_restore(cp, flags); 4342 cas_unlock_all_restore(cp, flags);
4343 } 4343 }
4344 4344
4345 err = -ENOMEM;
4345 if (cas_tx_tiny_alloc(cp) < 0) 4346 if (cas_tx_tiny_alloc(cp) < 0)
4346 return -ENOMEM; 4347 goto err_unlock;
4347 4348
4348 /* alloc rx descriptors */ 4349 /* alloc rx descriptors */
4349 err = -ENOMEM;
4350 if (cas_alloc_rxds(cp) < 0) 4350 if (cas_alloc_rxds(cp) < 0)
4351 goto err_tx_tiny; 4351 goto err_tx_tiny;
4352 4352
@@ -4386,6 +4386,7 @@ err_spare:
4386 cas_free_rxds(cp); 4386 cas_free_rxds(cp);
4387err_tx_tiny: 4387err_tx_tiny:
4388 cas_tx_tiny_free(cp); 4388 cas_tx_tiny_free(cp);
4389err_unlock:
4389 mutex_unlock(&cp->pm_mutex); 4390 mutex_unlock(&cp->pm_mutex);
4390 return err; 4391 return err;
4391} 4392}
diff --git a/drivers/net/cnic.c b/drivers/net/cnic.c
index 46c87ec7960c..3bf1b04f2cab 100644
--- a/drivers/net/cnic.c
+++ b/drivers/net/cnic.c
@@ -2264,9 +2264,9 @@ static void cnic_init_bnx2_rx_ring(struct cnic_dev *dev)
2264 cnic_ctx_wr(dev, cid_addr, BNX2_L2CTX_CTX_TYPE, val); 2264 cnic_ctx_wr(dev, cid_addr, BNX2_L2CTX_CTX_TYPE, val);
2265 2265
2266 if (sb_id == 0) 2266 if (sb_id == 0)
2267 val = 2 << BNX2_L2CTX_STATUSB_NUM_SHIFT; 2267 val = 2 << BNX2_L2CTX_L2_STATUSB_NUM_SHIFT;
2268 else 2268 else
2269 val = BNX2_L2CTX_STATUSB_NUM(sb_id); 2269 val = BNX2_L2CTX_L2_STATUSB_NUM(sb_id);
2270 cnic_ctx_wr(dev, cid_addr, BNX2_L2CTX_HOST_BDIDX, val); 2270 cnic_ctx_wr(dev, cid_addr, BNX2_L2CTX_HOST_BDIDX, val);
2271 2271
2272 rxbd = (struct rx_bd *) (cp->l2_ring + BCM_PAGE_SIZE); 2272 rxbd = (struct rx_bd *) (cp->l2_ring + BCM_PAGE_SIZE);
@@ -2423,7 +2423,7 @@ static int cnic_start_bnx2_hw(struct cnic_dev *dev)
2423 cp->int_num = 0; 2423 cp->int_num = 0;
2424 if (ethdev->drv_state & CNIC_DRV_STATE_USING_MSIX) { 2424 if (ethdev->drv_state & CNIC_DRV_STATE_USING_MSIX) {
2425 u32 sb_id = cp->status_blk_num; 2425 u32 sb_id = cp->status_blk_num;
2426 u32 sb = BNX2_L2CTX_STATUSB_NUM(sb_id); 2426 u32 sb = BNX2_L2CTX_L5_STATUSB_NUM(sb_id);
2427 2427
2428 cp->int_num = sb_id << BNX2_PCICFG_INT_ACK_CMD_INT_NUM_SHIFT; 2428 cp->int_num = sb_id << BNX2_PCICFG_INT_ACK_CMD_INT_NUM_SHIFT;
2429 cnic_ctx_wr(dev, cp->kwq_cid_addr, L5_KRNLQ_HOST_QIDX, sb); 2429 cnic_ctx_wr(dev, cp->kwq_cid_addr, L5_KRNLQ_HOST_QIDX, sb);
diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c
index f86612857a73..6366061712f4 100644
--- a/drivers/net/cxgb3/sge.c
+++ b/drivers/net/cxgb3/sge.c
@@ -879,7 +879,7 @@ recycle:
879 pci_dma_sync_single_for_cpu(adap->pdev, dma_addr, len, 879 pci_dma_sync_single_for_cpu(adap->pdev, dma_addr, len,
880 PCI_DMA_FROMDEVICE); 880 PCI_DMA_FROMDEVICE);
881 (*sd->pg_chunk.p_cnt)--; 881 (*sd->pg_chunk.p_cnt)--;
882 if (!*sd->pg_chunk.p_cnt) 882 if (!*sd->pg_chunk.p_cnt && sd->pg_chunk.page != fl->pg_chunk.page)
883 pci_unmap_page(adap->pdev, 883 pci_unmap_page(adap->pdev,
884 sd->pg_chunk.mapping, 884 sd->pg_chunk.mapping,
885 fl->alloc_size, 885 fl->alloc_size,
@@ -2088,7 +2088,7 @@ static void lro_add_page(struct adapter *adap, struct sge_qset *qs,
2088 PCI_DMA_FROMDEVICE); 2088 PCI_DMA_FROMDEVICE);
2089 2089
2090 (*sd->pg_chunk.p_cnt)--; 2090 (*sd->pg_chunk.p_cnt)--;
2091 if (!*sd->pg_chunk.p_cnt) 2091 if (!*sd->pg_chunk.p_cnt && sd->pg_chunk.page != fl->pg_chunk.page)
2092 pci_unmap_page(adap->pdev, 2092 pci_unmap_page(adap->pdev,
2093 sd->pg_chunk.mapping, 2093 sd->pg_chunk.mapping,
2094 fl->alloc_size, 2094 fl->alloc_size,
diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c
index f72c56dec33c..e3478314c002 100644
--- a/drivers/net/davinci_emac.c
+++ b/drivers/net/davinci_emac.c
@@ -164,16 +164,14 @@ static const char emac_version_string[] = "TI DaVinci EMAC Linux v6.1";
164# define EMAC_MBP_MCASTCHAN(ch) ((ch) & 0x7) 164# define EMAC_MBP_MCASTCHAN(ch) ((ch) & 0x7)
165 165
166/* EMAC mac_control register */ 166/* EMAC mac_control register */
167#define EMAC_MACCONTROL_TXPTYPE (0x200) 167#define EMAC_MACCONTROL_TXPTYPE BIT(9)
168#define EMAC_MACCONTROL_TXPACEEN (0x40) 168#define EMAC_MACCONTROL_TXPACEEN BIT(6)
169#define EMAC_MACCONTROL_MIIEN (0x20) 169#define EMAC_MACCONTROL_GMIIEN BIT(5)
170#define EMAC_MACCONTROL_GIGABITEN (0x80) 170#define EMAC_MACCONTROL_GIGABITEN BIT(7)
171#define EMAC_MACCONTROL_GIGABITEN_SHIFT (7) 171#define EMAC_MACCONTROL_FULLDUPLEXEN BIT(0)
172#define EMAC_MACCONTROL_FULLDUPLEXEN (0x1)
173#define EMAC_MACCONTROL_RMIISPEED_MASK BIT(15) 172#define EMAC_MACCONTROL_RMIISPEED_MASK BIT(15)
174 173
175/* GIGABIT MODE related bits */ 174/* GIGABIT MODE related bits */
176#define EMAC_DM646X_MACCONTORL_GMIIEN BIT(5)
177#define EMAC_DM646X_MACCONTORL_GIG BIT(7) 175#define EMAC_DM646X_MACCONTORL_GIG BIT(7)
178#define EMAC_DM646X_MACCONTORL_GIGFORCE BIT(17) 176#define EMAC_DM646X_MACCONTORL_GIGFORCE BIT(17)
179 177
@@ -192,10 +190,10 @@ static const char emac_version_string[] = "TI DaVinci EMAC Linux v6.1";
192#define EMAC_RX_BUFFER_OFFSET_MASK (0xFFFF) 190#define EMAC_RX_BUFFER_OFFSET_MASK (0xFFFF)
193 191
194/* MAC_IN_VECTOR (0x180) register bit fields */ 192/* MAC_IN_VECTOR (0x180) register bit fields */
195#define EMAC_DM644X_MAC_IN_VECTOR_HOST_INT (0x20000) 193#define EMAC_DM644X_MAC_IN_VECTOR_HOST_INT BIT(17)
196#define EMAC_DM644X_MAC_IN_VECTOR_STATPEND_INT (0x10000) 194#define EMAC_DM644X_MAC_IN_VECTOR_STATPEND_INT BIT(16)
197#define EMAC_DM644X_MAC_IN_VECTOR_RX_INT_VEC (0x0100) 195#define EMAC_DM644X_MAC_IN_VECTOR_RX_INT_VEC BIT(8)
198#define EMAC_DM644X_MAC_IN_VECTOR_TX_INT_VEC (0x01) 196#define EMAC_DM644X_MAC_IN_VECTOR_TX_INT_VEC BIT(0)
199 197
200/** NOTE:: For DM646x the IN_VECTOR has changed */ 198/** NOTE:: For DM646x the IN_VECTOR has changed */
201#define EMAC_DM646X_MAC_IN_VECTOR_RX_INT_VEC BIT(EMAC_DEF_RX_CH) 199#define EMAC_DM646X_MAC_IN_VECTOR_RX_INT_VEC BIT(EMAC_DEF_RX_CH)
@@ -203,7 +201,6 @@ static const char emac_version_string[] = "TI DaVinci EMAC Linux v6.1";
203#define EMAC_DM646X_MAC_IN_VECTOR_HOST_INT BIT(26) 201#define EMAC_DM646X_MAC_IN_VECTOR_HOST_INT BIT(26)
204#define EMAC_DM646X_MAC_IN_VECTOR_STATPEND_INT BIT(27) 202#define EMAC_DM646X_MAC_IN_VECTOR_STATPEND_INT BIT(27)
205 203
206
207/* CPPI bit positions */ 204/* CPPI bit positions */
208#define EMAC_CPPI_SOP_BIT BIT(31) 205#define EMAC_CPPI_SOP_BIT BIT(31)
209#define EMAC_CPPI_EOP_BIT BIT(30) 206#define EMAC_CPPI_EOP_BIT BIT(30)
@@ -750,8 +747,7 @@ static void emac_update_phystatus(struct emac_priv *priv)
750 747
751 if (priv->speed == SPEED_1000 && (priv->version == EMAC_VERSION_2)) { 748 if (priv->speed == SPEED_1000 && (priv->version == EMAC_VERSION_2)) {
752 mac_control = emac_read(EMAC_MACCONTROL); 749 mac_control = emac_read(EMAC_MACCONTROL);
753 mac_control |= (EMAC_DM646X_MACCONTORL_GMIIEN | 750 mac_control |= (EMAC_DM646X_MACCONTORL_GIG |
754 EMAC_DM646X_MACCONTORL_GIG |
755 EMAC_DM646X_MACCONTORL_GIGFORCE); 751 EMAC_DM646X_MACCONTORL_GIGFORCE);
756 } else { 752 } else {
757 /* Clear the GIG bit and GIGFORCE bit */ 753 /* Clear the GIG bit and GIGFORCE bit */
@@ -2108,7 +2104,7 @@ static int emac_hw_enable(struct emac_priv *priv)
2108 2104
2109 /* Enable MII */ 2105 /* Enable MII */
2110 val = emac_read(EMAC_MACCONTROL); 2106 val = emac_read(EMAC_MACCONTROL);
2111 val |= (EMAC_MACCONTROL_MIIEN); 2107 val |= (EMAC_MACCONTROL_GMIIEN);
2112 emac_write(EMAC_MACCONTROL, val); 2108 emac_write(EMAC_MACCONTROL, val);
2113 2109
2114 /* Enable NAPI and interrupts */ 2110 /* Enable NAPI and interrupts */
@@ -2140,9 +2136,6 @@ static int emac_poll(struct napi_struct *napi, int budget)
2140 u32 status = 0; 2136 u32 status = 0;
2141 u32 num_pkts = 0; 2137 u32 num_pkts = 0;
2142 2138
2143 if (!netif_running(ndev))
2144 return 0;
2145
2146 /* Check interrupt vectors and call packet processing */ 2139 /* Check interrupt vectors and call packet processing */
2147 status = emac_read(EMAC_MACINVECTOR); 2140 status = emac_read(EMAC_MACINVECTOR);
2148 2141
@@ -2221,7 +2214,7 @@ void emac_poll_controller(struct net_device *ndev)
2221 struct emac_priv *priv = netdev_priv(ndev); 2214 struct emac_priv *priv = netdev_priv(ndev);
2222 2215
2223 emac_int_disable(priv); 2216 emac_int_disable(priv);
2224 emac_irq(ndev->irq, priv); 2217 emac_irq(ndev->irq, ndev);
2225 emac_int_enable(priv); 2218 emac_int_enable(priv);
2226} 2219}
2227#endif 2220#endif
diff --git a/drivers/net/dm9000.h b/drivers/net/dm9000.h
index 80817c2edfb3..fb1c924d79b4 100644
--- a/drivers/net/dm9000.h
+++ b/drivers/net/dm9000.h
@@ -50,7 +50,7 @@
50#define DM9000_RCSR 0x32 50#define DM9000_RCSR 0x32
51 51
52#define CHIPR_DM9000A 0x19 52#define CHIPR_DM9000A 0x19
53#define CHIPR_DM9000B 0x1B 53#define CHIPR_DM9000B 0x1A
54 54
55#define DM9000_MRCMDX 0xF0 55#define DM9000_MRCMDX 0xF0
56#define DM9000_MRCMD 0xF2 56#define DM9000_MRCMD 0xF2
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index 5d2f48f02251..d269a68ce354 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -157,6 +157,7 @@
157#include <linux/init.h> 157#include <linux/init.h>
158#include <linux/pci.h> 158#include <linux/pci.h>
159#include <linux/dma-mapping.h> 159#include <linux/dma-mapping.h>
160#include <linux/dmapool.h>
160#include <linux/netdevice.h> 161#include <linux/netdevice.h>
161#include <linux/etherdevice.h> 162#include <linux/etherdevice.h>
162#include <linux/mii.h> 163#include <linux/mii.h>
@@ -602,6 +603,7 @@ struct nic {
602 struct mem *mem; 603 struct mem *mem;
603 dma_addr_t dma_addr; 604 dma_addr_t dma_addr;
604 605
606 struct pci_pool *cbs_pool;
605 dma_addr_t cbs_dma_addr; 607 dma_addr_t cbs_dma_addr;
606 u8 adaptive_ifs; 608 u8 adaptive_ifs;
607 u8 tx_threshold; 609 u8 tx_threshold;
@@ -1427,19 +1429,31 @@ static int e100_phy_init(struct nic *nic)
1427 } else 1429 } else
1428 DPRINTK(HW, DEBUG, "phy_addr = %d\n", nic->mii.phy_id); 1430 DPRINTK(HW, DEBUG, "phy_addr = %d\n", nic->mii.phy_id);
1429 1431
1430 /* Isolate all the PHY ids */
1431 for (addr = 0; addr < 32; addr++)
1432 mdio_write(netdev, addr, MII_BMCR, BMCR_ISOLATE);
1433 /* Select the discovered PHY */
1434 bmcr &= ~BMCR_ISOLATE;
1435 mdio_write(netdev, nic->mii.phy_id, MII_BMCR, bmcr);
1436
1437 /* Get phy ID */ 1432 /* Get phy ID */
1438 id_lo = mdio_read(netdev, nic->mii.phy_id, MII_PHYSID1); 1433 id_lo = mdio_read(netdev, nic->mii.phy_id, MII_PHYSID1);
1439 id_hi = mdio_read(netdev, nic->mii.phy_id, MII_PHYSID2); 1434 id_hi = mdio_read(netdev, nic->mii.phy_id, MII_PHYSID2);
1440 nic->phy = (u32)id_hi << 16 | (u32)id_lo; 1435 nic->phy = (u32)id_hi << 16 | (u32)id_lo;
1441 DPRINTK(HW, DEBUG, "phy ID = 0x%08X\n", nic->phy); 1436 DPRINTK(HW, DEBUG, "phy ID = 0x%08X\n", nic->phy);
1442 1437
1438 /* Select the phy and isolate the rest */
1439 for (addr = 0; addr < 32; addr++) {
1440 if (addr != nic->mii.phy_id) {
1441 mdio_write(netdev, addr, MII_BMCR, BMCR_ISOLATE);
1442 } else if (nic->phy != phy_82552_v) {
1443 bmcr = mdio_read(netdev, addr, MII_BMCR);
1444 mdio_write(netdev, addr, MII_BMCR,
1445 bmcr & ~BMCR_ISOLATE);
1446 }
1447 }
1448 /*
1449 * Workaround for 82552:
1450 * Clear the ISOLATE bit on selected phy_id last (mirrored on all
1451 * other phy_id's) using bmcr value from addr discovery loop above.
1452 */
1453 if (nic->phy == phy_82552_v)
1454 mdio_write(netdev, nic->mii.phy_id, MII_BMCR,
1455 bmcr & ~BMCR_ISOLATE);
1456
1443 /* Handle National tx phys */ 1457 /* Handle National tx phys */
1444#define NCS_PHY_MODEL_MASK 0xFFF0FFFF 1458#define NCS_PHY_MODEL_MASK 0xFFF0FFFF
1445 if ((nic->phy & NCS_PHY_MODEL_MASK) == phy_nsc_tx) { 1459 if ((nic->phy & NCS_PHY_MODEL_MASK) == phy_nsc_tx) {
@@ -1781,9 +1795,7 @@ static void e100_clean_cbs(struct nic *nic)
1781 nic->cb_to_clean = nic->cb_to_clean->next; 1795 nic->cb_to_clean = nic->cb_to_clean->next;
1782 nic->cbs_avail++; 1796 nic->cbs_avail++;
1783 } 1797 }
1784 pci_free_consistent(nic->pdev, 1798 pci_pool_free(nic->cbs_pool, nic->cbs, nic->cbs_dma_addr);
1785 sizeof(struct cb) * nic->params.cbs.count,
1786 nic->cbs, nic->cbs_dma_addr);
1787 nic->cbs = NULL; 1799 nic->cbs = NULL;
1788 nic->cbs_avail = 0; 1800 nic->cbs_avail = 0;
1789 } 1801 }
@@ -1801,8 +1813,8 @@ static int e100_alloc_cbs(struct nic *nic)
1801 nic->cb_to_use = nic->cb_to_send = nic->cb_to_clean = NULL; 1813 nic->cb_to_use = nic->cb_to_send = nic->cb_to_clean = NULL;
1802 nic->cbs_avail = 0; 1814 nic->cbs_avail = 0;
1803 1815
1804 nic->cbs = pci_alloc_consistent(nic->pdev, 1816 nic->cbs = pci_pool_alloc(nic->cbs_pool, GFP_KERNEL,
1805 sizeof(struct cb) * count, &nic->cbs_dma_addr); 1817 &nic->cbs_dma_addr);
1806 if (!nic->cbs) 1818 if (!nic->cbs)
1807 return -ENOMEM; 1819 return -ENOMEM;
1808 1820
@@ -2829,7 +2841,11 @@ static int __devinit e100_probe(struct pci_dev *pdev,
2829 DPRINTK(PROBE, ERR, "Cannot register net device, aborting.\n"); 2841 DPRINTK(PROBE, ERR, "Cannot register net device, aborting.\n");
2830 goto err_out_free; 2842 goto err_out_free;
2831 } 2843 }
2832 2844 nic->cbs_pool = pci_pool_create(netdev->name,
2845 nic->pdev,
2846 nic->params.cbs.count * sizeof(struct cb),
2847 sizeof(u32),
2848 0);
2833 DPRINTK(PROBE, INFO, "addr 0x%llx, irq %d, MAC addr %pM\n", 2849 DPRINTK(PROBE, INFO, "addr 0x%llx, irq %d, MAC addr %pM\n",
2834 (unsigned long long)pci_resource_start(pdev, use_io ? 1 : 0), 2850 (unsigned long long)pci_resource_start(pdev, use_io ? 1 : 0),
2835 pdev->irq, netdev->dev_addr); 2851 pdev->irq, netdev->dev_addr);
@@ -2859,6 +2875,7 @@ static void __devexit e100_remove(struct pci_dev *pdev)
2859 unregister_netdev(netdev); 2875 unregister_netdev(netdev);
2860 e100_free(nic); 2876 e100_free(nic);
2861 pci_iounmap(pdev, nic->csr); 2877 pci_iounmap(pdev, nic->csr);
2878 pci_pool_destroy(nic->cbs_pool);
2862 free_netdev(netdev); 2879 free_netdev(netdev);
2863 pci_release_regions(pdev); 2880 pci_release_regions(pdev);
2864 pci_disable_device(pdev); 2881 pci_disable_device(pdev);
diff --git a/drivers/net/e1000e/defines.h b/drivers/net/e1000e/defines.h
index c0f185beb8bc..1190167a8b3d 100644
--- a/drivers/net/e1000e/defines.h
+++ b/drivers/net/e1000e/defines.h
@@ -76,6 +76,7 @@
76/* Extended Device Control */ 76/* Extended Device Control */
77#define E1000_CTRL_EXT_SDP7_DATA 0x00000080 /* Value of SW Definable Pin 7 */ 77#define E1000_CTRL_EXT_SDP7_DATA 0x00000080 /* Value of SW Definable Pin 7 */
78#define E1000_CTRL_EXT_EE_RST 0x00002000 /* Reinitialize from EEPROM */ 78#define E1000_CTRL_EXT_EE_RST 0x00002000 /* Reinitialize from EEPROM */
79#define E1000_CTRL_EXT_SPD_BYPS 0x00008000 /* Speed Select Bypass */
79#define E1000_CTRL_EXT_RO_DIS 0x00020000 /* Relaxed Ordering disable */ 80#define E1000_CTRL_EXT_RO_DIS 0x00020000 /* Relaxed Ordering disable */
80#define E1000_CTRL_EXT_DMA_DYN_CLK_EN 0x00080000 /* DMA Dynamic Clock Gating */ 81#define E1000_CTRL_EXT_DMA_DYN_CLK_EN 0x00080000 /* DMA Dynamic Clock Gating */
81#define E1000_CTRL_EXT_LINK_MODE_MASK 0x00C00000 82#define E1000_CTRL_EXT_LINK_MODE_MASK 0x00C00000
@@ -347,6 +348,7 @@
347/* Extended Configuration Control and Size */ 348/* Extended Configuration Control and Size */
348#define E1000_EXTCNF_CTRL_MDIO_SW_OWNERSHIP 0x00000020 349#define E1000_EXTCNF_CTRL_MDIO_SW_OWNERSHIP 0x00000020
349#define E1000_EXTCNF_CTRL_LCD_WRITE_ENABLE 0x00000001 350#define E1000_EXTCNF_CTRL_LCD_WRITE_ENABLE 0x00000001
351#define E1000_EXTCNF_CTRL_OEM_WRITE_ENABLE 0x00000008
350#define E1000_EXTCNF_CTRL_SWFLAG 0x00000020 352#define E1000_EXTCNF_CTRL_SWFLAG 0x00000020
351#define E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_MASK 0x00FF0000 353#define E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_MASK 0x00FF0000
352#define E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_SHIFT 16 354#define E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_SHIFT 16
diff --git a/drivers/net/e1000e/e1000.h b/drivers/net/e1000e/e1000.h
index 981936c1fb46..3e187b0e4203 100644
--- a/drivers/net/e1000e/e1000.h
+++ b/drivers/net/e1000e/e1000.h
@@ -141,6 +141,22 @@ struct e1000_info;
141#define HV_TNCRS_UPPER PHY_REG(778, 29) /* Transmit with no CRS */ 141#define HV_TNCRS_UPPER PHY_REG(778, 29) /* Transmit with no CRS */
142#define HV_TNCRS_LOWER PHY_REG(778, 30) 142#define HV_TNCRS_LOWER PHY_REG(778, 30)
143 143
144#define E1000_FCRTV_PCH 0x05F40 /* PCH Flow Control Refresh Timer Value */
145
146/* BM PHY Copper Specific Status */
147#define BM_CS_STATUS 17
148#define BM_CS_STATUS_LINK_UP 0x0400
149#define BM_CS_STATUS_RESOLVED 0x0800
150#define BM_CS_STATUS_SPEED_MASK 0xC000
151#define BM_CS_STATUS_SPEED_1000 0x8000
152
153/* 82577 Mobile Phy Status Register */
154#define HV_M_STATUS 26
155#define HV_M_STATUS_AUTONEG_COMPLETE 0x1000
156#define HV_M_STATUS_SPEED_MASK 0x0300
157#define HV_M_STATUS_SPEED_1000 0x0200
158#define HV_M_STATUS_LINK_UP 0x0040
159
144enum e1000_boards { 160enum e1000_boards {
145 board_82571, 161 board_82571,
146 board_82572, 162 board_82572,
@@ -519,9 +535,13 @@ extern s32 e1000e_phy_force_speed_duplex_igp(struct e1000_hw *hw);
519extern s32 e1000e_get_cable_length_igp_2(struct e1000_hw *hw); 535extern s32 e1000e_get_cable_length_igp_2(struct e1000_hw *hw);
520extern s32 e1000e_get_phy_info_igp(struct e1000_hw *hw); 536extern s32 e1000e_get_phy_info_igp(struct e1000_hw *hw);
521extern s32 e1000e_read_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 *data); 537extern s32 e1000e_read_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 *data);
538extern s32 e1000e_read_phy_reg_igp_locked(struct e1000_hw *hw, u32 offset,
539 u16 *data);
522extern s32 e1000e_phy_hw_reset_generic(struct e1000_hw *hw); 540extern s32 e1000e_phy_hw_reset_generic(struct e1000_hw *hw);
523extern s32 e1000e_set_d3_lplu_state(struct e1000_hw *hw, bool active); 541extern s32 e1000e_set_d3_lplu_state(struct e1000_hw *hw, bool active);
524extern s32 e1000e_write_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 data); 542extern s32 e1000e_write_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 data);
543extern s32 e1000e_write_phy_reg_igp_locked(struct e1000_hw *hw, u32 offset,
544 u16 data);
525extern s32 e1000e_phy_sw_reset(struct e1000_hw *hw); 545extern s32 e1000e_phy_sw_reset(struct e1000_hw *hw);
526extern s32 e1000e_phy_force_speed_duplex_m88(struct e1000_hw *hw); 546extern s32 e1000e_phy_force_speed_duplex_m88(struct e1000_hw *hw);
527extern s32 e1000e_get_cfg_done(struct e1000_hw *hw); 547extern s32 e1000e_get_cfg_done(struct e1000_hw *hw);
@@ -538,7 +558,11 @@ extern s32 e1000e_read_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 *data);
538extern s32 e1000e_write_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 data); 558extern s32 e1000e_write_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 data);
539extern void e1000e_phy_force_speed_duplex_setup(struct e1000_hw *hw, u16 *phy_ctrl); 559extern void e1000e_phy_force_speed_duplex_setup(struct e1000_hw *hw, u16 *phy_ctrl);
540extern s32 e1000e_write_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 data); 560extern s32 e1000e_write_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 data);
561extern s32 e1000e_write_kmrn_reg_locked(struct e1000_hw *hw, u32 offset,
562 u16 data);
541extern s32 e1000e_read_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 *data); 563extern s32 e1000e_read_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 *data);
564extern s32 e1000e_read_kmrn_reg_locked(struct e1000_hw *hw, u32 offset,
565 u16 *data);
542extern s32 e1000e_phy_has_link_generic(struct e1000_hw *hw, u32 iterations, 566extern s32 e1000e_phy_has_link_generic(struct e1000_hw *hw, u32 iterations,
543 u32 usec_interval, bool *success); 567 u32 usec_interval, bool *success);
544extern s32 e1000e_phy_reset_dsp(struct e1000_hw *hw); 568extern s32 e1000e_phy_reset_dsp(struct e1000_hw *hw);
@@ -546,7 +570,11 @@ extern s32 e1000e_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data);
546extern s32 e1000e_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data); 570extern s32 e1000e_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data);
547extern s32 e1000e_check_downshift(struct e1000_hw *hw); 571extern s32 e1000e_check_downshift(struct e1000_hw *hw);
548extern s32 e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data); 572extern s32 e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data);
573extern s32 e1000_read_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset,
574 u16 *data);
549extern s32 e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data); 575extern s32 e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data);
576extern s32 e1000_write_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset,
577 u16 data);
550extern s32 e1000_set_mdio_slow_mode_hv(struct e1000_hw *hw, bool slow); 578extern s32 e1000_set_mdio_slow_mode_hv(struct e1000_hw *hw, bool slow);
551extern s32 e1000_link_stall_workaround_hv(struct e1000_hw *hw); 579extern s32 e1000_link_stall_workaround_hv(struct e1000_hw *hw);
552extern s32 e1000_copper_link_setup_82577(struct e1000_hw *hw); 580extern s32 e1000_copper_link_setup_82577(struct e1000_hw *hw);
diff --git a/drivers/net/e1000e/ethtool.c b/drivers/net/e1000e/ethtool.c
index 1bf4d2a5d34f..e82638ecae88 100644
--- a/drivers/net/e1000e/ethtool.c
+++ b/drivers/net/e1000e/ethtool.c
@@ -327,10 +327,18 @@ static int e1000_set_pauseparam(struct net_device *netdev,
327 327
328 hw->fc.current_mode = hw->fc.requested_mode; 328 hw->fc.current_mode = hw->fc.requested_mode;
329 329
330 retval = ((hw->phy.media_type == e1000_media_type_fiber) ? 330 if (hw->phy.media_type == e1000_media_type_fiber) {
331 hw->mac.ops.setup_link(hw) : e1000e_force_mac_fc(hw)); 331 retval = hw->mac.ops.setup_link(hw);
332 /* implicit goto out */
333 } else {
334 retval = e1000e_force_mac_fc(hw);
335 if (retval)
336 goto out;
337 e1000e_set_fc_watermarks(hw);
338 }
332 } 339 }
333 340
341out:
334 clear_bit(__E1000_RESETTING, &adapter->state); 342 clear_bit(__E1000_RESETTING, &adapter->state);
335 return retval; 343 return retval;
336} 344}
diff --git a/drivers/net/e1000e/hw.h b/drivers/net/e1000e/hw.h
index fd44d9f90769..aaea41ef794d 100644
--- a/drivers/net/e1000e/hw.h
+++ b/drivers/net/e1000e/hw.h
@@ -764,11 +764,13 @@ struct e1000_phy_operations {
764 s32 (*get_cable_length)(struct e1000_hw *); 764 s32 (*get_cable_length)(struct e1000_hw *);
765 s32 (*get_phy_info)(struct e1000_hw *); 765 s32 (*get_phy_info)(struct e1000_hw *);
766 s32 (*read_phy_reg)(struct e1000_hw *, u32, u16 *); 766 s32 (*read_phy_reg)(struct e1000_hw *, u32, u16 *);
767 s32 (*read_phy_reg_locked)(struct e1000_hw *, u32, u16 *);
767 void (*release_phy)(struct e1000_hw *); 768 void (*release_phy)(struct e1000_hw *);
768 s32 (*reset_phy)(struct e1000_hw *); 769 s32 (*reset_phy)(struct e1000_hw *);
769 s32 (*set_d0_lplu_state)(struct e1000_hw *, bool); 770 s32 (*set_d0_lplu_state)(struct e1000_hw *, bool);
770 s32 (*set_d3_lplu_state)(struct e1000_hw *, bool); 771 s32 (*set_d3_lplu_state)(struct e1000_hw *, bool);
771 s32 (*write_phy_reg)(struct e1000_hw *, u32, u16); 772 s32 (*write_phy_reg)(struct e1000_hw *, u32, u16);
773 s32 (*write_phy_reg_locked)(struct e1000_hw *, u32, u16);
772 s32 (*cfg_on_link_up)(struct e1000_hw *); 774 s32 (*cfg_on_link_up)(struct e1000_hw *);
773}; 775};
774 776
@@ -901,6 +903,7 @@ struct e1000_shadow_ram {
901struct e1000_dev_spec_ich8lan { 903struct e1000_dev_spec_ich8lan {
902 bool kmrn_lock_loss_workaround_enabled; 904 bool kmrn_lock_loss_workaround_enabled;
903 struct e1000_shadow_ram shadow_ram[E1000_ICH8_SHADOW_RAM_WORDS]; 905 struct e1000_shadow_ram shadow_ram[E1000_ICH8_SHADOW_RAM_WORDS];
906 bool nvm_k1_enabled;
904}; 907};
905 908
906struct e1000_hw { 909struct e1000_hw {
diff --git a/drivers/net/e1000e/ich8lan.c b/drivers/net/e1000e/ich8lan.c
index 99df2abf82a9..eff3f4783655 100644
--- a/drivers/net/e1000e/ich8lan.c
+++ b/drivers/net/e1000e/ich8lan.c
@@ -122,6 +122,27 @@
122 122
123#define HV_LED_CONFIG PHY_REG(768, 30) /* LED Configuration */ 123#define HV_LED_CONFIG PHY_REG(768, 30) /* LED Configuration */
124 124
125#define SW_FLAG_TIMEOUT 1000 /* SW Semaphore flag timeout in milliseconds */
126
127/* SMBus Address Phy Register */
128#define HV_SMB_ADDR PHY_REG(768, 26)
129#define HV_SMB_ADDR_PEC_EN 0x0200
130#define HV_SMB_ADDR_VALID 0x0080
131
132/* Strapping Option Register - RO */
133#define E1000_STRAP 0x0000C
134#define E1000_STRAP_SMBUS_ADDRESS_MASK 0x00FE0000
135#define E1000_STRAP_SMBUS_ADDRESS_SHIFT 17
136
137/* OEM Bits Phy Register */
138#define HV_OEM_BITS PHY_REG(768, 25)
139#define HV_OEM_BITS_LPLU 0x0004 /* Low Power Link Up */
140#define HV_OEM_BITS_GBE_DIS 0x0040 /* Gigabit Disable */
141#define HV_OEM_BITS_RESTART_AN 0x0400 /* Restart Auto-negotiation */
142
143#define E1000_NVM_K1_CONFIG 0x1B /* NVM K1 Config Word */
144#define E1000_NVM_K1_ENABLE 0x1 /* NVM Enable K1 bit */
145
125/* ICH GbE Flash Hardware Sequencing Flash Status Register bit breakdown */ 146/* ICH GbE Flash Hardware Sequencing Flash Status Register bit breakdown */
126/* Offset 04h HSFSTS */ 147/* Offset 04h HSFSTS */
127union ich8_hws_flash_status { 148union ich8_hws_flash_status {
@@ -200,6 +221,10 @@ static s32 e1000_setup_led_pchlan(struct e1000_hw *hw);
200static s32 e1000_cleanup_led_pchlan(struct e1000_hw *hw); 221static s32 e1000_cleanup_led_pchlan(struct e1000_hw *hw);
201static s32 e1000_led_on_pchlan(struct e1000_hw *hw); 222static s32 e1000_led_on_pchlan(struct e1000_hw *hw);
202static s32 e1000_led_off_pchlan(struct e1000_hw *hw); 223static s32 e1000_led_off_pchlan(struct e1000_hw *hw);
224static s32 e1000_set_lplu_state_pchlan(struct e1000_hw *hw, bool active);
225static void e1000_lan_init_done_ich8lan(struct e1000_hw *hw);
226static s32 e1000_k1_gig_workaround_hv(struct e1000_hw *hw, bool link);
227static s32 e1000_configure_k1_ich8lan(struct e1000_hw *hw, bool k1_enable);
203 228
204static inline u16 __er16flash(struct e1000_hw *hw, unsigned long reg) 229static inline u16 __er16flash(struct e1000_hw *hw, unsigned long reg)
205{ 230{
@@ -242,7 +267,11 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw)
242 267
243 phy->ops.check_polarity = e1000_check_polarity_ife_ich8lan; 268 phy->ops.check_polarity = e1000_check_polarity_ife_ich8lan;
244 phy->ops.read_phy_reg = e1000_read_phy_reg_hv; 269 phy->ops.read_phy_reg = e1000_read_phy_reg_hv;
270 phy->ops.read_phy_reg_locked = e1000_read_phy_reg_hv_locked;
271 phy->ops.set_d0_lplu_state = e1000_set_lplu_state_pchlan;
272 phy->ops.set_d3_lplu_state = e1000_set_lplu_state_pchlan;
245 phy->ops.write_phy_reg = e1000_write_phy_reg_hv; 273 phy->ops.write_phy_reg = e1000_write_phy_reg_hv;
274 phy->ops.write_phy_reg_locked = e1000_write_phy_reg_hv_locked;
246 phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT; 275 phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
247 276
248 phy->id = e1000_phy_unknown; 277 phy->id = e1000_phy_unknown;
@@ -303,6 +332,8 @@ static s32 e1000_init_phy_params_ich8lan(struct e1000_hw *hw)
303 case IGP03E1000_E_PHY_ID: 332 case IGP03E1000_E_PHY_ID:
304 phy->type = e1000_phy_igp_3; 333 phy->type = e1000_phy_igp_3;
305 phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT; 334 phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
335 phy->ops.read_phy_reg_locked = e1000e_read_phy_reg_igp_locked;
336 phy->ops.write_phy_reg_locked = e1000e_write_phy_reg_igp_locked;
306 break; 337 break;
307 case IFE_E_PHY_ID: 338 case IFE_E_PHY_ID:
308 case IFE_PLUS_E_PHY_ID: 339 case IFE_PLUS_E_PHY_ID:
@@ -469,14 +500,6 @@ static s32 e1000_check_for_copper_link_ich8lan(struct e1000_hw *hw)
469 goto out; 500 goto out;
470 } 501 }
471 502
472 if (hw->mac.type == e1000_pchlan) {
473 ret_val = e1000e_write_kmrn_reg(hw,
474 E1000_KMRNCTRLSTA_K1_CONFIG,
475 E1000_KMRNCTRLSTA_K1_ENABLE);
476 if (ret_val)
477 goto out;
478 }
479
480 /* 503 /*
481 * First we want to see if the MII Status Register reports 504 * First we want to see if the MII Status Register reports
482 * link. If so, then we want to get the current speed/duplex 505 * link. If so, then we want to get the current speed/duplex
@@ -486,6 +509,12 @@ static s32 e1000_check_for_copper_link_ich8lan(struct e1000_hw *hw)
486 if (ret_val) 509 if (ret_val)
487 goto out; 510 goto out;
488 511
512 if (hw->mac.type == e1000_pchlan) {
513 ret_val = e1000_k1_gig_workaround_hv(hw, link);
514 if (ret_val)
515 goto out;
516 }
517
489 if (!link) 518 if (!link)
490 goto out; /* No link detected */ 519 goto out; /* No link detected */
491 520
@@ -568,12 +597,39 @@ static s32 e1000_get_variants_ich8lan(struct e1000_adapter *adapter)
568static DEFINE_MUTEX(nvm_mutex); 597static DEFINE_MUTEX(nvm_mutex);
569 598
570/** 599/**
600 * e1000_acquire_nvm_ich8lan - Acquire NVM mutex
601 * @hw: pointer to the HW structure
602 *
603 * Acquires the mutex for performing NVM operations.
604 **/
605static s32 e1000_acquire_nvm_ich8lan(struct e1000_hw *hw)
606{
607 mutex_lock(&nvm_mutex);
608
609 return 0;
610}
611
612/**
613 * e1000_release_nvm_ich8lan - Release NVM mutex
614 * @hw: pointer to the HW structure
615 *
616 * Releases the mutex used while performing NVM operations.
617 **/
618static void e1000_release_nvm_ich8lan(struct e1000_hw *hw)
619{
620 mutex_unlock(&nvm_mutex);
621
622 return;
623}
624
625static DEFINE_MUTEX(swflag_mutex);
626
627/**
571 * e1000_acquire_swflag_ich8lan - Acquire software control flag 628 * e1000_acquire_swflag_ich8lan - Acquire software control flag
572 * @hw: pointer to the HW structure 629 * @hw: pointer to the HW structure
573 * 630 *
574 * Acquires the software control flag for performing NVM and PHY 631 * Acquires the software control flag for performing PHY and select
575 * operations. This is a function pointer entry point only called by 632 * MAC CSR accesses.
576 * read/write routines for the PHY and NVM parts.
577 **/ 633 **/
578static s32 e1000_acquire_swflag_ich8lan(struct e1000_hw *hw) 634static s32 e1000_acquire_swflag_ich8lan(struct e1000_hw *hw)
579{ 635{
@@ -582,7 +638,7 @@ static s32 e1000_acquire_swflag_ich8lan(struct e1000_hw *hw)
582 638
583 might_sleep(); 639 might_sleep();
584 640
585 mutex_lock(&nvm_mutex); 641 mutex_lock(&swflag_mutex);
586 642
587 while (timeout) { 643 while (timeout) {
588 extcnf_ctrl = er32(EXTCNF_CTRL); 644 extcnf_ctrl = er32(EXTCNF_CTRL);
@@ -599,7 +655,7 @@ static s32 e1000_acquire_swflag_ich8lan(struct e1000_hw *hw)
599 goto out; 655 goto out;
600 } 656 }
601 657
602 timeout = PHY_CFG_TIMEOUT * 2; 658 timeout = SW_FLAG_TIMEOUT;
603 659
604 extcnf_ctrl |= E1000_EXTCNF_CTRL_SWFLAG; 660 extcnf_ctrl |= E1000_EXTCNF_CTRL_SWFLAG;
605 ew32(EXTCNF_CTRL, extcnf_ctrl); 661 ew32(EXTCNF_CTRL, extcnf_ctrl);
@@ -623,7 +679,7 @@ static s32 e1000_acquire_swflag_ich8lan(struct e1000_hw *hw)
623 679
624out: 680out:
625 if (ret_val) 681 if (ret_val)
626 mutex_unlock(&nvm_mutex); 682 mutex_unlock(&swflag_mutex);
627 683
628 return ret_val; 684 return ret_val;
629} 685}
@@ -632,9 +688,8 @@ out:
632 * e1000_release_swflag_ich8lan - Release software control flag 688 * e1000_release_swflag_ich8lan - Release software control flag
633 * @hw: pointer to the HW structure 689 * @hw: pointer to the HW structure
634 * 690 *
635 * Releases the software control flag for performing NVM and PHY operations. 691 * Releases the software control flag for performing PHY and select
636 * This is a function pointer entry point only called by read/write 692 * MAC CSR accesses.
637 * routines for the PHY and NVM parts.
638 **/ 693 **/
639static void e1000_release_swflag_ich8lan(struct e1000_hw *hw) 694static void e1000_release_swflag_ich8lan(struct e1000_hw *hw)
640{ 695{
@@ -644,7 +699,9 @@ static void e1000_release_swflag_ich8lan(struct e1000_hw *hw)
644 extcnf_ctrl &= ~E1000_EXTCNF_CTRL_SWFLAG; 699 extcnf_ctrl &= ~E1000_EXTCNF_CTRL_SWFLAG;
645 ew32(EXTCNF_CTRL, extcnf_ctrl); 700 ew32(EXTCNF_CTRL, extcnf_ctrl);
646 701
647 mutex_unlock(&nvm_mutex); 702 mutex_unlock(&swflag_mutex);
703
704 return;
648} 705}
649 706
650/** 707/**
@@ -752,6 +809,327 @@ static s32 e1000_phy_force_speed_duplex_ich8lan(struct e1000_hw *hw)
752} 809}
753 810
754/** 811/**
812 * e1000_sw_lcd_config_ich8lan - SW-based LCD Configuration
813 * @hw: pointer to the HW structure
814 *
815 * SW should configure the LCD from the NVM extended configuration region
816 * as a workaround for certain parts.
817 **/
818static s32 e1000_sw_lcd_config_ich8lan(struct e1000_hw *hw)
819{
820 struct e1000_phy_info *phy = &hw->phy;
821 u32 i, data, cnf_size, cnf_base_addr, sw_cfg_mask;
822 s32 ret_val;
823 u16 word_addr, reg_data, reg_addr, phy_page = 0;
824
825 ret_val = hw->phy.ops.acquire_phy(hw);
826 if (ret_val)
827 return ret_val;
828
829 /*
830 * Initialize the PHY from the NVM on ICH platforms. This
831 * is needed due to an issue where the NVM configuration is
832 * not properly autoloaded after power transitions.
833 * Therefore, after each PHY reset, we will load the
834 * configuration data out of the NVM manually.
835 */
836 if ((hw->mac.type == e1000_ich8lan && phy->type == e1000_phy_igp_3) ||
837 (hw->mac.type == e1000_pchlan)) {
838 struct e1000_adapter *adapter = hw->adapter;
839
840 /* Check if SW needs to configure the PHY */
841 if ((adapter->pdev->device == E1000_DEV_ID_ICH8_IGP_M_AMT) ||
842 (adapter->pdev->device == E1000_DEV_ID_ICH8_IGP_M) ||
843 (hw->mac.type == e1000_pchlan))
844 sw_cfg_mask = E1000_FEXTNVM_SW_CONFIG_ICH8M;
845 else
846 sw_cfg_mask = E1000_FEXTNVM_SW_CONFIG;
847
848 data = er32(FEXTNVM);
849 if (!(data & sw_cfg_mask))
850 goto out;
851
852 /* Wait for basic configuration completes before proceeding */
853 e1000_lan_init_done_ich8lan(hw);
854
855 /*
856 * Make sure HW does not configure LCD from PHY
857 * extended configuration before SW configuration
858 */
859 data = er32(EXTCNF_CTRL);
860 if (data & E1000_EXTCNF_CTRL_LCD_WRITE_ENABLE)
861 goto out;
862
863 cnf_size = er32(EXTCNF_SIZE);
864 cnf_size &= E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_MASK;
865 cnf_size >>= E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_SHIFT;
866 if (!cnf_size)
867 goto out;
868
869 cnf_base_addr = data & E1000_EXTCNF_CTRL_EXT_CNF_POINTER_MASK;
870 cnf_base_addr >>= E1000_EXTCNF_CTRL_EXT_CNF_POINTER_SHIFT;
871
872 if (!(data & E1000_EXTCNF_CTRL_OEM_WRITE_ENABLE) &&
873 (hw->mac.type == e1000_pchlan)) {
874 /*
875 * HW configures the SMBus address and LEDs when the
876 * OEM and LCD Write Enable bits are set in the NVM.
877 * When both NVM bits are cleared, SW will configure
878 * them instead.
879 */
880 data = er32(STRAP);
881 data &= E1000_STRAP_SMBUS_ADDRESS_MASK;
882 reg_data = data >> E1000_STRAP_SMBUS_ADDRESS_SHIFT;
883 reg_data |= HV_SMB_ADDR_PEC_EN | HV_SMB_ADDR_VALID;
884 ret_val = e1000_write_phy_reg_hv_locked(hw, HV_SMB_ADDR,
885 reg_data);
886 if (ret_val)
887 goto out;
888
889 data = er32(LEDCTL);
890 ret_val = e1000_write_phy_reg_hv_locked(hw,
891 HV_LED_CONFIG,
892 (u16)data);
893 if (ret_val)
894 goto out;
895 }
896 /* Configure LCD from extended configuration region. */
897
898 /* cnf_base_addr is in DWORD */
899 word_addr = (u16)(cnf_base_addr << 1);
900
901 for (i = 0; i < cnf_size; i++) {
902 ret_val = e1000_read_nvm(hw, (word_addr + i * 2), 1,
903 &reg_data);
904 if (ret_val)
905 goto out;
906
907 ret_val = e1000_read_nvm(hw, (word_addr + i * 2 + 1),
908 1, &reg_addr);
909 if (ret_val)
910 goto out;
911
912 /* Save off the PHY page for future writes. */
913 if (reg_addr == IGP01E1000_PHY_PAGE_SELECT) {
914 phy_page = reg_data;
915 continue;
916 }
917
918 reg_addr &= PHY_REG_MASK;
919 reg_addr |= phy_page;
920
921 ret_val = phy->ops.write_phy_reg_locked(hw,
922 (u32)reg_addr,
923 reg_data);
924 if (ret_val)
925 goto out;
926 }
927 }
928
929out:
930 hw->phy.ops.release_phy(hw);
931 return ret_val;
932}
933
934/**
935 * e1000_k1_gig_workaround_hv - K1 Si workaround
936 * @hw: pointer to the HW structure
937 * @link: link up bool flag
938 *
939 * If K1 is enabled for 1Gbps, the MAC might stall when transitioning
940 * from a lower speed. This workaround disables K1 whenever link is at 1Gig
941 * If link is down, the function will restore the default K1 setting located
942 * in the NVM.
943 **/
944static s32 e1000_k1_gig_workaround_hv(struct e1000_hw *hw, bool link)
945{
946 s32 ret_val = 0;
947 u16 status_reg = 0;
948 bool k1_enable = hw->dev_spec.ich8lan.nvm_k1_enabled;
949
950 if (hw->mac.type != e1000_pchlan)
951 goto out;
952
953 /* Wrap the whole flow with the sw flag */
954 ret_val = hw->phy.ops.acquire_phy(hw);
955 if (ret_val)
956 goto out;
957
958 /* Disable K1 when link is 1Gbps, otherwise use the NVM setting */
959 if (link) {
960 if (hw->phy.type == e1000_phy_82578) {
961 ret_val = hw->phy.ops.read_phy_reg_locked(hw,
962 BM_CS_STATUS,
963 &status_reg);
964 if (ret_val)
965 goto release;
966
967 status_reg &= BM_CS_STATUS_LINK_UP |
968 BM_CS_STATUS_RESOLVED |
969 BM_CS_STATUS_SPEED_MASK;
970
971 if (status_reg == (BM_CS_STATUS_LINK_UP |
972 BM_CS_STATUS_RESOLVED |
973 BM_CS_STATUS_SPEED_1000))
974 k1_enable = false;
975 }
976
977 if (hw->phy.type == e1000_phy_82577) {
978 ret_val = hw->phy.ops.read_phy_reg_locked(hw,
979 HV_M_STATUS,
980 &status_reg);
981 if (ret_val)
982 goto release;
983
984 status_reg &= HV_M_STATUS_LINK_UP |
985 HV_M_STATUS_AUTONEG_COMPLETE |
986 HV_M_STATUS_SPEED_MASK;
987
988 if (status_reg == (HV_M_STATUS_LINK_UP |
989 HV_M_STATUS_AUTONEG_COMPLETE |
990 HV_M_STATUS_SPEED_1000))
991 k1_enable = false;
992 }
993
994 /* Link stall fix for link up */
995 ret_val = hw->phy.ops.write_phy_reg_locked(hw, PHY_REG(770, 19),
996 0x0100);
997 if (ret_val)
998 goto release;
999
1000 } else {
1001 /* Link stall fix for link down */
1002 ret_val = hw->phy.ops.write_phy_reg_locked(hw, PHY_REG(770, 19),
1003 0x4100);
1004 if (ret_val)
1005 goto release;
1006 }
1007
1008 ret_val = e1000_configure_k1_ich8lan(hw, k1_enable);
1009
1010release:
1011 hw->phy.ops.release_phy(hw);
1012out:
1013 return ret_val;
1014}
1015
1016/**
1017 * e1000_configure_k1_ich8lan - Configure K1 power state
1018 * @hw: pointer to the HW structure
1019 * @enable: K1 state to configure
1020 *
1021 * Configure the K1 power state based on the provided parameter.
1022 * Assumes semaphore already acquired.
1023 *
1024 * Success returns 0, Failure returns -E1000_ERR_PHY (-2)
1025 **/
1026static s32 e1000_configure_k1_ich8lan(struct e1000_hw *hw, bool k1_enable)
1027{
1028 s32 ret_val = 0;
1029 u32 ctrl_reg = 0;
1030 u32 ctrl_ext = 0;
1031 u32 reg = 0;
1032 u16 kmrn_reg = 0;
1033
1034 ret_val = e1000e_read_kmrn_reg_locked(hw,
1035 E1000_KMRNCTRLSTA_K1_CONFIG,
1036 &kmrn_reg);
1037 if (ret_val)
1038 goto out;
1039
1040 if (k1_enable)
1041 kmrn_reg |= E1000_KMRNCTRLSTA_K1_ENABLE;
1042 else
1043 kmrn_reg &= ~E1000_KMRNCTRLSTA_K1_ENABLE;
1044
1045 ret_val = e1000e_write_kmrn_reg_locked(hw,
1046 E1000_KMRNCTRLSTA_K1_CONFIG,
1047 kmrn_reg);
1048 if (ret_val)
1049 goto out;
1050
1051 udelay(20);
1052 ctrl_ext = er32(CTRL_EXT);
1053 ctrl_reg = er32(CTRL);
1054
1055 reg = ctrl_reg & ~(E1000_CTRL_SPD_1000 | E1000_CTRL_SPD_100);
1056 reg |= E1000_CTRL_FRCSPD;
1057 ew32(CTRL, reg);
1058
1059 ew32(CTRL_EXT, ctrl_ext | E1000_CTRL_EXT_SPD_BYPS);
1060 udelay(20);
1061 ew32(CTRL, ctrl_reg);
1062 ew32(CTRL_EXT, ctrl_ext);
1063 udelay(20);
1064
1065out:
1066 return ret_val;
1067}
1068
1069/**
1070 * e1000_oem_bits_config_ich8lan - SW-based LCD Configuration
1071 * @hw: pointer to the HW structure
1072 * @d0_state: boolean if entering d0 or d3 device state
1073 *
1074 * SW will configure Gbe Disable and LPLU based on the NVM. The four bits are
1075 * collectively called OEM bits. The OEM Write Enable bit and SW Config bit
1076 * in NVM determines whether HW should configure LPLU and Gbe Disable.
1077 **/
1078static s32 e1000_oem_bits_config_ich8lan(struct e1000_hw *hw, bool d0_state)
1079{
1080 s32 ret_val = 0;
1081 u32 mac_reg;
1082 u16 oem_reg;
1083
1084 if (hw->mac.type != e1000_pchlan)
1085 return ret_val;
1086
1087 ret_val = hw->phy.ops.acquire_phy(hw);
1088 if (ret_val)
1089 return ret_val;
1090
1091 mac_reg = er32(EXTCNF_CTRL);
1092 if (mac_reg & E1000_EXTCNF_CTRL_OEM_WRITE_ENABLE)
1093 goto out;
1094
1095 mac_reg = er32(FEXTNVM);
1096 if (!(mac_reg & E1000_FEXTNVM_SW_CONFIG_ICH8M))
1097 goto out;
1098
1099 mac_reg = er32(PHY_CTRL);
1100
1101 ret_val = hw->phy.ops.read_phy_reg_locked(hw, HV_OEM_BITS, &oem_reg);
1102 if (ret_val)
1103 goto out;
1104
1105 oem_reg &= ~(HV_OEM_BITS_GBE_DIS | HV_OEM_BITS_LPLU);
1106
1107 if (d0_state) {
1108 if (mac_reg & E1000_PHY_CTRL_GBE_DISABLE)
1109 oem_reg |= HV_OEM_BITS_GBE_DIS;
1110
1111 if (mac_reg & E1000_PHY_CTRL_D0A_LPLU)
1112 oem_reg |= HV_OEM_BITS_LPLU;
1113 } else {
1114 if (mac_reg & E1000_PHY_CTRL_NOND0A_GBE_DISABLE)
1115 oem_reg |= HV_OEM_BITS_GBE_DIS;
1116
1117 if (mac_reg & E1000_PHY_CTRL_NOND0A_LPLU)
1118 oem_reg |= HV_OEM_BITS_LPLU;
1119 }
1120 /* Restart auto-neg to activate the bits */
1121 if (!e1000_check_reset_block(hw))
1122 oem_reg |= HV_OEM_BITS_RESTART_AN;
1123 ret_val = hw->phy.ops.write_phy_reg_locked(hw, HV_OEM_BITS, oem_reg);
1124
1125out:
1126 hw->phy.ops.release_phy(hw);
1127
1128 return ret_val;
1129}
1130
1131
1132/**
755 * e1000_hv_phy_workarounds_ich8lan - A series of Phy workarounds to be 1133 * e1000_hv_phy_workarounds_ich8lan - A series of Phy workarounds to be
756 * done after every PHY reset. 1134 * done after every PHY reset.
757 **/ 1135 **/
@@ -791,10 +1169,20 @@ static s32 e1000_hv_phy_workarounds_ich8lan(struct e1000_hw *hw)
791 ret_val = hw->phy.ops.acquire_phy(hw); 1169 ret_val = hw->phy.ops.acquire_phy(hw);
792 if (ret_val) 1170 if (ret_val)
793 return ret_val; 1171 return ret_val;
1172
794 hw->phy.addr = 1; 1173 hw->phy.addr = 1;
795 e1000e_write_phy_reg_mdic(hw, IGP01E1000_PHY_PAGE_SELECT, 0); 1174 ret_val = e1000e_write_phy_reg_mdic(hw, IGP01E1000_PHY_PAGE_SELECT, 0);
1175 if (ret_val)
1176 goto out;
796 hw->phy.ops.release_phy(hw); 1177 hw->phy.ops.release_phy(hw);
797 1178
1179 /*
1180 * Configure the K1 Si workaround during phy reset assuming there is
1181 * link so that it disables K1 if link is in 1Gbps.
1182 */
1183 ret_val = e1000_k1_gig_workaround_hv(hw, true);
1184
1185out:
798 return ret_val; 1186 return ret_val;
799} 1187}
800 1188
@@ -840,11 +1228,8 @@ static void e1000_lan_init_done_ich8lan(struct e1000_hw *hw)
840 **/ 1228 **/
841static s32 e1000_phy_hw_reset_ich8lan(struct e1000_hw *hw) 1229static s32 e1000_phy_hw_reset_ich8lan(struct e1000_hw *hw)
842{ 1230{
843 struct e1000_phy_info *phy = &hw->phy; 1231 s32 ret_val = 0;
844 u32 i; 1232 u16 reg;
845 u32 data, cnf_size, cnf_base_addr, sw_cfg_mask;
846 s32 ret_val;
847 u16 word_addr, reg_data, reg_addr, phy_page = 0;
848 1233
849 ret_val = e1000e_phy_hw_reset_generic(hw); 1234 ret_val = e1000e_phy_hw_reset_generic(hw);
850 if (ret_val) 1235 if (ret_val)
@@ -859,81 +1244,20 @@ static s32 e1000_phy_hw_reset_ich8lan(struct e1000_hw *hw)
859 return ret_val; 1244 return ret_val;
860 } 1245 }
861 1246
862 /* 1247 /* Dummy read to clear the phy wakeup bit after lcd reset */
863 * Initialize the PHY from the NVM on ICH platforms. This 1248 if (hw->mac.type == e1000_pchlan)
864 * is needed due to an issue where the NVM configuration is 1249 e1e_rphy(hw, BM_WUC, &reg);
865 * not properly autoloaded after power transitions.
866 * Therefore, after each PHY reset, we will load the
867 * configuration data out of the NVM manually.
868 */
869 if (hw->mac.type == e1000_ich8lan && phy->type == e1000_phy_igp_3) {
870 struct e1000_adapter *adapter = hw->adapter;
871
872 /* Check if SW needs configure the PHY */
873 if ((adapter->pdev->device == E1000_DEV_ID_ICH8_IGP_M_AMT) ||
874 (adapter->pdev->device == E1000_DEV_ID_ICH8_IGP_M))
875 sw_cfg_mask = E1000_FEXTNVM_SW_CONFIG_ICH8M;
876 else
877 sw_cfg_mask = E1000_FEXTNVM_SW_CONFIG;
878
879 data = er32(FEXTNVM);
880 if (!(data & sw_cfg_mask))
881 return 0;
882
883 /* Wait for basic configuration completes before proceeding */
884 e1000_lan_init_done_ich8lan(hw);
885
886 /*
887 * Make sure HW does not configure LCD from PHY
888 * extended configuration before SW configuration
889 */
890 data = er32(EXTCNF_CTRL);
891 if (data & E1000_EXTCNF_CTRL_LCD_WRITE_ENABLE)
892 return 0;
893
894 cnf_size = er32(EXTCNF_SIZE);
895 cnf_size &= E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_MASK;
896 cnf_size >>= E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_SHIFT;
897 if (!cnf_size)
898 return 0;
899
900 cnf_base_addr = data & E1000_EXTCNF_CTRL_EXT_CNF_POINTER_MASK;
901 cnf_base_addr >>= E1000_EXTCNF_CTRL_EXT_CNF_POINTER_SHIFT;
902
903 /* Configure LCD from extended configuration region. */
904
905 /* cnf_base_addr is in DWORD */
906 word_addr = (u16)(cnf_base_addr << 1);
907
908 for (i = 0; i < cnf_size; i++) {
909 ret_val = e1000_read_nvm(hw,
910 (word_addr + i * 2),
911 1,
912 &reg_data);
913 if (ret_val)
914 return ret_val;
915
916 ret_val = e1000_read_nvm(hw,
917 (word_addr + i * 2 + 1),
918 1,
919 &reg_addr);
920 if (ret_val)
921 return ret_val;
922
923 /* Save off the PHY page for future writes. */
924 if (reg_addr == IGP01E1000_PHY_PAGE_SELECT) {
925 phy_page = reg_data;
926 continue;
927 }
928 1250
929 reg_addr |= phy_page; 1251 /* Configure the LCD with the extended configuration region in NVM */
1252 ret_val = e1000_sw_lcd_config_ich8lan(hw);
1253 if (ret_val)
1254 goto out;
930 1255
931 ret_val = e1e_wphy(hw, (u32)reg_addr, reg_data); 1256 /* Configure the LCD with the OEM bits in NVM */
932 if (ret_val) 1257 if (hw->mac.type == e1000_pchlan)
933 return ret_val; 1258 ret_val = e1000_oem_bits_config_ich8lan(hw, true);
934 }
935 }
936 1259
1260out:
937 return 0; 1261 return 0;
938} 1262}
939 1263
@@ -1054,6 +1378,38 @@ static s32 e1000_check_polarity_ife_ich8lan(struct e1000_hw *hw)
1054} 1378}
1055 1379
1056/** 1380/**
1381 * e1000_set_lplu_state_pchlan - Set Low Power Link Up state
1382 * @hw: pointer to the HW structure
1383 * @active: true to enable LPLU, false to disable
1384 *
1385 * Sets the LPLU state according to the active flag. For PCH, if OEM write
1386 * bit are disabled in the NVM, writing the LPLU bits in the MAC will not set
1387 * the phy speed. This function will manually set the LPLU bit and restart
1388 * auto-neg as hw would do. D3 and D0 LPLU will call the same function
1389 * since it configures the same bit.
1390 **/
1391static s32 e1000_set_lplu_state_pchlan(struct e1000_hw *hw, bool active)
1392{
1393 s32 ret_val = 0;
1394 u16 oem_reg;
1395
1396 ret_val = e1e_rphy(hw, HV_OEM_BITS, &oem_reg);
1397 if (ret_val)
1398 goto out;
1399
1400 if (active)
1401 oem_reg |= HV_OEM_BITS_LPLU;
1402 else
1403 oem_reg &= ~HV_OEM_BITS_LPLU;
1404
1405 oem_reg |= HV_OEM_BITS_RESTART_AN;
1406 ret_val = e1e_wphy(hw, HV_OEM_BITS, oem_reg);
1407
1408out:
1409 return ret_val;
1410}
1411
1412/**
1057 * e1000_set_d0_lplu_state_ich8lan - Set Low Power Linkup D0 state 1413 * e1000_set_d0_lplu_state_ich8lan - Set Low Power Linkup D0 state
1058 * @hw: pointer to the HW structure 1414 * @hw: pointer to the HW structure
1059 * @active: TRUE to enable LPLU, FALSE to disable 1415 * @active: TRUE to enable LPLU, FALSE to disable
@@ -1314,12 +1670,11 @@ static s32 e1000_read_nvm_ich8lan(struct e1000_hw *hw, u16 offset, u16 words,
1314 if ((offset >= nvm->word_size) || (words > nvm->word_size - offset) || 1670 if ((offset >= nvm->word_size) || (words > nvm->word_size - offset) ||
1315 (words == 0)) { 1671 (words == 0)) {
1316 hw_dbg(hw, "nvm parameter(s) out of bounds\n"); 1672 hw_dbg(hw, "nvm parameter(s) out of bounds\n");
1317 return -E1000_ERR_NVM; 1673 ret_val = -E1000_ERR_NVM;
1674 goto out;
1318 } 1675 }
1319 1676
1320 ret_val = e1000_acquire_swflag_ich8lan(hw); 1677 nvm->ops.acquire_nvm(hw);
1321 if (ret_val)
1322 goto out;
1323 1678
1324 ret_val = e1000_valid_nvm_bank_detect_ich8lan(hw, &bank); 1679 ret_val = e1000_valid_nvm_bank_detect_ich8lan(hw, &bank);
1325 if (ret_val) { 1680 if (ret_val) {
@@ -1345,7 +1700,7 @@ static s32 e1000_read_nvm_ich8lan(struct e1000_hw *hw, u16 offset, u16 words,
1345 } 1700 }
1346 } 1701 }
1347 1702
1348 e1000_release_swflag_ich8lan(hw); 1703 nvm->ops.release_nvm(hw);
1349 1704
1350out: 1705out:
1351 if (ret_val) 1706 if (ret_val)
@@ -1603,11 +1958,15 @@ static s32 e1000_write_nvm_ich8lan(struct e1000_hw *hw, u16 offset, u16 words,
1603 return -E1000_ERR_NVM; 1958 return -E1000_ERR_NVM;
1604 } 1959 }
1605 1960
1961 nvm->ops.acquire_nvm(hw);
1962
1606 for (i = 0; i < words; i++) { 1963 for (i = 0; i < words; i++) {
1607 dev_spec->shadow_ram[offset+i].modified = 1; 1964 dev_spec->shadow_ram[offset+i].modified = 1;
1608 dev_spec->shadow_ram[offset+i].value = data[i]; 1965 dev_spec->shadow_ram[offset+i].value = data[i];
1609 } 1966 }
1610 1967
1968 nvm->ops.release_nvm(hw);
1969
1611 return 0; 1970 return 0;
1612} 1971}
1613 1972
@@ -1637,9 +1996,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
1637 if (nvm->type != e1000_nvm_flash_sw) 1996 if (nvm->type != e1000_nvm_flash_sw)
1638 goto out; 1997 goto out;
1639 1998
1640 ret_val = e1000_acquire_swflag_ich8lan(hw); 1999 nvm->ops.acquire_nvm(hw);
1641 if (ret_val)
1642 goto out;
1643 2000
1644 /* 2001 /*
1645 * We're writing to the opposite bank so if we're on bank 1, 2002 * We're writing to the opposite bank so if we're on bank 1,
@@ -1657,7 +2014,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
1657 old_bank_offset = 0; 2014 old_bank_offset = 0;
1658 ret_val = e1000_erase_flash_bank_ich8lan(hw, 1); 2015 ret_val = e1000_erase_flash_bank_ich8lan(hw, 1);
1659 if (ret_val) { 2016 if (ret_val) {
1660 e1000_release_swflag_ich8lan(hw); 2017 nvm->ops.release_nvm(hw);
1661 goto out; 2018 goto out;
1662 } 2019 }
1663 } else { 2020 } else {
@@ -1665,7 +2022,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
1665 new_bank_offset = 0; 2022 new_bank_offset = 0;
1666 ret_val = e1000_erase_flash_bank_ich8lan(hw, 0); 2023 ret_val = e1000_erase_flash_bank_ich8lan(hw, 0);
1667 if (ret_val) { 2024 if (ret_val) {
1668 e1000_release_swflag_ich8lan(hw); 2025 nvm->ops.release_nvm(hw);
1669 goto out; 2026 goto out;
1670 } 2027 }
1671 } 2028 }
@@ -1723,7 +2080,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
1723 if (ret_val) { 2080 if (ret_val) {
1724 /* Possibly read-only, see e1000e_write_protect_nvm_ich8lan() */ 2081 /* Possibly read-only, see e1000e_write_protect_nvm_ich8lan() */
1725 hw_dbg(hw, "Flash commit failed.\n"); 2082 hw_dbg(hw, "Flash commit failed.\n");
1726 e1000_release_swflag_ich8lan(hw); 2083 nvm->ops.release_nvm(hw);
1727 goto out; 2084 goto out;
1728 } 2085 }
1729 2086
@@ -1736,7 +2093,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
1736 act_offset = new_bank_offset + E1000_ICH_NVM_SIG_WORD; 2093 act_offset = new_bank_offset + E1000_ICH_NVM_SIG_WORD;
1737 ret_val = e1000_read_flash_word_ich8lan(hw, act_offset, &data); 2094 ret_val = e1000_read_flash_word_ich8lan(hw, act_offset, &data);
1738 if (ret_val) { 2095 if (ret_val) {
1739 e1000_release_swflag_ich8lan(hw); 2096 nvm->ops.release_nvm(hw);
1740 goto out; 2097 goto out;
1741 } 2098 }
1742 data &= 0xBFFF; 2099 data &= 0xBFFF;
@@ -1744,7 +2101,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
1744 act_offset * 2 + 1, 2101 act_offset * 2 + 1,
1745 (u8)(data >> 8)); 2102 (u8)(data >> 8));
1746 if (ret_val) { 2103 if (ret_val) {
1747 e1000_release_swflag_ich8lan(hw); 2104 nvm->ops.release_nvm(hw);
1748 goto out; 2105 goto out;
1749 } 2106 }
1750 2107
@@ -1757,7 +2114,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
1757 act_offset = (old_bank_offset + E1000_ICH_NVM_SIG_WORD) * 2 + 1; 2114 act_offset = (old_bank_offset + E1000_ICH_NVM_SIG_WORD) * 2 + 1;
1758 ret_val = e1000_retry_write_flash_byte_ich8lan(hw, act_offset, 0); 2115 ret_val = e1000_retry_write_flash_byte_ich8lan(hw, act_offset, 0);
1759 if (ret_val) { 2116 if (ret_val) {
1760 e1000_release_swflag_ich8lan(hw); 2117 nvm->ops.release_nvm(hw);
1761 goto out; 2118 goto out;
1762 } 2119 }
1763 2120
@@ -1767,7 +2124,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
1767 dev_spec->shadow_ram[i].value = 0xFFFF; 2124 dev_spec->shadow_ram[i].value = 0xFFFF;
1768 } 2125 }
1769 2126
1770 e1000_release_swflag_ich8lan(hw); 2127 nvm->ops.release_nvm(hw);
1771 2128
1772 /* 2129 /*
1773 * Reload the EEPROM, or else modifications will not appear 2130 * Reload the EEPROM, or else modifications will not appear
@@ -1831,14 +2188,12 @@ static s32 e1000_validate_nvm_checksum_ich8lan(struct e1000_hw *hw)
1831 **/ 2188 **/
1832void e1000e_write_protect_nvm_ich8lan(struct e1000_hw *hw) 2189void e1000e_write_protect_nvm_ich8lan(struct e1000_hw *hw)
1833{ 2190{
2191 struct e1000_nvm_info *nvm = &hw->nvm;
1834 union ich8_flash_protected_range pr0; 2192 union ich8_flash_protected_range pr0;
1835 union ich8_hws_flash_status hsfsts; 2193 union ich8_hws_flash_status hsfsts;
1836 u32 gfpreg; 2194 u32 gfpreg;
1837 s32 ret_val;
1838 2195
1839 ret_val = e1000_acquire_swflag_ich8lan(hw); 2196 nvm->ops.acquire_nvm(hw);
1840 if (ret_val)
1841 return;
1842 2197
1843 gfpreg = er32flash(ICH_FLASH_GFPREG); 2198 gfpreg = er32flash(ICH_FLASH_GFPREG);
1844 2199
@@ -1859,7 +2214,7 @@ void e1000e_write_protect_nvm_ich8lan(struct e1000_hw *hw)
1859 hsfsts.hsf_status.flockdn = true; 2214 hsfsts.hsf_status.flockdn = true;
1860 ew32flash(ICH_FLASH_HSFSTS, hsfsts.regval); 2215 ew32flash(ICH_FLASH_HSFSTS, hsfsts.regval);
1861 2216
1862 e1000_release_swflag_ich8lan(hw); 2217 nvm->ops.release_nvm(hw);
1863} 2218}
1864 2219
1865/** 2220/**
@@ -2229,6 +2584,8 @@ static s32 e1000_get_bus_info_ich8lan(struct e1000_hw *hw)
2229 **/ 2584 **/
2230static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw) 2585static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)
2231{ 2586{
2587 struct e1000_dev_spec_ich8lan *dev_spec = &hw->dev_spec.ich8lan;
2588 u16 reg;
2232 u32 ctrl, icr, kab; 2589 u32 ctrl, icr, kab;
2233 s32 ret_val; 2590 s32 ret_val;
2234 2591
@@ -2263,6 +2620,18 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)
2263 ew32(PBS, E1000_PBS_16K); 2620 ew32(PBS, E1000_PBS_16K);
2264 } 2621 }
2265 2622
2623 if (hw->mac.type == e1000_pchlan) {
2624 /* Save the NVM K1 bit setting*/
2625 ret_val = e1000_read_nvm(hw, E1000_NVM_K1_CONFIG, 1, &reg);
2626 if (ret_val)
2627 return ret_val;
2628
2629 if (reg & E1000_NVM_K1_ENABLE)
2630 dev_spec->nvm_k1_enabled = true;
2631 else
2632 dev_spec->nvm_k1_enabled = false;
2633 }
2634
2266 ctrl = er32(CTRL); 2635 ctrl = er32(CTRL);
2267 2636
2268 if (!e1000_check_reset_block(hw)) { 2637 if (!e1000_check_reset_block(hw)) {
@@ -2304,7 +2673,19 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)
2304 hw_dbg(hw, "Auto Read Done did not complete\n"); 2673 hw_dbg(hw, "Auto Read Done did not complete\n");
2305 } 2674 }
2306 } 2675 }
2676 /* Dummy read to clear the phy wakeup bit after lcd reset */
2677 if (hw->mac.type == e1000_pchlan)
2678 e1e_rphy(hw, BM_WUC, &reg);
2307 2679
2680 ret_val = e1000_sw_lcd_config_ich8lan(hw);
2681 if (ret_val)
2682 goto out;
2683
2684 if (hw->mac.type == e1000_pchlan) {
2685 ret_val = e1000_oem_bits_config_ich8lan(hw, true);
2686 if (ret_val)
2687 goto out;
2688 }
2308 /* 2689 /*
2309 * For PCH, this write will make sure that any noise 2690 * For PCH, this write will make sure that any noise
2310 * will be detected as a CRC error and be dropped rather than show up 2691 * will be detected as a CRC error and be dropped rather than show up
@@ -2323,6 +2704,7 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)
2323 if (hw->mac.type == e1000_pchlan) 2704 if (hw->mac.type == e1000_pchlan)
2324 ret_val = e1000_hv_phy_workarounds_ich8lan(hw); 2705 ret_val = e1000_hv_phy_workarounds_ich8lan(hw);
2325 2706
2707out:
2326 return ret_val; 2708 return ret_val;
2327} 2709}
2328 2710
@@ -2627,14 +3009,6 @@ static s32 e1000_get_link_up_info_ich8lan(struct e1000_hw *hw, u16 *speed,
2627 if (ret_val) 3009 if (ret_val)
2628 return ret_val; 3010 return ret_val;
2629 3011
2630 if ((hw->mac.type == e1000_pchlan) && (*speed == SPEED_1000)) {
2631 ret_val = e1000e_write_kmrn_reg(hw,
2632 E1000_KMRNCTRLSTA_K1_CONFIG,
2633 E1000_KMRNCTRLSTA_K1_DISABLE);
2634 if (ret_val)
2635 return ret_val;
2636 }
2637
2638 if ((hw->mac.type == e1000_ich8lan) && 3012 if ((hw->mac.type == e1000_ich8lan) &&
2639 (hw->phy.type == e1000_phy_igp_3) && 3013 (hw->phy.type == e1000_phy_igp_3) &&
2640 (*speed == SPEED_1000)) { 3014 (*speed == SPEED_1000)) {
@@ -2843,9 +3217,8 @@ void e1000e_disable_gig_wol_ich8lan(struct e1000_hw *hw)
2843 E1000_PHY_CTRL_GBE_DISABLE; 3217 E1000_PHY_CTRL_GBE_DISABLE;
2844 ew32(PHY_CTRL, phy_ctrl); 3218 ew32(PHY_CTRL, phy_ctrl);
2845 3219
2846 /* Workaround SWFLAG unexpectedly set during S0->Sx */
2847 if (hw->mac.type == e1000_pchlan) 3220 if (hw->mac.type == e1000_pchlan)
2848 udelay(500); 3221 e1000_phy_hw_reset_ich8lan(hw);
2849 default: 3222 default:
2850 break; 3223 break;
2851 } 3224 }
@@ -3113,9 +3486,9 @@ static struct e1000_phy_operations ich8_phy_ops = {
3113}; 3486};
3114 3487
3115static struct e1000_nvm_operations ich8_nvm_ops = { 3488static struct e1000_nvm_operations ich8_nvm_ops = {
3116 .acquire_nvm = e1000_acquire_swflag_ich8lan, 3489 .acquire_nvm = e1000_acquire_nvm_ich8lan,
3117 .read_nvm = e1000_read_nvm_ich8lan, 3490 .read_nvm = e1000_read_nvm_ich8lan,
3118 .release_nvm = e1000_release_swflag_ich8lan, 3491 .release_nvm = e1000_release_nvm_ich8lan,
3119 .update_nvm = e1000_update_nvm_checksum_ich8lan, 3492 .update_nvm = e1000_update_nvm_checksum_ich8lan,
3120 .valid_led_default = e1000_valid_led_default_ich8lan, 3493 .valid_led_default = e1000_valid_led_default_ich8lan,
3121 .validate_nvm = e1000_validate_nvm_checksum_ich8lan, 3494 .validate_nvm = e1000_validate_nvm_checksum_ich8lan,
@@ -3186,6 +3559,7 @@ struct e1000_info e1000_pch_info = {
3186 | FLAG_HAS_AMT 3559 | FLAG_HAS_AMT
3187 | FLAG_HAS_FLASH 3560 | FLAG_HAS_FLASH
3188 | FLAG_HAS_JUMBO_FRAMES 3561 | FLAG_HAS_JUMBO_FRAMES
3562 | FLAG_DISABLE_FC_PAUSE_TIME /* errata */
3189 | FLAG_APME_IN_WUC, 3563 | FLAG_APME_IN_WUC,
3190 .pba = 26, 3564 .pba = 26,
3191 .max_hw_frame_size = 4096, 3565 .max_hw_frame_size = 4096,
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
index 0687c6aa4e46..fad8f9ea0043 100644
--- a/drivers/net/e1000e/netdev.c
+++ b/drivers/net/e1000e/netdev.c
@@ -2769,25 +2769,38 @@ void e1000e_reset(struct e1000_adapter *adapter)
2769 /* 2769 /*
2770 * flow control settings 2770 * flow control settings
2771 * 2771 *
2772 * The high water mark must be low enough to fit two full frame 2772 * The high water mark must be low enough to fit one full frame
2773 * (or the size used for early receive) above it in the Rx FIFO. 2773 * (or the size used for early receive) above it in the Rx FIFO.
2774 * Set it to the lower of: 2774 * Set it to the lower of:
2775 * - 90% of the Rx FIFO size, and 2775 * - 90% of the Rx FIFO size, and
2776 * - the full Rx FIFO size minus the early receive size (for parts 2776 * - the full Rx FIFO size minus the early receive size (for parts
2777 * with ERT support assuming ERT set to E1000_ERT_2048), or 2777 * with ERT support assuming ERT set to E1000_ERT_2048), or
2778 * - the full Rx FIFO size minus two full frames 2778 * - the full Rx FIFO size minus one full frame
2779 */ 2779 */
2780 if ((adapter->flags & FLAG_HAS_ERT) && 2780 if (hw->mac.type == e1000_pchlan) {
2781 (adapter->netdev->mtu > ETH_DATA_LEN)) 2781 /*
2782 hwm = min(((pba << 10) * 9 / 10), 2782 * Workaround PCH LOM adapter hangs with certain network
2783 ((pba << 10) - (E1000_ERT_2048 << 3))); 2783 * loads. If hangs persist, try disabling Tx flow control.
2784 else 2784 */
2785 hwm = min(((pba << 10) * 9 / 10), 2785 if (adapter->netdev->mtu > ETH_DATA_LEN) {
2786 ((pba << 10) - (2 * adapter->max_frame_size))); 2786 fc->high_water = 0x3500;
2787 fc->low_water = 0x1500;
2788 } else {
2789 fc->high_water = 0x5000;
2790 fc->low_water = 0x3000;
2791 }
2792 } else {
2793 if ((adapter->flags & FLAG_HAS_ERT) &&
2794 (adapter->netdev->mtu > ETH_DATA_LEN))
2795 hwm = min(((pba << 10) * 9 / 10),
2796 ((pba << 10) - (E1000_ERT_2048 << 3)));
2797 else
2798 hwm = min(((pba << 10) * 9 / 10),
2799 ((pba << 10) - adapter->max_frame_size));
2787 2800
2788 fc->high_water = hwm & E1000_FCRTH_RTH; /* 8-byte granularity */ 2801 fc->high_water = hwm & E1000_FCRTH_RTH; /* 8-byte granularity */
2789 fc->low_water = (fc->high_water - (2 * adapter->max_frame_size)); 2802 fc->low_water = fc->high_water - 8;
2790 fc->low_water &= E1000_FCRTL_RTL; /* 8-byte granularity */ 2803 }
2791 2804
2792 if (adapter->flags & FLAG_DISABLE_FC_PAUSE_TIME) 2805 if (adapter->flags & FLAG_DISABLE_FC_PAUSE_TIME)
2793 fc->pause_time = 0xFFFF; 2806 fc->pause_time = 0xFFFF;
@@ -2813,6 +2826,10 @@ void e1000e_reset(struct e1000_adapter *adapter)
2813 if (mac->ops.init_hw(hw)) 2826 if (mac->ops.init_hw(hw))
2814 e_err("Hardware Error\n"); 2827 e_err("Hardware Error\n");
2815 2828
2829 /* additional part of the flow-control workaround above */
2830 if (hw->mac.type == e1000_pchlan)
2831 ew32(FCRTV_PCH, 0x1000);
2832
2816 e1000_update_mng_vlan(adapter); 2833 e1000_update_mng_vlan(adapter);
2817 2834
2818 /* Enable h/w to recognize an 802.1Q VLAN Ethernet packet */ 2835 /* Enable h/w to recognize an 802.1Q VLAN Ethernet packet */
@@ -3610,7 +3627,7 @@ static void e1000_watchdog_task(struct work_struct *work)
3610 case SPEED_100: 3627 case SPEED_100:
3611 txb2b = 0; 3628 txb2b = 0;
3612 netdev->tx_queue_len = 100; 3629 netdev->tx_queue_len = 100;
3613 /* maybe add some timeout factor ? */ 3630 adapter->tx_timeout_factor = 10;
3614 break; 3631 break;
3615 } 3632 }
3616 3633
@@ -4288,8 +4305,10 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu)
4288 4305
4289 while (test_and_set_bit(__E1000_RESETTING, &adapter->state)) 4306 while (test_and_set_bit(__E1000_RESETTING, &adapter->state))
4290 msleep(1); 4307 msleep(1);
4291 /* e1000e_down has a dependency on max_frame_size */ 4308 /* e1000e_down -> e1000e_reset dependent on max_frame_size & mtu */
4292 adapter->max_frame_size = max_frame; 4309 adapter->max_frame_size = max_frame;
4310 e_info("changing MTU from %d to %d\n", netdev->mtu, new_mtu);
4311 netdev->mtu = new_mtu;
4293 if (netif_running(netdev)) 4312 if (netif_running(netdev))
4294 e1000e_down(adapter); 4313 e1000e_down(adapter);
4295 4314
@@ -4319,9 +4338,6 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu)
4319 adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN 4338 adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN
4320 + ETH_FCS_LEN; 4339 + ETH_FCS_LEN;
4321 4340
4322 e_info("changing MTU from %d to %d\n", netdev->mtu, new_mtu);
4323 netdev->mtu = new_mtu;
4324
4325 if (netif_running(netdev)) 4341 if (netif_running(netdev))
4326 e1000e_up(adapter); 4342 e1000e_up(adapter);
4327 else 4343 else
diff --git a/drivers/net/e1000e/phy.c b/drivers/net/e1000e/phy.c
index 994401fd0664..85f955f70417 100644
--- a/drivers/net/e1000e/phy.c
+++ b/drivers/net/e1000e/phy.c
@@ -71,7 +71,6 @@ static const u16 e1000_igp_2_cable_length_table[] =
71#define I82577_CFG_ASSERT_CRS_ON_TX (1 << 15) 71#define I82577_CFG_ASSERT_CRS_ON_TX (1 << 15)
72#define I82577_CFG_ENABLE_DOWNSHIFT (3 << 10) /* auto downshift 100/10 */ 72#define I82577_CFG_ENABLE_DOWNSHIFT (3 << 10) /* auto downshift 100/10 */
73#define I82577_CTRL_REG 23 73#define I82577_CTRL_REG 23
74#define I82577_CTRL_DOWNSHIFT_MASK (7 << 10)
75 74
76/* 82577 specific PHY registers */ 75/* 82577 specific PHY registers */
77#define I82577_PHY_CTRL_2 18 76#define I82577_PHY_CTRL_2 18
@@ -95,13 +94,6 @@ static const u16 e1000_igp_2_cable_length_table[] =
95/* BM PHY Copper Specific Control 1 */ 94/* BM PHY Copper Specific Control 1 */
96#define BM_CS_CTRL1 16 95#define BM_CS_CTRL1 16
97 96
98/* BM PHY Copper Specific Status */
99#define BM_CS_STATUS 17
100#define BM_CS_STATUS_LINK_UP 0x0400
101#define BM_CS_STATUS_RESOLVED 0x0800
102#define BM_CS_STATUS_SPEED_MASK 0xC000
103#define BM_CS_STATUS_SPEED_1000 0x8000
104
105#define HV_MUX_DATA_CTRL PHY_REG(776, 16) 97#define HV_MUX_DATA_CTRL PHY_REG(776, 16)
106#define HV_MUX_DATA_CTRL_GEN_TO_MAC 0x0400 98#define HV_MUX_DATA_CTRL_GEN_TO_MAC 0x0400
107#define HV_MUX_DATA_CTRL_FORCE_SPEED 0x0004 99#define HV_MUX_DATA_CTRL_FORCE_SPEED 0x0004
@@ -164,16 +156,25 @@ s32 e1000e_get_phy_id(struct e1000_hw *hw)
164 * MDIC mode. No harm in trying again in this case since 156 * MDIC mode. No harm in trying again in this case since
165 * the PHY ID is unknown at this point anyway 157 * the PHY ID is unknown at this point anyway
166 */ 158 */
159 ret_val = phy->ops.acquire_phy(hw);
160 if (ret_val)
161 goto out;
167 ret_val = e1000_set_mdio_slow_mode_hv(hw, true); 162 ret_val = e1000_set_mdio_slow_mode_hv(hw, true);
168 if (ret_val) 163 if (ret_val)
169 goto out; 164 goto out;
165 phy->ops.release_phy(hw);
170 166
171 retry_count++; 167 retry_count++;
172 } 168 }
173out: 169out:
174 /* Revert to MDIO fast mode, if applicable */ 170 /* Revert to MDIO fast mode, if applicable */
175 if (retry_count) 171 if (retry_count) {
172 ret_val = phy->ops.acquire_phy(hw);
173 if (ret_val)
174 return ret_val;
176 ret_val = e1000_set_mdio_slow_mode_hv(hw, false); 175 ret_val = e1000_set_mdio_slow_mode_hv(hw, false);
176 phy->ops.release_phy(hw);
177 }
177 178
178 return ret_val; 179 return ret_val;
179} 180}
@@ -354,94 +355,173 @@ s32 e1000e_write_phy_reg_m88(struct e1000_hw *hw, u32 offset, u16 data)
354} 355}
355 356
356/** 357/**
357 * e1000e_read_phy_reg_igp - Read igp PHY register 358 * __e1000e_read_phy_reg_igp - Read igp PHY register
358 * @hw: pointer to the HW structure 359 * @hw: pointer to the HW structure
359 * @offset: register offset to be read 360 * @offset: register offset to be read
360 * @data: pointer to the read data 361 * @data: pointer to the read data
362 * @locked: semaphore has already been acquired or not
361 * 363 *
362 * Acquires semaphore, if necessary, then reads the PHY register at offset 364 * Acquires semaphore, if necessary, then reads the PHY register at offset
363 * and storing the retrieved information in data. Release any acquired 365 * and stores the retrieved information in data. Release any acquired
364 * semaphores before exiting. 366 * semaphores before exiting.
365 **/ 367 **/
366s32 e1000e_read_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 *data) 368static s32 __e1000e_read_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 *data,
369 bool locked)
367{ 370{
368 s32 ret_val; 371 s32 ret_val = 0;
369 372
370 ret_val = hw->phy.ops.acquire_phy(hw); 373 if (!locked) {
371 if (ret_val) 374 if (!(hw->phy.ops.acquire_phy))
372 return ret_val; 375 goto out;
376
377 ret_val = hw->phy.ops.acquire_phy(hw);
378 if (ret_val)
379 goto out;
380 }
373 381
374 if (offset > MAX_PHY_MULTI_PAGE_REG) { 382 if (offset > MAX_PHY_MULTI_PAGE_REG) {
375 ret_val = e1000e_write_phy_reg_mdic(hw, 383 ret_val = e1000e_write_phy_reg_mdic(hw,
376 IGP01E1000_PHY_PAGE_SELECT, 384 IGP01E1000_PHY_PAGE_SELECT,
377 (u16)offset); 385 (u16)offset);
378 if (ret_val) { 386 if (ret_val)
379 hw->phy.ops.release_phy(hw); 387 goto release;
380 return ret_val;
381 }
382 } 388 }
383 389
384 ret_val = e1000e_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset, 390 ret_val = e1000e_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset,
385 data); 391 data);
386
387 hw->phy.ops.release_phy(hw);
388 392
393release:
394 if (!locked)
395 hw->phy.ops.release_phy(hw);
396out:
389 return ret_val; 397 return ret_val;
390} 398}
391 399
392/** 400/**
401 * e1000e_read_phy_reg_igp - Read igp PHY register
402 * @hw: pointer to the HW structure
403 * @offset: register offset to be read
404 * @data: pointer to the read data
405 *
406 * Acquires semaphore then reads the PHY register at offset and stores the
407 * retrieved information in data.
408 * Release the acquired semaphore before exiting.
409 **/
410s32 e1000e_read_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 *data)
411{
412 return __e1000e_read_phy_reg_igp(hw, offset, data, false);
413}
414
415/**
416 * e1000e_read_phy_reg_igp_locked - Read igp PHY register
417 * @hw: pointer to the HW structure
418 * @offset: register offset to be read
419 * @data: pointer to the read data
420 *
421 * Reads the PHY register at offset and stores the retrieved information
422 * in data. Assumes semaphore already acquired.
423 **/
424s32 e1000e_read_phy_reg_igp_locked(struct e1000_hw *hw, u32 offset, u16 *data)
425{
426 return __e1000e_read_phy_reg_igp(hw, offset, data, true);
427}
428
429/**
393 * e1000e_write_phy_reg_igp - Write igp PHY register 430 * e1000e_write_phy_reg_igp - Write igp PHY register
394 * @hw: pointer to the HW structure 431 * @hw: pointer to the HW structure
395 * @offset: register offset to write to 432 * @offset: register offset to write to
396 * @data: data to write at register offset 433 * @data: data to write at register offset
434 * @locked: semaphore has already been acquired or not
397 * 435 *
398 * Acquires semaphore, if necessary, then writes the data to PHY register 436 * Acquires semaphore, if necessary, then writes the data to PHY register
399 * at the offset. Release any acquired semaphores before exiting. 437 * at the offset. Release any acquired semaphores before exiting.
400 **/ 438 **/
401s32 e1000e_write_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 data) 439static s32 __e1000e_write_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 data,
440 bool locked)
402{ 441{
403 s32 ret_val; 442 s32 ret_val = 0;
404 443
405 ret_val = hw->phy.ops.acquire_phy(hw); 444 if (!locked) {
406 if (ret_val) 445 if (!(hw->phy.ops.acquire_phy))
407 return ret_val; 446 goto out;
447
448 ret_val = hw->phy.ops.acquire_phy(hw);
449 if (ret_val)
450 goto out;
451 }
408 452
409 if (offset > MAX_PHY_MULTI_PAGE_REG) { 453 if (offset > MAX_PHY_MULTI_PAGE_REG) {
410 ret_val = e1000e_write_phy_reg_mdic(hw, 454 ret_val = e1000e_write_phy_reg_mdic(hw,
411 IGP01E1000_PHY_PAGE_SELECT, 455 IGP01E1000_PHY_PAGE_SELECT,
412 (u16)offset); 456 (u16)offset);
413 if (ret_val) { 457 if (ret_val)
414 hw->phy.ops.release_phy(hw); 458 goto release;
415 return ret_val;
416 }
417 } 459 }
418 460
419 ret_val = e1000e_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset, 461 ret_val = e1000e_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset,
420 data); 462 data);
421 463
422 hw->phy.ops.release_phy(hw); 464release:
465 if (!locked)
466 hw->phy.ops.release_phy(hw);
423 467
468out:
424 return ret_val; 469 return ret_val;
425} 470}
426 471
427/** 472/**
428 * e1000e_read_kmrn_reg - Read kumeran register 473 * e1000e_write_phy_reg_igp - Write igp PHY register
474 * @hw: pointer to the HW structure
475 * @offset: register offset to write to
476 * @data: data to write at register offset
477 *
478 * Acquires semaphore then writes the data to PHY register
479 * at the offset. Release any acquired semaphores before exiting.
480 **/
481s32 e1000e_write_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 data)
482{
483 return __e1000e_write_phy_reg_igp(hw, offset, data, false);
484}
485
486/**
487 * e1000e_write_phy_reg_igp_locked - Write igp PHY register
488 * @hw: pointer to the HW structure
489 * @offset: register offset to write to
490 * @data: data to write at register offset
491 *
492 * Writes the data to PHY register at the offset.
493 * Assumes semaphore already acquired.
494 **/
495s32 e1000e_write_phy_reg_igp_locked(struct e1000_hw *hw, u32 offset, u16 data)
496{
497 return __e1000e_write_phy_reg_igp(hw, offset, data, true);
498}
499
500/**
501 * __e1000_read_kmrn_reg - Read kumeran register
429 * @hw: pointer to the HW structure 502 * @hw: pointer to the HW structure
430 * @offset: register offset to be read 503 * @offset: register offset to be read
431 * @data: pointer to the read data 504 * @data: pointer to the read data
505 * @locked: semaphore has already been acquired or not
432 * 506 *
433 * Acquires semaphore, if necessary. Then reads the PHY register at offset 507 * Acquires semaphore, if necessary. Then reads the PHY register at offset
434 * using the kumeran interface. The information retrieved is stored in data. 508 * using the kumeran interface. The information retrieved is stored in data.
435 * Release any acquired semaphores before exiting. 509 * Release any acquired semaphores before exiting.
436 **/ 510 **/
437s32 e1000e_read_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 *data) 511static s32 __e1000_read_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 *data,
512 bool locked)
438{ 513{
439 u32 kmrnctrlsta; 514 u32 kmrnctrlsta;
440 s32 ret_val; 515 s32 ret_val = 0;
441 516
442 ret_val = hw->phy.ops.acquire_phy(hw); 517 if (!locked) {
443 if (ret_val) 518 if (!(hw->phy.ops.acquire_phy))
444 return ret_val; 519 goto out;
520
521 ret_val = hw->phy.ops.acquire_phy(hw);
522 if (ret_val)
523 goto out;
524 }
445 525
446 kmrnctrlsta = ((offset << E1000_KMRNCTRLSTA_OFFSET_SHIFT) & 526 kmrnctrlsta = ((offset << E1000_KMRNCTRLSTA_OFFSET_SHIFT) &
447 E1000_KMRNCTRLSTA_OFFSET) | E1000_KMRNCTRLSTA_REN; 527 E1000_KMRNCTRLSTA_OFFSET) | E1000_KMRNCTRLSTA_REN;
@@ -452,41 +532,111 @@ s32 e1000e_read_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 *data)
452 kmrnctrlsta = er32(KMRNCTRLSTA); 532 kmrnctrlsta = er32(KMRNCTRLSTA);
453 *data = (u16)kmrnctrlsta; 533 *data = (u16)kmrnctrlsta;
454 534
455 hw->phy.ops.release_phy(hw); 535 if (!locked)
536 hw->phy.ops.release_phy(hw);
456 537
538out:
457 return ret_val; 539 return ret_val;
458} 540}
459 541
460/** 542/**
461 * e1000e_write_kmrn_reg - Write kumeran register 543 * e1000e_read_kmrn_reg - Read kumeran register
544 * @hw: pointer to the HW structure
545 * @offset: register offset to be read
546 * @data: pointer to the read data
547 *
548 * Acquires semaphore then reads the PHY register at offset using the
549 * kumeran interface. The information retrieved is stored in data.
550 * Release the acquired semaphore before exiting.
551 **/
552s32 e1000e_read_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 *data)
553{
554 return __e1000_read_kmrn_reg(hw, offset, data, false);
555}
556
557/**
558 * e1000e_read_kmrn_reg_locked - Read kumeran register
559 * @hw: pointer to the HW structure
560 * @offset: register offset to be read
561 * @data: pointer to the read data
562 *
563 * Reads the PHY register at offset using the kumeran interface. The
564 * information retrieved is stored in data.
565 * Assumes semaphore already acquired.
566 **/
567s32 e1000e_read_kmrn_reg_locked(struct e1000_hw *hw, u32 offset, u16 *data)
568{
569 return __e1000_read_kmrn_reg(hw, offset, data, true);
570}
571
572/**
573 * __e1000_write_kmrn_reg - Write kumeran register
462 * @hw: pointer to the HW structure 574 * @hw: pointer to the HW structure
463 * @offset: register offset to write to 575 * @offset: register offset to write to
464 * @data: data to write at register offset 576 * @data: data to write at register offset
577 * @locked: semaphore has already been acquired or not
465 * 578 *
466 * Acquires semaphore, if necessary. Then write the data to PHY register 579 * Acquires semaphore, if necessary. Then write the data to PHY register
467 * at the offset using the kumeran interface. Release any acquired semaphores 580 * at the offset using the kumeran interface. Release any acquired semaphores
468 * before exiting. 581 * before exiting.
469 **/ 582 **/
470s32 e1000e_write_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 data) 583static s32 __e1000_write_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 data,
584 bool locked)
471{ 585{
472 u32 kmrnctrlsta; 586 u32 kmrnctrlsta;
473 s32 ret_val; 587 s32 ret_val = 0;
474 588
475 ret_val = hw->phy.ops.acquire_phy(hw); 589 if (!locked) {
476 if (ret_val) 590 if (!(hw->phy.ops.acquire_phy))
477 return ret_val; 591 goto out;
592
593 ret_val = hw->phy.ops.acquire_phy(hw);
594 if (ret_val)
595 goto out;
596 }
478 597
479 kmrnctrlsta = ((offset << E1000_KMRNCTRLSTA_OFFSET_SHIFT) & 598 kmrnctrlsta = ((offset << E1000_KMRNCTRLSTA_OFFSET_SHIFT) &
480 E1000_KMRNCTRLSTA_OFFSET) | data; 599 E1000_KMRNCTRLSTA_OFFSET) | data;
481 ew32(KMRNCTRLSTA, kmrnctrlsta); 600 ew32(KMRNCTRLSTA, kmrnctrlsta);
482 601
483 udelay(2); 602 udelay(2);
484 hw->phy.ops.release_phy(hw);
485 603
604 if (!locked)
605 hw->phy.ops.release_phy(hw);
606
607out:
486 return ret_val; 608 return ret_val;
487} 609}
488 610
489/** 611/**
612 * e1000e_write_kmrn_reg - Write kumeran register
613 * @hw: pointer to the HW structure
614 * @offset: register offset to write to
615 * @data: data to write at register offset
616 *
617 * Acquires semaphore then writes the data to the PHY register at the offset
618 * using the kumeran interface. Release the acquired semaphore before exiting.
619 **/
620s32 e1000e_write_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 data)
621{
622 return __e1000_write_kmrn_reg(hw, offset, data, false);
623}
624
625/**
626 * e1000e_write_kmrn_reg_locked - Write kumeran register
627 * @hw: pointer to the HW structure
628 * @offset: register offset to write to
629 * @data: data to write at register offset
630 *
631 * Write the data to PHY register at the offset using the kumeran interface.
632 * Assumes semaphore already acquired.
633 **/
634s32 e1000e_write_kmrn_reg_locked(struct e1000_hw *hw, u32 offset, u16 data)
635{
636 return __e1000_write_kmrn_reg(hw, offset, data, true);
637}
638
639/**
490 * e1000_copper_link_setup_82577 - Setup 82577 PHY for copper link 640 * e1000_copper_link_setup_82577 - Setup 82577 PHY for copper link
491 * @hw: pointer to the HW structure 641 * @hw: pointer to the HW structure
492 * 642 *
@@ -509,15 +659,6 @@ s32 e1000_copper_link_setup_82577(struct e1000_hw *hw)
509 phy_data |= I82577_CFG_ENABLE_DOWNSHIFT; 659 phy_data |= I82577_CFG_ENABLE_DOWNSHIFT;
510 660
511 ret_val = phy->ops.write_phy_reg(hw, I82577_CFG_REG, phy_data); 661 ret_val = phy->ops.write_phy_reg(hw, I82577_CFG_REG, phy_data);
512 if (ret_val)
513 goto out;
514
515 /* Set number of link attempts before downshift */
516 ret_val = phy->ops.read_phy_reg(hw, I82577_CTRL_REG, &phy_data);
517 if (ret_val)
518 goto out;
519 phy_data &= ~I82577_CTRL_DOWNSHIFT_MASK;
520 ret_val = phy->ops.write_phy_reg(hw, I82577_CTRL_REG, phy_data);
521 662
522out: 663out:
523 return ret_val; 664 return ret_val;
@@ -2105,6 +2246,10 @@ s32 e1000e_write_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 data)
2105 u32 page = offset >> IGP_PAGE_SHIFT; 2246 u32 page = offset >> IGP_PAGE_SHIFT;
2106 u32 page_shift = 0; 2247 u32 page_shift = 0;
2107 2248
2249 ret_val = hw->phy.ops.acquire_phy(hw);
2250 if (ret_val)
2251 return ret_val;
2252
2108 /* Page 800 works differently than the rest so it has its own func */ 2253 /* Page 800 works differently than the rest so it has its own func */
2109 if (page == BM_WUC_PAGE) { 2254 if (page == BM_WUC_PAGE) {
2110 ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, &data, 2255 ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, &data,
@@ -2112,10 +2257,6 @@ s32 e1000e_write_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 data)
2112 goto out; 2257 goto out;
2113 } 2258 }
2114 2259
2115 ret_val = hw->phy.ops.acquire_phy(hw);
2116 if (ret_val)
2117 goto out;
2118
2119 hw->phy.addr = e1000_get_phy_addr_for_bm_page(page, offset); 2260 hw->phy.addr = e1000_get_phy_addr_for_bm_page(page, offset);
2120 2261
2121 if (offset > MAX_PHY_MULTI_PAGE_REG) { 2262 if (offset > MAX_PHY_MULTI_PAGE_REG) {
@@ -2135,18 +2276,15 @@ s32 e1000e_write_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 data)
2135 /* Page is shifted left, PHY expects (page x 32) */ 2276 /* Page is shifted left, PHY expects (page x 32) */
2136 ret_val = e1000e_write_phy_reg_mdic(hw, page_select, 2277 ret_val = e1000e_write_phy_reg_mdic(hw, page_select,
2137 (page << page_shift)); 2278 (page << page_shift));
2138 if (ret_val) { 2279 if (ret_val)
2139 hw->phy.ops.release_phy(hw);
2140 goto out; 2280 goto out;
2141 }
2142 } 2281 }
2143 2282
2144 ret_val = e1000e_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset, 2283 ret_val = e1000e_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset,
2145 data); 2284 data);
2146 2285
2147 hw->phy.ops.release_phy(hw);
2148
2149out: 2286out:
2287 hw->phy.ops.release_phy(hw);
2150 return ret_val; 2288 return ret_val;
2151} 2289}
2152 2290
@@ -2167,6 +2305,10 @@ s32 e1000e_read_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 *data)
2167 u32 page = offset >> IGP_PAGE_SHIFT; 2305 u32 page = offset >> IGP_PAGE_SHIFT;
2168 u32 page_shift = 0; 2306 u32 page_shift = 0;
2169 2307
2308 ret_val = hw->phy.ops.acquire_phy(hw);
2309 if (ret_val)
2310 return ret_val;
2311
2170 /* Page 800 works differently than the rest so it has its own func */ 2312 /* Page 800 works differently than the rest so it has its own func */
2171 if (page == BM_WUC_PAGE) { 2313 if (page == BM_WUC_PAGE) {
2172 ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, data, 2314 ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, data,
@@ -2174,10 +2316,6 @@ s32 e1000e_read_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 *data)
2174 goto out; 2316 goto out;
2175 } 2317 }
2176 2318
2177 ret_val = hw->phy.ops.acquire_phy(hw);
2178 if (ret_val)
2179 goto out;
2180
2181 hw->phy.addr = e1000_get_phy_addr_for_bm_page(page, offset); 2319 hw->phy.addr = e1000_get_phy_addr_for_bm_page(page, offset);
2182 2320
2183 if (offset > MAX_PHY_MULTI_PAGE_REG) { 2321 if (offset > MAX_PHY_MULTI_PAGE_REG) {
@@ -2197,17 +2335,14 @@ s32 e1000e_read_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 *data)
2197 /* Page is shifted left, PHY expects (page x 32) */ 2335 /* Page is shifted left, PHY expects (page x 32) */
2198 ret_val = e1000e_write_phy_reg_mdic(hw, page_select, 2336 ret_val = e1000e_write_phy_reg_mdic(hw, page_select,
2199 (page << page_shift)); 2337 (page << page_shift));
2200 if (ret_val) { 2338 if (ret_val)
2201 hw->phy.ops.release_phy(hw);
2202 goto out; 2339 goto out;
2203 }
2204 } 2340 }
2205 2341
2206 ret_val = e1000e_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset, 2342 ret_val = e1000e_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset,
2207 data); 2343 data);
2208 hw->phy.ops.release_phy(hw);
2209
2210out: 2344out:
2345 hw->phy.ops.release_phy(hw);
2211 return ret_val; 2346 return ret_val;
2212} 2347}
2213 2348
@@ -2226,17 +2361,17 @@ s32 e1000e_read_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 *data)
2226 s32 ret_val; 2361 s32 ret_val;
2227 u16 page = (u16)(offset >> IGP_PAGE_SHIFT); 2362 u16 page = (u16)(offset >> IGP_PAGE_SHIFT);
2228 2363
2364 ret_val = hw->phy.ops.acquire_phy(hw);
2365 if (ret_val)
2366 return ret_val;
2367
2229 /* Page 800 works differently than the rest so it has its own func */ 2368 /* Page 800 works differently than the rest so it has its own func */
2230 if (page == BM_WUC_PAGE) { 2369 if (page == BM_WUC_PAGE) {
2231 ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, data, 2370 ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, data,
2232 true); 2371 true);
2233 return ret_val; 2372 goto out;
2234 } 2373 }
2235 2374
2236 ret_val = hw->phy.ops.acquire_phy(hw);
2237 if (ret_val)
2238 return ret_val;
2239
2240 hw->phy.addr = 1; 2375 hw->phy.addr = 1;
2241 2376
2242 if (offset > MAX_PHY_MULTI_PAGE_REG) { 2377 if (offset > MAX_PHY_MULTI_PAGE_REG) {
@@ -2245,16 +2380,14 @@ s32 e1000e_read_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 *data)
2245 ret_val = e1000e_write_phy_reg_mdic(hw, BM_PHY_PAGE_SELECT, 2380 ret_val = e1000e_write_phy_reg_mdic(hw, BM_PHY_PAGE_SELECT,
2246 page); 2381 page);
2247 2382
2248 if (ret_val) { 2383 if (ret_val)
2249 hw->phy.ops.release_phy(hw); 2384 goto out;
2250 return ret_val;
2251 }
2252 } 2385 }
2253 2386
2254 ret_val = e1000e_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset, 2387 ret_val = e1000e_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset,
2255 data); 2388 data);
2389out:
2256 hw->phy.ops.release_phy(hw); 2390 hw->phy.ops.release_phy(hw);
2257
2258 return ret_val; 2391 return ret_val;
2259} 2392}
2260 2393
@@ -2272,17 +2405,17 @@ s32 e1000e_write_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 data)
2272 s32 ret_val; 2405 s32 ret_val;
2273 u16 page = (u16)(offset >> IGP_PAGE_SHIFT); 2406 u16 page = (u16)(offset >> IGP_PAGE_SHIFT);
2274 2407
2408 ret_val = hw->phy.ops.acquire_phy(hw);
2409 if (ret_val)
2410 return ret_val;
2411
2275 /* Page 800 works differently than the rest so it has its own func */ 2412 /* Page 800 works differently than the rest so it has its own func */
2276 if (page == BM_WUC_PAGE) { 2413 if (page == BM_WUC_PAGE) {
2277 ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, &data, 2414 ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, &data,
2278 false); 2415 false);
2279 return ret_val; 2416 goto out;
2280 } 2417 }
2281 2418
2282 ret_val = hw->phy.ops.acquire_phy(hw);
2283 if (ret_val)
2284 return ret_val;
2285
2286 hw->phy.addr = 1; 2419 hw->phy.addr = 1;
2287 2420
2288 if (offset > MAX_PHY_MULTI_PAGE_REG) { 2421 if (offset > MAX_PHY_MULTI_PAGE_REG) {
@@ -2290,17 +2423,15 @@ s32 e1000e_write_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 data)
2290 ret_val = e1000e_write_phy_reg_mdic(hw, BM_PHY_PAGE_SELECT, 2423 ret_val = e1000e_write_phy_reg_mdic(hw, BM_PHY_PAGE_SELECT,
2291 page); 2424 page);
2292 2425
2293 if (ret_val) { 2426 if (ret_val)
2294 hw->phy.ops.release_phy(hw); 2427 goto out;
2295 return ret_val;
2296 }
2297 } 2428 }
2298 2429
2299 ret_val = e1000e_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset, 2430 ret_val = e1000e_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset,
2300 data); 2431 data);
2301 2432
2433out:
2302 hw->phy.ops.release_phy(hw); 2434 hw->phy.ops.release_phy(hw);
2303
2304 return ret_val; 2435 return ret_val;
2305} 2436}
2306 2437
@@ -2320,6 +2451,8 @@ s32 e1000e_write_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 data)
2320 * 3) Write the address using the address opcode (0x11) 2451 * 3) Write the address using the address opcode (0x11)
2321 * 4) Read or write the data using the data opcode (0x12) 2452 * 4) Read or write the data using the data opcode (0x12)
2322 * 5) Restore 769_17.2 to its original value 2453 * 5) Restore 769_17.2 to its original value
2454 *
2455 * Assumes semaphore already acquired.
2323 **/ 2456 **/
2324static s32 e1000_access_phy_wakeup_reg_bm(struct e1000_hw *hw, u32 offset, 2457static s32 e1000_access_phy_wakeup_reg_bm(struct e1000_hw *hw, u32 offset,
2325 u16 *data, bool read) 2458 u16 *data, bool read)
@@ -2327,20 +2460,12 @@ static s32 e1000_access_phy_wakeup_reg_bm(struct e1000_hw *hw, u32 offset,
2327 s32 ret_val; 2460 s32 ret_val;
2328 u16 reg = BM_PHY_REG_NUM(offset); 2461 u16 reg = BM_PHY_REG_NUM(offset);
2329 u16 phy_reg = 0; 2462 u16 phy_reg = 0;
2330 u8 phy_acquired = 1;
2331
2332 2463
2333 /* Gig must be disabled for MDIO accesses to page 800 */ 2464 /* Gig must be disabled for MDIO accesses to page 800 */
2334 if ((hw->mac.type == e1000_pchlan) && 2465 if ((hw->mac.type == e1000_pchlan) &&
2335 (!(er32(PHY_CTRL) & E1000_PHY_CTRL_GBE_DISABLE))) 2466 (!(er32(PHY_CTRL) & E1000_PHY_CTRL_GBE_DISABLE)))
2336 hw_dbg(hw, "Attempting to access page 800 while gig enabled\n"); 2467 hw_dbg(hw, "Attempting to access page 800 while gig enabled\n");
2337 2468
2338 ret_val = hw->phy.ops.acquire_phy(hw);
2339 if (ret_val) {
2340 phy_acquired = 0;
2341 goto out;
2342 }
2343
2344 /* All operations in this function are phy address 1 */ 2469 /* All operations in this function are phy address 1 */
2345 hw->phy.addr = 1; 2470 hw->phy.addr = 1;
2346 2471
@@ -2397,8 +2522,6 @@ static s32 e1000_access_phy_wakeup_reg_bm(struct e1000_hw *hw, u32 offset,
2397 ret_val = e1000e_write_phy_reg_mdic(hw, BM_WUC_ENABLE_REG, phy_reg); 2522 ret_val = e1000e_write_phy_reg_mdic(hw, BM_WUC_ENABLE_REG, phy_reg);
2398 2523
2399out: 2524out:
2400 if (phy_acquired == 1)
2401 hw->phy.ops.release_phy(hw);
2402 return ret_val; 2525 return ret_val;
2403} 2526}
2404 2527
@@ -2439,52 +2562,63 @@ static s32 e1000_set_d0_lplu_state(struct e1000_hw *hw, bool active)
2439 return 0; 2562 return 0;
2440} 2563}
2441 2564
2565/**
2566 * e1000_set_mdio_slow_mode_hv - Set slow MDIO access mode
2567 * @hw: pointer to the HW structure
2568 * @slow: true for slow mode, false for normal mode
2569 *
2570 * Assumes semaphore already acquired.
2571 **/
2442s32 e1000_set_mdio_slow_mode_hv(struct e1000_hw *hw, bool slow) 2572s32 e1000_set_mdio_slow_mode_hv(struct e1000_hw *hw, bool slow)
2443{ 2573{
2444 s32 ret_val = 0; 2574 s32 ret_val = 0;
2445 u16 data = 0; 2575 u16 data = 0;
2446 2576
2447 ret_val = hw->phy.ops.acquire_phy(hw);
2448 if (ret_val)
2449 return ret_val;
2450
2451 /* Set MDIO mode - page 769, register 16: 0x2580==slow, 0x2180==fast */ 2577 /* Set MDIO mode - page 769, register 16: 0x2580==slow, 0x2180==fast */
2452 hw->phy.addr = 1; 2578 hw->phy.addr = 1;
2453 ret_val = e1000e_write_phy_reg_mdic(hw, IGP01E1000_PHY_PAGE_SELECT, 2579 ret_val = e1000e_write_phy_reg_mdic(hw, IGP01E1000_PHY_PAGE_SELECT,
2454 (BM_PORT_CTRL_PAGE << IGP_PAGE_SHIFT)); 2580 (BM_PORT_CTRL_PAGE << IGP_PAGE_SHIFT));
2455 if (ret_val) { 2581 if (ret_val)
2456 hw->phy.ops.release_phy(hw); 2582 goto out;
2457 return ret_val; 2583
2458 }
2459 ret_val = e1000e_write_phy_reg_mdic(hw, BM_CS_CTRL1, 2584 ret_val = e1000e_write_phy_reg_mdic(hw, BM_CS_CTRL1,
2460 (0x2180 | (slow << 10))); 2585 (0x2180 | (slow << 10)));
2586 if (ret_val)
2587 goto out;
2461 2588
2462 /* dummy read when reverting to fast mode - throw away result */ 2589 /* dummy read when reverting to fast mode - throw away result */
2463 if (!slow) 2590 if (!slow)
2464 e1000e_read_phy_reg_mdic(hw, BM_CS_CTRL1, &data); 2591 ret_val = e1000e_read_phy_reg_mdic(hw, BM_CS_CTRL1, &data);
2465
2466 hw->phy.ops.release_phy(hw);
2467 2592
2593out:
2468 return ret_val; 2594 return ret_val;
2469} 2595}
2470 2596
2471/** 2597/**
2472 * e1000_read_phy_reg_hv - Read HV PHY register 2598 * __e1000_read_phy_reg_hv - Read HV PHY register
2473 * @hw: pointer to the HW structure 2599 * @hw: pointer to the HW structure
2474 * @offset: register offset to be read 2600 * @offset: register offset to be read
2475 * @data: pointer to the read data 2601 * @data: pointer to the read data
2602 * @locked: semaphore has already been acquired or not
2476 * 2603 *
2477 * Acquires semaphore, if necessary, then reads the PHY register at offset 2604 * Acquires semaphore, if necessary, then reads the PHY register at offset
2478 * and storing the retrieved information in data. Release any acquired 2605 * and stores the retrieved information in data. Release any acquired
2479 * semaphore before exiting. 2606 * semaphore before exiting.
2480 **/ 2607 **/
2481s32 e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data) 2608static s32 __e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data,
2609 bool locked)
2482{ 2610{
2483 s32 ret_val; 2611 s32 ret_val;
2484 u16 page = BM_PHY_REG_PAGE(offset); 2612 u16 page = BM_PHY_REG_PAGE(offset);
2485 u16 reg = BM_PHY_REG_NUM(offset); 2613 u16 reg = BM_PHY_REG_NUM(offset);
2486 bool in_slow_mode = false; 2614 bool in_slow_mode = false;
2487 2615
2616 if (!locked) {
2617 ret_val = hw->phy.ops.acquire_phy(hw);
2618 if (ret_val)
2619 return ret_val;
2620 }
2621
2488 /* Workaround failure in MDIO access while cable is disconnected */ 2622 /* Workaround failure in MDIO access while cable is disconnected */
2489 if ((hw->phy.type == e1000_phy_82577) && 2623 if ((hw->phy.type == e1000_phy_82577) &&
2490 !(er32(STATUS) & E1000_STATUS_LU)) { 2624 !(er32(STATUS) & E1000_STATUS_LU)) {
@@ -2508,63 +2642,92 @@ s32 e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data)
2508 goto out; 2642 goto out;
2509 } 2643 }
2510 2644
2511 ret_val = hw->phy.ops.acquire_phy(hw);
2512 if (ret_val)
2513 goto out;
2514
2515 hw->phy.addr = e1000_get_phy_addr_for_hv_page(page); 2645 hw->phy.addr = e1000_get_phy_addr_for_hv_page(page);
2516 2646
2517 if (page == HV_INTC_FC_PAGE_START) 2647 if (page == HV_INTC_FC_PAGE_START)
2518 page = 0; 2648 page = 0;
2519 2649
2520 if (reg > MAX_PHY_MULTI_PAGE_REG) { 2650 if (reg > MAX_PHY_MULTI_PAGE_REG) {
2521 if ((hw->phy.type != e1000_phy_82578) || 2651 u32 phy_addr = hw->phy.addr;
2522 ((reg != I82578_ADDR_REG) && 2652
2523 (reg != I82578_ADDR_REG + 1))) { 2653 hw->phy.addr = 1;
2524 u32 phy_addr = hw->phy.addr; 2654
2525 2655 /* Page is shifted left, PHY expects (page x 32) */
2526 hw->phy.addr = 1; 2656 ret_val = e1000e_write_phy_reg_mdic(hw,
2527 2657 IGP01E1000_PHY_PAGE_SELECT,
2528 /* Page is shifted left, PHY expects (page x 32) */ 2658 (page << IGP_PAGE_SHIFT));
2529 ret_val = e1000e_write_phy_reg_mdic(hw, 2659 hw->phy.addr = phy_addr;
2530 IGP01E1000_PHY_PAGE_SELECT, 2660
2531 (page << IGP_PAGE_SHIFT)); 2661 if (ret_val)
2532 if (ret_val) { 2662 goto out;
2533 hw->phy.ops.release_phy(hw);
2534 goto out;
2535 }
2536 hw->phy.addr = phy_addr;
2537 }
2538 } 2663 }
2539 2664
2540 ret_val = e1000e_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & reg, 2665 ret_val = e1000e_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & reg,
2541 data); 2666 data);
2542 hw->phy.ops.release_phy(hw);
2543
2544out: 2667out:
2545 /* Revert to MDIO fast mode, if applicable */ 2668 /* Revert to MDIO fast mode, if applicable */
2546 if ((hw->phy.type == e1000_phy_82577) && in_slow_mode) 2669 if ((hw->phy.type == e1000_phy_82577) && in_slow_mode)
2547 ret_val = e1000_set_mdio_slow_mode_hv(hw, false); 2670 ret_val |= e1000_set_mdio_slow_mode_hv(hw, false);
2671
2672 if (!locked)
2673 hw->phy.ops.release_phy(hw);
2548 2674
2549 return ret_val; 2675 return ret_val;
2550} 2676}
2551 2677
2552/** 2678/**
2553 * e1000_write_phy_reg_hv - Write HV PHY register 2679 * e1000_read_phy_reg_hv - Read HV PHY register
2680 * @hw: pointer to the HW structure
2681 * @offset: register offset to be read
2682 * @data: pointer to the read data
2683 *
2684 * Acquires semaphore then reads the PHY register at offset and stores
2685 * the retrieved information in data. Release the acquired semaphore
2686 * before exiting.
2687 **/
2688s32 e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data)
2689{
2690 return __e1000_read_phy_reg_hv(hw, offset, data, false);
2691}
2692
2693/**
2694 * e1000_read_phy_reg_hv_locked - Read HV PHY register
2695 * @hw: pointer to the HW structure
2696 * @offset: register offset to be read
2697 * @data: pointer to the read data
2698 *
2699 * Reads the PHY register at offset and stores the retrieved information
2700 * in data. Assumes semaphore already acquired.
2701 **/
2702s32 e1000_read_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset, u16 *data)
2703{
2704 return __e1000_read_phy_reg_hv(hw, offset, data, true);
2705}
2706
2707/**
2708 * __e1000_write_phy_reg_hv - Write HV PHY register
2554 * @hw: pointer to the HW structure 2709 * @hw: pointer to the HW structure
2555 * @offset: register offset to write to 2710 * @offset: register offset to write to
2556 * @data: data to write at register offset 2711 * @data: data to write at register offset
2712 * @locked: semaphore has already been acquired or not
2557 * 2713 *
2558 * Acquires semaphore, if necessary, then writes the data to PHY register 2714 * Acquires semaphore, if necessary, then writes the data to PHY register
2559 * at the offset. Release any acquired semaphores before exiting. 2715 * at the offset. Release any acquired semaphores before exiting.
2560 **/ 2716 **/
2561s32 e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data) 2717static s32 __e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data,
2718 bool locked)
2562{ 2719{
2563 s32 ret_val; 2720 s32 ret_val;
2564 u16 page = BM_PHY_REG_PAGE(offset); 2721 u16 page = BM_PHY_REG_PAGE(offset);
2565 u16 reg = BM_PHY_REG_NUM(offset); 2722 u16 reg = BM_PHY_REG_NUM(offset);
2566 bool in_slow_mode = false; 2723 bool in_slow_mode = false;
2567 2724
2725 if (!locked) {
2726 ret_val = hw->phy.ops.acquire_phy(hw);
2727 if (ret_val)
2728 return ret_val;
2729 }
2730
2568 /* Workaround failure in MDIO access while cable is disconnected */ 2731 /* Workaround failure in MDIO access while cable is disconnected */
2569 if ((hw->phy.type == e1000_phy_82577) && 2732 if ((hw->phy.type == e1000_phy_82577) &&
2570 !(er32(STATUS) & E1000_STATUS_LU)) { 2733 !(er32(STATUS) & E1000_STATUS_LU)) {
@@ -2588,10 +2751,6 @@ s32 e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data)
2588 goto out; 2751 goto out;
2589 } 2752 }
2590 2753
2591 ret_val = hw->phy.ops.acquire_phy(hw);
2592 if (ret_val)
2593 goto out;
2594
2595 hw->phy.addr = e1000_get_phy_addr_for_hv_page(page); 2754 hw->phy.addr = e1000_get_phy_addr_for_hv_page(page);
2596 2755
2597 if (page == HV_INTC_FC_PAGE_START) 2756 if (page == HV_INTC_FC_PAGE_START)
@@ -2607,50 +2766,70 @@ s32 e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data)
2607 ((MAX_PHY_REG_ADDRESS & reg) == 0) && 2766 ((MAX_PHY_REG_ADDRESS & reg) == 0) &&
2608 (data & (1 << 11))) { 2767 (data & (1 << 11))) {
2609 u16 data2 = 0x7EFF; 2768 u16 data2 = 0x7EFF;
2610 hw->phy.ops.release_phy(hw);
2611 ret_val = e1000_access_phy_debug_regs_hv(hw, (1 << 6) | 0x3, 2769 ret_val = e1000_access_phy_debug_regs_hv(hw, (1 << 6) | 0x3,
2612 &data2, false); 2770 &data2, false);
2613 if (ret_val) 2771 if (ret_val)
2614 goto out; 2772 goto out;
2615
2616 ret_val = hw->phy.ops.acquire_phy(hw);
2617 if (ret_val)
2618 goto out;
2619 } 2773 }
2620 2774
2621 if (reg > MAX_PHY_MULTI_PAGE_REG) { 2775 if (reg > MAX_PHY_MULTI_PAGE_REG) {
2622 if ((hw->phy.type != e1000_phy_82578) || 2776 u32 phy_addr = hw->phy.addr;
2623 ((reg != I82578_ADDR_REG) && 2777
2624 (reg != I82578_ADDR_REG + 1))) { 2778 hw->phy.addr = 1;
2625 u32 phy_addr = hw->phy.addr; 2779
2626 2780 /* Page is shifted left, PHY expects (page x 32) */
2627 hw->phy.addr = 1; 2781 ret_val = e1000e_write_phy_reg_mdic(hw,
2628 2782 IGP01E1000_PHY_PAGE_SELECT,
2629 /* Page is shifted left, PHY expects (page x 32) */ 2783 (page << IGP_PAGE_SHIFT));
2630 ret_val = e1000e_write_phy_reg_mdic(hw, 2784 hw->phy.addr = phy_addr;
2631 IGP01E1000_PHY_PAGE_SELECT, 2785
2632 (page << IGP_PAGE_SHIFT)); 2786 if (ret_val)
2633 if (ret_val) { 2787 goto out;
2634 hw->phy.ops.release_phy(hw);
2635 goto out;
2636 }
2637 hw->phy.addr = phy_addr;
2638 }
2639 } 2788 }
2640 2789
2641 ret_val = e1000e_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & reg, 2790 ret_val = e1000e_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & reg,
2642 data); 2791 data);
2643 hw->phy.ops.release_phy(hw);
2644 2792
2645out: 2793out:
2646 /* Revert to MDIO fast mode, if applicable */ 2794 /* Revert to MDIO fast mode, if applicable */
2647 if ((hw->phy.type == e1000_phy_82577) && in_slow_mode) 2795 if ((hw->phy.type == e1000_phy_82577) && in_slow_mode)
2648 ret_val = e1000_set_mdio_slow_mode_hv(hw, false); 2796 ret_val |= e1000_set_mdio_slow_mode_hv(hw, false);
2797
2798 if (!locked)
2799 hw->phy.ops.release_phy(hw);
2649 2800
2650 return ret_val; 2801 return ret_val;
2651} 2802}
2652 2803
2653/** 2804/**
2805 * e1000_write_phy_reg_hv - Write HV PHY register
2806 * @hw: pointer to the HW structure
2807 * @offset: register offset to write to
2808 * @data: data to write at register offset
2809 *
2810 * Acquires semaphore then writes the data to PHY register at the offset.
2811 * Release the acquired semaphores before exiting.
2812 **/
2813s32 e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data)
2814{
2815 return __e1000_write_phy_reg_hv(hw, offset, data, false);
2816}
2817
2818/**
2819 * e1000_write_phy_reg_hv_locked - Write HV PHY register
2820 * @hw: pointer to the HW structure
2821 * @offset: register offset to write to
2822 * @data: data to write at register offset
2823 *
2824 * Writes the data to PHY register at the offset. Assumes semaphore
2825 * already acquired.
2826 **/
2827s32 e1000_write_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset, u16 data)
2828{
2829 return __e1000_write_phy_reg_hv(hw, offset, data, true);
2830}
2831
2832/**
2654 * e1000_get_phy_addr_for_hv_page - Get PHY adrress based on page 2833 * e1000_get_phy_addr_for_hv_page - Get PHY adrress based on page
2655 * @page: page to be accessed 2834 * @page: page to be accessed
2656 **/ 2835 **/
@@ -2671,10 +2850,9 @@ static u32 e1000_get_phy_addr_for_hv_page(u32 page)
2671 * @data: pointer to the data to be read or written 2850 * @data: pointer to the data to be read or written
2672 * @read: determines if operation is read or written 2851 * @read: determines if operation is read or written
2673 * 2852 *
2674 * Acquires semaphore, if necessary, then reads the PHY register at offset 2853 * Reads the PHY register at offset and stores the retreived information
2675 * and storing the retreived information in data. Release any acquired 2854 * in data. Assumes semaphore already acquired. Note that the procedure
2676 * semaphores before exiting. Note that the procedure to read these regs 2855 * to read these regs uses the address port and data port to read/write.
2677 * uses the address port and data port to read/write.
2678 **/ 2856 **/
2679static s32 e1000_access_phy_debug_regs_hv(struct e1000_hw *hw, u32 offset, 2857static s32 e1000_access_phy_debug_regs_hv(struct e1000_hw *hw, u32 offset,
2680 u16 *data, bool read) 2858 u16 *data, bool read)
@@ -2682,20 +2860,12 @@ static s32 e1000_access_phy_debug_regs_hv(struct e1000_hw *hw, u32 offset,
2682 s32 ret_val; 2860 s32 ret_val;
2683 u32 addr_reg = 0; 2861 u32 addr_reg = 0;
2684 u32 data_reg = 0; 2862 u32 data_reg = 0;
2685 u8 phy_acquired = 1;
2686 2863
2687 /* This takes care of the difference with desktop vs mobile phy */ 2864 /* This takes care of the difference with desktop vs mobile phy */
2688 addr_reg = (hw->phy.type == e1000_phy_82578) ? 2865 addr_reg = (hw->phy.type == e1000_phy_82578) ?
2689 I82578_ADDR_REG : I82577_ADDR_REG; 2866 I82578_ADDR_REG : I82577_ADDR_REG;
2690 data_reg = addr_reg + 1; 2867 data_reg = addr_reg + 1;
2691 2868
2692 ret_val = hw->phy.ops.acquire_phy(hw);
2693 if (ret_val) {
2694 hw_dbg(hw, "Could not acquire PHY\n");
2695 phy_acquired = 0;
2696 goto out;
2697 }
2698
2699 /* All operations in this function are phy address 2 */ 2869 /* All operations in this function are phy address 2 */
2700 hw->phy.addr = 2; 2870 hw->phy.addr = 2;
2701 2871
@@ -2718,8 +2888,6 @@ static s32 e1000_access_phy_debug_regs_hv(struct e1000_hw *hw, u32 offset,
2718 } 2888 }
2719 2889
2720out: 2890out:
2721 if (phy_acquired == 1)
2722 hw->phy.ops.release_phy(hw);
2723 return ret_val; 2891 return ret_val;
2724} 2892}
2725 2893
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
index e1da4666f204..3116601dbfea 100644
--- a/drivers/net/forcedeth.c
+++ b/drivers/net/forcedeth.c
@@ -5821,10 +5821,7 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
5821 dev->dev_addr); 5821 dev->dev_addr);
5822 dev_printk(KERN_ERR, &pci_dev->dev, 5822 dev_printk(KERN_ERR, &pci_dev->dev,
5823 "Please complain to your hardware vendor. Switching to a random MAC.\n"); 5823 "Please complain to your hardware vendor. Switching to a random MAC.\n");
5824 dev->dev_addr[0] = 0x00; 5824 random_ether_addr(dev->dev_addr);
5825 dev->dev_addr[1] = 0x00;
5826 dev->dev_addr[2] = 0x6c;
5827 get_random_bytes(&dev->dev_addr[3], 3);
5828 } 5825 }
5829 5826
5830 dprintk(KERN_DEBUG "%s: MAC Address %pM\n", 5827 dprintk(KERN_DEBUG "%s: MAC Address %pM\n",
diff --git a/drivers/net/fsl_pq_mdio.c b/drivers/net/fsl_pq_mdio.c
index 6ac464866972..efbf67689eca 100644
--- a/drivers/net/fsl_pq_mdio.c
+++ b/drivers/net/fsl_pq_mdio.c
@@ -427,3 +427,4 @@ void fsl_pq_mdio_exit(void)
427 of_unregister_platform_driver(&fsl_pq_mdio_driver); 427 of_unregister_platform_driver(&fsl_pq_mdio_driver);
428} 428}
429module_exit(fsl_pq_mdio_exit); 429module_exit(fsl_pq_mdio_exit);
430MODULE_LICENSE("GPL");
diff --git a/drivers/net/ibm_newemac/emac.h b/drivers/net/ibm_newemac/emac.h
index d34adf99fc6a..8a61b597a169 100644
--- a/drivers/net/ibm_newemac/emac.h
+++ b/drivers/net/ibm_newemac/emac.h
@@ -263,8 +263,8 @@ struct emac_regs {
263 263
264 264
265/* EMACx_TRTR */ 265/* EMACx_TRTR */
266#define EMAC_TRTR_SHIFT_EMAC4 27 266#define EMAC_TRTR_SHIFT_EMAC4 24
267#define EMAC_TRTR_SHIFT 24 267#define EMAC_TRTR_SHIFT 27
268 268
269/* EMAC specific TX descriptor control fields (write access) */ 269/* EMAC specific TX descriptor control fields (write access) */
270#define EMAC_TX_CTRL_GFCS 0x0200 270#define EMAC_TX_CTRL_GFCS 0x0200
diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c
index 801f088c134f..030913f8bd26 100644
--- a/drivers/net/ifb.c
+++ b/drivers/net/ifb.c
@@ -98,12 +98,13 @@ static void ri_tasklet(unsigned long dev)
98 stats->tx_packets++; 98 stats->tx_packets++;
99 stats->tx_bytes +=skb->len; 99 stats->tx_bytes +=skb->len;
100 100
101 skb->dev = __dev_get_by_index(&init_net, skb->iif); 101 skb->dev = dev_get_by_index(&init_net, skb->iif);
102 if (!skb->dev) { 102 if (!skb->dev) {
103 dev_kfree_skb(skb); 103 dev_kfree_skb(skb);
104 stats->tx_dropped++; 104 stats->tx_dropped++;
105 break; 105 break;
106 } 106 }
107 dev_put(skb->dev);
107 skb->iif = _dev->ifindex; 108 skb->iif = _dev->ifindex;
108 109
109 if (from & AT_EGRESS) { 110 if (from & AT_EGRESS) {
diff --git a/drivers/net/igb/igb_ethtool.c b/drivers/net/igb/igb_ethtool.c
index deaea8fa1032..b243ed3b0c36 100644
--- a/drivers/net/igb/igb_ethtool.c
+++ b/drivers/net/igb/igb_ethtool.c
@@ -732,7 +732,7 @@ static int igb_set_ringparam(struct net_device *netdev,
732{ 732{
733 struct igb_adapter *adapter = netdev_priv(netdev); 733 struct igb_adapter *adapter = netdev_priv(netdev);
734 struct igb_ring *temp_ring; 734 struct igb_ring *temp_ring;
735 int i, err; 735 int i, err = 0;
736 u32 new_rx_count, new_tx_count; 736 u32 new_rx_count, new_tx_count;
737 737
738 if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending)) 738 if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending))
@@ -752,18 +752,30 @@ static int igb_set_ringparam(struct net_device *netdev,
752 return 0; 752 return 0;
753 } 753 }
754 754
755 while (test_and_set_bit(__IGB_RESETTING, &adapter->state))
756 msleep(1);
757
758 if (!netif_running(adapter->netdev)) {
759 for (i = 0; i < adapter->num_tx_queues; i++)
760 adapter->tx_ring[i].count = new_tx_count;
761 for (i = 0; i < adapter->num_rx_queues; i++)
762 adapter->rx_ring[i].count = new_rx_count;
763 adapter->tx_ring_count = new_tx_count;
764 adapter->rx_ring_count = new_rx_count;
765 goto clear_reset;
766 }
767
755 if (adapter->num_tx_queues > adapter->num_rx_queues) 768 if (adapter->num_tx_queues > adapter->num_rx_queues)
756 temp_ring = vmalloc(adapter->num_tx_queues * sizeof(struct igb_ring)); 769 temp_ring = vmalloc(adapter->num_tx_queues * sizeof(struct igb_ring));
757 else 770 else
758 temp_ring = vmalloc(adapter->num_rx_queues * sizeof(struct igb_ring)); 771 temp_ring = vmalloc(adapter->num_rx_queues * sizeof(struct igb_ring));
759 if (!temp_ring)
760 return -ENOMEM;
761 772
762 while (test_and_set_bit(__IGB_RESETTING, &adapter->state)) 773 if (!temp_ring) {
763 msleep(1); 774 err = -ENOMEM;
775 goto clear_reset;
776 }
764 777
765 if (netif_running(adapter->netdev)) 778 igb_down(adapter);
766 igb_down(adapter);
767 779
768 /* 780 /*
769 * We can't just free everything and then setup again, 781 * We can't just free everything and then setup again,
@@ -820,14 +832,11 @@ static int igb_set_ringparam(struct net_device *netdev,
820 832
821 adapter->rx_ring_count = new_rx_count; 833 adapter->rx_ring_count = new_rx_count;
822 } 834 }
823
824 err = 0;
825err_setup: 835err_setup:
826 if (netif_running(adapter->netdev)) 836 igb_up(adapter);
827 igb_up(adapter);
828
829 clear_bit(__IGB_RESETTING, &adapter->state);
830 vfree(temp_ring); 837 vfree(temp_ring);
838clear_reset:
839 clear_bit(__IGB_RESETTING, &adapter->state);
831 return err; 840 return err;
832} 841}
833 842
diff --git a/drivers/net/igbvf/ethtool.c b/drivers/net/igbvf/ethtool.c
index ee17a097d1ca..c68265bd0d1a 100644
--- a/drivers/net/igbvf/ethtool.c
+++ b/drivers/net/igbvf/ethtool.c
@@ -279,7 +279,7 @@ static int igbvf_set_ringparam(struct net_device *netdev,
279{ 279{
280 struct igbvf_adapter *adapter = netdev_priv(netdev); 280 struct igbvf_adapter *adapter = netdev_priv(netdev);
281 struct igbvf_ring *temp_ring; 281 struct igbvf_ring *temp_ring;
282 int err; 282 int err = 0;
283 u32 new_rx_count, new_tx_count; 283 u32 new_rx_count, new_tx_count;
284 284
285 if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending)) 285 if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending))
@@ -299,15 +299,22 @@ static int igbvf_set_ringparam(struct net_device *netdev,
299 return 0; 299 return 0;
300 } 300 }
301 301
302 temp_ring = vmalloc(sizeof(struct igbvf_ring));
303 if (!temp_ring)
304 return -ENOMEM;
305
306 while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state)) 302 while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state))
307 msleep(1); 303 msleep(1);
308 304
309 if (netif_running(adapter->netdev)) 305 if (!netif_running(adapter->netdev)) {
310 igbvf_down(adapter); 306 adapter->tx_ring->count = new_tx_count;
307 adapter->rx_ring->count = new_rx_count;
308 goto clear_reset;
309 }
310
311 temp_ring = vmalloc(sizeof(struct igbvf_ring));
312 if (!temp_ring) {
313 err = -ENOMEM;
314 goto clear_reset;
315 }
316
317 igbvf_down(adapter);
311 318
312 /* 319 /*
313 * We can't just free everything and then setup again, 320 * We can't just free everything and then setup again,
@@ -339,14 +346,11 @@ static int igbvf_set_ringparam(struct net_device *netdev,
339 346
340 memcpy(adapter->rx_ring, temp_ring,sizeof(struct igbvf_ring)); 347 memcpy(adapter->rx_ring, temp_ring,sizeof(struct igbvf_ring));
341 } 348 }
342
343 err = 0;
344err_setup: 349err_setup:
345 if (netif_running(adapter->netdev)) 350 igbvf_up(adapter);
346 igbvf_up(adapter);
347
348 clear_bit(__IGBVF_RESETTING, &adapter->state);
349 vfree(temp_ring); 351 vfree(temp_ring);
352clear_reset:
353 clear_bit(__IGBVF_RESETTING, &adapter->state);
350 return err; 354 return err;
351} 355}
352 356
diff --git a/drivers/net/ixgbe/ixgbe_ethtool.c b/drivers/net/ixgbe/ixgbe_ethtool.c
index fa314cb005a4..856c18c207f3 100644
--- a/drivers/net/ixgbe/ixgbe_ethtool.c
+++ b/drivers/net/ixgbe/ixgbe_ethtool.c
@@ -798,7 +798,7 @@ static int ixgbe_set_ringparam(struct net_device *netdev,
798{ 798{
799 struct ixgbe_adapter *adapter = netdev_priv(netdev); 799 struct ixgbe_adapter *adapter = netdev_priv(netdev);
800 struct ixgbe_ring *temp_tx_ring, *temp_rx_ring; 800 struct ixgbe_ring *temp_tx_ring, *temp_rx_ring;
801 int i, err; 801 int i, err = 0;
802 u32 new_rx_count, new_tx_count; 802 u32 new_rx_count, new_tx_count;
803 bool need_update = false; 803 bool need_update = false;
804 804
@@ -822,6 +822,16 @@ static int ixgbe_set_ringparam(struct net_device *netdev,
822 while (test_and_set_bit(__IXGBE_RESETTING, &adapter->state)) 822 while (test_and_set_bit(__IXGBE_RESETTING, &adapter->state))
823 msleep(1); 823 msleep(1);
824 824
825 if (!netif_running(adapter->netdev)) {
826 for (i = 0; i < adapter->num_tx_queues; i++)
827 adapter->tx_ring[i].count = new_tx_count;
828 for (i = 0; i < adapter->num_rx_queues; i++)
829 adapter->rx_ring[i].count = new_rx_count;
830 adapter->tx_ring_count = new_tx_count;
831 adapter->rx_ring_count = new_rx_count;
832 goto err_setup;
833 }
834
825 temp_tx_ring = kcalloc(adapter->num_tx_queues, 835 temp_tx_ring = kcalloc(adapter->num_tx_queues,
826 sizeof(struct ixgbe_ring), GFP_KERNEL); 836 sizeof(struct ixgbe_ring), GFP_KERNEL);
827 if (!temp_tx_ring) { 837 if (!temp_tx_ring) {
@@ -879,8 +889,7 @@ static int ixgbe_set_ringparam(struct net_device *netdev,
879 889
880 /* if rings need to be updated, here's the place to do it in one shot */ 890 /* if rings need to be updated, here's the place to do it in one shot */
881 if (need_update) { 891 if (need_update) {
882 if (netif_running(netdev)) 892 ixgbe_down(adapter);
883 ixgbe_down(adapter);
884 893
885 /* tx */ 894 /* tx */
886 if (new_tx_count != adapter->tx_ring_count) { 895 if (new_tx_count != adapter->tx_ring_count) {
@@ -897,13 +906,8 @@ static int ixgbe_set_ringparam(struct net_device *netdev,
897 temp_rx_ring = NULL; 906 temp_rx_ring = NULL;
898 adapter->rx_ring_count = new_rx_count; 907 adapter->rx_ring_count = new_rx_count;
899 } 908 }
900 }
901
902 /* success! */
903 err = 0;
904 if (netif_running(netdev))
905 ixgbe_up(adapter); 909 ixgbe_up(adapter);
906 910 }
907err_setup: 911err_setup:
908 clear_bit(__IXGBE_RESETTING, &adapter->state); 912 clear_bit(__IXGBE_RESETTING, &adapter->state);
909 return err; 913 return err;
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index cbb143ca1eb8..a456578b8578 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -44,6 +44,7 @@
44 44
45#include "ixgbe.h" 45#include "ixgbe.h"
46#include "ixgbe_common.h" 46#include "ixgbe_common.h"
47#include "ixgbe_dcb_82599.h"
47 48
48char ixgbe_driver_name[] = "ixgbe"; 49char ixgbe_driver_name[] = "ixgbe";
49static const char ixgbe_driver_string[] = 50static const char ixgbe_driver_string[] =
@@ -226,6 +227,56 @@ static void ixgbe_unmap_and_free_tx_resource(struct ixgbe_adapter *adapter,
226 /* tx_buffer_info must be completely set up in the transmit path */ 227 /* tx_buffer_info must be completely set up in the transmit path */
227} 228}
228 229
230/**
231 * ixgbe_tx_is_paused - check if the tx ring is paused
232 * @adapter: the ixgbe adapter
233 * @tx_ring: the corresponding tx_ring
234 *
235 * If not in DCB mode, checks TFCS.TXOFF, otherwise, find out the
236 * corresponding TC of this tx_ring when checking TFCS.
237 *
238 * Returns : true if paused
239 */
240static inline bool ixgbe_tx_is_paused(struct ixgbe_adapter *adapter,
241 struct ixgbe_ring *tx_ring)
242{
243 u32 txoff = IXGBE_TFCS_TXOFF;
244
245#ifdef CONFIG_IXGBE_DCB
246 if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) {
247 int tc;
248 int reg_idx = tx_ring->reg_idx;
249 int dcb_i = adapter->ring_feature[RING_F_DCB].indices;
250
251 if (adapter->hw.mac.type == ixgbe_mac_82598EB) {
252 tc = reg_idx >> 2;
253 txoff = IXGBE_TFCS_TXOFF0;
254 } else if (adapter->hw.mac.type == ixgbe_mac_82599EB) {
255 tc = 0;
256 txoff = IXGBE_TFCS_TXOFF;
257 if (dcb_i == 8) {
258 /* TC0, TC1 */
259 tc = reg_idx >> 5;
260 if (tc == 2) /* TC2, TC3 */
261 tc += (reg_idx - 64) >> 4;
262 else if (tc == 3) /* TC4, TC5, TC6, TC7 */
263 tc += 1 + ((reg_idx - 96) >> 3);
264 } else if (dcb_i == 4) {
265 /* TC0, TC1 */
266 tc = reg_idx >> 6;
267 if (tc == 1) {
268 tc += (reg_idx - 64) >> 5;
269 if (tc == 2) /* TC2, TC3 */
270 tc += (reg_idx - 96) >> 4;
271 }
272 }
273 }
274 txoff <<= tc;
275 }
276#endif
277 return IXGBE_READ_REG(&adapter->hw, IXGBE_TFCS) & txoff;
278}
279
229static inline bool ixgbe_check_tx_hang(struct ixgbe_adapter *adapter, 280static inline bool ixgbe_check_tx_hang(struct ixgbe_adapter *adapter,
230 struct ixgbe_ring *tx_ring, 281 struct ixgbe_ring *tx_ring,
231 unsigned int eop) 282 unsigned int eop)
@@ -237,7 +288,7 @@ static inline bool ixgbe_check_tx_hang(struct ixgbe_adapter *adapter,
237 adapter->detect_tx_hung = false; 288 adapter->detect_tx_hung = false;
238 if (tx_ring->tx_buffer_info[eop].time_stamp && 289 if (tx_ring->tx_buffer_info[eop].time_stamp &&
239 time_after(jiffies, tx_ring->tx_buffer_info[eop].time_stamp + HZ) && 290 time_after(jiffies, tx_ring->tx_buffer_info[eop].time_stamp + HZ) &&
240 !(IXGBE_READ_REG(&adapter->hw, IXGBE_TFCS) & IXGBE_TFCS_TXOFF)) { 291 !ixgbe_tx_is_paused(adapter, tx_ring)) {
241 /* detected Tx unit hang */ 292 /* detected Tx unit hang */
242 union ixgbe_adv_tx_desc *tx_desc; 293 union ixgbe_adv_tx_desc *tx_desc;
243 tx_desc = IXGBE_TX_DESC_ADV(*tx_ring, eop); 294 tx_desc = IXGBE_TX_DESC_ADV(*tx_ring, eop);
@@ -412,19 +463,23 @@ static void ixgbe_update_tx_dca(struct ixgbe_adapter *adapter,
412 u32 txctrl; 463 u32 txctrl;
413 int cpu = get_cpu(); 464 int cpu = get_cpu();
414 int q = tx_ring - adapter->tx_ring; 465 int q = tx_ring - adapter->tx_ring;
466 struct ixgbe_hw *hw = &adapter->hw;
415 467
416 if (tx_ring->cpu != cpu) { 468 if (tx_ring->cpu != cpu) {
417 txctrl = IXGBE_READ_REG(&adapter->hw, IXGBE_DCA_TXCTRL(q));
418 if (adapter->hw.mac.type == ixgbe_mac_82598EB) { 469 if (adapter->hw.mac.type == ixgbe_mac_82598EB) {
470 txctrl = IXGBE_READ_REG(hw, IXGBE_DCA_TXCTRL(q));
419 txctrl &= ~IXGBE_DCA_TXCTRL_CPUID_MASK; 471 txctrl &= ~IXGBE_DCA_TXCTRL_CPUID_MASK;
420 txctrl |= dca3_get_tag(&adapter->pdev->dev, cpu); 472 txctrl |= dca3_get_tag(&adapter->pdev->dev, cpu);
473 txctrl |= IXGBE_DCA_TXCTRL_DESC_DCA_EN;
474 IXGBE_WRITE_REG(hw, IXGBE_DCA_TXCTRL(q), txctrl);
421 } else if (adapter->hw.mac.type == ixgbe_mac_82599EB) { 475 } else if (adapter->hw.mac.type == ixgbe_mac_82599EB) {
476 txctrl = IXGBE_READ_REG(hw, IXGBE_DCA_TXCTRL_82599(q));
422 txctrl &= ~IXGBE_DCA_TXCTRL_CPUID_MASK_82599; 477 txctrl &= ~IXGBE_DCA_TXCTRL_CPUID_MASK_82599;
423 txctrl |= (dca3_get_tag(&adapter->pdev->dev, cpu) << 478 txctrl |= (dca3_get_tag(&adapter->pdev->dev, cpu) <<
424 IXGBE_DCA_TXCTRL_CPUID_SHIFT_82599); 479 IXGBE_DCA_TXCTRL_CPUID_SHIFT_82599);
480 txctrl |= IXGBE_DCA_TXCTRL_DESC_DCA_EN;
481 IXGBE_WRITE_REG(hw, IXGBE_DCA_TXCTRL_82599(q), txctrl);
425 } 482 }
426 txctrl |= IXGBE_DCA_TXCTRL_DESC_DCA_EN;
427 IXGBE_WRITE_REG(&adapter->hw, IXGBE_DCA_TXCTRL(q), txctrl);
428 tx_ring->cpu = cpu; 483 tx_ring->cpu = cpu;
429 } 484 }
430 put_cpu(); 485 put_cpu();
@@ -1913,11 +1968,25 @@ static void ixgbe_configure_tx(struct ixgbe_adapter *adapter)
1913 break; 1968 break;
1914 } 1969 }
1915 } 1970 }
1971
1916 if (hw->mac.type == ixgbe_mac_82599EB) { 1972 if (hw->mac.type == ixgbe_mac_82599EB) {
1973 u32 rttdcs;
1974
1975 /* disable the arbiter while setting MTQC */
1976 rttdcs = IXGBE_READ_REG(hw, IXGBE_RTTDCS);
1977 rttdcs |= IXGBE_RTTDCS_ARBDIS;
1978 IXGBE_WRITE_REG(hw, IXGBE_RTTDCS, rttdcs);
1979
1917 /* We enable 8 traffic classes, DCB only */ 1980 /* We enable 8 traffic classes, DCB only */
1918 if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) 1981 if (adapter->flags & IXGBE_FLAG_DCB_ENABLED)
1919 IXGBE_WRITE_REG(hw, IXGBE_MTQC, (IXGBE_MTQC_RT_ENA | 1982 IXGBE_WRITE_REG(hw, IXGBE_MTQC, (IXGBE_MTQC_RT_ENA |
1920 IXGBE_MTQC_8TC_8TQ)); 1983 IXGBE_MTQC_8TC_8TQ));
1984 else
1985 IXGBE_WRITE_REG(hw, IXGBE_MTQC, IXGBE_MTQC_64Q_1PB);
1986
1987 /* re-eable the arbiter */
1988 rttdcs &= ~IXGBE_RTTDCS_ARBDIS;
1989 IXGBE_WRITE_REG(hw, IXGBE_RTTDCS, rttdcs);
1921 } 1990 }
1922} 1991}
1923 1992
@@ -2471,7 +2540,10 @@ static void ixgbe_configure(struct ixgbe_adapter *adapter)
2471 ixgbe_restore_vlan(adapter); 2540 ixgbe_restore_vlan(adapter);
2472#ifdef CONFIG_IXGBE_DCB 2541#ifdef CONFIG_IXGBE_DCB
2473 if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) { 2542 if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) {
2474 netif_set_gso_max_size(netdev, 32768); 2543 if (hw->mac.type == ixgbe_mac_82598EB)
2544 netif_set_gso_max_size(netdev, 32768);
2545 else
2546 netif_set_gso_max_size(netdev, 65536);
2475 ixgbe_configure_dcb(adapter); 2547 ixgbe_configure_dcb(adapter);
2476 } else { 2548 } else {
2477 netif_set_gso_max_size(netdev, 65536); 2549 netif_set_gso_max_size(netdev, 65536);
@@ -5922,6 +5994,7 @@ static pci_ers_result_t ixgbe_io_slot_reset(struct pci_dev *pdev)
5922 } else { 5994 } else {
5923 pci_set_master(pdev); 5995 pci_set_master(pdev);
5924 pci_restore_state(pdev); 5996 pci_restore_state(pdev);
5997 pci_save_state(pdev);
5925 5998
5926 pci_wake_from_d3(pdev, false); 5999 pci_wake_from_d3(pdev, false);
5927 6000
diff --git a/drivers/net/ks8851_mll.c b/drivers/net/ks8851_mll.c
index 0be14d702beb..c146304d8d6c 100644
--- a/drivers/net/ks8851_mll.c
+++ b/drivers/net/ks8851_mll.c
@@ -568,6 +568,16 @@ static inline void ks_outblk(struct ks_net *ks, u16 *wptr, u32 len)
568 iowrite16(*wptr++, ks->hw_addr); 568 iowrite16(*wptr++, ks->hw_addr);
569} 569}
570 570
571static void ks_disable_int(struct ks_net *ks)
572{
573 ks_wrreg16(ks, KS_IER, 0x0000);
574} /* ks_disable_int */
575
576static void ks_enable_int(struct ks_net *ks)
577{
578 ks_wrreg16(ks, KS_IER, ks->rc_ier);
579} /* ks_enable_int */
580
571/** 581/**
572 * ks_tx_fifo_space - return the available hardware buffer size. 582 * ks_tx_fifo_space - return the available hardware buffer size.
573 * @ks: The chip information 583 * @ks: The chip information
@@ -681,6 +691,47 @@ static void ks_soft_reset(struct ks_net *ks, unsigned op)
681} 691}
682 692
683 693
694void ks_enable_qmu(struct ks_net *ks)
695{
696 u16 w;
697
698 w = ks_rdreg16(ks, KS_TXCR);
699 /* Enables QMU Transmit (TXCR). */
700 ks_wrreg16(ks, KS_TXCR, w | TXCR_TXE);
701
702 /*
703 * RX Frame Count Threshold Enable and Auto-Dequeue RXQ Frame
704 * Enable
705 */
706
707 w = ks_rdreg16(ks, KS_RXQCR);
708 ks_wrreg16(ks, KS_RXQCR, w | RXQCR_RXFCTE);
709
710 /* Enables QMU Receive (RXCR1). */
711 w = ks_rdreg16(ks, KS_RXCR1);
712 ks_wrreg16(ks, KS_RXCR1, w | RXCR1_RXE);
713 ks->enabled = true;
714} /* ks_enable_qmu */
715
716static void ks_disable_qmu(struct ks_net *ks)
717{
718 u16 w;
719
720 w = ks_rdreg16(ks, KS_TXCR);
721
722 /* Disables QMU Transmit (TXCR). */
723 w &= ~TXCR_TXE;
724 ks_wrreg16(ks, KS_TXCR, w);
725
726 /* Disables QMU Receive (RXCR1). */
727 w = ks_rdreg16(ks, KS_RXCR1);
728 w &= ~RXCR1_RXE ;
729 ks_wrreg16(ks, KS_RXCR1, w);
730
731 ks->enabled = false;
732
733} /* ks_disable_qmu */
734
684/** 735/**
685 * ks_read_qmu - read 1 pkt data from the QMU. 736 * ks_read_qmu - read 1 pkt data from the QMU.
686 * @ks: The chip information 737 * @ks: The chip information
@@ -752,7 +803,7 @@ static void ks_rcv(struct ks_net *ks, struct net_device *netdev)
752 (frame_hdr->len < RX_BUF_SIZE) && frame_hdr->len)) { 803 (frame_hdr->len < RX_BUF_SIZE) && frame_hdr->len)) {
753 skb_reserve(skb, 2); 804 skb_reserve(skb, 2);
754 /* read data block including CRC 4 bytes */ 805 /* read data block including CRC 4 bytes */
755 ks_read_qmu(ks, (u16 *)skb->data, frame_hdr->len + 4); 806 ks_read_qmu(ks, (u16 *)skb->data, frame_hdr->len);
756 skb_put(skb, frame_hdr->len); 807 skb_put(skb, frame_hdr->len);
757 skb->dev = netdev; 808 skb->dev = netdev;
758 skb->protocol = eth_type_trans(skb, netdev); 809 skb->protocol = eth_type_trans(skb, netdev);
@@ -861,7 +912,7 @@ static int ks_net_open(struct net_device *netdev)
861 ks_dbg(ks, "%s - entry\n", __func__); 912 ks_dbg(ks, "%s - entry\n", __func__);
862 913
863 /* reset the HW */ 914 /* reset the HW */
864 err = request_irq(ks->irq, ks_irq, KS_INT_FLAGS, DRV_NAME, ks); 915 err = request_irq(ks->irq, ks_irq, KS_INT_FLAGS, DRV_NAME, netdev);
865 916
866 if (err) { 917 if (err) {
867 printk(KERN_ERR "Failed to request IRQ: %d: %d\n", 918 printk(KERN_ERR "Failed to request IRQ: %d: %d\n",
@@ -869,6 +920,15 @@ static int ks_net_open(struct net_device *netdev)
869 return err; 920 return err;
870 } 921 }
871 922
923 /* wake up powermode to normal mode */
924 ks_set_powermode(ks, PMECR_PM_NORMAL);
925 mdelay(1); /* wait for normal mode to take effect */
926
927 ks_wrreg16(ks, KS_ISR, 0xffff);
928 ks_enable_int(ks);
929 ks_enable_qmu(ks);
930 netif_start_queue(ks->netdev);
931
872 if (netif_msg_ifup(ks)) 932 if (netif_msg_ifup(ks))
873 ks_dbg(ks, "network device %s up\n", netdev->name); 933 ks_dbg(ks, "network device %s up\n", netdev->name);
874 934
@@ -892,19 +952,14 @@ static int ks_net_stop(struct net_device *netdev)
892 952
893 netif_stop_queue(netdev); 953 netif_stop_queue(netdev);
894 954
895 kfree(ks->frame_head_info);
896
897 mutex_lock(&ks->lock); 955 mutex_lock(&ks->lock);
898 956
899 /* turn off the IRQs and ack any outstanding */ 957 /* turn off the IRQs and ack any outstanding */
900 ks_wrreg16(ks, KS_IER, 0x0000); 958 ks_wrreg16(ks, KS_IER, 0x0000);
901 ks_wrreg16(ks, KS_ISR, 0xffff); 959 ks_wrreg16(ks, KS_ISR, 0xffff);
902 960
903 /* shutdown RX process */ 961 /* shutdown RX/TX QMU */
904 ks_wrreg16(ks, KS_RXCR1, 0x0000); 962 ks_disable_qmu(ks);
905
906 /* shutdown TX process */
907 ks_wrreg16(ks, KS_TXCR, 0x0000);
908 963
909 /* set powermode to soft power down to save power */ 964 /* set powermode to soft power down to save power */
910 ks_set_powermode(ks, PMECR_PM_SOFTDOWN); 965 ks_set_powermode(ks, PMECR_PM_SOFTDOWN);
@@ -929,17 +984,8 @@ static int ks_net_stop(struct net_device *netdev)
929 */ 984 */
930static void ks_write_qmu(struct ks_net *ks, u8 *pdata, u16 len) 985static void ks_write_qmu(struct ks_net *ks, u8 *pdata, u16 len)
931{ 986{
932 unsigned fid = ks->fid;
933
934 fid = ks->fid;
935 ks->fid = (ks->fid + 1) & TXFR_TXFID_MASK;
936
937 /* reduce the tx interrupt occurrances. */
938 if (!fid)
939 fid |= TXFR_TXIC; /* irq on completion */
940
941 /* start header at txb[0] to align txw entries */ 987 /* start header at txb[0] to align txw entries */
942 ks->txh.txw[0] = cpu_to_le16(fid); 988 ks->txh.txw[0] = 0;
943 ks->txh.txw[1] = cpu_to_le16(len); 989 ks->txh.txw[1] = cpu_to_le16(len);
944 990
945 /* 1. set sudo-DMA mode */ 991 /* 1. set sudo-DMA mode */
@@ -957,16 +1003,6 @@ static void ks_write_qmu(struct ks_net *ks, u8 *pdata, u16 len)
957 ; 1003 ;
958} 1004}
959 1005
960static void ks_disable_int(struct ks_net *ks)
961{
962 ks_wrreg16(ks, KS_IER, 0x0000);
963} /* ks_disable_int */
964
965static void ks_enable_int(struct ks_net *ks)
966{
967 ks_wrreg16(ks, KS_IER, ks->rc_ier);
968} /* ks_enable_int */
969
970/** 1006/**
971 * ks_start_xmit - transmit packet 1007 * ks_start_xmit - transmit packet
972 * @skb : The buffer to transmit 1008 * @skb : The buffer to transmit
@@ -1410,25 +1446,6 @@ static int ks_read_selftest(struct ks_net *ks)
1410 return ret; 1446 return ret;
1411} 1447}
1412 1448
1413static void ks_disable(struct ks_net *ks)
1414{
1415 u16 w;
1416
1417 w = ks_rdreg16(ks, KS_TXCR);
1418
1419 /* Disables QMU Transmit (TXCR). */
1420 w &= ~TXCR_TXE;
1421 ks_wrreg16(ks, KS_TXCR, w);
1422
1423 /* Disables QMU Receive (RXCR1). */
1424 w = ks_rdreg16(ks, KS_RXCR1);
1425 w &= ~RXCR1_RXE ;
1426 ks_wrreg16(ks, KS_RXCR1, w);
1427
1428 ks->enabled = false;
1429
1430} /* ks_disable */
1431
1432static void ks_setup(struct ks_net *ks) 1449static void ks_setup(struct ks_net *ks)
1433{ 1450{
1434 u16 w; 1451 u16 w;
@@ -1463,7 +1480,7 @@ static void ks_setup(struct ks_net *ks)
1463 w = TXCR_TXFCE | TXCR_TXPE | TXCR_TXCRC | TXCR_TCGIP; 1480 w = TXCR_TXFCE | TXCR_TXPE | TXCR_TXCRC | TXCR_TCGIP;
1464 ks_wrreg16(ks, KS_TXCR, w); 1481 ks_wrreg16(ks, KS_TXCR, w);
1465 1482
1466 w = RXCR1_RXFCE | RXCR1_RXBE | RXCR1_RXUE; 1483 w = RXCR1_RXFCE | RXCR1_RXBE | RXCR1_RXUE | RXCR1_RXME | RXCR1_RXIPFCC;
1467 1484
1468 if (ks->promiscuous) /* bPromiscuous */ 1485 if (ks->promiscuous) /* bPromiscuous */
1469 w |= (RXCR1_RXAE | RXCR1_RXINVF); 1486 w |= (RXCR1_RXAE | RXCR1_RXINVF);
@@ -1486,28 +1503,6 @@ static void ks_setup_int(struct ks_net *ks)
1486 ks->rc_ier = (IRQ_LCI | IRQ_TXI | IRQ_RXI); 1503 ks->rc_ier = (IRQ_LCI | IRQ_TXI | IRQ_RXI);
1487} /* ks_setup_int */ 1504} /* ks_setup_int */
1488 1505
1489void ks_enable(struct ks_net *ks)
1490{
1491 u16 w;
1492
1493 w = ks_rdreg16(ks, KS_TXCR);
1494 /* Enables QMU Transmit (TXCR). */
1495 ks_wrreg16(ks, KS_TXCR, w | TXCR_TXE);
1496
1497 /*
1498 * RX Frame Count Threshold Enable and Auto-Dequeue RXQ Frame
1499 * Enable
1500 */
1501
1502 w = ks_rdreg16(ks, KS_RXQCR);
1503 ks_wrreg16(ks, KS_RXQCR, w | RXQCR_RXFCTE);
1504
1505 /* Enables QMU Receive (RXCR1). */
1506 w = ks_rdreg16(ks, KS_RXCR1);
1507 ks_wrreg16(ks, KS_RXCR1, w | RXCR1_RXE);
1508 ks->enabled = true;
1509} /* ks_enable */
1510
1511static int ks_hw_init(struct ks_net *ks) 1506static int ks_hw_init(struct ks_net *ks)
1512{ 1507{
1513#define MHEADER_SIZE (sizeof(struct type_frame_head) * MAX_RECV_FRAMES) 1508#define MHEADER_SIZE (sizeof(struct type_frame_head) * MAX_RECV_FRAMES)
@@ -1612,11 +1607,9 @@ static int __devinit ks8851_probe(struct platform_device *pdev)
1612 1607
1613 ks_soft_reset(ks, GRR_GSR); 1608 ks_soft_reset(ks, GRR_GSR);
1614 ks_hw_init(ks); 1609 ks_hw_init(ks);
1615 ks_disable(ks); 1610 ks_disable_qmu(ks);
1616 ks_setup(ks); 1611 ks_setup(ks);
1617 ks_setup_int(ks); 1612 ks_setup_int(ks);
1618 ks_enable_int(ks);
1619 ks_enable(ks);
1620 memcpy(netdev->dev_addr, ks->mac_addr, 6); 1613 memcpy(netdev->dev_addr, ks->mac_addr, 6);
1621 1614
1622 data = ks_rdreg16(ks, KS_OBCR); 1615 data = ks_rdreg16(ks, KS_OBCR);
@@ -1658,6 +1651,7 @@ static int __devexit ks8851_remove(struct platform_device *pdev)
1658 struct ks_net *ks = netdev_priv(netdev); 1651 struct ks_net *ks = netdev_priv(netdev);
1659 struct resource *iomem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1652 struct resource *iomem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1660 1653
1654 kfree(ks->frame_head_info);
1661 unregister_netdev(netdev); 1655 unregister_netdev(netdev);
1662 iounmap(ks->hw_addr); 1656 iounmap(ks->hw_addr);
1663 free_netdev(netdev); 1657 free_netdev(netdev);
diff --git a/drivers/net/macsonic.c b/drivers/net/macsonic.c
index 61eabcac734c..b3d7d8d77f46 100644
--- a/drivers/net/macsonic.c
+++ b/drivers/net/macsonic.c
@@ -223,69 +223,73 @@ static int __devinit macsonic_init(struct net_device *dev)
223 return 0; 223 return 0;
224} 224}
225 225
226static int __devinit mac_onboard_sonic_ethernet_addr(struct net_device *dev) 226#define INVALID_MAC(mac) (memcmp(mac, "\x08\x00\x07", 3) && \
227 memcmp(mac, "\x00\xA0\x40", 3) && \
228 memcmp(mac, "\x00\x80\x19", 3) && \
229 memcmp(mac, "\x00\x05\x02", 3))
230
231static void __devinit mac_onboard_sonic_ethernet_addr(struct net_device *dev)
227{ 232{
228 struct sonic_local *lp = netdev_priv(dev); 233 struct sonic_local *lp = netdev_priv(dev);
229 const int prom_addr = ONBOARD_SONIC_PROM_BASE; 234 const int prom_addr = ONBOARD_SONIC_PROM_BASE;
230 int i; 235 unsigned short val;
231 236
232 /* On NuBus boards we can sometimes look in the ROM resources. 237 /*
233 No such luck for comm-slot/onboard. */ 238 * On NuBus boards we can sometimes look in the ROM resources.
234 for(i = 0; i < 6; i++) 239 * No such luck for comm-slot/onboard.
235 dev->dev_addr[i] = SONIC_READ_PROM(i); 240 * On the PowerBook 520, the PROM base address is a mystery.
241 */
242 if (hwreg_present((void *)prom_addr)) {
243 int i;
244
245 for (i = 0; i < 6; i++)
246 dev->dev_addr[i] = SONIC_READ_PROM(i);
247 if (!INVALID_MAC(dev->dev_addr))
248 return;
236 249
237 /* Most of the time, the address is bit-reversed. The NetBSD 250 /*
238 source has a rather long and detailed historical account of 251 * Most of the time, the address is bit-reversed. The NetBSD
239 why this is so. */ 252 * source has a rather long and detailed historical account of
240 if (memcmp(dev->dev_addr, "\x08\x00\x07", 3) && 253 * why this is so.
241 memcmp(dev->dev_addr, "\x00\xA0\x40", 3) && 254 */
242 memcmp(dev->dev_addr, "\x00\x80\x19", 3) &&
243 memcmp(dev->dev_addr, "\x00\x05\x02", 3))
244 bit_reverse_addr(dev->dev_addr); 255 bit_reverse_addr(dev->dev_addr);
245 else 256 if (!INVALID_MAC(dev->dev_addr))
246 return 0; 257 return;
247 258
248 /* If we still have what seems to be a bogus address, we'll
249 look in the CAM. The top entry should be ours. */
250 /* Danger! This only works if MacOS has already initialized
251 the card... */
252 if (memcmp(dev->dev_addr, "\x08\x00\x07", 3) &&
253 memcmp(dev->dev_addr, "\x00\xA0\x40", 3) &&
254 memcmp(dev->dev_addr, "\x00\x80\x19", 3) &&
255 memcmp(dev->dev_addr, "\x00\x05\x02", 3))
256 {
257 unsigned short val;
258
259 printk(KERN_INFO "macsonic: PROM seems to be wrong, trying CAM entry 15\n");
260
261 SONIC_WRITE(SONIC_CMD, SONIC_CR_RST);
262 SONIC_WRITE(SONIC_CEP, 15);
263
264 val = SONIC_READ(SONIC_CAP2);
265 dev->dev_addr[5] = val >> 8;
266 dev->dev_addr[4] = val & 0xff;
267 val = SONIC_READ(SONIC_CAP1);
268 dev->dev_addr[3] = val >> 8;
269 dev->dev_addr[2] = val & 0xff;
270 val = SONIC_READ(SONIC_CAP0);
271 dev->dev_addr[1] = val >> 8;
272 dev->dev_addr[0] = val & 0xff;
273
274 printk(KERN_INFO "HW Address from CAM 15: %pM\n",
275 dev->dev_addr);
276 } else return 0;
277
278 if (memcmp(dev->dev_addr, "\x08\x00\x07", 3) &&
279 memcmp(dev->dev_addr, "\x00\xA0\x40", 3) &&
280 memcmp(dev->dev_addr, "\x00\x80\x19", 3) &&
281 memcmp(dev->dev_addr, "\x00\x05\x02", 3))
282 {
283 /* 259 /*
284 * Still nonsense ... messed up someplace! 260 * If we still have what seems to be a bogus address, we'll
261 * look in the CAM. The top entry should be ours.
285 */ 262 */
286 printk(KERN_ERR "macsonic: ERROR (INVALID MAC)\n"); 263 printk(KERN_WARNING "macsonic: MAC address in PROM seems "
287 return -EIO; 264 "to be invalid, trying CAM\n");
288 } else return 0; 265 } else {
266 printk(KERN_WARNING "macsonic: cannot read MAC address from "
267 "PROM, trying CAM\n");
268 }
269
270 /* This only works if MacOS has already initialized the card. */
271
272 SONIC_WRITE(SONIC_CMD, SONIC_CR_RST);
273 SONIC_WRITE(SONIC_CEP, 15);
274
275 val = SONIC_READ(SONIC_CAP2);
276 dev->dev_addr[5] = val >> 8;
277 dev->dev_addr[4] = val & 0xff;
278 val = SONIC_READ(SONIC_CAP1);
279 dev->dev_addr[3] = val >> 8;
280 dev->dev_addr[2] = val & 0xff;
281 val = SONIC_READ(SONIC_CAP0);
282 dev->dev_addr[1] = val >> 8;
283 dev->dev_addr[0] = val & 0xff;
284
285 if (!INVALID_MAC(dev->dev_addr))
286 return;
287
288 /* Still nonsense ... messed up someplace! */
289
290 printk(KERN_WARNING "macsonic: MAC address in CAM entry 15 "
291 "seems invalid, will use a random MAC\n");
292 random_ether_addr(dev->dev_addr);
289} 293}
290 294
291static int __devinit mac_onboard_sonic_probe(struct net_device *dev) 295static int __devinit mac_onboard_sonic_probe(struct net_device *dev)
@@ -402,8 +406,7 @@ static int __devinit mac_onboard_sonic_probe(struct net_device *dev)
402 SONIC_WRITE(SONIC_ISR, 0x7fff); 406 SONIC_WRITE(SONIC_ISR, 0x7fff);
403 407
404 /* Now look for the MAC address. */ 408 /* Now look for the MAC address. */
405 if (mac_onboard_sonic_ethernet_addr(dev) != 0) 409 mac_onboard_sonic_ethernet_addr(dev);
406 return -ENODEV;
407 410
408 /* Shared init code */ 411 /* Shared init code */
409 return macsonic_init(dev); 412 return macsonic_init(dev);
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 3aabfd9dd212..2490aa39804c 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -360,6 +360,7 @@ static int macvlan_init(struct net_device *dev)
360 dev->state = (dev->state & ~MACVLAN_STATE_MASK) | 360 dev->state = (dev->state & ~MACVLAN_STATE_MASK) |
361 (lowerdev->state & MACVLAN_STATE_MASK); 361 (lowerdev->state & MACVLAN_STATE_MASK);
362 dev->features = lowerdev->features & MACVLAN_FEATURES; 362 dev->features = lowerdev->features & MACVLAN_FEATURES;
363 dev->gso_max_size = lowerdev->gso_max_size;
363 dev->iflink = lowerdev->ifindex; 364 dev->iflink = lowerdev->ifindex;
364 dev->hard_header_len = lowerdev->hard_header_len; 365 dev->hard_header_len = lowerdev->hard_header_len;
365 366
@@ -596,6 +597,7 @@ static int macvlan_device_event(struct notifier_block *unused,
596 case NETDEV_FEAT_CHANGE: 597 case NETDEV_FEAT_CHANGE:
597 list_for_each_entry(vlan, &port->vlans, list) { 598 list_for_each_entry(vlan, &port->vlans, list) {
598 vlan->dev->features = dev->features & MACVLAN_FEATURES; 599 vlan->dev->features = dev->features & MACVLAN_FEATURES;
600 vlan->dev->gso_max_size = dev->gso_max_size;
599 netdev_features_change(vlan->dev); 601 netdev_features_change(vlan->dev);
600 } 602 }
601 break; 603 break;
diff --git a/drivers/net/mlx4/main.c b/drivers/net/mlx4/main.c
index 5dd7225b178e..291a505fd4fc 100644
--- a/drivers/net/mlx4/main.c
+++ b/drivers/net/mlx4/main.c
@@ -1282,6 +1282,7 @@ static struct pci_device_id mlx4_pci_table[] = {
1282 { PCI_VDEVICE(MELLANOX, 0x6372) }, /* MT25458 ConnectX EN 10GBASE-T 10GigE */ 1282 { PCI_VDEVICE(MELLANOX, 0x6372) }, /* MT25458 ConnectX EN 10GBASE-T 10GigE */
1283 { PCI_VDEVICE(MELLANOX, 0x675a) }, /* MT25458 ConnectX EN 10GBASE-T+Gen2 10GigE */ 1283 { PCI_VDEVICE(MELLANOX, 0x675a) }, /* MT25458 ConnectX EN 10GBASE-T+Gen2 10GigE */
1284 { PCI_VDEVICE(MELLANOX, 0x6764) }, /* MT26468 ConnectX EN 10GigE PCIe gen2*/ 1284 { PCI_VDEVICE(MELLANOX, 0x6764) }, /* MT26468 ConnectX EN 10GigE PCIe gen2*/
1285 { PCI_VDEVICE(MELLANOX, 0x6746) }, /* MT26438 ConnectX EN 40GigE PCIe gen2 5GT/s */
1285 { PCI_VDEVICE(MELLANOX, 0x676e) }, /* MT26478 ConnectX2 40GigE PCIe gen2 */ 1286 { PCI_VDEVICE(MELLANOX, 0x676e) }, /* MT26478 ConnectX2 40GigE PCIe gen2 */
1286 { 0, } 1287 { 0, }
1287}; 1288};
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index 6930c87f362e..f3624517cb0e 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -75,7 +75,7 @@
75#include "myri10ge_mcp.h" 75#include "myri10ge_mcp.h"
76#include "myri10ge_mcp_gen_header.h" 76#include "myri10ge_mcp_gen_header.h"
77 77
78#define MYRI10GE_VERSION_STR "1.5.0-1.432" 78#define MYRI10GE_VERSION_STR "1.5.1-1.451"
79 79
80MODULE_DESCRIPTION("Myricom 10G driver (10GbE)"); 80MODULE_DESCRIPTION("Myricom 10G driver (10GbE)");
81MODULE_AUTHOR("Maintainer: help@myri.com"); 81MODULE_AUTHOR("Maintainer: help@myri.com");
@@ -1624,10 +1624,21 @@ myri10ge_get_settings(struct net_device *netdev, struct ethtool_cmd *cmd)
1624 return 0; 1624 return 0;
1625 } 1625 }
1626 } 1626 }
1627 if (*ptr == 'R' || *ptr == 'Q') { 1627 if (*ptr == '2')
1628 /* We've found either an XFP or quad ribbon fiber */ 1628 ptr++;
1629 if (*ptr == 'R' || *ptr == 'Q' || *ptr == 'S') {
1630 /* We've found either an XFP, quad ribbon fiber, or SFP+ */
1629 cmd->port = PORT_FIBRE; 1631 cmd->port = PORT_FIBRE;
1632 cmd->supported |= SUPPORTED_FIBRE;
1633 cmd->advertising |= ADVERTISED_FIBRE;
1634 } else {
1635 cmd->port = PORT_OTHER;
1630 } 1636 }
1637 if (*ptr == 'R' || *ptr == 'S')
1638 cmd->transceiver = XCVR_EXTERNAL;
1639 else
1640 cmd->transceiver = XCVR_INTERNAL;
1641
1631 return 0; 1642 return 0;
1632} 1643}
1633 1644
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h
index 7384f59df615..e1237b802872 100644
--- a/drivers/net/netxen/netxen_nic.h
+++ b/drivers/net/netxen/netxen_nic.h
@@ -1163,6 +1163,8 @@ struct netxen_adapter {
1163 u32 int_vec_bit; 1163 u32 int_vec_bit;
1164 u32 heartbit; 1164 u32 heartbit;
1165 1165
1166 u8 mac_addr[ETH_ALEN];
1167
1166 struct netxen_adapter_stats stats; 1168 struct netxen_adapter_stats stats;
1167 1169
1168 struct netxen_recv_context recv_ctx; 1170 struct netxen_recv_context recv_ctx;
diff --git a/drivers/net/netxen/netxen_nic_hdr.h b/drivers/net/netxen/netxen_nic_hdr.h
index 7a7177421d7c..17bb3818d84e 100644
--- a/drivers/net/netxen/netxen_nic_hdr.h
+++ b/drivers/net/netxen/netxen_nic_hdr.h
@@ -419,6 +419,7 @@ enum {
419#define NETXEN_CRB_ROMUSB \ 419#define NETXEN_CRB_ROMUSB \
420 NETXEN_PCI_CRB_WINDOW(NETXEN_HW_PX_MAP_CRB_ROMUSB) 420 NETXEN_PCI_CRB_WINDOW(NETXEN_HW_PX_MAP_CRB_ROMUSB)
421#define NETXEN_CRB_I2Q NETXEN_PCI_CRB_WINDOW(NETXEN_HW_PX_MAP_CRB_I2Q) 421#define NETXEN_CRB_I2Q NETXEN_PCI_CRB_WINDOW(NETXEN_HW_PX_MAP_CRB_I2Q)
422#define NETXEN_CRB_I2C0 NETXEN_PCI_CRB_WINDOW(NETXEN_HW_PX_MAP_CRB_I2C0)
422#define NETXEN_CRB_SMB NETXEN_PCI_CRB_WINDOW(NETXEN_HW_PX_MAP_CRB_SMB) 423#define NETXEN_CRB_SMB NETXEN_PCI_CRB_WINDOW(NETXEN_HW_PX_MAP_CRB_SMB)
423#define NETXEN_CRB_MAX NETXEN_PCI_CRB_WINDOW(64) 424#define NETXEN_CRB_MAX NETXEN_PCI_CRB_WINDOW(64)
424 425
@@ -544,6 +545,8 @@ enum {
544#define NETXEN_NIU_TEST_MUX_CTL (NETXEN_CRB_NIU + 0x00094) 545#define NETXEN_NIU_TEST_MUX_CTL (NETXEN_CRB_NIU + 0x00094)
545#define NETXEN_NIU_XG_PAUSE_CTL (NETXEN_CRB_NIU + 0x00098) 546#define NETXEN_NIU_XG_PAUSE_CTL (NETXEN_CRB_NIU + 0x00098)
546#define NETXEN_NIU_XG_PAUSE_LEVEL (NETXEN_CRB_NIU + 0x000dc) 547#define NETXEN_NIU_XG_PAUSE_LEVEL (NETXEN_CRB_NIU + 0x000dc)
548#define NETXEN_NIU_FRAME_COUNT_SELECT (NETXEN_CRB_NIU + 0x000ac)
549#define NETXEN_NIU_FRAME_COUNT (NETXEN_CRB_NIU + 0x000b0)
547#define NETXEN_NIU_XG_SEL (NETXEN_CRB_NIU + 0x00128) 550#define NETXEN_NIU_XG_SEL (NETXEN_CRB_NIU + 0x00128)
548#define NETXEN_NIU_GB_PAUSE_CTL (NETXEN_CRB_NIU + 0x0030c) 551#define NETXEN_NIU_GB_PAUSE_CTL (NETXEN_CRB_NIU + 0x0030c)
549 552
diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c
index 32314000dfcd..52a3798d8d94 100644
--- a/drivers/net/netxen/netxen_nic_hw.c
+++ b/drivers/net/netxen/netxen_nic_hw.c
@@ -383,24 +383,51 @@ int netxen_niu_disable_xg_port(struct netxen_adapter *adapter)
383 383
384int netxen_p2_nic_set_promisc(struct netxen_adapter *adapter, u32 mode) 384int netxen_p2_nic_set_promisc(struct netxen_adapter *adapter, u32 mode)
385{ 385{
386 __u32 reg; 386 u32 mac_cfg;
387 u32 cnt = 0;
388 __u32 reg = 0x0200;
387 u32 port = adapter->physical_port; 389 u32 port = adapter->physical_port;
390 u16 board_type = adapter->ahw.board_type;
388 391
389 if (port > NETXEN_NIU_MAX_XG_PORTS) 392 if (port > NETXEN_NIU_MAX_XG_PORTS)
390 return -EINVAL; 393 return -EINVAL;
391 394
392 reg = NXRD32(adapter, NETXEN_NIU_XGE_CONFIG_1 + (0x10000 * port)); 395 mac_cfg = NXRD32(adapter, NETXEN_NIU_XGE_CONFIG_0 + (0x10000 * port));
393 if (mode == NETXEN_NIU_PROMISC_MODE) 396 mac_cfg &= ~0x4;
394 reg = (reg | 0x2000UL); 397 NXWR32(adapter, NETXEN_NIU_XGE_CONFIG_0 + (0x10000 * port), mac_cfg);
395 else
396 reg = (reg & ~0x2000UL);
397 398
398 if (mode == NETXEN_NIU_ALLMULTI_MODE) 399 if ((board_type == NETXEN_BRDTYPE_P2_SB31_10G_IMEZ) ||
399 reg = (reg | 0x1000UL); 400 (board_type == NETXEN_BRDTYPE_P2_SB31_10G_HMEZ))
400 else 401 reg = (0x20 << port);
401 reg = (reg & ~0x1000UL); 402
403 NXWR32(adapter, NETXEN_NIU_FRAME_COUNT_SELECT, reg);
404
405 mdelay(10);
406
407 while (NXRD32(adapter, NETXEN_NIU_FRAME_COUNT) && ++cnt < 20)
408 mdelay(10);
409
410 if (cnt < 20) {
411
412 reg = NXRD32(adapter,
413 NETXEN_NIU_XGE_CONFIG_1 + (0x10000 * port));
402 414
403 NXWR32(adapter, NETXEN_NIU_XGE_CONFIG_1 + (0x10000 * port), reg); 415 if (mode == NETXEN_NIU_PROMISC_MODE)
416 reg = (reg | 0x2000UL);
417 else
418 reg = (reg & ~0x2000UL);
419
420 if (mode == NETXEN_NIU_ALLMULTI_MODE)
421 reg = (reg | 0x1000UL);
422 else
423 reg = (reg & ~0x1000UL);
424
425 NXWR32(adapter,
426 NETXEN_NIU_XGE_CONFIG_1 + (0x10000 * port), reg);
427 }
428
429 mac_cfg |= 0x4;
430 NXWR32(adapter, NETXEN_NIU_XGE_CONFIG_0 + (0x10000 * port), mac_cfg);
404 431
405 return 0; 432 return 0;
406} 433}
@@ -436,7 +463,7 @@ netxen_nic_enable_mcast_filter(struct netxen_adapter *adapter)
436{ 463{
437 u32 val = 0; 464 u32 val = 0;
438 u16 port = adapter->physical_port; 465 u16 port = adapter->physical_port;
439 u8 *addr = adapter->netdev->dev_addr; 466 u8 *addr = adapter->mac_addr;
440 467
441 if (adapter->mc_enabled) 468 if (adapter->mc_enabled)
442 return 0; 469 return 0;
@@ -465,7 +492,7 @@ netxen_nic_disable_mcast_filter(struct netxen_adapter *adapter)
465{ 492{
466 u32 val = 0; 493 u32 val = 0;
467 u16 port = adapter->physical_port; 494 u16 port = adapter->physical_port;
468 u8 *addr = adapter->netdev->dev_addr; 495 u8 *addr = adapter->mac_addr;
469 496
470 if (!adapter->mc_enabled) 497 if (!adapter->mc_enabled)
471 return 0; 498 return 0;
@@ -660,7 +687,7 @@ void netxen_p3_nic_set_multi(struct net_device *netdev)
660 687
661 list_splice_tail_init(&adapter->mac_list, &del_list); 688 list_splice_tail_init(&adapter->mac_list, &del_list);
662 689
663 nx_p3_nic_add_mac(adapter, netdev->dev_addr, &del_list); 690 nx_p3_nic_add_mac(adapter, adapter->mac_addr, &del_list);
664 nx_p3_nic_add_mac(adapter, bcast_addr, &del_list); 691 nx_p3_nic_add_mac(adapter, bcast_addr, &del_list);
665 692
666 if (netdev->flags & IFF_PROMISC) { 693 if (netdev->flags & IFF_PROMISC) {
@@ -1901,22 +1928,16 @@ netxen_setup_hwops(struct netxen_adapter *adapter)
1901 1928
1902int netxen_nic_get_board_info(struct netxen_adapter *adapter) 1929int netxen_nic_get_board_info(struct netxen_adapter *adapter)
1903{ 1930{
1904 int offset, board_type, magic, header_version; 1931 int offset, board_type, magic;
1905 struct pci_dev *pdev = adapter->pdev; 1932 struct pci_dev *pdev = adapter->pdev;
1906 1933
1907 offset = NX_FW_MAGIC_OFFSET; 1934 offset = NX_FW_MAGIC_OFFSET;
1908 if (netxen_rom_fast_read(adapter, offset, &magic)) 1935 if (netxen_rom_fast_read(adapter, offset, &magic))
1909 return -EIO; 1936 return -EIO;
1910 1937
1911 offset = NX_HDR_VERSION_OFFSET; 1938 if (magic != NETXEN_BDINFO_MAGIC) {
1912 if (netxen_rom_fast_read(adapter, offset, &header_version)) 1939 dev_err(&pdev->dev, "invalid board config, magic=%08x\n",
1913 return -EIO; 1940 magic);
1914
1915 if (magic != NETXEN_BDINFO_MAGIC ||
1916 header_version != NETXEN_BDINFO_VERSION) {
1917 dev_err(&pdev->dev,
1918 "invalid board config, magic=%08x, version=%08x\n",
1919 magic, header_version);
1920 return -EIO; 1941 return -EIO;
1921 } 1942 }
1922 1943
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c
index 91c2bc61c8eb..8a0904368e08 100644
--- a/drivers/net/netxen/netxen_nic_init.c
+++ b/drivers/net/netxen/netxen_nic_init.c
@@ -531,6 +531,8 @@ int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose)
531 continue; 531 continue;
532 532
533 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) { 533 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) {
534 if (off == (NETXEN_CRB_I2C0 + 0x1c))
535 continue;
534 /* do not reset PCI */ 536 /* do not reset PCI */
535 if (off == (ROMUSB_GLB + 0xbc)) 537 if (off == (ROMUSB_GLB + 0xbc))
536 continue; 538 continue;
@@ -542,6 +544,8 @@ int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose)
542 continue; 544 continue;
543 if (off == (ROMUSB_GLB + 0x1c)) /* MS clock */ 545 if (off == (ROMUSB_GLB + 0x1c)) /* MS clock */
544 continue; 546 continue;
547 if ((off & 0x0ff00000) == NETXEN_CRB_DDR_NET)
548 continue;
545 if (off == (NETXEN_CRB_PEG_NET_1 + 0x18)) 549 if (off == (NETXEN_CRB_PEG_NET_1 + 0x18))
546 buf[i].data = 0x1020; 550 buf[i].data = 0x1020;
547 /* skip the function enable register */ 551 /* skip the function enable register */
@@ -553,12 +557,6 @@ int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose)
553 continue; 557 continue;
554 } 558 }
555 559
556 if (off == NETXEN_ADDR_ERROR) {
557 printk(KERN_ERR "%s: Err: Unknown addr: 0x%08x\n",
558 netxen_nic_driver_name, buf[i].addr);
559 continue;
560 }
561
562 init_delay = 1; 560 init_delay = 1;
563 /* After writing this register, HW needs time for CRB */ 561 /* After writing this register, HW needs time for CRB */
564 /* to quiet down (else crb_window returns 0xffffffff) */ 562 /* to quiet down (else crb_window returns 0xffffffff) */
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c
index 7fc15e9e8adb..3bf78dbfbf0f 100644
--- a/drivers/net/netxen/netxen_nic_main.c
+++ b/drivers/net/netxen/netxen_nic_main.c
@@ -437,6 +437,7 @@ netxen_read_mac_addr(struct netxen_adapter *adapter)
437 netdev->dev_addr[i] = *(p + 5 - i); 437 netdev->dev_addr[i] = *(p + 5 - i);
438 438
439 memcpy(netdev->perm_addr, netdev->dev_addr, netdev->addr_len); 439 memcpy(netdev->perm_addr, netdev->dev_addr, netdev->addr_len);
440 memcpy(adapter->mac_addr, netdev->dev_addr, netdev->addr_len);
440 441
441 /* set station address */ 442 /* set station address */
442 443
@@ -459,6 +460,7 @@ int netxen_nic_set_mac(struct net_device *netdev, void *p)
459 netxen_napi_disable(adapter); 460 netxen_napi_disable(adapter);
460 } 461 }
461 462
463 memcpy(adapter->mac_addr, addr->sa_data, netdev->addr_len);
462 memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len); 464 memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
463 adapter->macaddr_set(adapter, addr->sa_data); 465 adapter->macaddr_set(adapter, addr->sa_data);
464 466
@@ -956,7 +958,7 @@ netxen_nic_up(struct netxen_adapter *adapter, struct net_device *netdev)
956 return err; 958 return err;
957 } 959 }
958 if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) 960 if (NX_IS_REVISION_P2(adapter->ahw.revision_id))
959 adapter->macaddr_set(adapter, netdev->dev_addr); 961 adapter->macaddr_set(adapter, adapter->mac_addr);
960 962
961 adapter->set_multi(netdev); 963 adapter->set_multi(netdev);
962 adapter->set_mtu(adapter, netdev->mtu); 964 adapter->set_mtu(adapter, netdev->mtu);
@@ -1919,6 +1921,7 @@ static void netxen_tx_timeout_task(struct work_struct *work)
1919 1921
1920request_reset: 1922request_reset:
1921 adapter->need_fw_reset = 1; 1923 adapter->need_fw_reset = 1;
1924 clear_bit(__NX_RESETTING, &adapter->state);
1922} 1925}
1923 1926
1924struct net_device_stats *netxen_nic_get_stats(struct net_device *netdev) 1927struct net_device_stats *netxen_nic_get_stats(struct net_device *netdev)
diff --git a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c
index bd3447f04902..94c9ad2746bc 100644
--- a/drivers/net/pcmcia/pcnet_cs.c
+++ b/drivers/net/pcmcia/pcnet_cs.c
@@ -1760,7 +1760,7 @@ static struct pcmcia_device_id pcnet_ids[] = {
1760 PCMCIA_DEVICE_CIS_MANF_CARD(0xc00f, 0x0002, "cis/LA-PCM.cis"), 1760 PCMCIA_DEVICE_CIS_MANF_CARD(0xc00f, 0x0002, "cis/LA-PCM.cis"),
1761 PCMCIA_DEVICE_CIS_PROD_ID12("KTI", "PE520 PLUS", 0xad180345, 0x9d58d392, "PE520.cis"), 1761 PCMCIA_DEVICE_CIS_PROD_ID12("KTI", "PE520 PLUS", 0xad180345, 0x9d58d392, "PE520.cis"),
1762 PCMCIA_DEVICE_CIS_PROD_ID12("NDC", "Ethernet", 0x01c43ae1, 0x00b2e941, "cis/NE2K.cis"), 1762 PCMCIA_DEVICE_CIS_PROD_ID12("NDC", "Ethernet", 0x01c43ae1, 0x00b2e941, "cis/NE2K.cis"),
1763 PCMCIA_DEVICE_CIS_PROD_ID12("PMX ", "PE-200", 0x34f3f1c8, 0x10b59f8c, "PE-200.cis"), 1763 PCMCIA_DEVICE_CIS_PROD_ID12("PMX ", "PE-200", 0x34f3f1c8, 0x10b59f8c, "cis/PE-200.cis"),
1764 PCMCIA_DEVICE_CIS_PROD_ID12("TAMARACK", "Ethernet", 0xcf434fba, 0x00b2e941, "cis/tamarack.cis"), 1764 PCMCIA_DEVICE_CIS_PROD_ID12("TAMARACK", "Ethernet", 0xcf434fba, 0x00b2e941, "cis/tamarack.cis"),
1765 PCMCIA_DEVICE_PROD_ID12("Ethernet", "CF Size PC Card", 0x00b2e941, 0x43ac239b), 1765 PCMCIA_DEVICE_PROD_ID12("Ethernet", "CF Size PC Card", 0x00b2e941, 0x43ac239b),
1766 PCMCIA_DEVICE_PROD_ID123("Fast Ethernet", "CF Size PC Card", "1.0", 1766 PCMCIA_DEVICE_PROD_ID123("Fast Ethernet", "CF Size PC Card", "1.0",
diff --git a/drivers/net/phy/mdio-gpio.c b/drivers/net/phy/mdio-gpio.c
index 8659d341e769..35897134a5dd 100644
--- a/drivers/net/phy/mdio-gpio.c
+++ b/drivers/net/phy/mdio-gpio.c
@@ -139,7 +139,7 @@ out:
139 return NULL; 139 return NULL;
140} 140}
141 141
142static void __devinit mdio_gpio_bus_deinit(struct device *dev) 142static void mdio_gpio_bus_deinit(struct device *dev)
143{ 143{
144 struct mii_bus *bus = dev_get_drvdata(dev); 144 struct mii_bus *bus = dev_get_drvdata(dev);
145 struct mdio_gpio_info *bitbang = bus->priv; 145 struct mdio_gpio_info *bitbang = bus->priv;
diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c
index 9bf2a6be9031..965adb6174c3 100644
--- a/drivers/net/ppp_generic.c
+++ b/drivers/net/ppp_generic.c
@@ -1944,8 +1944,15 @@ ppp_receive_mp_frame(struct ppp *ppp, struct sk_buff *skb, struct channel *pch)
1944 } 1944 }
1945 1945
1946 /* Pull completed packets off the queue and receive them. */ 1946 /* Pull completed packets off the queue and receive them. */
1947 while ((skb = ppp_mp_reconstruct(ppp))) 1947 while ((skb = ppp_mp_reconstruct(ppp))) {
1948 ppp_receive_nonmp_frame(ppp, skb); 1948 if (pskb_may_pull(skb, 2))
1949 ppp_receive_nonmp_frame(ppp, skb);
1950 else {
1951 ++ppp->dev->stats.rx_length_errors;
1952 kfree_skb(skb);
1953 ppp_receive_error(ppp);
1954 }
1955 }
1949 1956
1950 return; 1957 return;
1951 1958
diff --git a/drivers/net/pppoe.c b/drivers/net/pppoe.c
index 7cbf6f9b51de..2559991eea6a 100644
--- a/drivers/net/pppoe.c
+++ b/drivers/net/pppoe.c
@@ -111,9 +111,6 @@ struct pppoe_net {
111 rwlock_t hash_lock; 111 rwlock_t hash_lock;
112}; 112};
113 113
114/* to eliminate a race btw pppoe_flush_dev and pppoe_release */
115static DEFINE_SPINLOCK(flush_lock);
116
117/* 114/*
118 * PPPoE could be in the following stages: 115 * PPPoE could be in the following stages:
119 * 1) Discovery stage (to obtain remote MAC and Session ID) 116 * 1) Discovery stage (to obtain remote MAC and Session ID)
@@ -303,45 +300,48 @@ static void pppoe_flush_dev(struct net_device *dev)
303 write_lock_bh(&pn->hash_lock); 300 write_lock_bh(&pn->hash_lock);
304 for (i = 0; i < PPPOE_HASH_SIZE; i++) { 301 for (i = 0; i < PPPOE_HASH_SIZE; i++) {
305 struct pppox_sock *po = pn->hash_table[i]; 302 struct pppox_sock *po = pn->hash_table[i];
303 struct sock *sk;
306 304
307 while (po != NULL) { 305 while (po) {
308 struct sock *sk; 306 while (po && po->pppoe_dev != dev) {
309 if (po->pppoe_dev != dev) {
310 po = po->next; 307 po = po->next;
311 continue;
312 } 308 }
309
310 if (!po)
311 break;
312
313 sk = sk_pppox(po); 313 sk = sk_pppox(po);
314 spin_lock(&flush_lock);
315 po->pppoe_dev = NULL;
316 spin_unlock(&flush_lock);
317 dev_put(dev);
318 314
319 /* We always grab the socket lock, followed by the 315 /* We always grab the socket lock, followed by the
320 * hash_lock, in that order. Since we should 316 * hash_lock, in that order. Since we should hold the
321 * hold the sock lock while doing any unbinding, 317 * sock lock while doing any unbinding, we need to
322 * we need to release the lock we're holding. 318 * release the lock we're holding. Hold a reference to
323 * Hold a reference to the sock so it doesn't disappear 319 * the sock so it doesn't disappear as we're jumping
324 * as we're jumping between locks. 320 * between locks.
325 */ 321 */
326 322
327 sock_hold(sk); 323 sock_hold(sk);
328
329 write_unlock_bh(&pn->hash_lock); 324 write_unlock_bh(&pn->hash_lock);
330 lock_sock(sk); 325 lock_sock(sk);
331 326
332 if (sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND)) { 327 if (po->pppoe_dev == dev
328 && sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND)) {
333 pppox_unbind_sock(sk); 329 pppox_unbind_sock(sk);
334 sk->sk_state = PPPOX_ZOMBIE; 330 sk->sk_state = PPPOX_ZOMBIE;
335 sk->sk_state_change(sk); 331 sk->sk_state_change(sk);
332 po->pppoe_dev = NULL;
333 dev_put(dev);
336 } 334 }
337 335
338 release_sock(sk); 336 release_sock(sk);
339 sock_put(sk); 337 sock_put(sk);
340 338
341 /* Restart scan at the beginning of this hash chain. 339 /* Restart the process from the start of the current
342 * While the lock was dropped the chain contents may 340 * hash chain. We dropped locks so the world may have
343 * have changed. 341 * change from underneath us.
344 */ 342 */
343
344 BUG_ON(pppoe_pernet(dev_net(dev)) == NULL);
345 write_lock_bh(&pn->hash_lock); 345 write_lock_bh(&pn->hash_lock);
346 po = pn->hash_table[i]; 346 po = pn->hash_table[i];
347 } 347 }
@@ -388,11 +388,16 @@ static int pppoe_rcv_core(struct sock *sk, struct sk_buff *skb)
388 struct pppox_sock *po = pppox_sk(sk); 388 struct pppox_sock *po = pppox_sk(sk);
389 struct pppox_sock *relay_po; 389 struct pppox_sock *relay_po;
390 390
391 /* Backlog receive. Semantics of backlog rcv preclude any code from
392 * executing in lock_sock()/release_sock() bounds; meaning sk->sk_state
393 * can't change.
394 */
395
391 if (sk->sk_state & PPPOX_BOUND) { 396 if (sk->sk_state & PPPOX_BOUND) {
392 ppp_input(&po->chan, skb); 397 ppp_input(&po->chan, skb);
393 } else if (sk->sk_state & PPPOX_RELAY) { 398 } else if (sk->sk_state & PPPOX_RELAY) {
394 relay_po = get_item_by_addr(dev_net(po->pppoe_dev), 399 relay_po = get_item_by_addr(sock_net(sk),
395 &po->pppoe_relay); 400 &po->pppoe_relay);
396 if (relay_po == NULL) 401 if (relay_po == NULL)
397 goto abort_kfree; 402 goto abort_kfree;
398 403
@@ -447,6 +452,10 @@ static int pppoe_rcv(struct sk_buff *skb, struct net_device *dev,
447 goto drop; 452 goto drop;
448 453
449 pn = pppoe_pernet(dev_net(dev)); 454 pn = pppoe_pernet(dev_net(dev));
455
456 /* Note that get_item does a sock_hold(), so sk_pppox(po)
457 * is known to be safe.
458 */
450 po = get_item(pn, ph->sid, eth_hdr(skb)->h_source, dev->ifindex); 459 po = get_item(pn, ph->sid, eth_hdr(skb)->h_source, dev->ifindex);
451 if (!po) 460 if (!po)
452 goto drop; 461 goto drop;
@@ -561,6 +570,7 @@ static int pppoe_release(struct socket *sock)
561 struct sock *sk = sock->sk; 570 struct sock *sk = sock->sk;
562 struct pppox_sock *po; 571 struct pppox_sock *po;
563 struct pppoe_net *pn; 572 struct pppoe_net *pn;
573 struct net *net = NULL;
564 574
565 if (!sk) 575 if (!sk)
566 return 0; 576 return 0;
@@ -571,44 +581,28 @@ static int pppoe_release(struct socket *sock)
571 return -EBADF; 581 return -EBADF;
572 } 582 }
573 583
584 po = pppox_sk(sk);
585
586 if (sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND)) {
587 dev_put(po->pppoe_dev);
588 po->pppoe_dev = NULL;
589 }
590
574 pppox_unbind_sock(sk); 591 pppox_unbind_sock(sk);
575 592
576 /* Signal the death of the socket. */ 593 /* Signal the death of the socket. */
577 sk->sk_state = PPPOX_DEAD; 594 sk->sk_state = PPPOX_DEAD;
578 595
579 /* 596 net = sock_net(sk);
580 * pppoe_flush_dev could lead to a race with 597 pn = pppoe_pernet(net);
581 * this routine so we use flush_lock to eliminate
582 * such a case (we only need per-net specific data)
583 */
584 spin_lock(&flush_lock);
585 po = pppox_sk(sk);
586 if (!po->pppoe_dev) {
587 spin_unlock(&flush_lock);
588 goto out;
589 }
590 pn = pppoe_pernet(dev_net(po->pppoe_dev));
591 spin_unlock(&flush_lock);
592 598
593 /* 599 /*
594 * protect "po" from concurrent updates 600 * protect "po" from concurrent updates
595 * on pppoe_flush_dev 601 * on pppoe_flush_dev
596 */ 602 */
597 write_lock_bh(&pn->hash_lock); 603 delete_item(pn, po->pppoe_pa.sid, po->pppoe_pa.remote,
604 po->pppoe_ifindex);
598 605
599 po = pppox_sk(sk);
600 if (stage_session(po->pppoe_pa.sid))
601 __delete_item(pn, po->pppoe_pa.sid, po->pppoe_pa.remote,
602 po->pppoe_ifindex);
603
604 if (po->pppoe_dev) {
605 dev_put(po->pppoe_dev);
606 po->pppoe_dev = NULL;
607 }
608
609 write_unlock_bh(&pn->hash_lock);
610
611out:
612 sock_orphan(sk); 606 sock_orphan(sk);
613 sock->sk = NULL; 607 sock->sk = NULL;
614 608
@@ -625,8 +619,9 @@ static int pppoe_connect(struct socket *sock, struct sockaddr *uservaddr,
625 struct sock *sk = sock->sk; 619 struct sock *sk = sock->sk;
626 struct sockaddr_pppox *sp = (struct sockaddr_pppox *)uservaddr; 620 struct sockaddr_pppox *sp = (struct sockaddr_pppox *)uservaddr;
627 struct pppox_sock *po = pppox_sk(sk); 621 struct pppox_sock *po = pppox_sk(sk);
628 struct net_device *dev; 622 struct net_device *dev = NULL;
629 struct pppoe_net *pn; 623 struct pppoe_net *pn;
624 struct net *net = NULL;
630 int error; 625 int error;
631 626
632 lock_sock(sk); 627 lock_sock(sk);
@@ -652,12 +647,14 @@ static int pppoe_connect(struct socket *sock, struct sockaddr *uservaddr,
652 /* Delete the old binding */ 647 /* Delete the old binding */
653 if (stage_session(po->pppoe_pa.sid)) { 648 if (stage_session(po->pppoe_pa.sid)) {
654 pppox_unbind_sock(sk); 649 pppox_unbind_sock(sk);
650 pn = pppoe_pernet(sock_net(sk));
651 delete_item(pn, po->pppoe_pa.sid,
652 po->pppoe_pa.remote, po->pppoe_ifindex);
655 if (po->pppoe_dev) { 653 if (po->pppoe_dev) {
656 pn = pppoe_pernet(dev_net(po->pppoe_dev));
657 delete_item(pn, po->pppoe_pa.sid,
658 po->pppoe_pa.remote, po->pppoe_ifindex);
659 dev_put(po->pppoe_dev); 654 dev_put(po->pppoe_dev);
655 po->pppoe_dev = NULL;
660 } 656 }
657
661 memset(sk_pppox(po) + 1, 0, 658 memset(sk_pppox(po) + 1, 0,
662 sizeof(struct pppox_sock) - sizeof(struct sock)); 659 sizeof(struct pppox_sock) - sizeof(struct sock));
663 sk->sk_state = PPPOX_NONE; 660 sk->sk_state = PPPOX_NONE;
@@ -666,16 +663,15 @@ static int pppoe_connect(struct socket *sock, struct sockaddr *uservaddr,
666 /* Re-bind in session stage only */ 663 /* Re-bind in session stage only */
667 if (stage_session(sp->sa_addr.pppoe.sid)) { 664 if (stage_session(sp->sa_addr.pppoe.sid)) {
668 error = -ENODEV; 665 error = -ENODEV;
669 dev = dev_get_by_name(sock_net(sk), sp->sa_addr.pppoe.dev); 666 net = sock_net(sk);
667 dev = dev_get_by_name(net, sp->sa_addr.pppoe.dev);
670 if (!dev) 668 if (!dev)
671 goto end; 669 goto err_put;
672 670
673 po->pppoe_dev = dev; 671 po->pppoe_dev = dev;
674 po->pppoe_ifindex = dev->ifindex; 672 po->pppoe_ifindex = dev->ifindex;
675 pn = pppoe_pernet(dev_net(dev)); 673 pn = pppoe_pernet(net);
676 write_lock_bh(&pn->hash_lock);
677 if (!(dev->flags & IFF_UP)) { 674 if (!(dev->flags & IFF_UP)) {
678 write_unlock_bh(&pn->hash_lock);
679 goto err_put; 675 goto err_put;
680 } 676 }
681 677
@@ -683,6 +679,7 @@ static int pppoe_connect(struct socket *sock, struct sockaddr *uservaddr,
683 &sp->sa_addr.pppoe, 679 &sp->sa_addr.pppoe,
684 sizeof(struct pppoe_addr)); 680 sizeof(struct pppoe_addr));
685 681
682 write_lock_bh(&pn->hash_lock);
686 error = __set_item(pn, po); 683 error = __set_item(pn, po);
687 write_unlock_bh(&pn->hash_lock); 684 write_unlock_bh(&pn->hash_lock);
688 if (error < 0) 685 if (error < 0)
@@ -696,8 +693,11 @@ static int pppoe_connect(struct socket *sock, struct sockaddr *uservaddr,
696 po->chan.ops = &pppoe_chan_ops; 693 po->chan.ops = &pppoe_chan_ops;
697 694
698 error = ppp_register_net_channel(dev_net(dev), &po->chan); 695 error = ppp_register_net_channel(dev_net(dev), &po->chan);
699 if (error) 696 if (error) {
697 delete_item(pn, po->pppoe_pa.sid,
698 po->pppoe_pa.remote, po->pppoe_ifindex);
700 goto err_put; 699 goto err_put;
700 }
701 701
702 sk->sk_state = PPPOX_CONNECTED; 702 sk->sk_state = PPPOX_CONNECTED;
703 } 703 }
@@ -915,6 +915,14 @@ static int __pppoe_xmit(struct sock *sk, struct sk_buff *skb)
915 struct pppoe_hdr *ph; 915 struct pppoe_hdr *ph;
916 int data_len = skb->len; 916 int data_len = skb->len;
917 917
918 /* The higher-level PPP code (ppp_unregister_channel()) ensures the PPP
919 * xmit operations conclude prior to an unregistration call. Thus
920 * sk->sk_state cannot change, so we don't need to do lock_sock().
921 * But, we also can't do a lock_sock since that introduces a potential
922 * deadlock as we'd reverse the lock ordering used when calling
923 * ppp_unregister_channel().
924 */
925
918 if (sock_flag(sk, SOCK_DEAD) || !(sk->sk_state & PPPOX_CONNECTED)) 926 if (sock_flag(sk, SOCK_DEAD) || !(sk->sk_state & PPPOX_CONNECTED))
919 goto abort; 927 goto abort;
920 928
@@ -944,7 +952,6 @@ static int __pppoe_xmit(struct sock *sk, struct sk_buff *skb)
944 po->pppoe_pa.remote, NULL, data_len); 952 po->pppoe_pa.remote, NULL, data_len);
945 953
946 dev_queue_xmit(skb); 954 dev_queue_xmit(skb);
947
948 return 1; 955 return 1;
949 956
950abort: 957abort:
diff --git a/drivers/net/qlge/qlge.h b/drivers/net/qlge/qlge.h
index e7285f01bd04..c2383adcd527 100644
--- a/drivers/net/qlge/qlge.h
+++ b/drivers/net/qlge/qlge.h
@@ -95,6 +95,7 @@ enum {
95 95
96 /* Misc. stuff */ 96 /* Misc. stuff */
97 MAILBOX_COUNT = 16, 97 MAILBOX_COUNT = 16,
98 MAILBOX_TIMEOUT = 5,
98 99
99 PROC_ADDR_RDY = (1 << 31), 100 PROC_ADDR_RDY = (1 << 31),
100 PROC_ADDR_R = (1 << 30), 101 PROC_ADDR_R = (1 << 30),
diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index 48b45df85ec9..a2fc70a0d0cc 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -3916,6 +3916,9 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
3916 goto err_out; 3916 goto err_out;
3917 } 3917 }
3918 3918
3919 /* Set PCIe reset type for EEH to fundamental. */
3920 pdev->needs_freset = 1;
3921 pci_save_state(pdev);
3919 qdev->reg_base = 3922 qdev->reg_base =
3920 ioremap_nocache(pci_resource_start(pdev, 1), 3923 ioremap_nocache(pci_resource_start(pdev, 1),
3921 pci_resource_len(pdev, 1)); 3924 pci_resource_len(pdev, 1));
@@ -4070,6 +4073,33 @@ static void __devexit qlge_remove(struct pci_dev *pdev)
4070 free_netdev(ndev); 4073 free_netdev(ndev);
4071} 4074}
4072 4075
4076/* Clean up resources without touching hardware. */
4077static void ql_eeh_close(struct net_device *ndev)
4078{
4079 int i;
4080 struct ql_adapter *qdev = netdev_priv(ndev);
4081
4082 if (netif_carrier_ok(ndev)) {
4083 netif_carrier_off(ndev);
4084 netif_stop_queue(ndev);
4085 }
4086
4087 if (test_bit(QL_ADAPTER_UP, &qdev->flags))
4088 cancel_delayed_work_sync(&qdev->asic_reset_work);
4089 cancel_delayed_work_sync(&qdev->mpi_reset_work);
4090 cancel_delayed_work_sync(&qdev->mpi_work);
4091 cancel_delayed_work_sync(&qdev->mpi_idc_work);
4092 cancel_delayed_work_sync(&qdev->mpi_port_cfg_work);
4093
4094 for (i = 0; i < qdev->rss_ring_count; i++)
4095 netif_napi_del(&qdev->rx_ring[i].napi);
4096
4097 clear_bit(QL_ADAPTER_UP, &qdev->flags);
4098 ql_tx_ring_clean(qdev);
4099 ql_free_rx_buffers(qdev);
4100 ql_release_adapter_resources(qdev);
4101}
4102
4073/* 4103/*
4074 * This callback is called by the PCI subsystem whenever 4104 * This callback is called by the PCI subsystem whenever
4075 * a PCI bus error is detected. 4105 * a PCI bus error is detected.
@@ -4078,17 +4108,21 @@ static pci_ers_result_t qlge_io_error_detected(struct pci_dev *pdev,
4078 enum pci_channel_state state) 4108 enum pci_channel_state state)
4079{ 4109{
4080 struct net_device *ndev = pci_get_drvdata(pdev); 4110 struct net_device *ndev = pci_get_drvdata(pdev);
4081 struct ql_adapter *qdev = netdev_priv(ndev);
4082
4083 netif_device_detach(ndev);
4084 4111
4085 if (state == pci_channel_io_perm_failure) 4112 switch (state) {
4113 case pci_channel_io_normal:
4114 return PCI_ERS_RESULT_CAN_RECOVER;
4115 case pci_channel_io_frozen:
4116 netif_device_detach(ndev);
4117 if (netif_running(ndev))
4118 ql_eeh_close(ndev);
4119 pci_disable_device(pdev);
4120 return PCI_ERS_RESULT_NEED_RESET;
4121 case pci_channel_io_perm_failure:
4122 dev_err(&pdev->dev,
4123 "%s: pci_channel_io_perm_failure.\n", __func__);
4086 return PCI_ERS_RESULT_DISCONNECT; 4124 return PCI_ERS_RESULT_DISCONNECT;
4087 4125 }
4088 if (netif_running(ndev))
4089 ql_adapter_down(qdev);
4090
4091 pci_disable_device(pdev);
4092 4126
4093 /* Request a slot reset. */ 4127 /* Request a slot reset. */
4094 return PCI_ERS_RESULT_NEED_RESET; 4128 return PCI_ERS_RESULT_NEED_RESET;
@@ -4105,25 +4139,15 @@ static pci_ers_result_t qlge_io_slot_reset(struct pci_dev *pdev)
4105 struct net_device *ndev = pci_get_drvdata(pdev); 4139 struct net_device *ndev = pci_get_drvdata(pdev);
4106 struct ql_adapter *qdev = netdev_priv(ndev); 4140 struct ql_adapter *qdev = netdev_priv(ndev);
4107 4141
4142 pdev->error_state = pci_channel_io_normal;
4143
4144 pci_restore_state(pdev);
4108 if (pci_enable_device(pdev)) { 4145 if (pci_enable_device(pdev)) {
4109 QPRINTK(qdev, IFUP, ERR, 4146 QPRINTK(qdev, IFUP, ERR,
4110 "Cannot re-enable PCI device after reset.\n"); 4147 "Cannot re-enable PCI device after reset.\n");
4111 return PCI_ERS_RESULT_DISCONNECT; 4148 return PCI_ERS_RESULT_DISCONNECT;
4112 } 4149 }
4113
4114 pci_set_master(pdev); 4150 pci_set_master(pdev);
4115
4116 netif_carrier_off(ndev);
4117 ql_adapter_reset(qdev);
4118
4119 /* Make sure the EEPROM is good */
4120 memcpy(ndev->perm_addr, ndev->dev_addr, ndev->addr_len);
4121
4122 if (!is_valid_ether_addr(ndev->perm_addr)) {
4123 QPRINTK(qdev, IFUP, ERR, "After reset, invalid MAC address.\n");
4124 return PCI_ERS_RESULT_DISCONNECT;
4125 }
4126
4127 return PCI_ERS_RESULT_RECOVERED; 4151 return PCI_ERS_RESULT_RECOVERED;
4128} 4152}
4129 4153
@@ -4131,17 +4155,21 @@ static void qlge_io_resume(struct pci_dev *pdev)
4131{ 4155{
4132 struct net_device *ndev = pci_get_drvdata(pdev); 4156 struct net_device *ndev = pci_get_drvdata(pdev);
4133 struct ql_adapter *qdev = netdev_priv(ndev); 4157 struct ql_adapter *qdev = netdev_priv(ndev);
4158 int err = 0;
4134 4159
4135 pci_set_master(pdev); 4160 if (ql_adapter_reset(qdev))
4136 4161 QPRINTK(qdev, DRV, ERR, "reset FAILED!\n");
4137 if (netif_running(ndev)) { 4162 if (netif_running(ndev)) {
4138 if (ql_adapter_up(qdev)) { 4163 err = qlge_open(ndev);
4164 if (err) {
4139 QPRINTK(qdev, IFUP, ERR, 4165 QPRINTK(qdev, IFUP, ERR,
4140 "Device initialization failed after reset.\n"); 4166 "Device initialization failed after reset.\n");
4141 return; 4167 return;
4142 } 4168 }
4169 } else {
4170 QPRINTK(qdev, IFUP, ERR,
4171 "Device was not running prior to EEH.\n");
4143 } 4172 }
4144
4145 netif_device_attach(ndev); 4173 netif_device_attach(ndev);
4146} 4174}
4147 4175
diff --git a/drivers/net/qlge/qlge_mpi.c b/drivers/net/qlge/qlge_mpi.c
index 99e58e3f8e22..aec05f266107 100644
--- a/drivers/net/qlge/qlge_mpi.c
+++ b/drivers/net/qlge/qlge_mpi.c
@@ -470,7 +470,8 @@ end:
470 */ 470 */
471static int ql_mailbox_command(struct ql_adapter *qdev, struct mbox_params *mbcp) 471static int ql_mailbox_command(struct ql_adapter *qdev, struct mbox_params *mbcp)
472{ 472{
473 int status, count; 473 int status;
474 unsigned long count;
474 475
475 476
476 /* Begin polled mode for MPI */ 477 /* Begin polled mode for MPI */
@@ -491,14 +492,14 @@ static int ql_mailbox_command(struct ql_adapter *qdev, struct mbox_params *mbcp)
491 /* Wait for the command to complete. We loop 492 /* Wait for the command to complete. We loop
492 * here because some AEN might arrive while 493 * here because some AEN might arrive while
493 * we're waiting for the mailbox command to 494 * we're waiting for the mailbox command to
494 * complete. If more than 5 arrive then we can 495 * complete. If more than 5 seconds expire we can
495 * assume something is wrong. */ 496 * assume something is wrong. */
496 count = 5; 497 count = jiffies + HZ * MAILBOX_TIMEOUT;
497 do { 498 do {
498 /* Wait for the interrupt to come in. */ 499 /* Wait for the interrupt to come in. */
499 status = ql_wait_mbx_cmd_cmplt(qdev); 500 status = ql_wait_mbx_cmd_cmplt(qdev);
500 if (status) 501 if (status)
501 goto end; 502 continue;
502 503
503 /* Process the event. If it's an AEN, it 504 /* Process the event. If it's an AEN, it
504 * will be handled in-line or a worker 505 * will be handled in-line or a worker
@@ -517,15 +518,15 @@ static int ql_mailbox_command(struct ql_adapter *qdev, struct mbox_params *mbcp)
517 MB_CMD_STS_GOOD) || 518 MB_CMD_STS_GOOD) ||
518 ((mbcp->mbox_out[0] & 0x0000f000) == 519 ((mbcp->mbox_out[0] & 0x0000f000) ==
519 MB_CMD_STS_INTRMDT)) 520 MB_CMD_STS_INTRMDT))
520 break; 521 goto done;
521 } while (--count); 522 } while (time_before(jiffies, count));
522 523
523 if (!count) { 524 QPRINTK(qdev, DRV, ERR,
524 QPRINTK(qdev, DRV, ERR, 525 "Timed out waiting for mailbox complete.\n");
525 "Timed out waiting for mailbox complete.\n"); 526 status = -ETIMEDOUT;
526 status = -ETIMEDOUT; 527 goto end;
527 goto end; 528
528 } 529done:
529 530
530 /* Now we can clear the interrupt condition 531 /* Now we can clear the interrupt condition
531 * and look at our status. 532 * and look at our status.
diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c
index 7dfcb58b0eb4..8b14c6eda7c3 100644
--- a/drivers/net/r6040.c
+++ b/drivers/net/r6040.c
@@ -1085,7 +1085,7 @@ static int __devinit r6040_init_one(struct pci_dev *pdev,
1085 int bar = 0; 1085 int bar = 0;
1086 u16 *adrp; 1086 u16 *adrp;
1087 1087
1088 printk(KERN_INFO "%s\n", version); 1088 printk("%s\n", version);
1089 1089
1090 err = pci_enable_device(pdev); 1090 err = pci_enable_device(pdev);
1091 if (err) 1091 if (err)
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index 83c47d95c3aa..0fe2fc90f207 100644
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -1029,7 +1029,10 @@ static void rtl8169_vlan_rx_register(struct net_device *dev,
1029 1029
1030 spin_lock_irqsave(&tp->lock, flags); 1030 spin_lock_irqsave(&tp->lock, flags);
1031 tp->vlgrp = grp; 1031 tp->vlgrp = grp;
1032 if (tp->vlgrp) 1032 /*
1033 * Do not disable RxVlan on 8110SCd.
1034 */
1035 if (tp->vlgrp || (tp->mac_version == RTL_GIGA_MAC_VER_05))
1033 tp->cp_cmd |= RxVlan; 1036 tp->cp_cmd |= RxVlan;
1034 else 1037 else
1035 tp->cp_cmd &= ~RxVlan; 1038 tp->cp_cmd &= ~RxVlan;
@@ -3197,6 +3200,14 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
3197 } 3200 }
3198 3201
3199 rtl8169_init_phy(dev, tp); 3202 rtl8169_init_phy(dev, tp);
3203
3204 /*
3205 * Pretend we are using VLANs; This bypasses a nasty bug where
3206 * Interrupts stop flowing on high load on 8110SCd controllers.
3207 */
3208 if (tp->mac_version == RTL_GIGA_MAC_VER_05)
3209 RTL_W16(CPlusCmd, RTL_R16(CPlusCmd) | RxVlan);
3210
3200 device_set_wakeup_enable(&pdev->dev, tp->features & RTL_FEATURE_WOL); 3211 device_set_wakeup_enable(&pdev->dev, tp->features & RTL_FEATURE_WOL);
3201 3212
3202out: 3213out:
@@ -3224,6 +3235,10 @@ static void __devexit rtl8169_remove_one(struct pci_dev *pdev)
3224 flush_scheduled_work(); 3235 flush_scheduled_work();
3225 3236
3226 unregister_netdev(dev); 3237 unregister_netdev(dev);
3238
3239 /* restore original MAC address */
3240 rtl_rar_set(tp, dev->perm_addr);
3241
3227 rtl_disable_msi(pdev, tp); 3242 rtl_disable_msi(pdev, tp);
3228 rtl8169_release_board(pdev, dev, tp->mmio_addr); 3243 rtl8169_release_board(pdev, dev, tp->mmio_addr);
3229 pci_set_drvdata(pdev, NULL); 3244 pci_set_drvdata(pdev, NULL);
@@ -3232,9 +3247,9 @@ static void __devexit rtl8169_remove_one(struct pci_dev *pdev)
3232static void rtl8169_set_rxbufsize(struct rtl8169_private *tp, 3247static void rtl8169_set_rxbufsize(struct rtl8169_private *tp,
3233 struct net_device *dev) 3248 struct net_device *dev)
3234{ 3249{
3235 unsigned int mtu = dev->mtu; 3250 unsigned int max_frame = dev->mtu + VLAN_ETH_HLEN + ETH_FCS_LEN;
3236 3251
3237 tp->rx_buf_sz = (mtu > RX_BUF_SIZE) ? mtu + ETH_HLEN + 8 : RX_BUF_SIZE; 3252 tp->rx_buf_sz = (max_frame > RX_BUF_SIZE) ? max_frame : RX_BUF_SIZE;
3238} 3253}
3239 3254
3240static int rtl8169_open(struct net_device *dev) 3255static int rtl8169_open(struct net_device *dev)
@@ -3368,7 +3383,7 @@ static u16 rtl_rw_cpluscmd(void __iomem *ioaddr)
3368static void rtl_set_rx_max_size(void __iomem *ioaddr, unsigned int rx_buf_sz) 3383static void rtl_set_rx_max_size(void __iomem *ioaddr, unsigned int rx_buf_sz)
3369{ 3384{
3370 /* Low hurts. Let's disable the filtering. */ 3385 /* Low hurts. Let's disable the filtering. */
3371 RTL_W16(RxMaxSize, rx_buf_sz); 3386 RTL_W16(RxMaxSize, rx_buf_sz + 1);
3372} 3387}
3373 3388
3374static void rtl8169_set_magic_reg(void __iomem *ioaddr, unsigned mac_version) 3389static void rtl8169_set_magic_reg(void __iomem *ioaddr, unsigned mac_version)
@@ -4870,6 +4885,9 @@ static void rtl_shutdown(struct pci_dev *pdev)
4870 4885
4871 rtl8169_net_suspend(dev); 4886 rtl8169_net_suspend(dev);
4872 4887
4888 /* restore original MAC address */
4889 rtl_rar_set(tp, dev->perm_addr);
4890
4873 spin_lock_irq(&tp->lock); 4891 spin_lock_irq(&tp->lock);
4874 4892
4875 rtl8169_asic_down(ioaddr); 4893 rtl8169_asic_down(ioaddr);
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
index ddccf5fa56b6..0dd7839322bc 100644
--- a/drivers/net/s2io.c
+++ b/drivers/net/s2io.c
@@ -3494,6 +3494,7 @@ static void s2io_reset(struct s2io_nic *sp)
3494 3494
3495 /* Restore the PCI state saved during initialization. */ 3495 /* Restore the PCI state saved during initialization. */
3496 pci_restore_state(sp->pdev); 3496 pci_restore_state(sp->pdev);
3497 pci_save_state(sp->pdev);
3497 pci_read_config_word(sp->pdev, 0x2, &val16); 3498 pci_read_config_word(sp->pdev, 0x2, &val16);
3498 if (check_pci_device_id(val16) != (u16)PCI_ANY_ID) 3499 if (check_pci_device_id(val16) != (u16)PCI_ANY_ID)
3499 break; 3500 break;
diff --git a/drivers/net/sfc/rx.c b/drivers/net/sfc/rx.c
index 01f9432c31ef..98bff5ada09a 100644
--- a/drivers/net/sfc/rx.c
+++ b/drivers/net/sfc/rx.c
@@ -444,7 +444,8 @@ static void efx_rx_packet__check_len(struct efx_rx_queue *rx_queue,
444 * the appropriate LRO method 444 * the appropriate LRO method
445 */ 445 */
446static void efx_rx_packet_lro(struct efx_channel *channel, 446static void efx_rx_packet_lro(struct efx_channel *channel,
447 struct efx_rx_buffer *rx_buf) 447 struct efx_rx_buffer *rx_buf,
448 bool checksummed)
448{ 449{
449 struct napi_struct *napi = &channel->napi_str; 450 struct napi_struct *napi = &channel->napi_str;
450 451
@@ -466,7 +467,8 @@ static void efx_rx_packet_lro(struct efx_channel *channel,
466 skb->len = rx_buf->len; 467 skb->len = rx_buf->len;
467 skb->data_len = rx_buf->len; 468 skb->data_len = rx_buf->len;
468 skb->truesize += rx_buf->len; 469 skb->truesize += rx_buf->len;
469 skb->ip_summed = CHECKSUM_UNNECESSARY; 470 skb->ip_summed =
471 checksummed ? CHECKSUM_UNNECESSARY : CHECKSUM_NONE;
470 472
471 napi_gro_frags(napi); 473 napi_gro_frags(napi);
472 474
@@ -475,6 +477,7 @@ out:
475 rx_buf->page = NULL; 477 rx_buf->page = NULL;
476 } else { 478 } else {
477 EFX_BUG_ON_PARANOID(!rx_buf->skb); 479 EFX_BUG_ON_PARANOID(!rx_buf->skb);
480 EFX_BUG_ON_PARANOID(!checksummed);
478 481
479 napi_gro_receive(napi, rx_buf->skb); 482 napi_gro_receive(napi, rx_buf->skb);
480 rx_buf->skb = NULL; 483 rx_buf->skb = NULL;
@@ -570,7 +573,7 @@ void __efx_rx_packet(struct efx_channel *channel,
570 } 573 }
571 574
572 if (likely(checksummed || rx_buf->page)) { 575 if (likely(checksummed || rx_buf->page)) {
573 efx_rx_packet_lro(channel, rx_buf); 576 efx_rx_packet_lro(channel, rx_buf, checksummed);
574 goto done; 577 goto done;
575 } 578 }
576 579
diff --git a/drivers/net/sfc/sfe4001.c b/drivers/net/sfc/sfe4001.c
index cee00ad49b57..49eb91b5f50c 100644
--- a/drivers/net/sfc/sfe4001.c
+++ b/drivers/net/sfc/sfe4001.c
@@ -188,7 +188,7 @@ static int sfn4111t_reset(struct efx_nic *efx)
188 efx_oword_t reg; 188 efx_oword_t reg;
189 189
190 /* GPIO 3 and the GPIO register are shared with I2C, so block that */ 190 /* GPIO 3 and the GPIO register are shared with I2C, so block that */
191 mutex_lock(&efx->i2c_adap.bus_lock); 191 i2c_lock_adapter(&efx->i2c_adap);
192 192
193 /* Pull RST_N (GPIO 2) low then let it up again, setting the 193 /* Pull RST_N (GPIO 2) low then let it up again, setting the
194 * FLASH_CFG_1 strap (GPIO 3) appropriately. Only change the 194 * FLASH_CFG_1 strap (GPIO 3) appropriately. Only change the
@@ -204,7 +204,7 @@ static int sfn4111t_reset(struct efx_nic *efx)
204 falcon_write(efx, &reg, GPIO_CTL_REG_KER); 204 falcon_write(efx, &reg, GPIO_CTL_REG_KER);
205 msleep(1); 205 msleep(1);
206 206
207 mutex_unlock(&efx->i2c_adap.bus_lock); 207 i2c_unlock_adapter(&efx->i2c_adap);
208 208
209 ssleep(1); 209 ssleep(1);
210 return 0; 210 return 0;
diff --git a/drivers/net/sh_eth.c b/drivers/net/sh_eth.c
index f49d0800c1d1..528b912a4b0d 100644
--- a/drivers/net/sh_eth.c
+++ b/drivers/net/sh_eth.c
@@ -30,6 +30,7 @@
30#include <linux/phy.h> 30#include <linux/phy.h>
31#include <linux/cache.h> 31#include <linux/cache.h>
32#include <linux/io.h> 32#include <linux/io.h>
33#include <asm/cacheflush.h>
33 34
34#include "sh_eth.h" 35#include "sh_eth.h"
35 36
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 2ab5c39f33ca..6a10d7ba5877 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -4538,6 +4538,8 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
4538 goto err_out_free_netdev; 4538 goto err_out_free_netdev;
4539 } 4539 }
4540 4540
4541 netif_carrier_off(dev);
4542
4541 netif_napi_add(dev, &hw->napi, sky2_poll, NAPI_WEIGHT); 4543 netif_napi_add(dev, &hw->napi, sky2_poll, NAPI_WEIGHT);
4542 4544
4543 err = request_irq(pdev->irq, sky2_intr, 4545 err = request_irq(pdev->irq, sky2_intr,
diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c
index 05c91ee6921e..f12206bdbb75 100644
--- a/drivers/net/smc91x.c
+++ b/drivers/net/smc91x.c
@@ -2283,7 +2283,7 @@ static int __devinit smc_drv_probe(struct platform_device *pdev)
2283 2283
2284 ndev->irq = ires->start; 2284 ndev->irq = ires->start;
2285 2285
2286 if (ires->flags & IRQF_TRIGGER_MASK) 2286 if (irq_flags == -1 || ires->flags & IRQF_TRIGGER_MASK)
2287 irq_flags = ires->flags & IRQF_TRIGGER_MASK; 2287 irq_flags = ires->flags & IRQF_TRIGGER_MASK;
2288 2288
2289 ret = smc_request_attrib(pdev, ndev); 2289 ret = smc_request_attrib(pdev, ndev);
diff --git a/drivers/net/smsc911x.c b/drivers/net/smsc911x.c
index ccdd196f5297..f9cdcbcb77d4 100644
--- a/drivers/net/smsc911x.c
+++ b/drivers/net/smsc911x.c
@@ -986,7 +986,7 @@ static int smsc911x_poll(struct napi_struct *napi, int budget)
986 struct net_device *dev = pdata->dev; 986 struct net_device *dev = pdata->dev;
987 int npackets = 0; 987 int npackets = 0;
988 988
989 while (likely(netif_running(dev)) && (npackets < budget)) { 989 while (npackets < budget) {
990 unsigned int pktlength; 990 unsigned int pktlength;
991 unsigned int pktwords; 991 unsigned int pktwords;
992 struct sk_buff *skb; 992 struct sk_buff *skb;
diff --git a/drivers/net/smsc9420.c b/drivers/net/smsc9420.c
index b4909a2dec66..0f7909276237 100644
--- a/drivers/net/smsc9420.c
+++ b/drivers/net/smsc9420.c
@@ -252,6 +252,9 @@ static int smsc9420_ethtool_get_settings(struct net_device *dev,
252{ 252{
253 struct smsc9420_pdata *pd = netdev_priv(dev); 253 struct smsc9420_pdata *pd = netdev_priv(dev);
254 254
255 if (!pd->phy_dev)
256 return -ENODEV;
257
255 cmd->maxtxpkt = 1; 258 cmd->maxtxpkt = 1;
256 cmd->maxrxpkt = 1; 259 cmd->maxrxpkt = 1;
257 return phy_ethtool_gset(pd->phy_dev, cmd); 260 return phy_ethtool_gset(pd->phy_dev, cmd);
@@ -262,6 +265,9 @@ static int smsc9420_ethtool_set_settings(struct net_device *dev,
262{ 265{
263 struct smsc9420_pdata *pd = netdev_priv(dev); 266 struct smsc9420_pdata *pd = netdev_priv(dev);
264 267
268 if (!pd->phy_dev)
269 return -ENODEV;
270
265 return phy_ethtool_sset(pd->phy_dev, cmd); 271 return phy_ethtool_sset(pd->phy_dev, cmd);
266} 272}
267 273
@@ -290,6 +296,10 @@ static void smsc9420_ethtool_set_msglevel(struct net_device *netdev, u32 data)
290static int smsc9420_ethtool_nway_reset(struct net_device *netdev) 296static int smsc9420_ethtool_nway_reset(struct net_device *netdev)
291{ 297{
292 struct smsc9420_pdata *pd = netdev_priv(netdev); 298 struct smsc9420_pdata *pd = netdev_priv(netdev);
299
300 if (!pd->phy_dev)
301 return -ENODEV;
302
293 return phy_start_aneg(pd->phy_dev); 303 return phy_start_aneg(pd->phy_dev);
294} 304}
295 305
@@ -312,6 +322,10 @@ smsc9420_ethtool_getregs(struct net_device *dev, struct ethtool_regs *regs,
312 for (i = 0; i < 0x100; i += (sizeof(u32))) 322 for (i = 0; i < 0x100; i += (sizeof(u32)))
313 data[j++] = smsc9420_reg_read(pd, i); 323 data[j++] = smsc9420_reg_read(pd, i);
314 324
325 // cannot read phy registers if the net device is down
326 if (!phy_dev)
327 return;
328
315 for (i = 0; i <= 31; i++) 329 for (i = 0; i <= 31; i++)
316 data[j++] = smsc9420_mii_read(phy_dev->bus, phy_dev->addr, i); 330 data[j++] = smsc9420_mii_read(phy_dev->bus, phy_dev->addr, i);
317} 331}
diff --git a/drivers/net/stmmac/stmmac_main.c b/drivers/net/stmmac/stmmac_main.c
index c2f14dc9ba28..9542995ba667 100644
--- a/drivers/net/stmmac/stmmac_main.c
+++ b/drivers/net/stmmac/stmmac_main.c
@@ -416,13 +416,8 @@ static void init_dma_desc_rings(struct net_device *dev)
416 unsigned int txsize = priv->dma_tx_size; 416 unsigned int txsize = priv->dma_tx_size;
417 unsigned int rxsize = priv->dma_rx_size; 417 unsigned int rxsize = priv->dma_rx_size;
418 unsigned int bfsize = priv->dma_buf_sz; 418 unsigned int bfsize = priv->dma_buf_sz;
419 int buff2_needed = 0; 419 int buff2_needed = 0, dis_ic = 0;
420 int dis_ic = 0;
421 420
422#ifdef CONFIG_STMMAC_TIMER
423 /* Using Timers disable interrupts on completion for the reception */
424 dis_ic = 1;
425#endif
426 /* Set the Buffer size according to the MTU; 421 /* Set the Buffer size according to the MTU;
427 * indeed, in case of jumbo we need to bump-up the buffer sizes. 422 * indeed, in case of jumbo we need to bump-up the buffer sizes.
428 */ 423 */
@@ -437,6 +432,11 @@ static void init_dma_desc_rings(struct net_device *dev)
437 else 432 else
438 bfsize = DMA_BUFFER_SIZE; 433 bfsize = DMA_BUFFER_SIZE;
439 434
435#ifdef CONFIG_STMMAC_TIMER
436 /* Disable interrupts on completion for the reception if timer is on */
437 if (likely(priv->tm->enable))
438 dis_ic = 1;
439#endif
440 /* If the MTU exceeds 8k so use the second buffer in the chain */ 440 /* If the MTU exceeds 8k so use the second buffer in the chain */
441 if (bfsize >= BUF_SIZE_8KiB) 441 if (bfsize >= BUF_SIZE_8KiB)
442 buff2_needed = 1; 442 buff2_needed = 1;
@@ -809,20 +809,22 @@ static void stmmac_tx(struct stmmac_priv *priv)
809 809
810static inline void stmmac_enable_irq(struct stmmac_priv *priv) 810static inline void stmmac_enable_irq(struct stmmac_priv *priv)
811{ 811{
812#ifndef CONFIG_STMMAC_TIMER 812#ifdef CONFIG_STMMAC_TIMER
813 writel(DMA_INTR_DEFAULT_MASK, priv->dev->base_addr + DMA_INTR_ENA); 813 if (likely(priv->tm->enable))
814#else 814 priv->tm->timer_start(tmrate);
815 priv->tm->timer_start(tmrate); 815 else
816#endif 816#endif
817 writel(DMA_INTR_DEFAULT_MASK, priv->dev->base_addr + DMA_INTR_ENA);
817} 818}
818 819
819static inline void stmmac_disable_irq(struct stmmac_priv *priv) 820static inline void stmmac_disable_irq(struct stmmac_priv *priv)
820{ 821{
821#ifndef CONFIG_STMMAC_TIMER 822#ifdef CONFIG_STMMAC_TIMER
822 writel(0, priv->dev->base_addr + DMA_INTR_ENA); 823 if (likely(priv->tm->enable))
823#else 824 priv->tm->timer_stop();
824 priv->tm->timer_stop(); 825 else
825#endif 826#endif
827 writel(0, priv->dev->base_addr + DMA_INTR_ENA);
826} 828}
827 829
828static int stmmac_has_work(struct stmmac_priv *priv) 830static int stmmac_has_work(struct stmmac_priv *priv)
@@ -1031,22 +1033,23 @@ static int stmmac_open(struct net_device *dev)
1031 } 1033 }
1032 1034
1033#ifdef CONFIG_STMMAC_TIMER 1035#ifdef CONFIG_STMMAC_TIMER
1034 priv->tm = kmalloc(sizeof(struct stmmac_timer *), GFP_KERNEL); 1036 priv->tm = kzalloc(sizeof(struct stmmac_timer *), GFP_KERNEL);
1035 if (unlikely(priv->tm == NULL)) { 1037 if (unlikely(priv->tm == NULL)) {
1036 pr_err("%s: ERROR: timer memory alloc failed \n", __func__); 1038 pr_err("%s: ERROR: timer memory alloc failed \n", __func__);
1037 return -ENOMEM; 1039 return -ENOMEM;
1038 } 1040 }
1039 priv->tm->freq = tmrate; 1041 priv->tm->freq = tmrate;
1040 1042
1041 /* Test if the HW timer can be actually used. 1043 /* Test if the external timer can be actually used.
1042 * In case of failure continue with no timer. */ 1044 * In case of failure continue without timer. */
1043 if (unlikely((stmmac_open_ext_timer(dev, priv->tm)) < 0)) { 1045 if (unlikely((stmmac_open_ext_timer(dev, priv->tm)) < 0)) {
1044 pr_warning("stmmaceth: cannot attach the HW timer\n"); 1046 pr_warning("stmmaceth: cannot attach the external timer.\n");
1045 tmrate = 0; 1047 tmrate = 0;
1046 priv->tm->freq = 0; 1048 priv->tm->freq = 0;
1047 priv->tm->timer_start = stmmac_no_timer_started; 1049 priv->tm->timer_start = stmmac_no_timer_started;
1048 priv->tm->timer_stop = stmmac_no_timer_stopped; 1050 priv->tm->timer_stop = stmmac_no_timer_stopped;
1049 } 1051 } else
1052 priv->tm->enable = 1;
1050#endif 1053#endif
1051 1054
1052 /* Create and initialize the TX/RX descriptors chains. */ 1055 /* Create and initialize the TX/RX descriptors chains. */
@@ -1322,9 +1325,11 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)
1322 1325
1323 /* Interrupt on completition only for the latest segment */ 1326 /* Interrupt on completition only for the latest segment */
1324 priv->mac_type->ops->close_tx_desc(desc); 1327 priv->mac_type->ops->close_tx_desc(desc);
1328
1325#ifdef CONFIG_STMMAC_TIMER 1329#ifdef CONFIG_STMMAC_TIMER
1326 /* Clean IC while using timers */ 1330 /* Clean IC while using timer */
1327 priv->mac_type->ops->clear_tx_ic(desc); 1331 if (likely(priv->tm->enable))
1332 priv->mac_type->ops->clear_tx_ic(desc);
1328#endif 1333#endif
1329 /* To avoid raise condition */ 1334 /* To avoid raise condition */
1330 priv->mac_type->ops->set_tx_owner(first); 1335 priv->mac_type->ops->set_tx_owner(first);
@@ -2028,7 +2033,8 @@ static int stmmac_suspend(struct platform_device *pdev, pm_message_t state)
2028 2033
2029#ifdef CONFIG_STMMAC_TIMER 2034#ifdef CONFIG_STMMAC_TIMER
2030 priv->tm->timer_stop(); 2035 priv->tm->timer_stop();
2031 dis_ic = 1; 2036 if (likely(priv->tm->enable))
2037 dis_ic = 1;
2032#endif 2038#endif
2033 napi_disable(&priv->napi); 2039 napi_disable(&priv->napi);
2034 2040
diff --git a/drivers/net/stmmac/stmmac_timer.c b/drivers/net/stmmac/stmmac_timer.c
index b838c6582077..679f61ffb1f8 100644
--- a/drivers/net/stmmac/stmmac_timer.c
+++ b/drivers/net/stmmac/stmmac_timer.c
@@ -63,7 +63,7 @@ int stmmac_open_ext_timer(struct net_device *dev, struct stmmac_timer *tm)
63 63
64 stmmac_rtc = rtc_class_open(CONFIG_RTC_HCTOSYS_DEVICE); 64 stmmac_rtc = rtc_class_open(CONFIG_RTC_HCTOSYS_DEVICE);
65 if (stmmac_rtc == NULL) { 65 if (stmmac_rtc == NULL) {
66 pr_error("open rtc device failed\n"); 66 pr_err("open rtc device failed\n");
67 return -ENODEV; 67 return -ENODEV;
68 } 68 }
69 69
@@ -71,7 +71,7 @@ int stmmac_open_ext_timer(struct net_device *dev, struct stmmac_timer *tm)
71 71
72 /* Periodic mode is not supported */ 72 /* Periodic mode is not supported */
73 if ((rtc_irq_set_freq(stmmac_rtc, &stmmac_task, tm->freq) < 0)) { 73 if ((rtc_irq_set_freq(stmmac_rtc, &stmmac_task, tm->freq) < 0)) {
74 pr_error("set periodic failed\n"); 74 pr_err("set periodic failed\n");
75 rtc_irq_unregister(stmmac_rtc, &stmmac_task); 75 rtc_irq_unregister(stmmac_rtc, &stmmac_task);
76 rtc_class_close(stmmac_rtc); 76 rtc_class_close(stmmac_rtc);
77 return -1; 77 return -1;
diff --git a/drivers/net/stmmac/stmmac_timer.h b/drivers/net/stmmac/stmmac_timer.h
index f795cae33725..6863590d184b 100644
--- a/drivers/net/stmmac/stmmac_timer.h
+++ b/drivers/net/stmmac/stmmac_timer.h
@@ -26,6 +26,7 @@ struct stmmac_timer {
26 void (*timer_start) (unsigned int new_freq); 26 void (*timer_start) (unsigned int new_freq);
27 void (*timer_stop) (void); 27 void (*timer_stop) (void);
28 unsigned int freq; 28 unsigned int freq;
29 unsigned int enable;
29}; 30};
30 31
31/* Open the HW timer device and return 0 in case of success */ 32/* Open the HW timer device and return 0 in case of success */
diff --git a/drivers/net/sungem.c b/drivers/net/sungem.c
index 7019a0d1a82b..61640b99b705 100644
--- a/drivers/net/sungem.c
+++ b/drivers/net/sungem.c
@@ -2063,7 +2063,15 @@ static int gem_check_invariants(struct gem *gp)
2063 mif_cfg &= ~MIF_CFG_PSELECT; 2063 mif_cfg &= ~MIF_CFG_PSELECT;
2064 writel(mif_cfg, gp->regs + MIF_CFG); 2064 writel(mif_cfg, gp->regs + MIF_CFG);
2065 } else { 2065 } else {
2066 gp->phy_type = phy_serialink; 2066#ifdef CONFIG_SPARC
2067 const char *p;
2068
2069 p = of_get_property(gp->of_node, "shared-pins", NULL);
2070 if (p && !strcmp(p, "serdes"))
2071 gp->phy_type = phy_serdes;
2072 else
2073#endif
2074 gp->phy_type = phy_serialink;
2067 } 2075 }
2068 if (gp->phy_type == phy_mii_mdio1 || 2076 if (gp->phy_type == phy_mii_mdio1 ||
2069 gp->phy_type == phy_mii_mdio0) { 2077 gp->phy_type == phy_mii_mdio0) {
diff --git a/drivers/net/tokenring/ibmtr.c b/drivers/net/tokenring/ibmtr.c
index 36cb2423bcf1..75fa32e34fd0 100644
--- a/drivers/net/tokenring/ibmtr.c
+++ b/drivers/net/tokenring/ibmtr.c
@@ -1144,9 +1144,16 @@ static void dir_open_adapter (struct net_device *dev)
1144 } else { 1144 } else {
1145 char **prphase = printphase; 1145 char **prphase = printphase;
1146 char **prerror = printerror; 1146 char **prerror = printerror;
1147 int pnr = err / 16 - 1;
1148 int enr = err % 16 - 1;
1147 DPRINTK("TR Adapter misc open failure, error code = "); 1149 DPRINTK("TR Adapter misc open failure, error code = ");
1148 printk("0x%x, Phase: %s, Error: %s\n", 1150 if (pnr < 0 || pnr >= ARRAY_SIZE(printphase) ||
1149 err, prphase[err/16 -1], prerror[err%16 -1]); 1151 enr < 0 ||
1152 enr >= ARRAY_SIZE(printerror))
1153 printk("0x%x, invalid Phase/Error.", err);
1154 else
1155 printk("0x%x, Phase: %s, Error: %s\n", err,
1156 prphase[pnr], prerror[enr]);
1150 printk(" retrying after %ds delay...\n", 1157 printk(" retrying after %ds delay...\n",
1151 TR_RETRY_INTERVAL/HZ); 1158 TR_RETRY_INTERVAL/HZ);
1152 } 1159 }
diff --git a/drivers/net/usb/Kconfig b/drivers/net/usb/Kconfig
index c47237c2d638..32d93564a74d 100644
--- a/drivers/net/usb/Kconfig
+++ b/drivers/net/usb/Kconfig
@@ -174,7 +174,7 @@ config USB_NET_CDCETHER
174 * Ericsson Mobile Broadband Module (all variants) 174 * Ericsson Mobile Broadband Module (all variants)
175 * Motorola (DM100 and SB4100) 175 * Motorola (DM100 and SB4100)
176 * Broadcom Cable Modem (reference design) 176 * Broadcom Cable Modem (reference design)
177 * Toshiba (PCX1100U and F3507g) 177 * Toshiba (PCX1100U and F3507g/F3607gw)
178 * ... 178 * ...
179 179
180 This driver creates an interface named "ethX", where X depends on 180 This driver creates an interface named "ethX", where X depends on
diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
index 4a6aff579403..21e1ba160008 100644
--- a/drivers/net/usb/cdc_ether.c
+++ b/drivers/net/usb/cdc_ether.c
@@ -544,20 +544,60 @@ static const struct usb_device_id products [] = {
544 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE), 544 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
545 .driver_info = (unsigned long) &cdc_info, 545 .driver_info = (unsigned long) &cdc_info,
546}, { 546}, {
547 /* Ericsson F3307 */ 547 /* Ericsson F3607gw ver 2 */
548 USB_DEVICE_AND_INTERFACE_INFO(0x0bdb, 0x1905, USB_CLASS_COMM,
549 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
550 .driver_info = (unsigned long) &cdc_info,
551}, {
552 /* Ericsson F3607gw ver 3 */
548 USB_DEVICE_AND_INTERFACE_INFO(0x0bdb, 0x1906, USB_CLASS_COMM, 553 USB_DEVICE_AND_INTERFACE_INFO(0x0bdb, 0x1906, USB_CLASS_COMM,
549 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE), 554 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
550 .driver_info = (unsigned long) &cdc_info, 555 .driver_info = (unsigned long) &cdc_info,
551}, { 556}, {
557 /* Ericsson F3307 */
558 USB_DEVICE_AND_INTERFACE_INFO(0x0bdb, 0x190a, USB_CLASS_COMM,
559 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
560 .driver_info = (unsigned long) &cdc_info,
561}, {
562 /* Ericsson F3307 ver 2 */
563 USB_DEVICE_AND_INTERFACE_INFO(0x0bdb, 0x1909, USB_CLASS_COMM,
564 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
565 .driver_info = (unsigned long) &cdc_info,
566}, {
567 /* Ericsson C3607w */
568 USB_DEVICE_AND_INTERFACE_INFO(0x0bdb, 0x1049, USB_CLASS_COMM,
569 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
570 .driver_info = (unsigned long) &cdc_info,
571}, {
552 /* Toshiba F3507g */ 572 /* Toshiba F3507g */
553 USB_DEVICE_AND_INTERFACE_INFO(0x0930, 0x130b, USB_CLASS_COMM, 573 USB_DEVICE_AND_INTERFACE_INFO(0x0930, 0x130b, USB_CLASS_COMM,
554 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE), 574 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
555 .driver_info = (unsigned long) &cdc_info, 575 .driver_info = (unsigned long) &cdc_info,
556}, { 576}, {
577 /* Toshiba F3607gw */
578 USB_DEVICE_AND_INTERFACE_INFO(0x0930, 0x130c, USB_CLASS_COMM,
579 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
580 .driver_info = (unsigned long) &cdc_info,
581}, {
582 /* Toshiba F3607gw ver 2 */
583 USB_DEVICE_AND_INTERFACE_INFO(0x0930, 0x1311, USB_CLASS_COMM,
584 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
585 .driver_info = (unsigned long) &cdc_info,
586}, {
557 /* Dell F3507g */ 587 /* Dell F3507g */
558 USB_DEVICE_AND_INTERFACE_INFO(0x413c, 0x8147, USB_CLASS_COMM, 588 USB_DEVICE_AND_INTERFACE_INFO(0x413c, 0x8147, USB_CLASS_COMM,
559 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE), 589 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
560 .driver_info = (unsigned long) &cdc_info, 590 .driver_info = (unsigned long) &cdc_info,
591}, {
592 /* Dell F3607gw */
593 USB_DEVICE_AND_INTERFACE_INFO(0x413c, 0x8183, USB_CLASS_COMM,
594 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
595 .driver_info = (unsigned long) &cdc_info,
596}, {
597 /* Dell F3607gw ver 2 */
598 USB_DEVICE_AND_INTERFACE_INFO(0x413c, 0x8184, USB_CLASS_COMM,
599 USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
600 .driver_info = (unsigned long) &cdc_info,
561}, 601},
562 { }, // END 602 { }, // END
563}; 603};
diff --git a/drivers/net/usb/dm9601.c b/drivers/net/usb/dm9601.c
index 72470f77f556..a2b30a10064f 100644
--- a/drivers/net/usb/dm9601.c
+++ b/drivers/net/usb/dm9601.c
@@ -649,6 +649,10 @@ static const struct usb_device_id products[] = {
649 USB_DEVICE(0x0fe6, 0x8101), /* DM9601 USB to Fast Ethernet Adapter */ 649 USB_DEVICE(0x0fe6, 0x8101), /* DM9601 USB to Fast Ethernet Adapter */
650 .driver_info = (unsigned long)&dm9601_info, 650 .driver_info = (unsigned long)&dm9601_info,
651 }, 651 },
652 {
653 USB_DEVICE(0x0a46, 0x9000), /* DM9000E */
654 .driver_info = (unsigned long)&dm9601_info,
655 },
652 {}, // END 656 {}, // END
653}; 657};
654 658
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
index fa4e58196c21..43bc3fcc0d85 100644
--- a/drivers/net/usb/hso.c
+++ b/drivers/net/usb/hso.c
@@ -378,7 +378,7 @@ static void dbg_dump(int line_count, const char *func_name, unsigned char *buf,
378} 378}
379 379
380#define DUMP(buf_, len_) \ 380#define DUMP(buf_, len_) \
381 dbg_dump(__LINE__, __func__, buf_, len_) 381 dbg_dump(__LINE__, __func__, (unsigned char *)buf_, len_)
382 382
383#define DUMP1(buf_, len_) \ 383#define DUMP1(buf_, len_) \
384 do { \ 384 do { \
@@ -1363,7 +1363,7 @@ static void hso_serial_close(struct tty_struct *tty, struct file *filp)
1363 /* reset the rts and dtr */ 1363 /* reset the rts and dtr */
1364 /* do the actual close */ 1364 /* do the actual close */
1365 serial->open_count--; 1365 serial->open_count--;
1366 kref_put(&serial->parent->ref, hso_serial_ref_free); 1366
1367 if (serial->open_count <= 0) { 1367 if (serial->open_count <= 0) {
1368 serial->open_count = 0; 1368 serial->open_count = 0;
1369 spin_lock_irq(&serial->serial_lock); 1369 spin_lock_irq(&serial->serial_lock);
@@ -1383,6 +1383,8 @@ static void hso_serial_close(struct tty_struct *tty, struct file *filp)
1383 usb_autopm_put_interface(serial->parent->interface); 1383 usb_autopm_put_interface(serial->parent->interface);
1384 1384
1385 mutex_unlock(&serial->parent->mutex); 1385 mutex_unlock(&serial->parent->mutex);
1386
1387 kref_put(&serial->parent->ref, hso_serial_ref_free);
1386} 1388}
1387 1389
1388/* close the requested serial port */ 1390/* close the requested serial port */
@@ -1527,7 +1529,7 @@ static void tiocmget_intr_callback(struct urb *urb)
1527 dev_warn(&usb->dev, 1529 dev_warn(&usb->dev,
1528 "hso received invalid serial state notification\n"); 1530 "hso received invalid serial state notification\n");
1529 DUMP(serial_state_notification, 1531 DUMP(serial_state_notification,
1530 sizeof(hso_serial_state_notifation)) 1532 sizeof(struct hso_serial_state_notification));
1531 } else { 1533 } else {
1532 1534
1533 UART_state_bitmap = le16_to_cpu(serial_state_notification-> 1535 UART_state_bitmap = le16_to_cpu(serial_state_notification->
diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index 0caa8008c51c..f56dec6119c3 100644
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
@@ -362,12 +362,12 @@ generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags)
362 retval = -EINVAL; 362 retval = -EINVAL;
363 goto halt_fail_and_release; 363 goto halt_fail_and_release;
364 } 364 }
365 dev->hard_mtu = tmp;
366 net->mtu = dev->hard_mtu - net->hard_header_len;
367 dev_warn(&intf->dev, 365 dev_warn(&intf->dev,
368 "dev can't take %u byte packets (max %u), " 366 "dev can't take %u byte packets (max %u), "
369 "adjusting MTU to %u\n", 367 "adjusting MTU to %u\n",
370 dev->hard_mtu, tmp, net->mtu); 368 dev->hard_mtu, tmp, tmp - net->hard_header_len);
369 dev->hard_mtu = tmp;
370 net->mtu = dev->hard_mtu - net->hard_header_len;
371 } 371 }
372 372
373 /* REVISIT: peripheral "alignment" request is ignored ... */ 373 /* REVISIT: peripheral "alignment" request is ignored ... */
diff --git a/drivers/net/veth.c b/drivers/net/veth.c
index ade5b344f75d..52af5017c46b 100644
--- a/drivers/net/veth.c
+++ b/drivers/net/veth.c
@@ -210,32 +210,29 @@ rx_drop:
210static struct net_device_stats *veth_get_stats(struct net_device *dev) 210static struct net_device_stats *veth_get_stats(struct net_device *dev)
211{ 211{
212 struct veth_priv *priv; 212 struct veth_priv *priv;
213 struct net_device_stats *dev_stats;
214 int cpu; 213 int cpu;
215 struct veth_net_stats *stats; 214 struct veth_net_stats *stats, total = {0};
216 215
217 priv = netdev_priv(dev); 216 priv = netdev_priv(dev);
218 dev_stats = &dev->stats;
219
220 dev_stats->rx_packets = 0;
221 dev_stats->tx_packets = 0;
222 dev_stats->rx_bytes = 0;
223 dev_stats->tx_bytes = 0;
224 dev_stats->tx_dropped = 0;
225 dev_stats->rx_dropped = 0;
226 217
227 for_each_online_cpu(cpu) { 218 for_each_possible_cpu(cpu) {
228 stats = per_cpu_ptr(priv->stats, cpu); 219 stats = per_cpu_ptr(priv->stats, cpu);
229 220
230 dev_stats->rx_packets += stats->rx_packets; 221 total.rx_packets += stats->rx_packets;
231 dev_stats->tx_packets += stats->tx_packets; 222 total.tx_packets += stats->tx_packets;
232 dev_stats->rx_bytes += stats->rx_bytes; 223 total.rx_bytes += stats->rx_bytes;
233 dev_stats->tx_bytes += stats->tx_bytes; 224 total.tx_bytes += stats->tx_bytes;
234 dev_stats->tx_dropped += stats->tx_dropped; 225 total.tx_dropped += stats->tx_dropped;
235 dev_stats->rx_dropped += stats->rx_dropped; 226 total.rx_dropped += stats->rx_dropped;
236 } 227 }
237 228 dev->stats.rx_packets = total.rx_packets;
238 return dev_stats; 229 dev->stats.tx_packets = total.tx_packets;
230 dev->stats.rx_bytes = total.rx_bytes;
231 dev->stats.tx_bytes = total.tx_bytes;
232 dev->stats.tx_dropped = total.tx_dropped;
233 dev->stats.rx_dropped = total.rx_dropped;
234
235 return &dev->stats;
239} 236}
240 237
241static int veth_open(struct net_device *dev) 238static int veth_open(struct net_device *dev)
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 3709d6af9abf..b9e002fccbca 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -516,8 +516,7 @@ again:
516 /* Free up any pending old buffers before queueing new ones. */ 516 /* Free up any pending old buffers before queueing new ones. */
517 free_old_xmit_skbs(vi); 517 free_old_xmit_skbs(vi);
518 518
519 /* Put new one in send queue and do transmit */ 519 /* Try to transmit */
520 __skb_queue_head(&vi->send, skb);
521 capacity = xmit_skb(vi, skb); 520 capacity = xmit_skb(vi, skb);
522 521
523 /* This can happen with OOM and indirect buffers. */ 522 /* This can happen with OOM and indirect buffers. */
@@ -531,8 +530,17 @@ again:
531 } 530 }
532 return NETDEV_TX_BUSY; 531 return NETDEV_TX_BUSY;
533 } 532 }
534
535 vi->svq->vq_ops->kick(vi->svq); 533 vi->svq->vq_ops->kick(vi->svq);
534
535 /*
536 * Put new one in send queue. You'd expect we'd need this before
537 * xmit_skb calls add_buf(), since the callback can be triggered
538 * immediately after that. But since the callback just triggers
539 * another call back here, normal network xmit locking prevents the
540 * race.
541 */
542 __skb_queue_head(&vi->send, skb);
543
536 /* Don't wait up for transmitted skbs to be freed. */ 544 /* Don't wait up for transmitted skbs to be freed. */
537 skb_orphan(skb); 545 skb_orphan(skb);
538 nf_reset(skb); 546 nf_reset(skb);
@@ -990,7 +998,7 @@ static unsigned int features[] = {
990 VIRTIO_NET_F_CTRL_RX, VIRTIO_NET_F_CTRL_VLAN, 998 VIRTIO_NET_F_CTRL_RX, VIRTIO_NET_F_CTRL_VLAN,
991}; 999};
992 1000
993static struct virtio_driver virtio_net = { 1001static struct virtio_driver virtio_net_driver = {
994 .feature_table = features, 1002 .feature_table = features,
995 .feature_table_size = ARRAY_SIZE(features), 1003 .feature_table_size = ARRAY_SIZE(features),
996 .driver.name = KBUILD_MODNAME, 1004 .driver.name = KBUILD_MODNAME,
@@ -1003,12 +1011,12 @@ static struct virtio_driver virtio_net = {
1003 1011
1004static int __init init(void) 1012static int __init init(void)
1005{ 1013{
1006 return register_virtio_driver(&virtio_net); 1014 return register_virtio_driver(&virtio_net_driver);
1007} 1015}
1008 1016
1009static void __exit fini(void) 1017static void __exit fini(void)
1010{ 1018{
1011 unregister_virtio_driver(&virtio_net); 1019 unregister_virtio_driver(&virtio_net_driver);
1012} 1020}
1013module_init(init); 1021module_init(init);
1014module_exit(fini); 1022module_exit(fini);
diff --git a/drivers/net/wan/cosa.c b/drivers/net/wan/cosa.c
index e2c33c06190b..8e25ca7080c7 100644
--- a/drivers/net/wan/cosa.c
+++ b/drivers/net/wan/cosa.c
@@ -907,6 +907,7 @@ static ssize_t cosa_write(struct file *file,
907 current->state = TASK_RUNNING; 907 current->state = TASK_RUNNING;
908 chan->tx_status = 1; 908 chan->tx_status = 1;
909 spin_unlock_irqrestore(&cosa->lock, flags); 909 spin_unlock_irqrestore(&cosa->lock, flags);
910 up(&chan->wsem);
910 return -ERESTARTSYS; 911 return -ERESTARTSYS;
911 } 912 }
912 } 913 }
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index 7116a1aa20ce..abf896a7390e 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -4790,9 +4790,8 @@ static int proc_stats_rid_open( struct inode *inode,
4790static int get_dec_u16( char *buffer, int *start, int limit ) { 4790static int get_dec_u16( char *buffer, int *start, int limit ) {
4791 u16 value; 4791 u16 value;
4792 int valid = 0; 4792 int valid = 0;
4793 for( value = 0; buffer[*start] >= '0' && 4793 for (value = 0; *start < limit && buffer[*start] >= '0' &&
4794 buffer[*start] <= '9' && 4794 buffer[*start] <= '9'; (*start)++) {
4795 *start < limit; (*start)++ ) {
4796 valid = 1; 4795 valid = 1;
4797 value *= 10; 4796 value *= 10;
4798 value += buffer[*start] - '0'; 4797 value += buffer[*start] - '0';
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index 9c6ab5378f6e..95a8e232b58f 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -1125,7 +1125,6 @@ ath5k_mode_setup(struct ath5k_softc *sc)
1125 /* configure operational mode */ 1125 /* configure operational mode */
1126 ath5k_hw_set_opmode(ah); 1126 ath5k_hw_set_opmode(ah);
1127 1127
1128 ath5k_hw_set_mcast_filter(ah, 0, 0);
1129 ATH5K_DBG(sc, ATH5K_DEBUG_MODE, "RX filter 0x%x\n", rfilt); 1128 ATH5K_DBG(sc, ATH5K_DEBUG_MODE, "RX filter 0x%x\n", rfilt);
1130} 1129}
1131 1130
diff --git a/drivers/net/wireless/ath/ath5k/led.c b/drivers/net/wireless/ath/ath5k/led.c
index b767c3b67b24..b548c8eaaae1 100644
--- a/drivers/net/wireless/ath/ath5k/led.c
+++ b/drivers/net/wireless/ath/ath5k/led.c
@@ -63,12 +63,16 @@ static const struct pci_device_id ath5k_led_devices[] = {
63 { ATH_SDEVICE(PCI_VENDOR_ID_AMBIT, 0x0422), ATH_LED(1, 1) }, 63 { ATH_SDEVICE(PCI_VENDOR_ID_AMBIT, 0x0422), ATH_LED(1, 1) },
64 /* E-machines E510 (tuliom@gmail.com) */ 64 /* E-machines E510 (tuliom@gmail.com) */
65 { ATH_SDEVICE(PCI_VENDOR_ID_AMBIT, 0x0428), ATH_LED(3, 0) }, 65 { ATH_SDEVICE(PCI_VENDOR_ID_AMBIT, 0x0428), ATH_LED(3, 0) },
66 /* BenQ Joybook R55v (nowymarluk@wp.pl) */
67 { ATH_SDEVICE(PCI_VENDOR_ID_QMI, 0x0100), ATH_LED(1, 0) },
66 /* Acer Extensa 5620z (nekoreeve@gmail.com) */ 68 /* Acer Extensa 5620z (nekoreeve@gmail.com) */
67 { ATH_SDEVICE(PCI_VENDOR_ID_QMI, 0x0105), ATH_LED(3, 0) }, 69 { ATH_SDEVICE(PCI_VENDOR_ID_QMI, 0x0105), ATH_LED(3, 0) },
68 /* Fukato Datacask Jupiter 1014a (mrb74@gmx.at) */ 70 /* Fukato Datacask Jupiter 1014a (mrb74@gmx.at) */
69 { ATH_SDEVICE(PCI_VENDOR_ID_AZWAVE, 0x1026), ATH_LED(3, 0) }, 71 { ATH_SDEVICE(PCI_VENDOR_ID_AZWAVE, 0x1026), ATH_LED(3, 0) },
70 /* IBM ThinkPad AR5BXB6 (legovini@spiro.fisica.unipd.it) */ 72 /* IBM ThinkPad AR5BXB6 (legovini@spiro.fisica.unipd.it) */
71 { ATH_SDEVICE(PCI_VENDOR_ID_IBM, 0x058a), ATH_LED(1, 0) }, 73 { ATH_SDEVICE(PCI_VENDOR_ID_IBM, 0x058a), ATH_LED(1, 0) },
74 /* HP Compaq CQ60-206US (ddreggors@jumptv.com) */
75 { ATH_SDEVICE(PCI_VENDOR_ID_HP, 0x0137a), ATH_LED(3, 1) },
72 /* HP Compaq C700 (nitrousnrg@gmail.com) */ 76 /* HP Compaq C700 (nitrousnrg@gmail.com) */
73 { ATH_SDEVICE(PCI_VENDOR_ID_HP, 0x0137b), ATH_LED(3, 1) }, 77 { ATH_SDEVICE(PCI_VENDOR_ID_HP, 0x0137b), ATH_LED(3, 1) },
74 /* IBM-specific AR5212 (all others) */ 78 /* IBM-specific AR5212 (all others) */
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 52bed89063d4..43d2be9867fc 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1555,6 +1555,8 @@ void ath_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
1555 BIT(NL80211_IFTYPE_ADHOC) | 1555 BIT(NL80211_IFTYPE_ADHOC) |
1556 BIT(NL80211_IFTYPE_MESH_POINT); 1556 BIT(NL80211_IFTYPE_MESH_POINT);
1557 1557
1558 hw->wiphy->ps_default = false;
1559
1558 hw->queues = 4; 1560 hw->queues = 4;
1559 hw->max_rates = 4; 1561 hw->max_rates = 4;
1560 hw->channel_change_time = 5000; 1562 hw->channel_change_time = 5000;
diff --git a/drivers/net/wireless/ath/ath9k/rc.c b/drivers/net/wireless/ath/ath9k/rc.c
index 16a271787b85..1895d63aad0a 100644
--- a/drivers/net/wireless/ath/ath9k/rc.c
+++ b/drivers/net/wireless/ath/ath9k/rc.c
@@ -679,7 +679,7 @@ static u8 ath_rc_get_highest_rix(struct ath_softc *sc,
679 return rate; 679 return rate;
680 680
681 if (rate_table->info[rate].valid_single_stream && 681 if (rate_table->info[rate].valid_single_stream &&
682 !(ath_rc_priv->ht_cap & WLAN_RC_DS_FLAG)); 682 !(ath_rc_priv->ht_cap & WLAN_RC_DS_FLAG))
683 return rate; 683 return rate;
684 684
685 /* This should not happen */ 685 /* This should not happen */
diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c
index 8701034569fa..de4e804bedf0 100644
--- a/drivers/net/wireless/b43/dma.c
+++ b/drivers/net/wireless/b43/dma.c
@@ -1157,8 +1157,9 @@ struct b43_dmaring *parse_cookie(struct b43_wldev *dev, u16 cookie, int *slot)
1157} 1157}
1158 1158
1159static int dma_tx_fragment(struct b43_dmaring *ring, 1159static int dma_tx_fragment(struct b43_dmaring *ring,
1160 struct sk_buff *skb) 1160 struct sk_buff **in_skb)
1161{ 1161{
1162 struct sk_buff *skb = *in_skb;
1162 const struct b43_dma_ops *ops = ring->ops; 1163 const struct b43_dma_ops *ops = ring->ops;
1163 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); 1164 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
1164 u8 *header; 1165 u8 *header;
@@ -1224,8 +1225,14 @@ static int dma_tx_fragment(struct b43_dmaring *ring,
1224 } 1225 }
1225 1226
1226 memcpy(skb_put(bounce_skb, skb->len), skb->data, skb->len); 1227 memcpy(skb_put(bounce_skb, skb->len), skb->data, skb->len);
1228 memcpy(bounce_skb->cb, skb->cb, sizeof(skb->cb));
1229 bounce_skb->dev = skb->dev;
1230 skb_set_queue_mapping(bounce_skb, skb_get_queue_mapping(skb));
1231 info = IEEE80211_SKB_CB(bounce_skb);
1232
1227 dev_kfree_skb_any(skb); 1233 dev_kfree_skb_any(skb);
1228 skb = bounce_skb; 1234 skb = bounce_skb;
1235 *in_skb = bounce_skb;
1229 meta->skb = skb; 1236 meta->skb = skb;
1230 meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1); 1237 meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1);
1231 if (b43_dma_mapping_error(ring, meta->dmaaddr, skb->len, 1)) { 1238 if (b43_dma_mapping_error(ring, meta->dmaaddr, skb->len, 1)) {
@@ -1355,7 +1362,11 @@ int b43_dma_tx(struct b43_wldev *dev, struct sk_buff *skb)
1355 * static, so we don't need to store it per frame. */ 1362 * static, so we don't need to store it per frame. */
1356 ring->queue_prio = skb_get_queue_mapping(skb); 1363 ring->queue_prio = skb_get_queue_mapping(skb);
1357 1364
1358 err = dma_tx_fragment(ring, skb); 1365 /* dma_tx_fragment might reallocate the skb, so invalidate pointers pointing
1366 * into the skb data or cb now. */
1367 hdr = NULL;
1368 info = NULL;
1369 err = dma_tx_fragment(ring, &skb);
1359 if (unlikely(err == -ENOKEY)) { 1370 if (unlikely(err == -ENOKEY)) {
1360 /* Drop this packet, as we don't have the encryption key 1371 /* Drop this packet, as we don't have the encryption key
1361 * anymore and must not transmit it unencrypted. */ 1372 * anymore and must not transmit it unencrypted. */
diff --git a/drivers/net/wireless/b43/leds.h b/drivers/net/wireless/b43/leds.h
index 4c56187810fc..32b66d53cdac 100644
--- a/drivers/net/wireless/b43/leds.h
+++ b/drivers/net/wireless/b43/leds.h
@@ -1,6 +1,7 @@
1#ifndef B43_LEDS_H_ 1#ifndef B43_LEDS_H_
2#define B43_LEDS_H_ 2#define B43_LEDS_H_
3 3
4struct b43_wl;
4struct b43_wldev; 5struct b43_wldev;
5 6
6#ifdef CONFIG_B43_LEDS 7#ifdef CONFIG_B43_LEDS
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index df6b26a0c05e..098dda1a67c1 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -4501,7 +4501,6 @@ static void b43_op_stop(struct ieee80211_hw *hw)
4501 4501
4502 cancel_work_sync(&(wl->beacon_update_trigger)); 4502 cancel_work_sync(&(wl->beacon_update_trigger));
4503 4503
4504 wiphy_rfkill_stop_polling(hw->wiphy);
4505 mutex_lock(&wl->mutex); 4504 mutex_lock(&wl->mutex);
4506 if (b43_status(dev) >= B43_STAT_STARTED) { 4505 if (b43_status(dev) >= B43_STAT_STARTED) {
4507 dev = b43_wireless_core_stop(dev); 4506 dev = b43_wireless_core_stop(dev);
@@ -4522,9 +4521,8 @@ static int b43_op_beacon_set_tim(struct ieee80211_hw *hw,
4522{ 4521{
4523 struct b43_wl *wl = hw_to_b43_wl(hw); 4522 struct b43_wl *wl = hw_to_b43_wl(hw);
4524 4523
4525 mutex_lock(&wl->mutex); 4524 /* FIXME: add locking */
4526 b43_update_templates(wl); 4525 b43_update_templates(wl);
4527 mutex_unlock(&wl->mutex);
4528 4526
4529 return 0; 4527 return 0;
4530} 4528}
diff --git a/drivers/net/wireless/b43/rfkill.c b/drivers/net/wireless/b43/rfkill.c
index 7a3218c5ba7d..ffdce6f3c909 100644
--- a/drivers/net/wireless/b43/rfkill.c
+++ b/drivers/net/wireless/b43/rfkill.c
@@ -33,7 +33,8 @@ bool b43_is_hw_radio_enabled(struct b43_wldev *dev)
33 & B43_MMIO_RADIO_HWENABLED_HI_MASK)) 33 & B43_MMIO_RADIO_HWENABLED_HI_MASK))
34 return 1; 34 return 1;
35 } else { 35 } else {
36 if (b43_read16(dev, B43_MMIO_RADIO_HWENABLED_LO) 36 if (b43_status(dev) >= B43_STAT_STARTED &&
37 b43_read16(dev, B43_MMIO_RADIO_HWENABLED_LO)
37 & B43_MMIO_RADIO_HWENABLED_LO_MASK) 38 & B43_MMIO_RADIO_HWENABLED_LO_MASK)
38 return 1; 39 return 1;
39 } 40 }
diff --git a/drivers/net/wireless/ipw2x00/ipw2100.c b/drivers/net/wireless/ipw2x00/ipw2100.c
index 240cff1e6979..6e2fc0cb6f8a 100644
--- a/drivers/net/wireless/ipw2x00/ipw2100.c
+++ b/drivers/net/wireless/ipw2x00/ipw2100.c
@@ -6029,7 +6029,7 @@ static struct net_device *ipw2100_alloc_device(struct pci_dev *pci_dev,
6029 struct ipw2100_priv *priv; 6029 struct ipw2100_priv *priv;
6030 struct net_device *dev; 6030 struct net_device *dev;
6031 6031
6032 dev = alloc_ieee80211(sizeof(struct ipw2100_priv), 0); 6032 dev = alloc_ieee80211(sizeof(struct ipw2100_priv));
6033 if (!dev) 6033 if (!dev)
6034 return NULL; 6034 return NULL;
6035 priv = libipw_priv(dev); 6035 priv = libipw_priv(dev);
@@ -6342,7 +6342,7 @@ static int ipw2100_pci_init_one(struct pci_dev *pci_dev,
6342 sysfs_remove_group(&pci_dev->dev.kobj, 6342 sysfs_remove_group(&pci_dev->dev.kobj,
6343 &ipw2100_attribute_group); 6343 &ipw2100_attribute_group);
6344 6344
6345 free_ieee80211(dev, 0); 6345 free_ieee80211(dev);
6346 pci_set_drvdata(pci_dev, NULL); 6346 pci_set_drvdata(pci_dev, NULL);
6347 } 6347 }
6348 6348
@@ -6400,7 +6400,7 @@ static void __devexit ipw2100_pci_remove_one(struct pci_dev *pci_dev)
6400 if (dev->base_addr) 6400 if (dev->base_addr)
6401 iounmap((void __iomem *)dev->base_addr); 6401 iounmap((void __iomem *)dev->base_addr);
6402 6402
6403 free_ieee80211(dev, 0); 6403 free_ieee80211(dev);
6404 } 6404 }
6405 6405
6406 pci_release_regions(pci_dev); 6406 pci_release_regions(pci_dev);
diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c
index 827824d45de9..a6ca536e44f8 100644
--- a/drivers/net/wireless/ipw2x00/ipw2200.c
+++ b/drivers/net/wireless/ipw2x00/ipw2200.c
@@ -104,25 +104,6 @@ static int antenna = CFG_SYS_ANTENNA_BOTH;
104static int rtap_iface = 0; /* def: 0 -- do not create rtap interface */ 104static int rtap_iface = 0; /* def: 0 -- do not create rtap interface */
105#endif 105#endif
106 106
107static struct ieee80211_rate ipw2200_rates[] = {
108 { .bitrate = 10 },
109 { .bitrate = 20, .flags = IEEE80211_RATE_SHORT_PREAMBLE },
110 { .bitrate = 55, .flags = IEEE80211_RATE_SHORT_PREAMBLE },
111 { .bitrate = 110, .flags = IEEE80211_RATE_SHORT_PREAMBLE },
112 { .bitrate = 60 },
113 { .bitrate = 90 },
114 { .bitrate = 120 },
115 { .bitrate = 180 },
116 { .bitrate = 240 },
117 { .bitrate = 360 },
118 { .bitrate = 480 },
119 { .bitrate = 540 }
120};
121
122#define ipw2200_a_rates (ipw2200_rates + 4)
123#define ipw2200_num_a_rates 8
124#define ipw2200_bg_rates (ipw2200_rates + 0)
125#define ipw2200_num_bg_rates 12
126 107
127#ifdef CONFIG_IPW2200_QOS 108#ifdef CONFIG_IPW2200_QOS
128static int qos_enable = 0; 109static int qos_enable = 0;
@@ -8674,6 +8655,24 @@ static int ipw_sw_reset(struct ipw_priv *priv, int option)
8674 * 8655 *
8675 */ 8656 */
8676 8657
8658static int ipw_wx_get_name(struct net_device *dev,
8659 struct iw_request_info *info,
8660 union iwreq_data *wrqu, char *extra)
8661{
8662 struct ipw_priv *priv = libipw_priv(dev);
8663 mutex_lock(&priv->mutex);
8664 if (priv->status & STATUS_RF_KILL_MASK)
8665 strcpy(wrqu->name, "radio off");
8666 else if (!(priv->status & STATUS_ASSOCIATED))
8667 strcpy(wrqu->name, "unassociated");
8668 else
8669 snprintf(wrqu->name, IFNAMSIZ, "IEEE 802.11%c",
8670 ipw_modes[priv->assoc_request.ieee_mode]);
8671 IPW_DEBUG_WX("Name: %s\n", wrqu->name);
8672 mutex_unlock(&priv->mutex);
8673 return 0;
8674}
8675
8677static int ipw_set_channel(struct ipw_priv *priv, u8 channel) 8676static int ipw_set_channel(struct ipw_priv *priv, u8 channel)
8678{ 8677{
8679 if (channel == 0) { 8678 if (channel == 0) {
@@ -9973,7 +9972,7 @@ static int ipw_wx_sw_reset(struct net_device *dev,
9973/* Rebase the WE IOCTLs to zero for the handler array */ 9972/* Rebase the WE IOCTLs to zero for the handler array */
9974#define IW_IOCTL(x) [(x)-SIOCSIWCOMMIT] 9973#define IW_IOCTL(x) [(x)-SIOCSIWCOMMIT]
9975static iw_handler ipw_wx_handlers[] = { 9974static iw_handler ipw_wx_handlers[] = {
9976 IW_IOCTL(SIOCGIWNAME) = (iw_handler) cfg80211_wext_giwname, 9975 IW_IOCTL(SIOCGIWNAME) = ipw_wx_get_name,
9977 IW_IOCTL(SIOCSIWFREQ) = ipw_wx_set_freq, 9976 IW_IOCTL(SIOCSIWFREQ) = ipw_wx_set_freq,
9978 IW_IOCTL(SIOCGIWFREQ) = ipw_wx_get_freq, 9977 IW_IOCTL(SIOCGIWFREQ) = ipw_wx_get_freq,
9979 IW_IOCTL(SIOCSIWMODE) = ipw_wx_set_mode, 9978 IW_IOCTL(SIOCSIWMODE) = ipw_wx_set_mode,
@@ -11417,100 +11416,16 @@ static void ipw_bg_down(struct work_struct *work)
11417/* Called by register_netdev() */ 11416/* Called by register_netdev() */
11418static int ipw_net_init(struct net_device *dev) 11417static int ipw_net_init(struct net_device *dev)
11419{ 11418{
11420 int i, rc = 0;
11421 struct ipw_priv *priv = libipw_priv(dev); 11419 struct ipw_priv *priv = libipw_priv(dev);
11422 const struct libipw_geo *geo = libipw_get_geo(priv->ieee);
11423 struct wireless_dev *wdev = &priv->ieee->wdev;
11424 mutex_lock(&priv->mutex); 11420 mutex_lock(&priv->mutex);
11425 11421
11426 if (ipw_up(priv)) { 11422 if (ipw_up(priv)) {
11427 rc = -EIO; 11423 mutex_unlock(&priv->mutex);
11428 goto out; 11424 return -EIO;
11429 }
11430
11431 memcpy(wdev->wiphy->perm_addr, priv->mac_addr, ETH_ALEN);
11432
11433 /* fill-out priv->ieee->bg_band */
11434 if (geo->bg_channels) {
11435 struct ieee80211_supported_band *bg_band = &priv->ieee->bg_band;
11436
11437 bg_band->band = IEEE80211_BAND_2GHZ;
11438 bg_band->n_channels = geo->bg_channels;
11439 bg_band->channels =
11440 kzalloc(geo->bg_channels *
11441 sizeof(struct ieee80211_channel), GFP_KERNEL);
11442 /* translate geo->bg to bg_band.channels */
11443 for (i = 0; i < geo->bg_channels; i++) {
11444 bg_band->channels[i].band = IEEE80211_BAND_2GHZ;
11445 bg_band->channels[i].center_freq = geo->bg[i].freq;
11446 bg_band->channels[i].hw_value = geo->bg[i].channel;
11447 bg_band->channels[i].max_power = geo->bg[i].max_power;
11448 if (geo->bg[i].flags & LIBIPW_CH_PASSIVE_ONLY)
11449 bg_band->channels[i].flags |=
11450 IEEE80211_CHAN_PASSIVE_SCAN;
11451 if (geo->bg[i].flags & LIBIPW_CH_NO_IBSS)
11452 bg_band->channels[i].flags |=
11453 IEEE80211_CHAN_NO_IBSS;
11454 if (geo->bg[i].flags & LIBIPW_CH_RADAR_DETECT)
11455 bg_band->channels[i].flags |=
11456 IEEE80211_CHAN_RADAR;
11457 /* No equivalent for LIBIPW_CH_80211H_RULES,
11458 LIBIPW_CH_UNIFORM_SPREADING, or
11459 LIBIPW_CH_B_ONLY... */
11460 }
11461 /* point at bitrate info */
11462 bg_band->bitrates = ipw2200_bg_rates;
11463 bg_band->n_bitrates = ipw2200_num_bg_rates;
11464
11465 wdev->wiphy->bands[IEEE80211_BAND_2GHZ] = bg_band;
11466 }
11467
11468 /* fill-out priv->ieee->a_band */
11469 if (geo->a_channels) {
11470 struct ieee80211_supported_band *a_band = &priv->ieee->a_band;
11471
11472 a_band->band = IEEE80211_BAND_5GHZ;
11473 a_band->n_channels = geo->a_channels;
11474 a_band->channels =
11475 kzalloc(geo->a_channels *
11476 sizeof(struct ieee80211_channel), GFP_KERNEL);
11477 /* translate geo->bg to a_band.channels */
11478 for (i = 0; i < geo->a_channels; i++) {
11479 a_band->channels[i].band = IEEE80211_BAND_2GHZ;
11480 a_band->channels[i].center_freq = geo->a[i].freq;
11481 a_band->channels[i].hw_value = geo->a[i].channel;
11482 a_band->channels[i].max_power = geo->a[i].max_power;
11483 if (geo->a[i].flags & LIBIPW_CH_PASSIVE_ONLY)
11484 a_band->channels[i].flags |=
11485 IEEE80211_CHAN_PASSIVE_SCAN;
11486 if (geo->a[i].flags & LIBIPW_CH_NO_IBSS)
11487 a_band->channels[i].flags |=
11488 IEEE80211_CHAN_NO_IBSS;
11489 if (geo->a[i].flags & LIBIPW_CH_RADAR_DETECT)
11490 a_band->channels[i].flags |=
11491 IEEE80211_CHAN_RADAR;
11492 /* No equivalent for LIBIPW_CH_80211H_RULES,
11493 LIBIPW_CH_UNIFORM_SPREADING, or
11494 LIBIPW_CH_B_ONLY... */
11495 }
11496 /* point at bitrate info */
11497 a_band->bitrates = ipw2200_a_rates;
11498 a_band->n_bitrates = ipw2200_num_a_rates;
11499
11500 wdev->wiphy->bands[IEEE80211_BAND_5GHZ] = a_band;
11501 }
11502
11503 set_wiphy_dev(wdev->wiphy, &priv->pci_dev->dev);
11504
11505 /* With that information in place, we can now register the wiphy... */
11506 if (wiphy_register(wdev->wiphy)) {
11507 rc = -EIO;
11508 goto out;
11509 } 11425 }
11510 11426
11511out:
11512 mutex_unlock(&priv->mutex); 11427 mutex_unlock(&priv->mutex);
11513 return rc; 11428 return 0;
11514} 11429}
11515 11430
11516/* PCI driver stuff */ 11431/* PCI driver stuff */
@@ -11641,7 +11556,7 @@ static int ipw_prom_alloc(struct ipw_priv *priv)
11641 if (priv->prom_net_dev) 11556 if (priv->prom_net_dev)
11642 return -EPERM; 11557 return -EPERM;
11643 11558
11644 priv->prom_net_dev = alloc_ieee80211(sizeof(struct ipw_prom_priv), 1); 11559 priv->prom_net_dev = alloc_ieee80211(sizeof(struct ipw_prom_priv));
11645 if (priv->prom_net_dev == NULL) 11560 if (priv->prom_net_dev == NULL)
11646 return -ENOMEM; 11561 return -ENOMEM;
11647 11562
@@ -11660,7 +11575,7 @@ static int ipw_prom_alloc(struct ipw_priv *priv)
11660 11575
11661 rc = register_netdev(priv->prom_net_dev); 11576 rc = register_netdev(priv->prom_net_dev);
11662 if (rc) { 11577 if (rc) {
11663 free_ieee80211(priv->prom_net_dev, 1); 11578 free_ieee80211(priv->prom_net_dev);
11664 priv->prom_net_dev = NULL; 11579 priv->prom_net_dev = NULL;
11665 return rc; 11580 return rc;
11666 } 11581 }
@@ -11674,7 +11589,7 @@ static void ipw_prom_free(struct ipw_priv *priv)
11674 return; 11589 return;
11675 11590
11676 unregister_netdev(priv->prom_net_dev); 11591 unregister_netdev(priv->prom_net_dev);
11677 free_ieee80211(priv->prom_net_dev, 1); 11592 free_ieee80211(priv->prom_net_dev);
11678 11593
11679 priv->prom_net_dev = NULL; 11594 priv->prom_net_dev = NULL;
11680} 11595}
@@ -11702,7 +11617,7 @@ static int __devinit ipw_pci_probe(struct pci_dev *pdev,
11702 struct ipw_priv *priv; 11617 struct ipw_priv *priv;
11703 int i; 11618 int i;
11704 11619
11705 net_dev = alloc_ieee80211(sizeof(struct ipw_priv), 0); 11620 net_dev = alloc_ieee80211(sizeof(struct ipw_priv));
11706 if (net_dev == NULL) { 11621 if (net_dev == NULL) {
11707 err = -ENOMEM; 11622 err = -ENOMEM;
11708 goto out; 11623 goto out;
@@ -11850,7 +11765,7 @@ static int __devinit ipw_pci_probe(struct pci_dev *pdev,
11850 pci_disable_device(pdev); 11765 pci_disable_device(pdev);
11851 pci_set_drvdata(pdev, NULL); 11766 pci_set_drvdata(pdev, NULL);
11852 out_free_ieee80211: 11767 out_free_ieee80211:
11853 free_ieee80211(priv->net_dev, 0); 11768 free_ieee80211(priv->net_dev);
11854 out: 11769 out:
11855 return err; 11770 return err;
11856} 11771}
@@ -11917,7 +11832,7 @@ static void __devexit ipw_pci_remove(struct pci_dev *pdev)
11917 pci_release_regions(pdev); 11832 pci_release_regions(pdev);
11918 pci_disable_device(pdev); 11833 pci_disable_device(pdev);
11919 pci_set_drvdata(pdev, NULL); 11834 pci_set_drvdata(pdev, NULL);
11920 free_ieee80211(priv->net_dev, 0); 11835 free_ieee80211(priv->net_dev);
11921 free_firmware(); 11836 free_firmware();
11922} 11837}
11923 11838
diff --git a/drivers/net/wireless/ipw2x00/libipw.h b/drivers/net/wireless/ipw2x00/libipw.h
index bf45391172f3..1e334ff6bd52 100644
--- a/drivers/net/wireless/ipw2x00/libipw.h
+++ b/drivers/net/wireless/ipw2x00/libipw.h
@@ -31,7 +31,6 @@
31#include <linux/ieee80211.h> 31#include <linux/ieee80211.h>
32 32
33#include <net/lib80211.h> 33#include <net/lib80211.h>
34#include <net/cfg80211.h>
35 34
36#define LIBIPW_VERSION "git-1.1.13" 35#define LIBIPW_VERSION "git-1.1.13"
37 36
@@ -784,15 +783,12 @@ struct libipw_geo {
784 783
785struct libipw_device { 784struct libipw_device {
786 struct net_device *dev; 785 struct net_device *dev;
787 struct wireless_dev wdev;
788 struct libipw_security sec; 786 struct libipw_security sec;
789 787
790 /* Bookkeeping structures */ 788 /* Bookkeeping structures */
791 struct libipw_stats ieee_stats; 789 struct libipw_stats ieee_stats;
792 790
793 struct libipw_geo geo; 791 struct libipw_geo geo;
794 struct ieee80211_supported_band bg_band;
795 struct ieee80211_supported_band a_band;
796 792
797 /* Probe / Beacon management */ 793 /* Probe / Beacon management */
798 struct list_head network_free_list; 794 struct list_head network_free_list;
@@ -1018,8 +1014,8 @@ static inline int libipw_is_cck_rate(u8 rate)
1018} 1014}
1019 1015
1020/* ieee80211.c */ 1016/* ieee80211.c */
1021extern void free_ieee80211(struct net_device *dev, int monitor); 1017extern void free_ieee80211(struct net_device *dev);
1022extern struct net_device *alloc_ieee80211(int sizeof_priv, int monitor); 1018extern struct net_device *alloc_ieee80211(int sizeof_priv);
1023extern int libipw_change_mtu(struct net_device *dev, int new_mtu); 1019extern int libipw_change_mtu(struct net_device *dev, int new_mtu);
1024 1020
1025extern void libipw_networks_age(struct libipw_device *ieee, 1021extern void libipw_networks_age(struct libipw_device *ieee,
diff --git a/drivers/net/wireless/ipw2x00/libipw_module.c b/drivers/net/wireless/ipw2x00/libipw_module.c
index a0e9f6aed7da..eb2b60834c17 100644
--- a/drivers/net/wireless/ipw2x00/libipw_module.c
+++ b/drivers/net/wireless/ipw2x00/libipw_module.c
@@ -62,9 +62,6 @@ MODULE_DESCRIPTION(DRV_DESCRIPTION);
62MODULE_AUTHOR(DRV_COPYRIGHT); 62MODULE_AUTHOR(DRV_COPYRIGHT);
63MODULE_LICENSE("GPL"); 63MODULE_LICENSE("GPL");
64 64
65struct cfg80211_ops libipw_config_ops = { };
66void *libipw_wiphy_privid = &libipw_wiphy_privid;
67
68static int libipw_networks_allocate(struct libipw_device *ieee) 65static int libipw_networks_allocate(struct libipw_device *ieee)
69{ 66{
70 if (ieee->networks) 67 if (ieee->networks)
@@ -143,7 +140,7 @@ int libipw_change_mtu(struct net_device *dev, int new_mtu)
143} 140}
144EXPORT_SYMBOL(libipw_change_mtu); 141EXPORT_SYMBOL(libipw_change_mtu);
145 142
146struct net_device *alloc_ieee80211(int sizeof_priv, int monitor) 143struct net_device *alloc_ieee80211(int sizeof_priv)
147{ 144{
148 struct libipw_device *ieee; 145 struct libipw_device *ieee;
149 struct net_device *dev; 146 struct net_device *dev;
@@ -160,31 +157,10 @@ struct net_device *alloc_ieee80211(int sizeof_priv, int monitor)
160 157
161 ieee->dev = dev; 158 ieee->dev = dev;
162 159
163 if (!monitor) {
164 ieee->wdev.wiphy = wiphy_new(&libipw_config_ops, 0);
165 if (!ieee->wdev.wiphy) {
166 LIBIPW_ERROR("Unable to allocate wiphy.\n");
167 goto failed_free_netdev;
168 }
169
170 ieee->dev->ieee80211_ptr = &ieee->wdev;
171 ieee->wdev.iftype = NL80211_IFTYPE_STATION;
172
173 /* Fill-out wiphy structure bits we know... Not enough info
174 here to call set_wiphy_dev or set MAC address or channel info
175 -- have to do that in ->ndo_init... */
176 ieee->wdev.wiphy->privid = libipw_wiphy_privid;
177
178 ieee->wdev.wiphy->max_scan_ssids = 1;
179 ieee->wdev.wiphy->max_scan_ie_len = 0;
180 ieee->wdev.wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION)
181 | BIT(NL80211_IFTYPE_ADHOC);
182 }
183
184 err = libipw_networks_allocate(ieee); 160 err = libipw_networks_allocate(ieee);
185 if (err) { 161 if (err) {
186 LIBIPW_ERROR("Unable to allocate beacon storage: %d\n", err); 162 LIBIPW_ERROR("Unable to allocate beacon storage: %d\n", err);
187 goto failed_free_wiphy; 163 goto failed_free_netdev;
188 } 164 }
189 libipw_networks_initialize(ieee); 165 libipw_networks_initialize(ieee);
190 166
@@ -217,31 +193,19 @@ struct net_device *alloc_ieee80211(int sizeof_priv, int monitor)
217 193
218 return dev; 194 return dev;
219 195
220failed_free_wiphy:
221 if (!monitor)
222 wiphy_free(ieee->wdev.wiphy);
223failed_free_netdev: 196failed_free_netdev:
224 free_netdev(dev); 197 free_netdev(dev);
225failed: 198failed:
226 return NULL; 199 return NULL;
227} 200}
228 201
229void free_ieee80211(struct net_device *dev, int monitor) 202void free_ieee80211(struct net_device *dev)
230{ 203{
231 struct libipw_device *ieee = netdev_priv(dev); 204 struct libipw_device *ieee = netdev_priv(dev);
232 205
233 lib80211_crypt_info_free(&ieee->crypt_info); 206 lib80211_crypt_info_free(&ieee->crypt_info);
234 207
235 libipw_networks_free(ieee); 208 libipw_networks_free(ieee);
236
237 /* free cfg80211 resources */
238 if (!monitor) {
239 wiphy_unregister(ieee->wdev.wiphy);
240 kfree(ieee->a_band.channels);
241 kfree(ieee->bg_band.channels);
242 wiphy_free(ieee->wdev.wiphy);
243 }
244
245 free_netdev(dev); 209 free_netdev(dev);
246} 210}
247 211
diff --git a/drivers/net/wireless/iwlwifi/iwl-1000.c b/drivers/net/wireless/iwlwifi/iwl-1000.c
index 2716b91ba9fa..950267ab556a 100644
--- a/drivers/net/wireless/iwlwifi/iwl-1000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-1000.c
@@ -161,5 +161,6 @@ struct iwl_cfg iwl1000_bgn_cfg = {
161 .max_ll_items = OTP_MAX_LL_ITEMS_1000, 161 .max_ll_items = OTP_MAX_LL_ITEMS_1000,
162 .shadow_ram_support = false, 162 .shadow_ram_support = false,
163 .ht_greenfield_support = true, 163 .ht_greenfield_support = true,
164 .use_rts_for_ht = true, /* use rts/cts protection */
164}; 165};
165 166
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index c295b8ee9228..1473452ba22f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -175,6 +175,7 @@ struct iwl_cfg iwl6000h_2agn_cfg = {
175 .max_ll_items = OTP_MAX_LL_ITEMS_6x00, 175 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
176 .shadow_ram_support = true, 176 .shadow_ram_support = true,
177 .ht_greenfield_support = true, 177 .ht_greenfield_support = true,
178 .use_rts_for_ht = true, /* use rts/cts protection */
178}; 179};
179 180
180/* 181/*
@@ -198,6 +199,7 @@ struct iwl_cfg iwl6000i_2agn_cfg = {
198 .max_ll_items = OTP_MAX_LL_ITEMS_6x00, 199 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
199 .shadow_ram_support = true, 200 .shadow_ram_support = true,
200 .ht_greenfield_support = true, 201 .ht_greenfield_support = true,
202 .use_rts_for_ht = true, /* use rts/cts protection */
201}; 203};
202 204
203struct iwl_cfg iwl6050_2agn_cfg = { 205struct iwl_cfg iwl6050_2agn_cfg = {
@@ -218,6 +220,7 @@ struct iwl_cfg iwl6050_2agn_cfg = {
218 .max_ll_items = OTP_MAX_LL_ITEMS_6x00, 220 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
219 .shadow_ram_support = true, 221 .shadow_ram_support = true,
220 .ht_greenfield_support = true, 222 .ht_greenfield_support = true,
223 .use_rts_for_ht = true, /* use rts/cts protection */
221}; 224};
222 225
223struct iwl_cfg iwl6000_3agn_cfg = { 226struct iwl_cfg iwl6000_3agn_cfg = {
@@ -238,6 +241,7 @@ struct iwl_cfg iwl6000_3agn_cfg = {
238 .max_ll_items = OTP_MAX_LL_ITEMS_6x00, 241 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
239 .shadow_ram_support = true, 242 .shadow_ram_support = true,
240 .ht_greenfield_support = true, 243 .ht_greenfield_support = true,
244 .use_rts_for_ht = true, /* use rts/cts protection */
241}; 245};
242 246
243struct iwl_cfg iwl6050_3agn_cfg = { 247struct iwl_cfg iwl6050_3agn_cfg = {
@@ -258,6 +262,7 @@ struct iwl_cfg iwl6050_3agn_cfg = {
258 .max_ll_items = OTP_MAX_LL_ITEMS_6x00, 262 .max_ll_items = OTP_MAX_LL_ITEMS_6x00,
259 .shadow_ram_support = true, 263 .shadow_ram_support = true,
260 .ht_greenfield_support = true, 264 .ht_greenfield_support = true,
265 .use_rts_for_ht = true, /* use rts/cts protection */
261}; 266};
262 267
263MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); 268MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX));
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
index 346dc06fa7b7..81726ee32858 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
@@ -418,6 +418,15 @@ static void rs_tl_turn_on_agg(struct iwl_priv *priv, u8 tid,
418 else if (tid == IWL_AGG_ALL_TID) 418 else if (tid == IWL_AGG_ALL_TID)
419 for (tid = 0; tid < TID_MAX_LOAD_COUNT; tid++) 419 for (tid = 0; tid < TID_MAX_LOAD_COUNT; tid++)
420 rs_tl_turn_on_agg_for_tid(priv, lq_data, tid, sta); 420 rs_tl_turn_on_agg_for_tid(priv, lq_data, tid, sta);
421 if (priv->cfg->use_rts_for_ht) {
422 /*
423 * switch to RTS/CTS if it is the prefer protection method
424 * for HT traffic
425 */
426 IWL_DEBUG_HT(priv, "use RTS/CTS protection for HT\n");
427 priv->staging_rxon.flags &= ~RXON_FLG_SELF_CTS_EN;
428 iwlcore_commit_rxon(priv);
429 }
421} 430}
422 431
423static inline int get_num_of_ant_from_rate(u32 rate_n_flags) 432static inline int get_num_of_ant_from_rate(u32 rate_n_flags)
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index eaafae091f5b..921dc4a26fe2 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -116,9 +116,6 @@ int iwl_commit_rxon(struct iwl_priv *priv)
116 116
117 /* always get timestamp with Rx frame */ 117 /* always get timestamp with Rx frame */
118 priv->staging_rxon.flags |= RXON_FLG_TSF2HOST_MSK; 118 priv->staging_rxon.flags |= RXON_FLG_TSF2HOST_MSK;
119 /* allow CTS-to-self if possible. this is relevant only for
120 * 5000, but will not damage 4965 */
121 priv->staging_rxon.flags |= RXON_FLG_SELF_CTS_EN;
122 119
123 ret = iwl_check_rxon_cmd(priv); 120 ret = iwl_check_rxon_cmd(priv);
124 if (ret) { 121 if (ret) {
@@ -218,6 +215,13 @@ int iwl_commit_rxon(struct iwl_priv *priv)
218 "Could not send WEP static key.\n"); 215 "Could not send WEP static key.\n");
219 } 216 }
220 217
218 /*
219 * allow CTS-to-self if possible for new association.
220 * this is relevant only for 5000 series and up,
221 * but will not damage 4965
222 */
223 priv->staging_rxon.flags |= RXON_FLG_SELF_CTS_EN;
224
221 /* Apply the new configuration 225 /* Apply the new configuration
222 * RXON assoc doesn't clear the station table in uCode, 226 * RXON assoc doesn't clear the station table in uCode,
223 */ 227 */
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index e50103a956b1..7754538c2194 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -213,6 +213,7 @@ struct iwl_mod_params {
213 * @pa_type: used by 6000 series only to identify the type of Power Amplifier 213 * @pa_type: used by 6000 series only to identify the type of Power Amplifier
214 * @max_ll_items: max number of OTP blocks 214 * @max_ll_items: max number of OTP blocks
215 * @shadow_ram_support: shadow support for OTP memory 215 * @shadow_ram_support: shadow support for OTP memory
216 * @use_rts_for_ht: use rts/cts protection for HT traffic
216 * 217 *
217 * We enable the driver to be backward compatible wrt API version. The 218 * We enable the driver to be backward compatible wrt API version. The
218 * driver specifies which APIs it supports (with @ucode_api_max being the 219 * driver specifies which APIs it supports (with @ucode_api_max being the
@@ -255,6 +256,7 @@ struct iwl_cfg {
255 const bool shadow_ram_support; 256 const bool shadow_ram_support;
256 const bool ht_greenfield_support; 257 const bool ht_greenfield_support;
257 const bool broken_powersave; 258 const bool broken_powersave;
259 bool use_rts_for_ht;
258}; 260};
259 261
260/*************************** 262/***************************
diff --git a/drivers/net/wireless/iwlwifi/iwl-tx.c b/drivers/net/wireless/iwlwifi/iwl-tx.c
index fb9bcfa6d947..b7e196e3c8d3 100644
--- a/drivers/net/wireless/iwlwifi/iwl-tx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-tx.c
@@ -1277,8 +1277,16 @@ int iwl_tx_agg_stop(struct iwl_priv *priv , const u8 *ra, u16 tid)
1277 return -ENXIO; 1277 return -ENXIO;
1278 } 1278 }
1279 1279
1280 if (priv->stations[sta_id].tid[tid].agg.state ==
1281 IWL_EMPTYING_HW_QUEUE_ADDBA) {
1282 IWL_DEBUG_HT(priv, "AGG stop before setup done\n");
1283 ieee80211_stop_tx_ba_cb_irqsafe(priv->hw, ra, tid);
1284 priv->stations[sta_id].tid[tid].agg.state = IWL_AGG_OFF;
1285 return 0;
1286 }
1287
1280 if (priv->stations[sta_id].tid[tid].agg.state != IWL_AGG_ON) 1288 if (priv->stations[sta_id].tid[tid].agg.state != IWL_AGG_ON)
1281 IWL_WARN(priv, "Stopping AGG while state not IWL_AGG_ON\n"); 1289 IWL_WARN(priv, "Stopping AGG while state not ON or starting\n");
1282 1290
1283 tid_data = &priv->stations[sta_id].tid[tid]; 1291 tid_data = &priv->stations[sta_id].tid[tid];
1284 ssn = (tid_data->seq_number & IEEE80211_SCTL_SEQ) >> 4; 1292 ssn = (tid_data->seq_number & IEEE80211_SCTL_SEQ) >> 4;
diff --git a/drivers/net/wireless/libertas/ethtool.c b/drivers/net/wireless/libertas/ethtool.c
index 039b555e4d76..53d56ab83c03 100644
--- a/drivers/net/wireless/libertas/ethtool.c
+++ b/drivers/net/wireless/libertas/ethtool.c
@@ -169,16 +169,19 @@ static int lbs_ethtool_set_wol(struct net_device *dev,
169 struct lbs_private *priv = dev->ml_priv; 169 struct lbs_private *priv = dev->ml_priv;
170 uint32_t criteria = 0; 170 uint32_t criteria = 0;
171 171
172 if (priv->wol_criteria == 0xffffffff && wol->wolopts)
173 return -EOPNOTSUPP;
174
175 if (wol->wolopts & ~(WAKE_UCAST|WAKE_MCAST|WAKE_BCAST|WAKE_PHY)) 172 if (wol->wolopts & ~(WAKE_UCAST|WAKE_MCAST|WAKE_BCAST|WAKE_PHY))
176 return -EOPNOTSUPP; 173 return -EOPNOTSUPP;
177 174
178 if (wol->wolopts & WAKE_UCAST) criteria |= EHS_WAKE_ON_UNICAST_DATA; 175 if (wol->wolopts & WAKE_UCAST)
179 if (wol->wolopts & WAKE_MCAST) criteria |= EHS_WAKE_ON_MULTICAST_DATA; 176 criteria |= EHS_WAKE_ON_UNICAST_DATA;
180 if (wol->wolopts & WAKE_BCAST) criteria |= EHS_WAKE_ON_BROADCAST_DATA; 177 if (wol->wolopts & WAKE_MCAST)
181 if (wol->wolopts & WAKE_PHY) criteria |= EHS_WAKE_ON_MAC_EVENT; 178 criteria |= EHS_WAKE_ON_MULTICAST_DATA;
179 if (wol->wolopts & WAKE_BCAST)
180 criteria |= EHS_WAKE_ON_BROADCAST_DATA;
181 if (wol->wolopts & WAKE_PHY)
182 criteria |= EHS_WAKE_ON_MAC_EVENT;
183 if (wol->wolopts == 0)
184 criteria |= EHS_REMOVE_WAKEUP;
182 185
183 return lbs_host_sleep_cfg(priv, criteria, (struct wol_config *)NULL); 186 return lbs_host_sleep_cfg(priv, criteria, (struct wol_config *)NULL);
184} 187}
diff --git a/drivers/net/wireless/libertas/if_spi.c b/drivers/net/wireless/libertas/if_spi.c
index cb8be8d7abc1..5b3672c4d0cc 100644
--- a/drivers/net/wireless/libertas/if_spi.c
+++ b/drivers/net/wireless/libertas/if_spi.c
@@ -134,7 +134,7 @@ static void spu_transaction_finish(struct if_spi_card *card)
134static int spu_write(struct if_spi_card *card, u16 reg, const u8 *buf, int len) 134static int spu_write(struct if_spi_card *card, u16 reg, const u8 *buf, int len)
135{ 135{
136 int err = 0; 136 int err = 0;
137 u16 reg_out = cpu_to_le16(reg | IF_SPI_WRITE_OPERATION_MASK); 137 __le16 reg_out = cpu_to_le16(reg | IF_SPI_WRITE_OPERATION_MASK);
138 struct spi_message m; 138 struct spi_message m;
139 struct spi_transfer reg_trans; 139 struct spi_transfer reg_trans;
140 struct spi_transfer data_trans; 140 struct spi_transfer data_trans;
@@ -166,7 +166,7 @@ static int spu_write(struct if_spi_card *card, u16 reg, const u8 *buf, int len)
166 166
167static inline int spu_write_u16(struct if_spi_card *card, u16 reg, u16 val) 167static inline int spu_write_u16(struct if_spi_card *card, u16 reg, u16 val)
168{ 168{
169 u16 buff; 169 __le16 buff;
170 170
171 buff = cpu_to_le16(val); 171 buff = cpu_to_le16(val);
172 return spu_write(card, reg, (u8 *)&buff, sizeof(u16)); 172 return spu_write(card, reg, (u8 *)&buff, sizeof(u16));
@@ -188,7 +188,7 @@ static int spu_read(struct if_spi_card *card, u16 reg, u8 *buf, int len)
188{ 188{
189 unsigned int delay; 189 unsigned int delay;
190 int err = 0; 190 int err = 0;
191 u16 reg_out = cpu_to_le16(reg | IF_SPI_READ_OPERATION_MASK); 191 __le16 reg_out = cpu_to_le16(reg | IF_SPI_READ_OPERATION_MASK);
192 struct spi_message m; 192 struct spi_message m;
193 struct spi_transfer reg_trans; 193 struct spi_transfer reg_trans;
194 struct spi_transfer dummy_trans; 194 struct spi_transfer dummy_trans;
@@ -235,7 +235,7 @@ static int spu_read(struct if_spi_card *card, u16 reg, u8 *buf, int len)
235/* Read 16 bits from an SPI register */ 235/* Read 16 bits from an SPI register */
236static inline int spu_read_u16(struct if_spi_card *card, u16 reg, u16 *val) 236static inline int spu_read_u16(struct if_spi_card *card, u16 reg, u16 *val)
237{ 237{
238 u16 buf; 238 __le16 buf;
239 int ret; 239 int ret;
240 240
241 ret = spu_read(card, reg, (u8 *)&buf, sizeof(buf)); 241 ret = spu_read(card, reg, (u8 *)&buf, sizeof(buf));
@@ -248,7 +248,7 @@ static inline int spu_read_u16(struct if_spi_card *card, u16 reg, u16 *val)
248 * The low 16 bits are read first. */ 248 * The low 16 bits are read first. */
249static int spu_read_u32(struct if_spi_card *card, u16 reg, u32 *val) 249static int spu_read_u32(struct if_spi_card *card, u16 reg, u32 *val)
250{ 250{
251 u32 buf; 251 __le32 buf;
252 int err; 252 int err;
253 253
254 err = spu_read(card, reg, (u8 *)&buf, sizeof(buf)); 254 err = spu_read(card, reg, (u8 *)&buf, sizeof(buf));
diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
index 92bc8c5f1ca2..3fac4efa5ac8 100644
--- a/drivers/net/wireless/libertas/if_usb.c
+++ b/drivers/net/wireless/libertas/if_usb.c
@@ -508,7 +508,7 @@ static int __if_usb_submit_rx_urb(struct if_usb_card *cardp,
508 /* Fill the receive configuration URB and initialise the Rx call back */ 508 /* Fill the receive configuration URB and initialise the Rx call back */
509 usb_fill_bulk_urb(cardp->rx_urb, cardp->udev, 509 usb_fill_bulk_urb(cardp->rx_urb, cardp->udev,
510 usb_rcvbulkpipe(cardp->udev, cardp->ep_in), 510 usb_rcvbulkpipe(cardp->udev, cardp->ep_in),
511 (void *) (skb->tail + (size_t) IPFIELD_ALIGN_OFFSET), 511 skb->data + IPFIELD_ALIGN_OFFSET,
512 MRVDRV_ETH_RX_PACKET_BUFFER_SIZE, callbackfn, 512 MRVDRV_ETH_RX_PACKET_BUFFER_SIZE, callbackfn,
513 cardp); 513 cardp);
514 514
diff --git a/drivers/net/wireless/p54/p54usb.c b/drivers/net/wireless/p54/p54usb.c
index 17e199546eeb..92af9b96bb7a 100644
--- a/drivers/net/wireless/p54/p54usb.c
+++ b/drivers/net/wireless/p54/p54usb.c
@@ -426,12 +426,16 @@ static const char p54u_romboot_3887[] = "~~~~";
426static int p54u_firmware_reset_3887(struct ieee80211_hw *dev) 426static int p54u_firmware_reset_3887(struct ieee80211_hw *dev)
427{ 427{
428 struct p54u_priv *priv = dev->priv; 428 struct p54u_priv *priv = dev->priv;
429 u8 buf[4]; 429 u8 *buf;
430 int ret; 430 int ret;
431 431
432 memcpy(&buf, p54u_romboot_3887, sizeof(buf)); 432 buf = kmalloc(4, GFP_KERNEL);
433 if (!buf)
434 return -ENOMEM;
435 memcpy(buf, p54u_romboot_3887, 4);
433 ret = p54u_bulk_msg(priv, P54U_PIPE_DATA, 436 ret = p54u_bulk_msg(priv, P54U_PIPE_DATA,
434 buf, sizeof(buf)); 437 buf, 4);
438 kfree(buf);
435 if (ret) 439 if (ret)
436 dev_err(&priv->udev->dev, "(p54usb) unable to jump to " 440 dev_err(&priv->udev->dev, "(p54usb) unable to jump to "
437 "boot ROM (%d)!\n", ret); 441 "boot ROM (%d)!\n", ret);
diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c
index 88cd58eb3b9f..1c88c2ea59aa 100644
--- a/drivers/net/wireless/ray_cs.c
+++ b/drivers/net/wireless/ray_cs.c
@@ -2879,7 +2879,7 @@ static int write_essid(struct file *file, const char __user *buffer,
2879 unsigned long count, void *data) 2879 unsigned long count, void *data)
2880{ 2880{
2881 static char proc_essid[33]; 2881 static char proc_essid[33];
2882 int len = count; 2882 unsigned int len = count;
2883 2883
2884 if (len > 32) 2884 if (len > 32)
2885 len = 32; 2885 len = 32;
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index a084077a1c61..9fe770f7d7bb 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -1994,7 +1994,7 @@ static void rt2800usb_write_tx_desc(struct rt2x00_dev *rt2x00dev,
1994 rt2x00_set_field32(&word, TXWI_W1_BW_WIN_SIZE, txdesc->ba_size); 1994 rt2x00_set_field32(&word, TXWI_W1_BW_WIN_SIZE, txdesc->ba_size);
1995 rt2x00_set_field32(&word, TXWI_W1_WIRELESS_CLI_ID, 1995 rt2x00_set_field32(&word, TXWI_W1_WIRELESS_CLI_ID,
1996 test_bit(ENTRY_TXD_ENCRYPT, &txdesc->flags) ? 1996 test_bit(ENTRY_TXD_ENCRYPT, &txdesc->flags) ?
1997 (skbdesc->entry->entry_idx + 1) : 0xff); 1997 txdesc->key_idx : 0xff);
1998 rt2x00_set_field32(&word, TXWI_W1_MPDU_TOTAL_BYTE_COUNT, 1998 rt2x00_set_field32(&word, TXWI_W1_MPDU_TOTAL_BYTE_COUNT,
1999 skb->len - txdesc->l2pad); 1999 skb->len - txdesc->l2pad);
2000 rt2x00_set_field32(&word, TXWI_W1_PACKETID, 2000 rt2x00_set_field32(&word, TXWI_W1_PACKETID,
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 71761b343839..73bbec58341e 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -815,6 +815,8 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev)
815 815
816 mutex_init(&rt2x00dev->csr_mutex); 816 mutex_init(&rt2x00dev->csr_mutex);
817 817
818 set_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags);
819
818 /* 820 /*
819 * Make room for rt2x00_intf inside the per-interface 821 * Make room for rt2x00_intf inside the per-interface
820 * structure ieee80211_vif. 822 * structure ieee80211_vif.
@@ -871,8 +873,6 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev)
871 rt2x00leds_register(rt2x00dev); 873 rt2x00leds_register(rt2x00dev);
872 rt2x00debug_register(rt2x00dev); 874 rt2x00debug_register(rt2x00dev);
873 875
874 set_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags);
875
876 return 0; 876 return 0;
877 877
878exit: 878exit:
diff --git a/drivers/net/wireless/rt2x00/rt2x00link.c b/drivers/net/wireless/rt2x00/rt2x00link.c
index c64db0ba7f40..c708d0be9155 100644
--- a/drivers/net/wireless/rt2x00/rt2x00link.c
+++ b/drivers/net/wireless/rt2x00/rt2x00link.c
@@ -362,8 +362,9 @@ void rt2x00link_start_tuner(struct rt2x00_dev *rt2x00dev)
362 362
363 rt2x00link_reset_tuner(rt2x00dev, false); 363 rt2x00link_reset_tuner(rt2x00dev, false);
364 364
365 ieee80211_queue_delayed_work(rt2x00dev->hw, 365 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags))
366 &link->work, LINK_TUNE_INTERVAL); 366 ieee80211_queue_delayed_work(rt2x00dev->hw,
367 &link->work, LINK_TUNE_INTERVAL);
367} 368}
368 369
369void rt2x00link_stop_tuner(struct rt2x00_dev *rt2x00dev) 370void rt2x00link_stop_tuner(struct rt2x00_dev *rt2x00dev)
@@ -469,8 +470,10 @@ static void rt2x00link_tuner(struct work_struct *work)
469 * Increase tuner counter, and reschedule the next link tuner run. 470 * Increase tuner counter, and reschedule the next link tuner run.
470 */ 471 */
471 link->count++; 472 link->count++;
472 ieee80211_queue_delayed_work(rt2x00dev->hw, 473
473 &link->work, LINK_TUNE_INTERVAL); 474 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags))
475 ieee80211_queue_delayed_work(rt2x00dev->hw,
476 &link->work, LINK_TUNE_INTERVAL);
474} 477}
475 478
476void rt2x00link_register(struct rt2x00_dev *rt2x00dev) 479void rt2x00link_register(struct rt2x00_dev *rt2x00dev)
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c
index 501544882c2c..f02b48a90593 100644
--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
@@ -47,6 +47,8 @@ int rt2x00usb_vendor_request(struct rt2x00_dev *rt2x00dev,
47 (requesttype == USB_VENDOR_REQUEST_IN) ? 47 (requesttype == USB_VENDOR_REQUEST_IN) ?
48 usb_rcvctrlpipe(usb_dev, 0) : usb_sndctrlpipe(usb_dev, 0); 48 usb_rcvctrlpipe(usb_dev, 0) : usb_sndctrlpipe(usb_dev, 0);
49 49
50 if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags))
51 return -ENODEV;
50 52
51 for (i = 0; i < REGISTER_BUSY_COUNT; i++) { 53 for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
52 status = usb_control_msg(usb_dev, pipe, request, requesttype, 54 status = usb_control_msg(usb_dev, pipe, request, requesttype,
@@ -60,8 +62,10 @@ int rt2x00usb_vendor_request(struct rt2x00_dev *rt2x00dev,
60 * -ENODEV: Device has disappeared, no point continuing. 62 * -ENODEV: Device has disappeared, no point continuing.
61 * All other errors: Try again. 63 * All other errors: Try again.
62 */ 64 */
63 else if (status == -ENODEV) 65 else if (status == -ENODEV) {
66 clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags);
64 break; 67 break;
68 }
65 } 69 }
66 70
67 ERROR(rt2x00dev, 71 ERROR(rt2x00dev,
@@ -161,6 +165,9 @@ int rt2x00usb_regbusy_read(struct rt2x00_dev *rt2x00dev,
161{ 165{
162 unsigned int i; 166 unsigned int i;
163 167
168 if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags))
169 return -ENODEV;
170
164 for (i = 0; i < REGISTER_BUSY_COUNT; i++) { 171 for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
165 rt2x00usb_register_read_lock(rt2x00dev, offset, reg); 172 rt2x00usb_register_read_lock(rt2x00dev, offset, reg);
166 if (!rt2x00_get_field32(*reg, field)) 173 if (!rt2x00_get_field32(*reg, field))
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index b8f5ee33445e..14e7bb210075 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -2389,10 +2389,13 @@ static struct usb_device_id rt73usb_device_table[] = {
2389 { USB_DEVICE(0x13b1, 0x0023), USB_DEVICE_DATA(&rt73usb_ops) }, 2389 { USB_DEVICE(0x13b1, 0x0023), USB_DEVICE_DATA(&rt73usb_ops) },
2390 { USB_DEVICE(0x13b1, 0x0028), USB_DEVICE_DATA(&rt73usb_ops) }, 2390 { USB_DEVICE(0x13b1, 0x0028), USB_DEVICE_DATA(&rt73usb_ops) },
2391 /* MSI */ 2391 /* MSI */
2392 { USB_DEVICE(0x0db0, 0x4600), USB_DEVICE_DATA(&rt73usb_ops) },
2392 { USB_DEVICE(0x0db0, 0x6877), USB_DEVICE_DATA(&rt73usb_ops) }, 2393 { USB_DEVICE(0x0db0, 0x6877), USB_DEVICE_DATA(&rt73usb_ops) },
2393 { USB_DEVICE(0x0db0, 0x6874), USB_DEVICE_DATA(&rt73usb_ops) }, 2394 { USB_DEVICE(0x0db0, 0x6874), USB_DEVICE_DATA(&rt73usb_ops) },
2394 { USB_DEVICE(0x0db0, 0xa861), USB_DEVICE_DATA(&rt73usb_ops) }, 2395 { USB_DEVICE(0x0db0, 0xa861), USB_DEVICE_DATA(&rt73usb_ops) },
2395 { USB_DEVICE(0x0db0, 0xa874), USB_DEVICE_DATA(&rt73usb_ops) }, 2396 { USB_DEVICE(0x0db0, 0xa874), USB_DEVICE_DATA(&rt73usb_ops) },
2397 /* Ovislink */
2398 { USB_DEVICE(0x1b75, 0x7318), USB_DEVICE_DATA(&rt73usb_ops) },
2396 /* Ralink */ 2399 /* Ralink */
2397 { USB_DEVICE(0x04bb, 0x093d), USB_DEVICE_DATA(&rt73usb_ops) }, 2400 { USB_DEVICE(0x04bb, 0x093d), USB_DEVICE_DATA(&rt73usb_ops) },
2398 { USB_DEVICE(0x148f, 0x2573), USB_DEVICE_DATA(&rt73usb_ops) }, 2401 { USB_DEVICE(0x148f, 0x2573), USB_DEVICE_DATA(&rt73usb_ops) },
@@ -2420,6 +2423,8 @@ static struct usb_device_id rt73usb_device_table[] = {
2420 /* Planex */ 2423 /* Planex */
2421 { USB_DEVICE(0x2019, 0xab01), USB_DEVICE_DATA(&rt73usb_ops) }, 2424 { USB_DEVICE(0x2019, 0xab01), USB_DEVICE_DATA(&rt73usb_ops) },
2422 { USB_DEVICE(0x2019, 0xab50), USB_DEVICE_DATA(&rt73usb_ops) }, 2425 { USB_DEVICE(0x2019, 0xab50), USB_DEVICE_DATA(&rt73usb_ops) },
2426 /* WideTell */
2427 { USB_DEVICE(0x7167, 0x3840), USB_DEVICE_DATA(&rt73usb_ops) },
2423 /* Zcom */ 2428 /* Zcom */
2424 { USB_DEVICE(0x0cde, 0x001c), USB_DEVICE_DATA(&rt73usb_ops) }, 2429 { USB_DEVICE(0x0cde, 0x001c), USB_DEVICE_DATA(&rt73usb_ops) },
2425 /* ZyXEL */ 2430 /* ZyXEL */
diff --git a/drivers/net/wireless/rtl818x/rtl8187_leds.c b/drivers/net/wireless/rtl818x/rtl8187_leds.c
index a1c670fc1552..cf8a4a40fdf6 100644
--- a/drivers/net/wireless/rtl818x/rtl8187_leds.c
+++ b/drivers/net/wireless/rtl818x/rtl8187_leds.c
@@ -210,10 +210,10 @@ void rtl8187_leds_exit(struct ieee80211_hw *dev)
210 210
211 /* turn the LED off before exiting */ 211 /* turn the LED off before exiting */
212 ieee80211_queue_delayed_work(dev, &priv->led_off, 0); 212 ieee80211_queue_delayed_work(dev, &priv->led_off, 0);
213 cancel_delayed_work_sync(&priv->led_off);
214 cancel_delayed_work_sync(&priv->led_on);
215 rtl8187_unregister_led(&priv->led_rx); 213 rtl8187_unregister_led(&priv->led_rx);
216 rtl8187_unregister_led(&priv->led_tx); 214 rtl8187_unregister_led(&priv->led_tx);
215 cancel_delayed_work_sync(&priv->led_off);
216 cancel_delayed_work_sync(&priv->led_on);
217} 217}
218#endif /* def CONFIG_RTL8187_LED */ 218#endif /* def CONFIG_RTL8187_LED */
219 219
diff --git a/drivers/net/wireless/rtl818x/rtl8187_rfkill.c b/drivers/net/wireless/rtl818x/rtl8187_rfkill.c
index 9fab13e4004e..cad8037ab2af 100644
--- a/drivers/net/wireless/rtl818x/rtl8187_rfkill.c
+++ b/drivers/net/wireless/rtl818x/rtl8187_rfkill.c
@@ -18,6 +18,7 @@
18#include <net/mac80211.h> 18#include <net/mac80211.h>
19 19
20#include "rtl8187.h" 20#include "rtl8187.h"
21#include "rtl8187_rfkill.h"
21 22
22static bool rtl8187_is_radio_enabled(struct rtl8187_priv *priv) 23static bool rtl8187_is_radio_enabled(struct rtl8187_priv *priv)
23{ 24{
diff --git a/drivers/of/of_mdio.c b/drivers/of/of_mdio.c
index bacaa536fd51..4b22ba568b19 100644
--- a/drivers/of/of_mdio.c
+++ b/drivers/of/of_mdio.c
@@ -97,6 +97,12 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
97} 97}
98EXPORT_SYMBOL(of_mdiobus_register); 98EXPORT_SYMBOL(of_mdiobus_register);
99 99
100/* Helper function for of_phy_find_device */
101static int of_phy_match(struct device *dev, void *phy_np)
102{
103 return dev_archdata_get_node(&dev->archdata) == phy_np;
104}
105
100/** 106/**
101 * of_phy_find_device - Give a PHY node, find the phy_device 107 * of_phy_find_device - Give a PHY node, find the phy_device
102 * @phy_np: Pointer to the phy's device tree node 108 * @phy_np: Pointer to the phy's device tree node
@@ -106,15 +112,10 @@ EXPORT_SYMBOL(of_mdiobus_register);
106struct phy_device *of_phy_find_device(struct device_node *phy_np) 112struct phy_device *of_phy_find_device(struct device_node *phy_np)
107{ 113{
108 struct device *d; 114 struct device *d;
109 int match(struct device *dev, void *phy_np)
110 {
111 return dev_archdata_get_node(&dev->archdata) == phy_np;
112 }
113
114 if (!phy_np) 115 if (!phy_np)
115 return NULL; 116 return NULL;
116 117
117 d = bus_find_device(&mdio_bus_type, NULL, phy_np, match); 118 d = bus_find_device(&mdio_bus_type, NULL, phy_np, of_phy_match);
118 return d ? to_phy_device(d) : NULL; 119 return d ? to_phy_device(d) : NULL;
119} 120}
120EXPORT_SYMBOL(of_phy_find_device); 121EXPORT_SYMBOL(of_phy_find_device);
diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c
index 22b02c6df854..b952ebc7a78b 100644
--- a/drivers/pci/dmar.c
+++ b/drivers/pci/dmar.c
@@ -175,15 +175,6 @@ dmar_parse_one_drhd(struct acpi_dmar_header *header)
175 int ret = 0; 175 int ret = 0;
176 176
177 drhd = (struct acpi_dmar_hardware_unit *)header; 177 drhd = (struct acpi_dmar_hardware_unit *)header;
178 if (!drhd->address) {
179 /* Promote an attitude of violence to a BIOS engineer today */
180 WARN(1, "Your BIOS is broken; DMAR reported at address zero!\n"
181 "BIOS vendor: %s; Ver: %s; Product Version: %s\n",
182 dmi_get_system_info(DMI_BIOS_VENDOR),
183 dmi_get_system_info(DMI_BIOS_VERSION),
184 dmi_get_system_info(DMI_PRODUCT_VERSION));
185 return -ENODEV;
186 }
187 dmaru = kzalloc(sizeof(*dmaru), GFP_KERNEL); 178 dmaru = kzalloc(sizeof(*dmaru), GFP_KERNEL);
188 if (!dmaru) 179 if (!dmaru)
189 return -ENOMEM; 180 return -ENOMEM;
@@ -591,12 +582,53 @@ int __init dmar_table_init(void)
591 return 0; 582 return 0;
592} 583}
593 584
585int __init check_zero_address(void)
586{
587 struct acpi_table_dmar *dmar;
588 struct acpi_dmar_header *entry_header;
589 struct acpi_dmar_hardware_unit *drhd;
590
591 dmar = (struct acpi_table_dmar *)dmar_tbl;
592 entry_header = (struct acpi_dmar_header *)(dmar + 1);
593
594 while (((unsigned long)entry_header) <
595 (((unsigned long)dmar) + dmar_tbl->length)) {
596 /* Avoid looping forever on bad ACPI tables */
597 if (entry_header->length == 0) {
598 printk(KERN_WARNING PREFIX
599 "Invalid 0-length structure\n");
600 return 0;
601 }
602
603 if (entry_header->type == ACPI_DMAR_TYPE_HARDWARE_UNIT) {
604 drhd = (void *)entry_header;
605 if (!drhd->address) {
606 /* Promote an attitude of violence to a BIOS engineer today */
607 WARN(1, "Your BIOS is broken; DMAR reported at address zero!\n"
608 "BIOS vendor: %s; Ver: %s; Product Version: %s\n",
609 dmi_get_system_info(DMI_BIOS_VENDOR),
610 dmi_get_system_info(DMI_BIOS_VERSION),
611 dmi_get_system_info(DMI_PRODUCT_VERSION));
612#ifdef CONFIG_DMAR
613 dmar_disabled = 1;
614#endif
615 return 0;
616 }
617 break;
618 }
619
620 entry_header = ((void *)entry_header + entry_header->length);
621 }
622 return 1;
623}
624
594void __init detect_intel_iommu(void) 625void __init detect_intel_iommu(void)
595{ 626{
596 int ret; 627 int ret;
597 628
598 ret = dmar_table_detect(); 629 ret = dmar_table_detect();
599 630 if (ret)
631 ret = check_zero_address();
600 { 632 {
601#ifdef CONFIG_INTR_REMAP 633#ifdef CONFIG_INTR_REMAP
602 struct acpi_table_dmar *dmar; 634 struct acpi_table_dmar *dmar;
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
index b1e97e682500..1840a0578a42 100644
--- a/drivers/pci/intel-iommu.c
+++ b/drivers/pci/intel-iommu.c
@@ -2767,7 +2767,15 @@ static void *intel_alloc_coherent(struct device *hwdev, size_t size,
2767 2767
2768 size = PAGE_ALIGN(size); 2768 size = PAGE_ALIGN(size);
2769 order = get_order(size); 2769 order = get_order(size);
2770 flags &= ~(GFP_DMA | GFP_DMA32); 2770
2771 if (!iommu_no_mapping(hwdev))
2772 flags &= ~(GFP_DMA | GFP_DMA32);
2773 else if (hwdev->coherent_dma_mask < dma_get_required_mask(hwdev)) {
2774 if (hwdev->coherent_dma_mask < DMA_BIT_MASK(32))
2775 flags |= GFP_DMA;
2776 else
2777 flags |= GFP_DMA32;
2778 }
2771 2779
2772 vaddr = (void *)__get_free_pages(flags, order); 2780 vaddr = (void *)__get_free_pages(flags, order);
2773 if (!vaddr) 2781 if (!vaddr)
@@ -3207,6 +3215,33 @@ static int __init init_iommu_sysfs(void)
3207} 3215}
3208#endif /* CONFIG_PM */ 3216#endif /* CONFIG_PM */
3209 3217
3218/*
3219 * Here we only respond to action of unbound device from driver.
3220 *
3221 * Added device is not attached to its DMAR domain here yet. That will happen
3222 * when mapping the device to iova.
3223 */
3224static int device_notifier(struct notifier_block *nb,
3225 unsigned long action, void *data)
3226{
3227 struct device *dev = data;
3228 struct pci_dev *pdev = to_pci_dev(dev);
3229 struct dmar_domain *domain;
3230
3231 domain = find_domain(pdev);
3232 if (!domain)
3233 return 0;
3234
3235 if (action == BUS_NOTIFY_UNBOUND_DRIVER && !iommu_pass_through)
3236 domain_remove_one_dev_info(domain, pdev);
3237
3238 return 0;
3239}
3240
3241static struct notifier_block device_nb = {
3242 .notifier_call = device_notifier,
3243};
3244
3210int __init intel_iommu_init(void) 3245int __init intel_iommu_init(void)
3211{ 3246{
3212 int ret = 0; 3247 int ret = 0;
@@ -3259,6 +3294,8 @@ int __init intel_iommu_init(void)
3259 3294
3260 register_iommu(&intel_iommu_ops); 3295 register_iommu(&intel_iommu_ops);
3261 3296
3297 bus_register_notifier(&pci_bus_type, &device_nb);
3298
3262 return 0; 3299 return 0;
3263} 3300}
3264 3301
diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
index 745402e8e498..5b7056cec00c 100644
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -656,8 +656,10 @@ void pcie_aspm_exit_link_state(struct pci_dev *pdev)
656 free_link_state(link); 656 free_link_state(link);
657 657
658 /* Recheck latencies and configure upstream links */ 658 /* Recheck latencies and configure upstream links */
659 pcie_update_aspm_capable(root); 659 if (parent_link) {
660 pcie_config_aspm_path(parent_link); 660 pcie_update_aspm_capable(root);
661 pcie_config_aspm_path(parent_link);
662 }
661out: 663out:
662 mutex_unlock(&aspm_lock); 664 mutex_unlock(&aspm_lock);
663 up_read(&pci_bus_sem); 665 up_read(&pci_bus_sem);
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 0959430534b2..cb1a027eb552 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -299,17 +299,8 @@ static struct resource *find_free_bus_resource(struct pci_bus *bus, unsigned lon
299 r = bus->resource[i]; 299 r = bus->resource[i];
300 if (r == &ioport_resource || r == &iomem_resource) 300 if (r == &ioport_resource || r == &iomem_resource)
301 continue; 301 continue;
302 if (r && (r->flags & type_mask) == type) { 302 if (r && (r->flags & type_mask) == type && !r->parent)
303 if (!r->parent) 303 return r;
304 return r;
305 /*
306 * if there is no child under that, we should release
307 * and use it. don't need to reset it, pbus_size_* will
308 * set it again
309 */
310 if (!r->child && !release_resource(r))
311 return r;
312 }
313 } 304 }
314 return NULL; 305 return NULL;
315} 306}
diff --git a/drivers/pcmcia/cistpl.c b/drivers/pcmcia/cistpl.c
index 4a110b7b2673..6c4a4fc83630 100644
--- a/drivers/pcmcia/cistpl.c
+++ b/drivers/pcmcia/cistpl.c
@@ -1463,7 +1463,9 @@ int pccard_read_tuple(struct pcmcia_socket *s, unsigned int function, cisdata_t
1463 return -ENOMEM; 1463 return -ENOMEM;
1464 } 1464 }
1465 tuple.DesiredTuple = code; 1465 tuple.DesiredTuple = code;
1466 tuple.Attributes = TUPLE_RETURN_COMMON; 1466 tuple.Attributes = 0;
1467 if (function == BIND_FN_ALL)
1468 tuple.Attributes = TUPLE_RETURN_COMMON;
1467 ret = pccard_get_first_tuple(s, function, &tuple); 1469 ret = pccard_get_first_tuple(s, function, &tuple);
1468 if (ret != 0) 1470 if (ret != 0)
1469 goto done; 1471 goto done;
@@ -1490,7 +1492,7 @@ EXPORT_SYMBOL(pccard_read_tuple);
1490 1492
1491======================================================================*/ 1493======================================================================*/
1492 1494
1493int pccard_validate_cis(struct pcmcia_socket *s, unsigned int function, unsigned int *info) 1495int pccard_validate_cis(struct pcmcia_socket *s, unsigned int *info)
1494{ 1496{
1495 tuple_t *tuple; 1497 tuple_t *tuple;
1496 cisparse_t *p; 1498 cisparse_t *p;
@@ -1515,30 +1517,30 @@ int pccard_validate_cis(struct pcmcia_socket *s, unsigned int function, unsigned
1515 count = reserved = 0; 1517 count = reserved = 0;
1516 tuple->DesiredTuple = RETURN_FIRST_TUPLE; 1518 tuple->DesiredTuple = RETURN_FIRST_TUPLE;
1517 tuple->Attributes = TUPLE_RETURN_COMMON; 1519 tuple->Attributes = TUPLE_RETURN_COMMON;
1518 ret = pccard_get_first_tuple(s, function, tuple); 1520 ret = pccard_get_first_tuple(s, BIND_FN_ALL, tuple);
1519 if (ret != 0) 1521 if (ret != 0)
1520 goto done; 1522 goto done;
1521 1523
1522 /* First tuple should be DEVICE; we should really have either that 1524 /* First tuple should be DEVICE; we should really have either that
1523 or a CFTABLE_ENTRY of some sort */ 1525 or a CFTABLE_ENTRY of some sort */
1524 if ((tuple->TupleCode == CISTPL_DEVICE) || 1526 if ((tuple->TupleCode == CISTPL_DEVICE) ||
1525 (pccard_read_tuple(s, function, CISTPL_CFTABLE_ENTRY, p) == 0) || 1527 (pccard_read_tuple(s, BIND_FN_ALL, CISTPL_CFTABLE_ENTRY, p) == 0) ||
1526 (pccard_read_tuple(s, function, CISTPL_CFTABLE_ENTRY_CB, p) == 0)) 1528 (pccard_read_tuple(s, BIND_FN_ALL, CISTPL_CFTABLE_ENTRY_CB, p) == 0))
1527 dev_ok++; 1529 dev_ok++;
1528 1530
1529 /* All cards should have a MANFID tuple, and/or a VERS_1 or VERS_2 1531 /* All cards should have a MANFID tuple, and/or a VERS_1 or VERS_2
1530 tuple, for card identification. Certain old D-Link and Linksys 1532 tuple, for card identification. Certain old D-Link and Linksys
1531 cards have only a broken VERS_2 tuple; hence the bogus test. */ 1533 cards have only a broken VERS_2 tuple; hence the bogus test. */
1532 if ((pccard_read_tuple(s, function, CISTPL_MANFID, p) == 0) || 1534 if ((pccard_read_tuple(s, BIND_FN_ALL, CISTPL_MANFID, p) == 0) ||
1533 (pccard_read_tuple(s, function, CISTPL_VERS_1, p) == 0) || 1535 (pccard_read_tuple(s, BIND_FN_ALL, CISTPL_VERS_1, p) == 0) ||
1534 (pccard_read_tuple(s, function, CISTPL_VERS_2, p) != -ENOSPC)) 1536 (pccard_read_tuple(s, BIND_FN_ALL, CISTPL_VERS_2, p) != -ENOSPC))
1535 ident_ok++; 1537 ident_ok++;
1536 1538
1537 if (!dev_ok && !ident_ok) 1539 if (!dev_ok && !ident_ok)
1538 goto done; 1540 goto done;
1539 1541
1540 for (count = 1; count < MAX_TUPLES; count++) { 1542 for (count = 1; count < MAX_TUPLES; count++) {
1541 ret = pccard_get_next_tuple(s, function, tuple); 1543 ret = pccard_get_next_tuple(s, BIND_FN_ALL, tuple);
1542 if (ret != 0) 1544 if (ret != 0)
1543 break; 1545 break;
1544 if (((tuple->TupleCode > 0x23) && (tuple->TupleCode < 0x40)) || 1546 if (((tuple->TupleCode > 0x23) && (tuple->TupleCode < 0x40)) ||
diff --git a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c
index 934d4bee39a0..698d75cda084 100644
--- a/drivers/pcmcia/cs.c
+++ b/drivers/pcmcia/cs.c
@@ -98,10 +98,13 @@ EXPORT_SYMBOL(pcmcia_socket_list_rwsem);
98 * These functions check for the appropriate struct pcmcia_soket arrays, 98 * These functions check for the appropriate struct pcmcia_soket arrays,
99 * and pass them to the low-level functions pcmcia_{suspend,resume}_socket 99 * and pass them to the low-level functions pcmcia_{suspend,resume}_socket
100 */ 100 */
101static int socket_early_resume(struct pcmcia_socket *skt);
102static int socket_late_resume(struct pcmcia_socket *skt);
101static int socket_resume(struct pcmcia_socket *skt); 103static int socket_resume(struct pcmcia_socket *skt);
102static int socket_suspend(struct pcmcia_socket *skt); 104static int socket_suspend(struct pcmcia_socket *skt);
103 105
104int pcmcia_socket_dev_suspend(struct device *dev) 106static void pcmcia_socket_dev_run(struct device *dev,
107 int (*cb)(struct pcmcia_socket *))
105{ 108{
106 struct pcmcia_socket *socket; 109 struct pcmcia_socket *socket;
107 110
@@ -110,29 +113,34 @@ int pcmcia_socket_dev_suspend(struct device *dev)
110 if (socket->dev.parent != dev) 113 if (socket->dev.parent != dev)
111 continue; 114 continue;
112 mutex_lock(&socket->skt_mutex); 115 mutex_lock(&socket->skt_mutex);
113 socket_suspend(socket); 116 cb(socket);
114 mutex_unlock(&socket->skt_mutex); 117 mutex_unlock(&socket->skt_mutex);
115 } 118 }
116 up_read(&pcmcia_socket_list_rwsem); 119 up_read(&pcmcia_socket_list_rwsem);
120}
117 121
122int pcmcia_socket_dev_suspend(struct device *dev)
123{
124 pcmcia_socket_dev_run(dev, socket_suspend);
118 return 0; 125 return 0;
119} 126}
120EXPORT_SYMBOL(pcmcia_socket_dev_suspend); 127EXPORT_SYMBOL(pcmcia_socket_dev_suspend);
121 128
122int pcmcia_socket_dev_resume(struct device *dev) 129void pcmcia_socket_dev_early_resume(struct device *dev)
123{ 130{
124 struct pcmcia_socket *socket; 131 pcmcia_socket_dev_run(dev, socket_early_resume);
132}
133EXPORT_SYMBOL(pcmcia_socket_dev_early_resume);
125 134
126 down_read(&pcmcia_socket_list_rwsem); 135void pcmcia_socket_dev_late_resume(struct device *dev)
127 list_for_each_entry(socket, &pcmcia_socket_list, socket_list) { 136{
128 if (socket->dev.parent != dev) 137 pcmcia_socket_dev_run(dev, socket_late_resume);
129 continue; 138}
130 mutex_lock(&socket->skt_mutex); 139EXPORT_SYMBOL(pcmcia_socket_dev_late_resume);
131 socket_resume(socket);
132 mutex_unlock(&socket->skt_mutex);
133 }
134 up_read(&pcmcia_socket_list_rwsem);
135 140
141int pcmcia_socket_dev_resume(struct device *dev)
142{
143 pcmcia_socket_dev_run(dev, socket_resume);
136 return 0; 144 return 0;
137} 145}
138EXPORT_SYMBOL(pcmcia_socket_dev_resume); 146EXPORT_SYMBOL(pcmcia_socket_dev_resume);
@@ -546,29 +554,24 @@ static int socket_suspend(struct pcmcia_socket *skt)
546 return 0; 554 return 0;
547} 555}
548 556
549/* 557static int socket_early_resume(struct pcmcia_socket *skt)
550 * Resume a socket. If a card is present, verify its CIS against
551 * our cached copy. If they are different, the card has been
552 * replaced, and we need to tell the drivers.
553 */
554static int socket_resume(struct pcmcia_socket *skt)
555{ 558{
556 int ret;
557
558 if (!(skt->state & SOCKET_SUSPEND))
559 return -EBUSY;
560
561 skt->socket = dead_socket; 559 skt->socket = dead_socket;
562 skt->ops->init(skt); 560 skt->ops->init(skt);
563 skt->ops->set_socket(skt, &skt->socket); 561 skt->ops->set_socket(skt, &skt->socket);
562 if (skt->state & SOCKET_PRESENT)
563 skt->resume_status = socket_setup(skt, resume_delay);
564 return 0;
565}
564 566
567static int socket_late_resume(struct pcmcia_socket *skt)
568{
565 if (!(skt->state & SOCKET_PRESENT)) { 569 if (!(skt->state & SOCKET_PRESENT)) {
566 skt->state &= ~SOCKET_SUSPEND; 570 skt->state &= ~SOCKET_SUSPEND;
567 return socket_insert(skt); 571 return socket_insert(skt);
568 } 572 }
569 573
570 ret = socket_setup(skt, resume_delay); 574 if (skt->resume_status == 0) {
571 if (ret == 0) {
572 /* 575 /*
573 * FIXME: need a better check here for cardbus cards. 576 * FIXME: need a better check here for cardbus cards.
574 */ 577 */
@@ -596,6 +599,20 @@ static int socket_resume(struct pcmcia_socket *skt)
596 return 0; 599 return 0;
597} 600}
598 601
602/*
603 * Resume a socket. If a card is present, verify its CIS against
604 * our cached copy. If they are different, the card has been
605 * replaced, and we need to tell the drivers.
606 */
607static int socket_resume(struct pcmcia_socket *skt)
608{
609 if (!(skt->state & SOCKET_SUSPEND))
610 return -EBUSY;
611
612 socket_early_resume(skt);
613 return socket_late_resume(skt);
614}
615
599static void socket_remove(struct pcmcia_socket *skt) 616static void socket_remove(struct pcmcia_socket *skt)
600{ 617{
601 dev_printk(KERN_NOTICE, &skt->dev, 618 dev_printk(KERN_NOTICE, &skt->dev,
diff --git a/drivers/pcmcia/cs_internal.h b/drivers/pcmcia/cs_internal.h
index 79615e6d540b..1f4098f1354d 100644
--- a/drivers/pcmcia/cs_internal.h
+++ b/drivers/pcmcia/cs_internal.h
@@ -197,8 +197,7 @@ int pccard_read_tuple(struct pcmcia_socket *s, unsigned int function,
197 cisdata_t code, void *parse); 197 cisdata_t code, void *parse);
198int pcmcia_replace_cis(struct pcmcia_socket *s, 198int pcmcia_replace_cis(struct pcmcia_socket *s,
199 const u8 *data, const size_t len); 199 const u8 *data, const size_t len);
200int pccard_validate_cis(struct pcmcia_socket *s, unsigned int function, 200int pccard_validate_cis(struct pcmcia_socket *s, unsigned int *count);
201 unsigned int *count);
202 201
203/* rsrc_mgr.c */ 202/* rsrc_mgr.c */
204int pcmcia_validate_mem(struct pcmcia_socket *s); 203int pcmcia_validate_mem(struct pcmcia_socket *s);
diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c
index 9f300d3cb125..f5b7079f13d3 100644
--- a/drivers/pcmcia/ds.c
+++ b/drivers/pcmcia/ds.c
@@ -547,7 +547,7 @@ static int pcmcia_device_query(struct pcmcia_device *p_dev)
547 if (!vers1) 547 if (!vers1)
548 return -ENOMEM; 548 return -ENOMEM;
549 549
550 if (!pccard_read_tuple(p_dev->socket, p_dev->func, 550 if (!pccard_read_tuple(p_dev->socket, BIND_FN_ALL,
551 CISTPL_MANFID, &manf_id)) { 551 CISTPL_MANFID, &manf_id)) {
552 p_dev->manf_id = manf_id.manf; 552 p_dev->manf_id = manf_id.manf;
553 p_dev->card_id = manf_id.card; 553 p_dev->card_id = manf_id.card;
@@ -581,9 +581,9 @@ static int pcmcia_device_query(struct pcmcia_device *p_dev)
581 kfree(devgeo); 581 kfree(devgeo);
582 } 582 }
583 583
584 if (!pccard_read_tuple(p_dev->socket, p_dev->func, CISTPL_VERS_1, 584 if (!pccard_read_tuple(p_dev->socket, BIND_FN_ALL, CISTPL_VERS_1,
585 vers1)) { 585 vers1)) {
586 for (i=0; i < vers1->ns; i++) { 586 for (i = 0; i < min_t(unsigned int, 4, vers1->ns); i++) {
587 char *tmp; 587 char *tmp;
588 unsigned int length; 588 unsigned int length;
589 589
@@ -733,7 +733,7 @@ static int pcmcia_card_add(struct pcmcia_socket *s)
733 return -EAGAIN; /* try again, but later... */ 733 return -EAGAIN; /* try again, but later... */
734 } 734 }
735 735
736 ret = pccard_validate_cis(s, BIND_FN_ALL, &no_chains); 736 ret = pccard_validate_cis(s, &no_chains);
737 if (ret || !no_chains) { 737 if (ret || !no_chains) {
738 ds_dev_dbg(0, &s->dev, "invalid CIS or invalid resources\n"); 738 ds_dev_dbg(0, &s->dev, "invalid CIS or invalid resources\n");
739 return -ENODEV; 739 return -ENODEV;
diff --git a/drivers/pcmcia/i82365.c b/drivers/pcmcia/i82365.c
index b906abe26ad0..a4aacb830b80 100644
--- a/drivers/pcmcia/i82365.c
+++ b/drivers/pcmcia/i82365.c
@@ -1053,8 +1053,8 @@ static int i365_set_io_map(u_short sock, struct pccard_io_map *io)
1053 u_char map, ioctl; 1053 u_char map, ioctl;
1054 1054
1055 debug(1, "SetIOMap(%d, %d, %#2.2x, %d ns, " 1055 debug(1, "SetIOMap(%d, %d, %#2.2x, %d ns, "
1056 "%#x-%#x)\n", sock, io->map, io->flags, 1056 "%#llx-%#llx)\n", sock, io->map, io->flags, io->speed,
1057 io->speed, io->start, io->stop); 1057 (unsigned long long)io->start, (unsigned long long)io->stop);
1058 map = io->map; 1058 map = io->map;
1059 if ((map > 1) || (io->start > 0xffff) || (io->stop > 0xffff) || 1059 if ((map > 1) || (io->start > 0xffff) || (io->stop > 0xffff) ||
1060 (io->stop < io->start)) return -EINVAL; 1060 (io->stop < io->start)) return -EINVAL;
diff --git a/drivers/pcmcia/m32r_cfc.c b/drivers/pcmcia/m32r_cfc.c
index d1d89c4491ad..7dfbee1dcd76 100644
--- a/drivers/pcmcia/m32r_cfc.c
+++ b/drivers/pcmcia/m32r_cfc.c
@@ -537,8 +537,9 @@ static int _pcc_set_io_map(u_short sock, struct pccard_io_map *io)
537 u_char map; 537 u_char map;
538 538
539 debug(3, "m32r_cfc: SetIOMap(%d, %d, %#2.2x, %d ns, " 539 debug(3, "m32r_cfc: SetIOMap(%d, %d, %#2.2x, %d ns, "
540 "%#lx-%#lx)\n", sock, io->map, io->flags, 540 "%#llx-%#llx)\n", sock, io->map, io->flags,
541 io->speed, io->start, io->stop); 541 io->speed, (unsigned long long)io->start,
542 (unsigned long long)io->stop);
542 map = io->map; 543 map = io->map;
543 544
544 return 0; 545 return 0;
@@ -554,8 +555,9 @@ static int _pcc_set_mem_map(u_short sock, struct pccard_mem_map *mem)
554 pcc_socket_t *t = &socket[sock]; 555 pcc_socket_t *t = &socket[sock];
555 556
556 debug(3, "m32r_cfc: SetMemMap(%d, %d, %#2.2x, %d ns, " 557 debug(3, "m32r_cfc: SetMemMap(%d, %d, %#2.2x, %d ns, "
557 "%#lx, %#x)\n", sock, map, mem->flags, 558 "%#llx, %#x)\n", sock, map, mem->flags,
558 mem->speed, mem->static_start, mem->card_start); 559 mem->speed, (unsigned long long)mem->static_start,
560 mem->card_start);
559 561
560 /* 562 /*
561 * sanity check 563 * sanity check
diff --git a/drivers/pcmcia/m32r_pcc.c b/drivers/pcmcia/m32r_pcc.c
index a0655839c8d3..c6524f99ccc3 100644
--- a/drivers/pcmcia/m32r_pcc.c
+++ b/drivers/pcmcia/m32r_pcc.c
@@ -492,8 +492,9 @@ static int _pcc_set_io_map(u_short sock, struct pccard_io_map *io)
492 u_char map; 492 u_char map;
493 493
494 debug(3, "m32r-pcc: SetIOMap(%d, %d, %#2.2x, %d ns, " 494 debug(3, "m32r-pcc: SetIOMap(%d, %d, %#2.2x, %d ns, "
495 "%#x-%#x)\n", sock, io->map, io->flags, 495 "%#llx-%#llx)\n", sock, io->map, io->flags,
496 io->speed, io->start, io->stop); 496 io->speed, (unsigned long long)io->start,
497 (unsigned long long)io->stop);
497 map = io->map; 498 map = io->map;
498 499
499 return 0; 500 return 0;
@@ -515,8 +516,9 @@ static int _pcc_set_mem_map(u_short sock, struct pccard_mem_map *mem)
515#endif 516#endif
516 517
517 debug(3, "m32r-pcc: SetMemMap(%d, %d, %#2.2x, %d ns, " 518 debug(3, "m32r-pcc: SetMemMap(%d, %d, %#2.2x, %d ns, "
518 "%#lx, %#x)\n", sock, map, mem->flags, 519 "%#llx, %#x)\n", sock, map, mem->flags,
519 mem->speed, mem->static_start, mem->card_start); 520 mem->speed, (unsigned long long)mem->static_start,
521 mem->card_start);
520 522
521 /* 523 /*
522 * sanity check 524 * sanity check
diff --git a/drivers/pcmcia/m8xx_pcmcia.c b/drivers/pcmcia/m8xx_pcmcia.c
index c69f2c4fe520..403559ba49dd 100644
--- a/drivers/pcmcia/m8xx_pcmcia.c
+++ b/drivers/pcmcia/m8xx_pcmcia.c
@@ -975,8 +975,9 @@ static int m8xx_set_io_map(struct pcmcia_socket *sock, struct pccard_io_map *io)
975#define M8XX_BASE (PCMCIA_IO_WIN_BASE + io->start) 975#define M8XX_BASE (PCMCIA_IO_WIN_BASE + io->start)
976 976
977 dprintk("SetIOMap(%d, %d, %#2.2x, %d ns, " 977 dprintk("SetIOMap(%d, %d, %#2.2x, %d ns, "
978 "%#4.4x-%#4.4x)\n", lsock, io->map, io->flags, 978 "%#4.4llx-%#4.4llx)\n", lsock, io->map, io->flags,
979 io->speed, io->start, io->stop); 979 io->speed, (unsigned long long)io->start,
980 (unsigned long long)io->stop);
980 981
981 if ((io->map >= PCMCIA_IO_WIN_NO) || (io->start > 0xffff) 982 if ((io->map >= PCMCIA_IO_WIN_NO) || (io->start > 0xffff)
982 || (io->stop > 0xffff) || (io->stop < io->start)) 983 || (io->stop > 0xffff) || (io->stop < io->start))
@@ -1055,8 +1056,9 @@ static int m8xx_set_mem_map(struct pcmcia_socket *sock,
1055 pcmconf8xx_t *pcmcia = s->pcmcia; 1056 pcmconf8xx_t *pcmcia = s->pcmcia;
1056 1057
1057 dprintk("SetMemMap(%d, %d, %#2.2x, %d ns, " 1058 dprintk("SetMemMap(%d, %d, %#2.2x, %d ns, "
1058 "%#5.5lx, %#5.5x)\n", lsock, mem->map, mem->flags, 1059 "%#5.5llx, %#5.5x)\n", lsock, mem->map, mem->flags,
1059 mem->speed, mem->static_start, mem->card_start); 1060 mem->speed, (unsigned long long)mem->static_start,
1061 mem->card_start);
1060 1062
1061 if ((mem->map >= PCMCIA_MEM_WIN_NO) 1063 if ((mem->map >= PCMCIA_MEM_WIN_NO)
1062// || ((mem->s) >= PCMCIA_MEM_WIN_SIZE) 1064// || ((mem->s) >= PCMCIA_MEM_WIN_SIZE)
@@ -1107,8 +1109,9 @@ static int m8xx_set_mem_map(struct pcmcia_socket *sock,
1107 } 1109 }
1108 1110
1109 dprintk("SetMemMap(%d, %d, %#2.2x, %d ns, " 1111 dprintk("SetMemMap(%d, %d, %#2.2x, %d ns, "
1110 "%#5.5lx, %#5.5x)\n", lsock, mem->map, mem->flags, 1112 "%#5.5llx, %#5.5x)\n", lsock, mem->map, mem->flags,
1111 mem->speed, mem->static_start, mem->card_start); 1113 mem->speed, (unsigned long long)mem->static_start,
1114 mem->card_start);
1112 1115
1113 /* copy the struct and modify the copy */ 1116 /* copy the struct and modify the copy */
1114 1117
diff --git a/drivers/pcmcia/pcmcia_ioctl.c b/drivers/pcmcia/pcmcia_ioctl.c
index 32c44040c1e8..30cf71d2ee23 100644
--- a/drivers/pcmcia/pcmcia_ioctl.c
+++ b/drivers/pcmcia/pcmcia_ioctl.c
@@ -881,7 +881,7 @@ static int ds_ioctl(struct inode * inode, struct file * file,
881 mutex_lock(&s->skt_mutex); 881 mutex_lock(&s->skt_mutex);
882 pcmcia_validate_mem(s); 882 pcmcia_validate_mem(s);
883 mutex_unlock(&s->skt_mutex); 883 mutex_unlock(&s->skt_mutex);
884 ret = pccard_validate_cis(s, BIND_FN_ALL, &buf->cisinfo.Chains); 884 ret = pccard_validate_cis(s, &buf->cisinfo.Chains);
885 break; 885 break;
886 case DS_SUSPEND_CARD: 886 case DS_SUSPEND_CARD:
887 ret = pcmcia_suspend_card(s); 887 ret = pcmcia_suspend_card(s);
diff --git a/drivers/pcmcia/pd6729.c b/drivers/pcmcia/pd6729.c
index 1c39d3438f20..70a33468bcd0 100644
--- a/drivers/pcmcia/pd6729.c
+++ b/drivers/pcmcia/pd6729.c
@@ -641,6 +641,12 @@ static int __devinit pd6729_pci_probe(struct pci_dev *dev,
641 if ((ret = pci_enable_device(dev))) 641 if ((ret = pci_enable_device(dev)))
642 goto err_out_free_mem; 642 goto err_out_free_mem;
643 643
644 if (!pci_resource_start(dev, 0)) {
645 printk(KERN_INFO "pd6729: refusing to load the driver "
646 "as the io_base is 0.\n");
647 goto err_out_free_mem;
648 }
649
644 printk(KERN_INFO "pd6729: Cirrus PD6729 PCI to PCMCIA Bridge " 650 printk(KERN_INFO "pd6729: Cirrus PD6729 PCI to PCMCIA Bridge "
645 "at 0x%llx on irq %d\n", 651 "at 0x%llx on irq %d\n",
646 (unsigned long long)pci_resource_start(dev, 0), dev->irq); 652 (unsigned long long)pci_resource_start(dev, 0), dev->irq);
diff --git a/drivers/pcmcia/rsrc_nonstatic.c b/drivers/pcmcia/rsrc_nonstatic.c
index 9ca22c7aafb2..7039f3cf5b77 100644
--- a/drivers/pcmcia/rsrc_nonstatic.c
+++ b/drivers/pcmcia/rsrc_nonstatic.c
@@ -206,6 +206,7 @@ static void do_io_probe(struct pcmcia_socket *s, unsigned int base,
206 /* First, what does a floating port look like? */ 206 /* First, what does a floating port look like? */
207 b = kzalloc(256, GFP_KERNEL); 207 b = kzalloc(256, GFP_KERNEL);
208 if (!b) { 208 if (!b) {
209 printk("\n");
209 dev_printk(KERN_ERR, &s->dev, 210 dev_printk(KERN_ERR, &s->dev,
210 "do_io_probe: unable to kmalloc 256 bytes"); 211 "do_io_probe: unable to kmalloc 256 bytes");
211 return; 212 return;
@@ -275,7 +276,7 @@ static int readable(struct pcmcia_socket *s, struct resource *res,
275 s->cis_mem.res = res; 276 s->cis_mem.res = res;
276 s->cis_virt = ioremap(res->start, s->map_size); 277 s->cis_virt = ioremap(res->start, s->map_size);
277 if (s->cis_virt) { 278 if (s->cis_virt) {
278 ret = pccard_validate_cis(s, BIND_FN_ALL, count); 279 ret = pccard_validate_cis(s, count);
279 /* invalidate mapping and CIS cache */ 280 /* invalidate mapping and CIS cache */
280 iounmap(s->cis_virt); 281 iounmap(s->cis_virt);
281 s->cis_virt = NULL; 282 s->cis_virt = NULL;
diff --git a/drivers/pcmcia/soc_common.c b/drivers/pcmcia/soc_common.c
index 163cf98e2386..ef7e9e58782b 100644
--- a/drivers/pcmcia/soc_common.c
+++ b/drivers/pcmcia/soc_common.c
@@ -336,8 +336,9 @@ soc_common_pcmcia_set_io_map(struct pcmcia_socket *sock, struct pccard_io_map *m
336 struct soc_pcmcia_socket *skt = to_soc_pcmcia_socket(sock); 336 struct soc_pcmcia_socket *skt = to_soc_pcmcia_socket(sock);
337 unsigned short speed = map->speed; 337 unsigned short speed = map->speed;
338 338
339 debug(skt, 2, "map %u speed %u start 0x%08x stop 0x%08x\n", 339 debug(skt, 2, "map %u speed %u start 0x%08llx stop 0x%08llx\n",
340 map->map, map->speed, map->start, map->stop); 340 map->map, map->speed, (unsigned long long)map->start,
341 (unsigned long long)map->stop);
341 debug(skt, 2, "flags: %s%s%s%s%s%s%s%s\n", 342 debug(skt, 2, "flags: %s%s%s%s%s%s%s%s\n",
342 (map->flags==0)?"<NONE>":"", 343 (map->flags==0)?"<NONE>":"",
343 (map->flags&MAP_ACTIVE)?"ACTIVE ":"", 344 (map->flags&MAP_ACTIVE)?"ACTIVE ":"",
diff --git a/drivers/pcmcia/socket_sysfs.c b/drivers/pcmcia/socket_sysfs.c
index ff9a3bb3c88d..78d5aab542f7 100644
--- a/drivers/pcmcia/socket_sysfs.c
+++ b/drivers/pcmcia/socket_sysfs.c
@@ -300,7 +300,7 @@ static ssize_t pccard_show_cis(struct kobject *kobj,
300 300
301 if (!(s->state & SOCKET_PRESENT)) 301 if (!(s->state & SOCKET_PRESENT))
302 return -ENODEV; 302 return -ENODEV;
303 if (pccard_validate_cis(s, BIND_FN_ALL, &chains)) 303 if (pccard_validate_cis(s, &chains))
304 return -EIO; 304 return -EIO;
305 if (!chains) 305 if (!chains)
306 return -ENODATA; 306 return -ENODATA;
diff --git a/drivers/pcmcia/tcic.c b/drivers/pcmcia/tcic.c
index 582413fcb62f..6918849d511e 100644
--- a/drivers/pcmcia/tcic.c
+++ b/drivers/pcmcia/tcic.c
@@ -732,8 +732,8 @@ static int tcic_set_io_map(struct pcmcia_socket *sock, struct pccard_io_map *io)
732 u_short base, len, ioctl; 732 u_short base, len, ioctl;
733 733
734 debug(1, "SetIOMap(%d, %d, %#2.2x, %d ns, " 734 debug(1, "SetIOMap(%d, %d, %#2.2x, %d ns, "
735 "%#x-%#x)\n", psock, io->map, io->flags, 735 "%#llx-%#llx)\n", psock, io->map, io->flags, io->speed,
736 io->speed, io->start, io->stop); 736 (unsigned long long)io->start, (unsigned long long)io->stop);
737 if ((io->map > 1) || (io->start > 0xffff) || (io->stop > 0xffff) || 737 if ((io->map > 1) || (io->start > 0xffff) || (io->stop > 0xffff) ||
738 (io->stop < io->start)) return -EINVAL; 738 (io->stop < io->start)) return -EINVAL;
739 tcic_setw(TCIC_ADDR+2, TCIC_ADR2_INDREG | (psock << TCIC_SS_SHFT)); 739 tcic_setw(TCIC_ADDR+2, TCIC_ADR2_INDREG | (psock << TCIC_SS_SHFT));
diff --git a/drivers/pcmcia/yenta_socket.c b/drivers/pcmcia/yenta_socket.c
index abe0e44c6e9e..8be4cc447a17 100644
--- a/drivers/pcmcia/yenta_socket.c
+++ b/drivers/pcmcia/yenta_socket.c
@@ -1275,16 +1275,26 @@ static int yenta_dev_resume_noirq(struct device *dev)
1275 if (socket->type && socket->type->restore_state) 1275 if (socket->type && socket->type->restore_state)
1276 socket->type->restore_state(socket); 1276 socket->type->restore_state(socket);
1277 1277
1278 return pcmcia_socket_dev_resume(dev); 1278 pcmcia_socket_dev_early_resume(dev);
1279 return 0;
1280}
1281
1282static int yenta_dev_resume(struct device *dev)
1283{
1284 pcmcia_socket_dev_late_resume(dev);
1285 return 0;
1279} 1286}
1280 1287
1281static struct dev_pm_ops yenta_pm_ops = { 1288static struct dev_pm_ops yenta_pm_ops = {
1282 .suspend_noirq = yenta_dev_suspend_noirq, 1289 .suspend_noirq = yenta_dev_suspend_noirq,
1283 .resume_noirq = yenta_dev_resume_noirq, 1290 .resume_noirq = yenta_dev_resume_noirq,
1291 .resume = yenta_dev_resume,
1284 .freeze_noirq = yenta_dev_suspend_noirq, 1292 .freeze_noirq = yenta_dev_suspend_noirq,
1285 .thaw_noirq = yenta_dev_resume_noirq, 1293 .thaw_noirq = yenta_dev_resume_noirq,
1294 .thaw = yenta_dev_resume,
1286 .poweroff_noirq = yenta_dev_suspend_noirq, 1295 .poweroff_noirq = yenta_dev_suspend_noirq,
1287 .restore_noirq = yenta_dev_resume_noirq, 1296 .restore_noirq = yenta_dev_resume_noirq,
1297 .restore = yenta_dev_resume,
1288}; 1298};
1289 1299
1290#define YENTA_PM_OPS (&yenta_pm_ops) 1300#define YENTA_PM_OPS (&yenta_pm_ops)
diff --git a/drivers/platform/x86/acerhdf.c b/drivers/platform/x86/acerhdf.c
index 0a8f735f6c4a..ab64522aaa64 100644
--- a/drivers/platform/x86/acerhdf.c
+++ b/drivers/platform/x86/acerhdf.c
@@ -52,7 +52,7 @@
52 */ 52 */
53#undef START_IN_KERNEL_MODE 53#undef START_IN_KERNEL_MODE
54 54
55#define DRV_VER "0.5.17" 55#define DRV_VER "0.5.18"
56 56
57/* 57/*
58 * According to the Atom N270 datasheet, 58 * According to the Atom N270 datasheet,
@@ -61,7 +61,7 @@
61 * measured by the on-die thermal monitor are within 0 <= Tj <= 90. So, 61 * measured by the on-die thermal monitor are within 0 <= Tj <= 90. So,
62 * assume 89°C is critical temperature. 62 * assume 89°C is critical temperature.
63 */ 63 */
64#define ACERHDF_TEMP_CRIT 89 64#define ACERHDF_TEMP_CRIT 89000
65#define ACERHDF_FAN_OFF 0 65#define ACERHDF_FAN_OFF 0
66#define ACERHDF_FAN_AUTO 1 66#define ACERHDF_FAN_AUTO 1
67 67
@@ -69,7 +69,7 @@
69 * No matter what value the user puts into the fanon variable, turn on the fan 69 * No matter what value the user puts into the fanon variable, turn on the fan
70 * at 80 degree Celsius to prevent hardware damage 70 * at 80 degree Celsius to prevent hardware damage
71 */ 71 */
72#define ACERHDF_MAX_FANON 80 72#define ACERHDF_MAX_FANON 80000
73 73
74/* 74/*
75 * Maximum interval between two temperature checks is 15 seconds, as the die 75 * Maximum interval between two temperature checks is 15 seconds, as the die
@@ -85,8 +85,8 @@ static int kernelmode;
85#endif 85#endif
86 86
87static unsigned int interval = 10; 87static unsigned int interval = 10;
88static unsigned int fanon = 63; 88static unsigned int fanon = 63000;
89static unsigned int fanoff = 58; 89static unsigned int fanoff = 58000;
90static unsigned int verbose; 90static unsigned int verbose;
91static unsigned int fanstate = ACERHDF_FAN_AUTO; 91static unsigned int fanstate = ACERHDF_FAN_AUTO;
92static char force_bios[16]; 92static char force_bios[16];
@@ -171,7 +171,7 @@ static int acerhdf_get_temp(int *temp)
171 if (ec_read(bios_cfg->tempreg, &read_temp)) 171 if (ec_read(bios_cfg->tempreg, &read_temp))
172 return -EINVAL; 172 return -EINVAL;
173 173
174 *temp = read_temp; 174 *temp = read_temp * 1000;
175 175
176 return 0; 176 return 0;
177} 177}
diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c
index d379e74a05d0..4226e5352738 100644
--- a/drivers/platform/x86/eeepc-laptop.c
+++ b/drivers/platform/x86/eeepc-laptop.c
@@ -150,8 +150,6 @@ struct eeepc_hotk {
150/* The actual device the driver binds to */ 150/* The actual device the driver binds to */
151static struct eeepc_hotk *ehotk; 151static struct eeepc_hotk *ehotk;
152 152
153static void eeepc_rfkill_hotplug(bool real);
154
155/* Platform device/driver */ 153/* Platform device/driver */
156static int eeepc_hotk_thaw(struct device *device); 154static int eeepc_hotk_thaw(struct device *device);
157static int eeepc_hotk_restore(struct device *device); 155static int eeepc_hotk_restore(struct device *device);
@@ -345,16 +343,7 @@ static bool eeepc_wlan_rfkill_blocked(void)
345static int eeepc_rfkill_set(void *data, bool blocked) 343static int eeepc_rfkill_set(void *data, bool blocked)
346{ 344{
347 unsigned long asl = (unsigned long)data; 345 unsigned long asl = (unsigned long)data;
348 int ret; 346 return set_acpi(asl, !blocked);
349
350 if (asl != CM_ASL_WLAN)
351 return set_acpi(asl, !blocked);
352
353 /* hack to avoid panic with rt2860sta */
354 if (blocked)
355 eeepc_rfkill_hotplug(false);
356 ret = set_acpi(asl, !blocked);
357 return ret;
358} 347}
359 348
360static const struct rfkill_ops eeepc_rfkill_ops = { 349static const struct rfkill_ops eeepc_rfkill_ops = {
@@ -367,7 +356,8 @@ static void __devinit eeepc_enable_camera(void)
367 * If the following call to set_acpi() fails, it's because there's no 356 * If the following call to set_acpi() fails, it's because there's no
368 * camera so we can ignore the error. 357 * camera so we can ignore the error.
369 */ 358 */
370 set_acpi(CM_ASL_CAMERA, 1); 359 if (get_acpi(CM_ASL_CAMERA) == 0)
360 set_acpi(CM_ASL_CAMERA, 1);
371} 361}
372 362
373/* 363/*
@@ -654,13 +644,13 @@ static int eeepc_get_adapter_status(struct hotplug_slot *hotplug_slot,
654 return 0; 644 return 0;
655} 645}
656 646
657static void eeepc_rfkill_hotplug(bool real) 647static void eeepc_rfkill_hotplug(void)
658{ 648{
659 struct pci_dev *dev; 649 struct pci_dev *dev;
660 struct pci_bus *bus; 650 struct pci_bus *bus;
661 bool blocked = real ? eeepc_wlan_rfkill_blocked() : true; 651 bool blocked = eeepc_wlan_rfkill_blocked();
662 652
663 if (real && ehotk->wlan_rfkill) 653 if (ehotk->wlan_rfkill)
664 rfkill_set_sw_state(ehotk->wlan_rfkill, blocked); 654 rfkill_set_sw_state(ehotk->wlan_rfkill, blocked);
665 655
666 mutex_lock(&ehotk->hotplug_lock); 656 mutex_lock(&ehotk->hotplug_lock);
@@ -703,7 +693,7 @@ static void eeepc_rfkill_notify(acpi_handle handle, u32 event, void *data)
703 if (event != ACPI_NOTIFY_BUS_CHECK) 693 if (event != ACPI_NOTIFY_BUS_CHECK)
704 return; 694 return;
705 695
706 eeepc_rfkill_hotplug(true); 696 eeepc_rfkill_hotplug();
707} 697}
708 698
709static void eeepc_hotk_notify(struct acpi_device *device, u32 event) 699static void eeepc_hotk_notify(struct acpi_device *device, u32 event)
@@ -861,7 +851,7 @@ static int eeepc_hotk_restore(struct device *device)
861{ 851{
862 /* Refresh both wlan rfkill state and pci hotplug */ 852 /* Refresh both wlan rfkill state and pci hotplug */
863 if (ehotk->wlan_rfkill) 853 if (ehotk->wlan_rfkill)
864 eeepc_rfkill_hotplug(true); 854 eeepc_rfkill_hotplug();
865 855
866 if (ehotk->bluetooth_rfkill) 856 if (ehotk->bluetooth_rfkill)
867 rfkill_set_sw_state(ehotk->bluetooth_rfkill, 857 rfkill_set_sw_state(ehotk->bluetooth_rfkill,
@@ -1004,7 +994,7 @@ static void eeepc_rfkill_exit(void)
1004 * Refresh pci hotplug in case the rfkill state was changed after 994 * Refresh pci hotplug in case the rfkill state was changed after
1005 * eeepc_unregister_rfkill_notifier() 995 * eeepc_unregister_rfkill_notifier()
1006 */ 996 */
1007 eeepc_rfkill_hotplug(true); 997 eeepc_rfkill_hotplug();
1008 if (ehotk->hotplug_slot) 998 if (ehotk->hotplug_slot)
1009 pci_hp_deregister(ehotk->hotplug_slot); 999 pci_hp_deregister(ehotk->hotplug_slot);
1010 1000
@@ -1120,7 +1110,7 @@ static int eeepc_rfkill_init(struct device *dev)
1120 * Refresh pci hotplug in case the rfkill state was changed during 1110 * Refresh pci hotplug in case the rfkill state was changed during
1121 * setup. 1111 * setup.
1122 */ 1112 */
1123 eeepc_rfkill_hotplug(true); 1113 eeepc_rfkill_hotplug();
1124 1114
1125exit: 1115exit:
1126 if (result && result != -ENODEV) 1116 if (result && result != -ENODEV)
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
index d93108d148fc..a848c7e20aeb 100644
--- a/drivers/platform/x86/thinkpad_acpi.c
+++ b/drivers/platform/x86/thinkpad_acpi.c
@@ -1680,36 +1680,48 @@ static void tpacpi_remove_driver_attributes(struct device_driver *drv)
1680 | (__bv1) << 8 | (__bv2) } 1680 | (__bv1) << 8 | (__bv2) }
1681 1681
1682#define TPV_Q_X(__v, __bid1, __bid2, __bv1, __bv2, \ 1682#define TPV_Q_X(__v, __bid1, __bid2, __bv1, __bv2, \
1683 __eid1, __eid2, __ev1, __ev2) \ 1683 __eid, __ev1, __ev2) \
1684 { .vendor = (__v), \ 1684 { .vendor = (__v), \
1685 .bios = TPID(__bid1, __bid2), \ 1685 .bios = TPID(__bid1, __bid2), \
1686 .ec = TPID(__eid1, __eid2), \ 1686 .ec = __eid, \
1687 .quirks = (__ev1) << 24 | (__ev2) << 16 \ 1687 .quirks = (__ev1) << 24 | (__ev2) << 16 \
1688 | (__bv1) << 8 | (__bv2) } 1688 | (__bv1) << 8 | (__bv2) }
1689 1689
1690#define TPV_QI0(__id1, __id2, __bv1, __bv2) \ 1690#define TPV_QI0(__id1, __id2, __bv1, __bv2) \
1691 TPV_Q(PCI_VENDOR_ID_IBM, __id1, __id2, __bv1, __bv2) 1691 TPV_Q(PCI_VENDOR_ID_IBM, __id1, __id2, __bv1, __bv2)
1692 1692
1693/* Outdated IBM BIOSes often lack the EC id string */
1693#define TPV_QI1(__id1, __id2, __bv1, __bv2, __ev1, __ev2) \ 1694#define TPV_QI1(__id1, __id2, __bv1, __bv2, __ev1, __ev2) \
1694 TPV_Q_X(PCI_VENDOR_ID_IBM, __id1, __id2, \ 1695 TPV_Q_X(PCI_VENDOR_ID_IBM, __id1, __id2, \
1695 __bv1, __bv2, __id1, __id2, __ev1, __ev2) 1696 __bv1, __bv2, TPID(__id1, __id2), \
1697 __ev1, __ev2), \
1698 TPV_Q_X(PCI_VENDOR_ID_IBM, __id1, __id2, \
1699 __bv1, __bv2, TPACPI_MATCH_UNKNOWN, \
1700 __ev1, __ev2)
1696 1701
1702/* Outdated IBM BIOSes often lack the EC id string */
1697#define TPV_QI2(__bid1, __bid2, __bv1, __bv2, \ 1703#define TPV_QI2(__bid1, __bid2, __bv1, __bv2, \
1698 __eid1, __eid2, __ev1, __ev2) \ 1704 __eid1, __eid2, __ev1, __ev2) \
1699 TPV_Q_X(PCI_VENDOR_ID_IBM, __bid1, __bid2, \ 1705 TPV_Q_X(PCI_VENDOR_ID_IBM, __bid1, __bid2, \
1700 __bv1, __bv2, __eid1, __eid2, __ev1, __ev2) 1706 __bv1, __bv2, TPID(__eid1, __eid2), \
1707 __ev1, __ev2), \
1708 TPV_Q_X(PCI_VENDOR_ID_IBM, __bid1, __bid2, \
1709 __bv1, __bv2, TPACPI_MATCH_UNKNOWN, \
1710 __ev1, __ev2)
1701 1711
1702#define TPV_QL0(__id1, __id2, __bv1, __bv2) \ 1712#define TPV_QL0(__id1, __id2, __bv1, __bv2) \
1703 TPV_Q(PCI_VENDOR_ID_LENOVO, __id1, __id2, __bv1, __bv2) 1713 TPV_Q(PCI_VENDOR_ID_LENOVO, __id1, __id2, __bv1, __bv2)
1704 1714
1705#define TPV_QL1(__id1, __id2, __bv1, __bv2, __ev1, __ev2) \ 1715#define TPV_QL1(__id1, __id2, __bv1, __bv2, __ev1, __ev2) \
1706 TPV_Q_X(PCI_VENDOR_ID_LENOVO, __id1, __id2, \ 1716 TPV_Q_X(PCI_VENDOR_ID_LENOVO, __id1, __id2, \
1707 __bv1, __bv2, __id1, __id2, __ev1, __ev2) 1717 __bv1, __bv2, TPID(__id1, __id2), \
1718 __ev1, __ev2)
1708 1719
1709#define TPV_QL2(__bid1, __bid2, __bv1, __bv2, \ 1720#define TPV_QL2(__bid1, __bid2, __bv1, __bv2, \
1710 __eid1, __eid2, __ev1, __ev2) \ 1721 __eid1, __eid2, __ev1, __ev2) \
1711 TPV_Q_X(PCI_VENDOR_ID_LENOVO, __bid1, __bid2, \ 1722 TPV_Q_X(PCI_VENDOR_ID_LENOVO, __bid1, __bid2, \
1712 __bv1, __bv2, __eid1, __eid2, __ev1, __ev2) 1723 __bv1, __bv2, TPID(__eid1, __eid2), \
1724 __ev1, __ev2)
1713 1725
1714static const struct tpacpi_quirk tpacpi_bios_version_qtable[] __initconst = { 1726static const struct tpacpi_quirk tpacpi_bios_version_qtable[] __initconst = {
1715 /* Numeric models ------------------ */ 1727 /* Numeric models ------------------ */
@@ -6313,7 +6325,7 @@ static int brightness_write(char *buf)
6313 * Doing it this way makes the syscall restartable in case of EINTR 6325 * Doing it this way makes the syscall restartable in case of EINTR
6314 */ 6326 */
6315 rc = brightness_set(level); 6327 rc = brightness_set(level);
6316 return (rc == -EINTR)? ERESTARTSYS : rc; 6328 return (rc == -EINTR)? -ERESTARTSYS : rc;
6317} 6329}
6318 6330
6319static struct ibm_struct brightness_driver_data = { 6331static struct ibm_struct brightness_driver_data = {
diff --git a/drivers/pps/kapi.c b/drivers/pps/kapi.c
index 35a0b192d768..2d414e23d390 100644
--- a/drivers/pps/kapi.c
+++ b/drivers/pps/kapi.c
@@ -271,6 +271,7 @@ void pps_event(int source, struct pps_ktime *ts, int event, void *data)
271{ 271{
272 struct pps_device *pps; 272 struct pps_device *pps;
273 unsigned long flags; 273 unsigned long flags;
274 int captured = 0;
274 275
275 if ((event & (PPS_CAPTUREASSERT | PPS_CAPTURECLEAR)) == 0) { 276 if ((event & (PPS_CAPTUREASSERT | PPS_CAPTURECLEAR)) == 0) {
276 printk(KERN_ERR "pps: unknown event (%x) for source %d\n", 277 printk(KERN_ERR "pps: unknown event (%x) for source %d\n",
@@ -293,7 +294,8 @@ void pps_event(int source, struct pps_ktime *ts, int event, void *data)
293 294
294 /* Check the event */ 295 /* Check the event */
295 pps->current_mode = pps->params.mode; 296 pps->current_mode = pps->params.mode;
296 if (event & PPS_CAPTUREASSERT) { 297 if ((event & PPS_CAPTUREASSERT) &
298 (pps->params.mode & PPS_CAPTUREASSERT)) {
297 /* We have to add an offset? */ 299 /* We have to add an offset? */
298 if (pps->params.mode & PPS_OFFSETASSERT) 300 if (pps->params.mode & PPS_OFFSETASSERT)
299 pps_add_offset(ts, &pps->params.assert_off_tu); 301 pps_add_offset(ts, &pps->params.assert_off_tu);
@@ -303,8 +305,11 @@ void pps_event(int source, struct pps_ktime *ts, int event, void *data)
303 pps->assert_sequence++; 305 pps->assert_sequence++;
304 pr_debug("capture assert seq #%u for source %d\n", 306 pr_debug("capture assert seq #%u for source %d\n",
305 pps->assert_sequence, source); 307 pps->assert_sequence, source);
308
309 captured = ~0;
306 } 310 }
307 if (event & PPS_CAPTURECLEAR) { 311 if ((event & PPS_CAPTURECLEAR) &
312 (pps->params.mode & PPS_CAPTURECLEAR)) {
308 /* We have to add an offset? */ 313 /* We have to add an offset? */
309 if (pps->params.mode & PPS_OFFSETCLEAR) 314 if (pps->params.mode & PPS_OFFSETCLEAR)
310 pps_add_offset(ts, &pps->params.clear_off_tu); 315 pps_add_offset(ts, &pps->params.clear_off_tu);
@@ -314,12 +319,17 @@ void pps_event(int source, struct pps_ktime *ts, int event, void *data)
314 pps->clear_sequence++; 319 pps->clear_sequence++;
315 pr_debug("capture clear seq #%u for source %d\n", 320 pr_debug("capture clear seq #%u for source %d\n",
316 pps->clear_sequence, source); 321 pps->clear_sequence, source);
322
323 captured = ~0;
317 } 324 }
318 325
319 pps->go = ~0; 326 /* Wake up iif captured somthing */
320 wake_up_interruptible(&pps->queue); 327 if (captured) {
328 pps->go = ~0;
329 wake_up_interruptible(&pps->queue);
321 330
322 kill_fasync(&pps->async_queue, SIGIO, POLL_IN); 331 kill_fasync(&pps->async_queue, SIGIO, POLL_IN);
332 }
323 333
324 spin_unlock_irqrestore(&pps->lock, flags); 334 spin_unlock_irqrestore(&pps->lock, flags);
325 335
diff --git a/drivers/pps/pps.c b/drivers/pps/pps.c
index fea17e7805e9..ca5183bdad85 100644
--- a/drivers/pps/pps.c
+++ b/drivers/pps/pps.c
@@ -71,9 +71,14 @@ static long pps_cdev_ioctl(struct file *file,
71 case PPS_GETPARAMS: 71 case PPS_GETPARAMS:
72 pr_debug("PPS_GETPARAMS: source %d\n", pps->id); 72 pr_debug("PPS_GETPARAMS: source %d\n", pps->id);
73 73
74 /* Return current parameters */ 74 spin_lock_irq(&pps->lock);
75 err = copy_to_user(uarg, &pps->params, 75
76 sizeof(struct pps_kparams)); 76 /* Get the current parameters */
77 params = pps->params;
78
79 spin_unlock_irq(&pps->lock);
80
81 err = copy_to_user(uarg, &params, sizeof(struct pps_kparams));
77 if (err) 82 if (err)
78 return -EFAULT; 83 return -EFAULT;
79 84
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 744ea1d0b59b..efe568deda12 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -1283,7 +1283,8 @@ static int _regulator_disable(struct regulator_dev *rdev)
1283 return -EIO; 1283 return -EIO;
1284 1284
1285 /* are we the last user and permitted to disable ? */ 1285 /* are we the last user and permitted to disable ? */
1286 if (rdev->use_count == 1 && !rdev->constraints->always_on) { 1286 if (rdev->use_count == 1 &&
1287 (rdev->constraints && !rdev->constraints->always_on)) {
1287 1288
1288 /* we are last user */ 1289 /* we are last user */
1289 if (_regulator_can_change_status(rdev) && 1290 if (_regulator_can_change_status(rdev) &&
diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c
index f8b295700d7d..f9f516a3028a 100644
--- a/drivers/regulator/fixed.c
+++ b/drivers/regulator/fixed.c
@@ -196,11 +196,10 @@ static int regulator_fixed_voltage_remove(struct platform_device *pdev)
196 struct fixed_voltage_data *drvdata = platform_get_drvdata(pdev); 196 struct fixed_voltage_data *drvdata = platform_get_drvdata(pdev);
197 197
198 regulator_unregister(drvdata->dev); 198 regulator_unregister(drvdata->dev);
199 kfree(drvdata->desc.name);
200 kfree(drvdata);
201
202 if (gpio_is_valid(drvdata->gpio)) 199 if (gpio_is_valid(drvdata->gpio))
203 gpio_free(drvdata->gpio); 200 gpio_free(drvdata->gpio);
201 kfree(drvdata->desc.name);
202 kfree(drvdata);
204 203
205 return 0; 204 return 0;
206} 205}
diff --git a/drivers/regulator/wm831x-isink.c b/drivers/regulator/wm831x-isink.c
index 1d8d9879d3a1..48857008758c 100644
--- a/drivers/regulator/wm831x-isink.c
+++ b/drivers/regulator/wm831x-isink.c
@@ -167,6 +167,8 @@ static __devinit int wm831x_isink_probe(struct platform_device *pdev)
167 return -ENOMEM; 167 return -ENOMEM;
168 } 168 }
169 169
170 isink->wm831x = wm831x;
171
170 res = platform_get_resource(pdev, IORESOURCE_IO, 0); 172 res = platform_get_resource(pdev, IORESOURCE_IO, 0);
171 if (res == NULL) { 173 if (res == NULL) {
172 dev_err(&pdev->dev, "No I/O resource\n"); 174 dev_err(&pdev->dev, "No I/O resource\n");
diff --git a/drivers/regulator/wm831x-ldo.c b/drivers/regulator/wm831x-ldo.c
index bb61aede4801..902db56ce099 100644
--- a/drivers/regulator/wm831x-ldo.c
+++ b/drivers/regulator/wm831x-ldo.c
@@ -175,18 +175,18 @@ static unsigned int wm831x_gp_ldo_get_mode(struct regulator_dev *rdev)
175 struct wm831x *wm831x = ldo->wm831x; 175 struct wm831x *wm831x = ldo->wm831x;
176 int ctrl_reg = ldo->base + WM831X_LDO_CONTROL; 176 int ctrl_reg = ldo->base + WM831X_LDO_CONTROL;
177 int on_reg = ldo->base + WM831X_LDO_ON_CONTROL; 177 int on_reg = ldo->base + WM831X_LDO_ON_CONTROL;
178 unsigned int ret; 178 int ret;
179 179
180 ret = wm831x_reg_read(wm831x, on_reg); 180 ret = wm831x_reg_read(wm831x, on_reg);
181 if (ret < 0) 181 if (ret < 0)
182 return 0; 182 return ret;
183 183
184 if (!(ret & WM831X_LDO1_ON_MODE)) 184 if (!(ret & WM831X_LDO1_ON_MODE))
185 return REGULATOR_MODE_NORMAL; 185 return REGULATOR_MODE_NORMAL;
186 186
187 ret = wm831x_reg_read(wm831x, ctrl_reg); 187 ret = wm831x_reg_read(wm831x, ctrl_reg);
188 if (ret < 0) 188 if (ret < 0)
189 return 0; 189 return ret;
190 190
191 if (ret & WM831X_LDO1_LP_MODE) 191 if (ret & WM831X_LDO1_LP_MODE)
192 return REGULATOR_MODE_STANDBY; 192 return REGULATOR_MODE_STANDBY;
diff --git a/drivers/rtc/rtc-coh901331.c b/drivers/rtc/rtc-coh901331.c
index 7fe1fa26c52c..03ea530981d1 100644
--- a/drivers/rtc/rtc-coh901331.c
+++ b/drivers/rtc/rtc-coh901331.c
@@ -58,7 +58,16 @@ static irqreturn_t coh901331_interrupt(int irq, void *data)
58 clk_enable(rtap->clk); 58 clk_enable(rtap->clk);
59 /* Ack IRQ */ 59 /* Ack IRQ */
60 writel(1, rtap->virtbase + COH901331_IRQ_EVENT); 60 writel(1, rtap->virtbase + COH901331_IRQ_EVENT);
61 /*
62 * Disable the interrupt. This is necessary because
63 * the RTC lives on a lower-clocked line and will
64 * not release the IRQ line until after a few (slower)
65 * clock cycles. The interrupt will be re-enabled when
66 * a new alarm is set anyway.
67 */
68 writel(0, rtap->virtbase + COH901331_IRQ_MASK);
61 clk_disable(rtap->clk); 69 clk_disable(rtap->clk);
70
62 /* Set alarm flag */ 71 /* Set alarm flag */
63 rtc_update_irq(rtap->rtc, 1, RTC_AF); 72 rtc_update_irq(rtap->rtc, 1, RTC_AF);
64 73
@@ -128,6 +137,8 @@ static int coh901331_alarm_irq_enable(struct device *dev, unsigned int enabled)
128 else 137 else
129 writel(0, rtap->virtbase + COH901331_IRQ_MASK); 138 writel(0, rtap->virtbase + COH901331_IRQ_MASK);
130 clk_disable(rtap->clk); 139 clk_disable(rtap->clk);
140
141 return 0;
131} 142}
132 143
133static struct rtc_class_ops coh901331_ops = { 144static struct rtc_class_ops coh901331_ops = {
diff --git a/drivers/rtc/rtc-pcf50633.c b/drivers/rtc/rtc-pcf50633.c
index f4dd87e29075..4c5d5d0c4cfc 100644
--- a/drivers/rtc/rtc-pcf50633.c
+++ b/drivers/rtc/rtc-pcf50633.c
@@ -70,7 +70,7 @@ static void pcf2rtc_time(struct rtc_time *rtc, struct pcf50633_time *pcf)
70 rtc->tm_hour = bcd2bin(pcf->time[PCF50633_TI_HOUR]); 70 rtc->tm_hour = bcd2bin(pcf->time[PCF50633_TI_HOUR]);
71 rtc->tm_wday = bcd2bin(pcf->time[PCF50633_TI_WKDAY]); 71 rtc->tm_wday = bcd2bin(pcf->time[PCF50633_TI_WKDAY]);
72 rtc->tm_mday = bcd2bin(pcf->time[PCF50633_TI_DAY]); 72 rtc->tm_mday = bcd2bin(pcf->time[PCF50633_TI_DAY]);
73 rtc->tm_mon = bcd2bin(pcf->time[PCF50633_TI_MONTH]); 73 rtc->tm_mon = bcd2bin(pcf->time[PCF50633_TI_MONTH]) - 1;
74 rtc->tm_year = bcd2bin(pcf->time[PCF50633_TI_YEAR]) + 100; 74 rtc->tm_year = bcd2bin(pcf->time[PCF50633_TI_YEAR]) + 100;
75} 75}
76 76
@@ -81,7 +81,7 @@ static void rtc2pcf_time(struct pcf50633_time *pcf, struct rtc_time *rtc)
81 pcf->time[PCF50633_TI_HOUR] = bin2bcd(rtc->tm_hour); 81 pcf->time[PCF50633_TI_HOUR] = bin2bcd(rtc->tm_hour);
82 pcf->time[PCF50633_TI_WKDAY] = bin2bcd(rtc->tm_wday); 82 pcf->time[PCF50633_TI_WKDAY] = bin2bcd(rtc->tm_wday);
83 pcf->time[PCF50633_TI_DAY] = bin2bcd(rtc->tm_mday); 83 pcf->time[PCF50633_TI_DAY] = bin2bcd(rtc->tm_mday);
84 pcf->time[PCF50633_TI_MONTH] = bin2bcd(rtc->tm_mon); 84 pcf->time[PCF50633_TI_MONTH] = bin2bcd(rtc->tm_mon + 1);
85 pcf->time[PCF50633_TI_YEAR] = bin2bcd(rtc->tm_year % 100); 85 pcf->time[PCF50633_TI_YEAR] = bin2bcd(rtc->tm_year % 100);
86} 86}
87 87
@@ -245,8 +245,9 @@ static int pcf50633_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
245 ret = pcf50633_write_block(rtc->pcf, PCF50633_REG_RTCSCA, 245 ret = pcf50633_write_block(rtc->pcf, PCF50633_REG_RTCSCA,
246 PCF50633_TI_EXTENT, &pcf_tm.time[0]); 246 PCF50633_TI_EXTENT, &pcf_tm.time[0]);
247 247
248 if (!alarm_masked) 248 if (!alarm_masked || alrm->enabled)
249 pcf50633_irq_unmask(rtc->pcf, PCF50633_IRQ_ALARM); 249 pcf50633_irq_unmask(rtc->pcf, PCF50633_IRQ_ALARM);
250 rtc->alarm_enabled = alrm->enabled;
250 251
251 return ret; 252 return ret;
252} 253}
@@ -291,8 +292,9 @@ static int __devinit pcf50633_rtc_probe(struct platform_device *pdev)
291 &pcf50633_rtc_ops, THIS_MODULE); 292 &pcf50633_rtc_ops, THIS_MODULE);
292 293
293 if (IS_ERR(rtc->rtc_dev)) { 294 if (IS_ERR(rtc->rtc_dev)) {
295 int ret = PTR_ERR(rtc->rtc_dev);
294 kfree(rtc); 296 kfree(rtc);
295 return PTR_ERR(rtc->rtc_dev); 297 return ret;
296 } 298 }
297 299
298 pcf50633_register_irq(rtc->pcf, PCF50633_IRQ_ALARM, 300 pcf50633_register_irq(rtc->pcf, PCF50633_IRQ_ALARM,
diff --git a/drivers/rtc/rtc-v3020.c b/drivers/rtc/rtc-v3020.c
index ad164056feb6..423cd5a30b10 100644
--- a/drivers/rtc/rtc-v3020.c
+++ b/drivers/rtc/rtc-v3020.c
@@ -96,7 +96,7 @@ static void v3020_mmio_write_bit(struct v3020 *chip, unsigned char bit)
96 96
97static unsigned char v3020_mmio_read_bit(struct v3020 *chip) 97static unsigned char v3020_mmio_read_bit(struct v3020 *chip)
98{ 98{
99 return readl(chip->ioaddress) & (1 << chip->leftshift); 99 return !!(readl(chip->ioaddress) & (1 << chip->leftshift));
100} 100}
101 101
102static struct v3020_chip_ops v3020_mmio_ops = { 102static struct v3020_chip_ops v3020_mmio_ops = {
diff --git a/drivers/rtc/rtc-vr41xx.c b/drivers/rtc/rtc-vr41xx.c
index 2c839d0d21bd..fadddac1e5a4 100644
--- a/drivers/rtc/rtc-vr41xx.c
+++ b/drivers/rtc/rtc-vr41xx.c
@@ -209,19 +209,18 @@ static int vr41xx_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *wkalrm)
209 209
210static int vr41xx_rtc_irq_set_freq(struct device *dev, int freq) 210static int vr41xx_rtc_irq_set_freq(struct device *dev, int freq)
211{ 211{
212 unsigned long count; 212 u64 count;
213 213
214 if (!is_power_of_2(freq)) 214 if (!is_power_of_2(freq))
215 return -EINVAL; 215 return -EINVAL;
216 count = RTC_FREQUENCY; 216 count = RTC_FREQUENCY;
217 do_div(count, freq); 217 do_div(count, freq);
218 218
219 periodic_count = count;
220
221 spin_lock_irq(&rtc_lock); 219 spin_lock_irq(&rtc_lock);
222 220
223 rtc1_write(RTCL1LREG, count); 221 periodic_count = count;
224 rtc1_write(RTCL1HREG, count >> 16); 222 rtc1_write(RTCL1LREG, periodic_count);
223 rtc1_write(RTCL1HREG, periodic_count >> 16);
225 224
226 spin_unlock_irq(&rtc_lock); 225 spin_unlock_irq(&rtc_lock);
227 226
diff --git a/drivers/rtc/rtc-x1205.c b/drivers/rtc/rtc-x1205.c
index 310c10795e9a..6583c1a8b070 100644
--- a/drivers/rtc/rtc-x1205.c
+++ b/drivers/rtc/rtc-x1205.c
@@ -195,7 +195,7 @@ static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm,
195 /* year, since the rtc epoch*/ 195 /* year, since the rtc epoch*/
196 buf[CCR_YEAR] = bin2bcd(tm->tm_year % 100); 196 buf[CCR_YEAR] = bin2bcd(tm->tm_year % 100);
197 buf[CCR_WDAY] = tm->tm_wday & 0x07; 197 buf[CCR_WDAY] = tm->tm_wday & 0x07;
198 buf[CCR_Y2K] = bin2bcd(tm->tm_year / 100); 198 buf[CCR_Y2K] = bin2bcd((tm->tm_year + 1900) / 100);
199 } 199 }
200 200
201 /* If writing alarm registers, set compare bits on registers 0-4 */ 201 /* If writing alarm registers, set compare bits on registers 0-4 */
@@ -280,9 +280,9 @@ static int x1205_fix_osc(struct i2c_client *client)
280 int err; 280 int err;
281 struct rtc_time tm; 281 struct rtc_time tm;
282 282
283 tm.tm_hour = tm.tm_min = tm.tm_sec = 0; 283 memset(&tm, 0, sizeof(tm));
284 284
285 err = x1205_set_datetime(client, &tm, 0, X1205_CCR_BASE, 0); 285 err = x1205_set_datetime(client, &tm, 1, X1205_CCR_BASE, 0);
286 if (err < 0) 286 if (err < 0)
287 dev_err(&client->dev, "unable to restart the oscillator\n"); 287 dev_err(&client->dev, "unable to restart the oscillator\n");
288 288
diff --git a/drivers/s390/char/monreader.c b/drivers/s390/char/monreader.c
index 89ece1c235aa..66e21dd23154 100644
--- a/drivers/s390/char/monreader.c
+++ b/drivers/s390/char/monreader.c
@@ -357,6 +357,7 @@ static int mon_close(struct inode *inode, struct file *filp)
357 atomic_set(&monpriv->msglim_count, 0); 357 atomic_set(&monpriv->msglim_count, 0);
358 monpriv->write_index = 0; 358 monpriv->write_index = 0;
359 monpriv->read_index = 0; 359 monpriv->read_index = 0;
360 dev_set_drvdata(monreader_device, NULL);
360 361
361 for (i = 0; i < MON_MSGLIM; i++) 362 for (i = 0; i < MON_MSGLIM; i++)
362 kfree(monpriv->msg_array[i]); 363 kfree(monpriv->msg_array[i]);
diff --git a/drivers/s390/char/sclp_async.c b/drivers/s390/char/sclp_async.c
index a4f68e5b9c96..b44462a6c6d3 100644
--- a/drivers/s390/char/sclp_async.c
+++ b/drivers/s390/char/sclp_async.c
@@ -26,7 +26,6 @@ static struct sclp_async_sccb *sccb;
26static int sclp_async_send_wait(char *message); 26static int sclp_async_send_wait(char *message);
27static struct ctl_table_header *callhome_sysctl_header; 27static struct ctl_table_header *callhome_sysctl_header;
28static DEFINE_SPINLOCK(sclp_async_lock); 28static DEFINE_SPINLOCK(sclp_async_lock);
29static char nodename[64];
30#define SCLP_NORMAL_WRITE 0x00 29#define SCLP_NORMAL_WRITE 0x00
31 30
32struct async_evbuf { 31struct async_evbuf {
@@ -52,9 +51,10 @@ static struct sclp_register sclp_async_register = {
52static int call_home_on_panic(struct notifier_block *self, 51static int call_home_on_panic(struct notifier_block *self,
53 unsigned long event, void *data) 52 unsigned long event, void *data)
54{ 53{
55 strncat(data, nodename, strlen(nodename)); 54 strncat(data, init_utsname()->nodename,
56 sclp_async_send_wait(data); 55 sizeof(init_utsname()->nodename));
57 return NOTIFY_DONE; 56 sclp_async_send_wait(data);
57 return NOTIFY_DONE;
58} 58}
59 59
60static struct notifier_block call_home_panic_nb = { 60static struct notifier_block call_home_panic_nb = {
@@ -68,15 +68,14 @@ static int proc_handler_callhome(struct ctl_table *ctl, int write,
68{ 68{
69 unsigned long val; 69 unsigned long val;
70 int len, rc; 70 int len, rc;
71 char buf[2]; 71 char buf[3];
72 72
73 if (!*count | (*ppos && !write)) { 73 if (!*count || (*ppos && !write)) {
74 *count = 0; 74 *count = 0;
75 return 0; 75 return 0;
76 } 76 }
77 if (!write) { 77 if (!write) {
78 len = sprintf(buf, "%d\n", callhome_enabled); 78 len = snprintf(buf, sizeof(buf), "%d\n", callhome_enabled);
79 buf[len] = '\0';
80 rc = copy_to_user(buffer, buf, sizeof(buf)); 79 rc = copy_to_user(buffer, buf, sizeof(buf));
81 if (rc != 0) 80 if (rc != 0)
82 return -EFAULT; 81 return -EFAULT;
@@ -171,39 +170,29 @@ static int __init sclp_async_init(void)
171 rc = sclp_register(&sclp_async_register); 170 rc = sclp_register(&sclp_async_register);
172 if (rc) 171 if (rc)
173 return rc; 172 return rc;
174 callhome_sysctl_header = register_sysctl_table(kern_dir_table); 173 rc = -EOPNOTSUPP;
175 if (!callhome_sysctl_header) { 174 if (!(sclp_async_register.sclp_receive_mask & EVTYP_ASYNC_MASK))
176 rc = -ENOMEM;
177 goto out_sclp;
178 }
179 if (!(sclp_async_register.sclp_receive_mask & EVTYP_ASYNC_MASK)) {
180 rc = -EOPNOTSUPP;
181 goto out_sclp; 175 goto out_sclp;
182 }
183 rc = -ENOMEM; 176 rc = -ENOMEM;
177 callhome_sysctl_header = register_sysctl_table(kern_dir_table);
178 if (!callhome_sysctl_header)
179 goto out_sclp;
184 request = kzalloc(sizeof(struct sclp_req), GFP_KERNEL); 180 request = kzalloc(sizeof(struct sclp_req), GFP_KERNEL);
185 if (!request)
186 goto out_sys;
187 sccb = (struct sclp_async_sccb *) get_zeroed_page(GFP_KERNEL | GFP_DMA); 181 sccb = (struct sclp_async_sccb *) get_zeroed_page(GFP_KERNEL | GFP_DMA);
188 if (!sccb) 182 if (!request || !sccb)
189 goto out_mem; 183 goto out_mem;
190 rc = atomic_notifier_chain_register(&panic_notifier_list, 184 rc = atomic_notifier_chain_register(&panic_notifier_list,
191 &call_home_panic_nb); 185 &call_home_panic_nb);
192 if (rc) 186 if (!rc)
193 goto out_mem; 187 goto out;
194
195 strncpy(nodename, init_utsname()->nodename, 64);
196 return 0;
197
198out_mem: 188out_mem:
199 kfree(request); 189 kfree(request);
200 free_page((unsigned long) sccb); 190 free_page((unsigned long) sccb);
201out_sys:
202 unregister_sysctl_table(callhome_sysctl_header); 191 unregister_sysctl_table(callhome_sysctl_header);
203out_sclp: 192out_sclp:
204 sclp_unregister(&sclp_async_register); 193 sclp_unregister(&sclp_async_register);
194out:
205 return rc; 195 return rc;
206
207} 196}
208module_init(sclp_async_init); 197module_init(sclp_async_init);
209 198
diff --git a/drivers/s390/char/sclp_quiesce.c b/drivers/s390/char/sclp_quiesce.c
index 84c191c1cd62..05909a7df8b3 100644
--- a/drivers/s390/char/sclp_quiesce.c
+++ b/drivers/s390/char/sclp_quiesce.c
@@ -20,9 +20,12 @@
20 20
21#include "sclp.h" 21#include "sclp.h"
22 22
23static void (*old_machine_restart)(char *);
24static void (*old_machine_halt)(void);
25static void (*old_machine_power_off)(void);
26
23/* Shutdown handler. Signal completion of shutdown by loading special PSW. */ 27/* Shutdown handler. Signal completion of shutdown by loading special PSW. */
24static void 28static void do_machine_quiesce(void)
25do_machine_quiesce(void)
26{ 29{
27 psw_t quiesce_psw; 30 psw_t quiesce_psw;
28 31
@@ -33,23 +36,48 @@ do_machine_quiesce(void)
33} 36}
34 37
35/* Handler for quiesce event. Start shutdown procedure. */ 38/* Handler for quiesce event. Start shutdown procedure. */
36static void 39static void sclp_quiesce_handler(struct evbuf_header *evbuf)
37sclp_quiesce_handler(struct evbuf_header *evbuf)
38{ 40{
39 _machine_restart = (void *) do_machine_quiesce; 41 if (_machine_restart != (void *) do_machine_quiesce) {
40 _machine_halt = do_machine_quiesce; 42 old_machine_restart = _machine_restart;
41 _machine_power_off = do_machine_quiesce; 43 old_machine_halt = _machine_halt;
44 old_machine_power_off = _machine_power_off;
45 _machine_restart = (void *) do_machine_quiesce;
46 _machine_halt = do_machine_quiesce;
47 _machine_power_off = do_machine_quiesce;
48 }
42 ctrl_alt_del(); 49 ctrl_alt_del();
43} 50}
44 51
52/* Undo machine restart/halt/power_off modification on resume */
53static void sclp_quiesce_pm_event(struct sclp_register *reg,
54 enum sclp_pm_event sclp_pm_event)
55{
56 switch (sclp_pm_event) {
57 case SCLP_PM_EVENT_RESTORE:
58 if (old_machine_restart) {
59 _machine_restart = old_machine_restart;
60 _machine_halt = old_machine_halt;
61 _machine_power_off = old_machine_power_off;
62 old_machine_restart = NULL;
63 old_machine_halt = NULL;
64 old_machine_power_off = NULL;
65 }
66 break;
67 case SCLP_PM_EVENT_FREEZE:
68 case SCLP_PM_EVENT_THAW:
69 break;
70 }
71}
72
45static struct sclp_register sclp_quiesce_event = { 73static struct sclp_register sclp_quiesce_event = {
46 .receive_mask = EVTYP_SIGQUIESCE_MASK, 74 .receive_mask = EVTYP_SIGQUIESCE_MASK,
47 .receiver_fn = sclp_quiesce_handler 75 .receiver_fn = sclp_quiesce_handler,
76 .pm_event_fn = sclp_quiesce_pm_event
48}; 77};
49 78
50/* Initialize quiesce driver. */ 79/* Initialize quiesce driver. */
51static int __init 80static int __init sclp_quiesce_init(void)
52sclp_quiesce_init(void)
53{ 81{
54 return sclp_register(&sclp_quiesce_event); 82 return sclp_register(&sclp_quiesce_event);
55} 83}
diff --git a/drivers/s390/net/smsgiucv.c b/drivers/s390/net/smsgiucv.c
index 102000d1af6f..3012355f8304 100644
--- a/drivers/s390/net/smsgiucv.c
+++ b/drivers/s390/net/smsgiucv.c
@@ -158,7 +158,12 @@ static int smsg_pm_restore_thaw(struct device *dev)
158 smsg_path->flags = 0; 158 smsg_path->flags = 0;
159 rc = iucv_path_connect(smsg_path, &smsg_handler, "*MSG ", 159 rc = iucv_path_connect(smsg_path, &smsg_handler, "*MSG ",
160 NULL, NULL, NULL); 160 NULL, NULL, NULL);
161 printk(KERN_ERR "iucv_path_connect returned with rc %i\n", rc); 161#ifdef CONFIG_PM_DEBUG
162 if (rc)
163 printk(KERN_ERR
164 "iucv_path_connect returned with rc %i\n", rc);
165#endif
166 cpcmd("SET SMSG IUCV", NULL, 0, NULL);
162 } 167 }
163 return 0; 168 return 0;
164} 169}
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c
index 0f79f3af4f54..2889e5f2dfd3 100644
--- a/drivers/s390/scsi/zfcp_aux.c
+++ b/drivers/s390/scsi/zfcp_aux.c
@@ -128,12 +128,13 @@ out_ccwdev:
128static void __init zfcp_init_device_setup(char *devstr) 128static void __init zfcp_init_device_setup(char *devstr)
129{ 129{
130 char *token; 130 char *token;
131 char *str; 131 char *str, *str_saved;
132 char busid[ZFCP_BUS_ID_SIZE]; 132 char busid[ZFCP_BUS_ID_SIZE];
133 u64 wwpn, lun; 133 u64 wwpn, lun;
134 134
135 /* duplicate devstr and keep the original for sysfs presentation*/ 135 /* duplicate devstr and keep the original for sysfs presentation*/
136 str = kmalloc(strlen(devstr) + 1, GFP_KERNEL); 136 str_saved = kmalloc(strlen(devstr) + 1, GFP_KERNEL);
137 str = str_saved;
137 if (!str) 138 if (!str)
138 return; 139 return;
139 140
@@ -152,12 +153,12 @@ static void __init zfcp_init_device_setup(char *devstr)
152 if (!token || strict_strtoull(token, 0, (unsigned long long *) &lun)) 153 if (!token || strict_strtoull(token, 0, (unsigned long long *) &lun))
153 goto err_out; 154 goto err_out;
154 155
155 kfree(str); 156 kfree(str_saved);
156 zfcp_init_device_configure(busid, wwpn, lun); 157 zfcp_init_device_configure(busid, wwpn, lun);
157 return; 158 return;
158 159
159 err_out: 160err_out:
160 kfree(str); 161 kfree(str_saved);
161 pr_err("%s is not a valid SCSI device\n", devstr); 162 pr_err("%s is not a valid SCSI device\n", devstr);
162} 163}
163 164
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c
index 73d366ba31e5..f73e2180f333 100644
--- a/drivers/s390/scsi/zfcp_erp.c
+++ b/drivers/s390/scsi/zfcp_erp.c
@@ -858,10 +858,7 @@ static int zfcp_erp_port_strategy_open_common(struct zfcp_erp_action *act)
858 if (fc_host_port_type(adapter->scsi_host) == FC_PORTTYPE_PTP) 858 if (fc_host_port_type(adapter->scsi_host) == FC_PORTTYPE_PTP)
859 return zfcp_erp_open_ptp_port(act); 859 return zfcp_erp_open_ptp_port(act);
860 if (!port->d_id) { 860 if (!port->d_id) {
861 zfcp_port_get(port); 861 zfcp_fc_trigger_did_lookup(port);
862 if (!queue_work(adapter->work_queue,
863 &port->gid_pn_work))
864 zfcp_port_put(port);
865 return ZFCP_ERP_EXIT; 862 return ZFCP_ERP_EXIT;
866 } 863 }
867 return zfcp_erp_port_strategy_open_port(act); 864 return zfcp_erp_port_strategy_open_port(act);
@@ -869,12 +866,11 @@ static int zfcp_erp_port_strategy_open_common(struct zfcp_erp_action *act)
869 case ZFCP_ERP_STEP_PORT_OPENING: 866 case ZFCP_ERP_STEP_PORT_OPENING:
870 /* D_ID might have changed during open */ 867 /* D_ID might have changed during open */
871 if (p_status & ZFCP_STATUS_COMMON_OPEN) { 868 if (p_status & ZFCP_STATUS_COMMON_OPEN) {
872 if (port->d_id) 869 if (!port->d_id) {
873 return ZFCP_ERP_SUCCEEDED; 870 zfcp_fc_trigger_did_lookup(port);
874 else { 871 return ZFCP_ERP_EXIT;
875 act->step = ZFCP_ERP_STEP_PORT_CLOSING;
876 return ZFCP_ERP_CONTINUES;
877 } 872 }
873 return ZFCP_ERP_SUCCEEDED;
878 } 874 }
879 if (port->d_id && !(p_status & ZFCP_STATUS_COMMON_NOESC)) { 875 if (port->d_id && !(p_status & ZFCP_STATUS_COMMON_NOESC)) {
880 port->d_id = 0; 876 port->d_id = 0;
@@ -889,19 +885,21 @@ static int zfcp_erp_port_strategy_open_common(struct zfcp_erp_action *act)
889static int zfcp_erp_port_strategy(struct zfcp_erp_action *erp_action) 885static int zfcp_erp_port_strategy(struct zfcp_erp_action *erp_action)
890{ 886{
891 struct zfcp_port *port = erp_action->port; 887 struct zfcp_port *port = erp_action->port;
888 int p_status = atomic_read(&port->status);
892 889
893 if (atomic_read(&port->status) & ZFCP_STATUS_COMMON_NOESC) 890 if ((p_status & ZFCP_STATUS_COMMON_NOESC) &&
891 !(p_status & ZFCP_STATUS_COMMON_OPEN))
894 goto close_init_done; 892 goto close_init_done;
895 893
896 switch (erp_action->step) { 894 switch (erp_action->step) {
897 case ZFCP_ERP_STEP_UNINITIALIZED: 895 case ZFCP_ERP_STEP_UNINITIALIZED:
898 zfcp_erp_port_strategy_clearstati(port); 896 zfcp_erp_port_strategy_clearstati(port);
899 if (atomic_read(&port->status) & ZFCP_STATUS_COMMON_OPEN) 897 if (p_status & ZFCP_STATUS_COMMON_OPEN)
900 return zfcp_erp_port_strategy_close(erp_action); 898 return zfcp_erp_port_strategy_close(erp_action);
901 break; 899 break;
902 900
903 case ZFCP_ERP_STEP_PORT_CLOSING: 901 case ZFCP_ERP_STEP_PORT_CLOSING:
904 if (atomic_read(&port->status) & ZFCP_STATUS_COMMON_OPEN) 902 if (p_status & ZFCP_STATUS_COMMON_OPEN)
905 return ZFCP_ERP_FAILED; 903 return ZFCP_ERP_FAILED;
906 break; 904 break;
907 } 905 }
diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h
index 629edec70405..b3f28deb4505 100644
--- a/drivers/s390/scsi/zfcp_ext.h
+++ b/drivers/s390/scsi/zfcp_ext.h
@@ -96,6 +96,7 @@ extern int zfcp_fc_scan_ports(struct zfcp_adapter *);
96extern void _zfcp_fc_scan_ports_later(struct work_struct *); 96extern void _zfcp_fc_scan_ports_later(struct work_struct *);
97extern void zfcp_fc_incoming_els(struct zfcp_fsf_req *); 97extern void zfcp_fc_incoming_els(struct zfcp_fsf_req *);
98extern void zfcp_fc_port_did_lookup(struct work_struct *); 98extern void zfcp_fc_port_did_lookup(struct work_struct *);
99extern void zfcp_fc_trigger_did_lookup(struct zfcp_port *);
99extern void zfcp_fc_plogi_evaluate(struct zfcp_port *, struct fsf_plogi *); 100extern void zfcp_fc_plogi_evaluate(struct zfcp_port *, struct fsf_plogi *);
100extern void zfcp_fc_test_link(struct zfcp_port *); 101extern void zfcp_fc_test_link(struct zfcp_port *);
101extern void zfcp_fc_link_test_work(struct work_struct *); 102extern void zfcp_fc_link_test_work(struct work_struct *);
diff --git a/drivers/s390/scsi/zfcp_fc.c b/drivers/s390/scsi/zfcp_fc.c
index 722f22de8753..df23bcead23d 100644
--- a/drivers/s390/scsi/zfcp_fc.c
+++ b/drivers/s390/scsi/zfcp_fc.c
@@ -361,6 +361,17 @@ out:
361} 361}
362 362
363/** 363/**
364 * zfcp_fc_trigger_did_lookup - trigger the d_id lookup using a GID_PN request
365 * @port: The zfcp_port to lookup the d_id for.
366 */
367void zfcp_fc_trigger_did_lookup(struct zfcp_port *port)
368{
369 zfcp_port_get(port);
370 if (!queue_work(port->adapter->work_queue, &port->gid_pn_work))
371 zfcp_port_put(port);
372}
373
374/**
364 * zfcp_fc_plogi_evaluate - evaluate PLOGI playload 375 * zfcp_fc_plogi_evaluate - evaluate PLOGI playload
365 * @port: zfcp_port structure 376 * @port: zfcp_port structure
366 * @plogi: plogi payload 377 * @plogi: plogi payload
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c
index 38a7e4a6b639..4e41baa0c141 100644
--- a/drivers/s390/scsi/zfcp_fsf.c
+++ b/drivers/s390/scsi/zfcp_fsf.c
@@ -1079,7 +1079,7 @@ static int zfcp_fsf_setup_ct_els(struct zfcp_fsf_req *req,
1079 /* common settings for ct/gs and els requests */ 1079 /* common settings for ct/gs and els requests */
1080 req->qtcb->bottom.support.service_class = FSF_CLASS_3; 1080 req->qtcb->bottom.support.service_class = FSF_CLASS_3;
1081 req->qtcb->bottom.support.timeout = 2 * R_A_TOV; 1081 req->qtcb->bottom.support.timeout = 2 * R_A_TOV;
1082 zfcp_fsf_start_timer(req, 2 * R_A_TOV + 10); 1082 zfcp_fsf_start_timer(req, (2 * R_A_TOV + 10) * HZ);
1083 1083
1084 return 0; 1084 return 0;
1085} 1085}
@@ -1475,9 +1475,16 @@ static void zfcp_fsf_open_port_handler(struct zfcp_fsf_req *req)
1475 plogi = (struct fsf_plogi *) req->qtcb->bottom.support.els; 1475 plogi = (struct fsf_plogi *) req->qtcb->bottom.support.els;
1476 if (req->qtcb->bottom.support.els1_length >= 1476 if (req->qtcb->bottom.support.els1_length >=
1477 FSF_PLOGI_MIN_LEN) { 1477 FSF_PLOGI_MIN_LEN) {
1478 if (plogi->serv_param.wwpn != port->wwpn) 1478 if (plogi->serv_param.wwpn != port->wwpn) {
1479 port->d_id = 0; 1479 port->d_id = 0;
1480 else { 1480 dev_warn(&port->adapter->ccw_device->dev,
1481 "A port opened with WWPN 0x%016Lx "
1482 "returned data that identifies it as "
1483 "WWPN 0x%016Lx\n",
1484 (unsigned long long) port->wwpn,
1485 (unsigned long long)
1486 plogi->serv_param.wwpn);
1487 } else {
1481 port->wwnn = plogi->serv_param.wwnn; 1488 port->wwnn = plogi->serv_param.wwnn;
1482 zfcp_fc_plogi_evaluate(port, plogi); 1489 zfcp_fc_plogi_evaluate(port, plogi);
1483 } 1490 }
diff --git a/drivers/s390/scsi/zfcp_sysfs.c b/drivers/s390/scsi/zfcp_sysfs.c
index 079a8cf518a3..d31000886ca8 100644
--- a/drivers/s390/scsi/zfcp_sysfs.c
+++ b/drivers/s390/scsi/zfcp_sysfs.c
@@ -224,6 +224,7 @@ static ssize_t zfcp_sysfs_unit_add_store(struct device *dev,
224 224
225 zfcp_erp_unit_reopen(unit, 0, "syuas_1", NULL); 225 zfcp_erp_unit_reopen(unit, 0, "syuas_1", NULL);
226 zfcp_erp_wait(unit->port->adapter); 226 zfcp_erp_wait(unit->port->adapter);
227 flush_work(&unit->scsi_work);
227 zfcp_unit_put(unit); 228 zfcp_unit_put(unit);
228out: 229out:
229 mutex_unlock(&zfcp_data.config_mutex); 230 mutex_unlock(&zfcp_data.config_mutex);
diff --git a/drivers/scsi/bfa/bfad_fwimg.c b/drivers/scsi/bfa/bfad_fwimg.c
index b2f6949bc8d3..bd34b0db2d6b 100644
--- a/drivers/scsi/bfa/bfad_fwimg.c
+++ b/drivers/scsi/bfa/bfad_fwimg.c
@@ -41,6 +41,8 @@ u32 *bfi_image_cb;
41 41
42#define BFAD_FW_FILE_CT "ctfw.bin" 42#define BFAD_FW_FILE_CT "ctfw.bin"
43#define BFAD_FW_FILE_CB "cbfw.bin" 43#define BFAD_FW_FILE_CB "cbfw.bin"
44MODULE_FIRMWARE(BFAD_FW_FILE_CT);
45MODULE_FIRMWARE(BFAD_FW_FILE_CB);
44 46
45u32 * 47u32 *
46bfad_read_firmware(struct pci_dev *pdev, u32 **bfi_image, 48bfad_read_firmware(struct pci_dev *pdev, u32 **bfi_image,
diff --git a/drivers/scsi/bfa/bfad_im.c b/drivers/scsi/bfa/bfad_im.c
index 158c99243c08..55d012a9a668 100644
--- a/drivers/scsi/bfa/bfad_im.c
+++ b/drivers/scsi/bfa/bfad_im.c
@@ -948,7 +948,7 @@ bfad_os_fc_host_init(struct bfad_im_port_s *im_port)
948 if (bfad_supported_fc4s & (BFA_PORT_ROLE_FCP_IM | BFA_PORT_ROLE_FCP_TM)) 948 if (bfad_supported_fc4s & (BFA_PORT_ROLE_FCP_IM | BFA_PORT_ROLE_FCP_TM))
949 /* For FCP type 0x08 */ 949 /* For FCP type 0x08 */
950 fc_host_supported_fc4s(host)[2] = 1; 950 fc_host_supported_fc4s(host)[2] = 1;
951 if (bfad_supported_fc4s | BFA_PORT_ROLE_FCP_IPFC) 951 if (bfad_supported_fc4s & BFA_PORT_ROLE_FCP_IPFC)
952 /* For LLC/SNAP type 0x05 */ 952 /* For LLC/SNAP type 0x05 */
953 fc_host_supported_fc4s(host)[3] = 0x20; 953 fc_host_supported_fc4s(host)[3] = 0x20;
954 /* For fibre channel services type 0x20 */ 954 /* For fibre channel services type 0x20 */
diff --git a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c
index b6af63ca980b..496764349c41 100644
--- a/drivers/scsi/dpt_i2o.c
+++ b/drivers/scsi/dpt_i2o.c
@@ -1918,6 +1918,10 @@ static int adpt_i2o_passthru(adpt_hba* pHba, u32 __user *arg)
1918 } 1918 }
1919 size = size>>16; 1919 size = size>>16;
1920 size *= 4; 1920 size *= 4;
1921 if (size > MAX_MESSAGE_SIZE) {
1922 rcode = -EINVAL;
1923 goto cleanup;
1924 }
1921 /* Copy in the user's I2O command */ 1925 /* Copy in the user's I2O command */
1922 if (copy_from_user (msg, user_msg, size)) { 1926 if (copy_from_user (msg, user_msg, size)) {
1923 rcode = -EFAULT; 1927 rcode = -EFAULT;
diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
index 185e6bc4dd40..9e8fce0f0c1b 100644
--- a/drivers/scsi/gdth.c
+++ b/drivers/scsi/gdth.c
@@ -2900,7 +2900,7 @@ static int gdth_read_event(gdth_ha_str *ha, int handle, gdth_evt_str *estr)
2900 eindex = handle; 2900 eindex = handle;
2901 estr->event_source = 0; 2901 estr->event_source = 0;
2902 2902
2903 if (eindex >= MAX_EVENTS) { 2903 if (eindex < 0 || eindex >= MAX_EVENTS) {
2904 spin_unlock_irqrestore(&ha->smp_lock, flags); 2904 spin_unlock_irqrestore(&ha->smp_lock, flags);
2905 return eindex; 2905 return eindex;
2906 } 2906 }
diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
index 5fd2da494d08..c968cc31cd86 100644
--- a/drivers/scsi/hosts.c
+++ b/drivers/scsi/hosts.c
@@ -164,8 +164,8 @@ void scsi_remove_host(struct Scsi_Host *shost)
164 return; 164 return;
165 } 165 }
166 spin_unlock_irqrestore(shost->host_lock, flags); 166 spin_unlock_irqrestore(shost->host_lock, flags);
167 mutex_unlock(&shost->scan_mutex);
168 scsi_forget_host(shost); 167 scsi_forget_host(shost);
168 mutex_unlock(&shost->scan_mutex);
169 scsi_proc_host_rm(shost); 169 scsi_proc_host_rm(shost);
170 170
171 spin_lock_irqsave(shost->host_lock, flags); 171 spin_lock_irqsave(shost->host_lock, flags);
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index 5f045505a1f4..76d294fc7846 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -4189,6 +4189,25 @@ static irqreturn_t ipr_handle_other_interrupt(struct ipr_ioa_cfg *ioa_cfg,
4189} 4189}
4190 4190
4191/** 4191/**
4192 * ipr_isr_eh - Interrupt service routine error handler
4193 * @ioa_cfg: ioa config struct
4194 * @msg: message to log
4195 *
4196 * Return value:
4197 * none
4198 **/
4199static void ipr_isr_eh(struct ipr_ioa_cfg *ioa_cfg, char *msg)
4200{
4201 ioa_cfg->errors_logged++;
4202 dev_err(&ioa_cfg->pdev->dev, "%s\n", msg);
4203
4204 if (WAIT_FOR_DUMP == ioa_cfg->sdt_state)
4205 ioa_cfg->sdt_state = GET_DUMP;
4206
4207 ipr_initiate_ioa_reset(ioa_cfg, IPR_SHUTDOWN_NONE);
4208}
4209
4210/**
4192 * ipr_isr - Interrupt service routine 4211 * ipr_isr - Interrupt service routine
4193 * @irq: irq number 4212 * @irq: irq number
4194 * @devp: pointer to ioa config struct 4213 * @devp: pointer to ioa config struct
@@ -4203,6 +4222,7 @@ static irqreturn_t ipr_isr(int irq, void *devp)
4203 volatile u32 int_reg, int_mask_reg; 4222 volatile u32 int_reg, int_mask_reg;
4204 u32 ioasc; 4223 u32 ioasc;
4205 u16 cmd_index; 4224 u16 cmd_index;
4225 int num_hrrq = 0;
4206 struct ipr_cmnd *ipr_cmd; 4226 struct ipr_cmnd *ipr_cmd;
4207 irqreturn_t rc = IRQ_NONE; 4227 irqreturn_t rc = IRQ_NONE;
4208 4228
@@ -4233,13 +4253,7 @@ static irqreturn_t ipr_isr(int irq, void *devp)
4233 IPR_HRRQ_REQ_RESP_HANDLE_MASK) >> IPR_HRRQ_REQ_RESP_HANDLE_SHIFT; 4253 IPR_HRRQ_REQ_RESP_HANDLE_MASK) >> IPR_HRRQ_REQ_RESP_HANDLE_SHIFT;
4234 4254
4235 if (unlikely(cmd_index >= IPR_NUM_CMD_BLKS)) { 4255 if (unlikely(cmd_index >= IPR_NUM_CMD_BLKS)) {
4236 ioa_cfg->errors_logged++; 4256 ipr_isr_eh(ioa_cfg, "Invalid response handle from IOA");
4237 dev_err(&ioa_cfg->pdev->dev, "Invalid response handle from IOA\n");
4238
4239 if (WAIT_FOR_DUMP == ioa_cfg->sdt_state)
4240 ioa_cfg->sdt_state = GET_DUMP;
4241
4242 ipr_initiate_ioa_reset(ioa_cfg, IPR_SHUTDOWN_NONE);
4243 spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); 4257 spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
4244 return IRQ_HANDLED; 4258 return IRQ_HANDLED;
4245 } 4259 }
@@ -4266,8 +4280,18 @@ static irqreturn_t ipr_isr(int irq, void *devp)
4266 4280
4267 if (ipr_cmd != NULL) { 4281 if (ipr_cmd != NULL) {
4268 /* Clear the PCI interrupt */ 4282 /* Clear the PCI interrupt */
4269 writel(IPR_PCII_HRRQ_UPDATED, ioa_cfg->regs.clr_interrupt_reg); 4283 do {
4270 int_reg = readl(ioa_cfg->regs.sense_interrupt_reg) & ~int_mask_reg; 4284 writel(IPR_PCII_HRRQ_UPDATED, ioa_cfg->regs.clr_interrupt_reg);
4285 int_reg = readl(ioa_cfg->regs.sense_interrupt_reg) & ~int_mask_reg;
4286 } while (int_reg & IPR_PCII_HRRQ_UPDATED &&
4287 num_hrrq++ < IPR_MAX_HRRQ_RETRIES);
4288
4289 if (int_reg & IPR_PCII_HRRQ_UPDATED) {
4290 ipr_isr_eh(ioa_cfg, "Error clearing HRRQ");
4291 spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
4292 return IRQ_HANDLED;
4293 }
4294
4271 } else 4295 } else
4272 break; 4296 break;
4273 } 4297 }
diff --git a/drivers/scsi/ipr.h b/drivers/scsi/ipr.h
index 163245a1c3e5..19bbcf39f0c9 100644
--- a/drivers/scsi/ipr.h
+++ b/drivers/scsi/ipr.h
@@ -144,6 +144,7 @@
144#define IPR_IOA_MAX_SECTORS 32767 144#define IPR_IOA_MAX_SECTORS 32767
145#define IPR_VSET_MAX_SECTORS 512 145#define IPR_VSET_MAX_SECTORS 512
146#define IPR_MAX_CDB_LEN 16 146#define IPR_MAX_CDB_LEN 16
147#define IPR_MAX_HRRQ_RETRIES 3
147 148
148#define IPR_DEFAULT_BUS_WIDTH 16 149#define IPR_DEFAULT_BUS_WIDTH 16
149#define IPR_80MBs_SCSI_RATE ((80 * 10) / (IPR_DEFAULT_BUS_WIDTH / 8)) 150#define IPR_80MBs_SCSI_RATE ((80 * 10) / (IPR_DEFAULT_BUS_WIDTH / 8))
diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
index b3381959acce..33cf988c8c8a 100644
--- a/drivers/scsi/libsas/sas_expander.c
+++ b/drivers/scsi/libsas/sas_expander.c
@@ -960,7 +960,6 @@ static int sas_ex_discover_dev(struct domain_device *dev, int phy_id)
960 960
961 } 961 }
962 } 962 }
963 res = 0;
964 } 963 }
965 964
966 return res; 965 return res;
diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
index f7c70e2a8224..0a97bc9074bb 100644
--- a/drivers/scsi/pmcraid.c
+++ b/drivers/scsi/pmcraid.c
@@ -1071,7 +1071,7 @@ static struct pmcraid_cmd *pmcraid_init_hcam
1071 1071
1072 ioarcb->data_transfer_length = cpu_to_le32(rcb_size); 1072 ioarcb->data_transfer_length = cpu_to_le32(rcb_size);
1073 1073
1074 ioadl[0].flags |= cpu_to_le32(IOADL_FLAGS_READ_LAST); 1074 ioadl[0].flags |= IOADL_FLAGS_READ_LAST;
1075 ioadl[0].data_len = cpu_to_le32(rcb_size); 1075 ioadl[0].data_len = cpu_to_le32(rcb_size);
1076 ioadl[0].address = cpu_to_le32(dma); 1076 ioadl[0].address = cpu_to_le32(dma);
1077 1077
@@ -2251,7 +2251,7 @@ static void pmcraid_request_sense(struct pmcraid_cmd *cmd)
2251 2251
2252 ioadl->address = cpu_to_le64(cmd->sense_buffer_dma); 2252 ioadl->address = cpu_to_le64(cmd->sense_buffer_dma);
2253 ioadl->data_len = cpu_to_le32(SCSI_SENSE_BUFFERSIZE); 2253 ioadl->data_len = cpu_to_le32(SCSI_SENSE_BUFFERSIZE);
2254 ioadl->flags = cpu_to_le32(IOADL_FLAGS_LAST_DESC); 2254 ioadl->flags = IOADL_FLAGS_LAST_DESC;
2255 2255
2256 /* request sense might be called as part of error response processing 2256 /* request sense might be called as part of error response processing
2257 * which runs in tasklets context. It is possible that mid-layer might 2257 * which runs in tasklets context. It is possible that mid-layer might
@@ -3017,7 +3017,7 @@ static int pmcraid_build_ioadl(
3017 ioadl[i].flags = 0; 3017 ioadl[i].flags = 0;
3018 } 3018 }
3019 /* setup last descriptor */ 3019 /* setup last descriptor */
3020 ioadl[i - 1].flags = cpu_to_le32(IOADL_FLAGS_LAST_DESC); 3020 ioadl[i - 1].flags = IOADL_FLAGS_LAST_DESC;
3021 3021
3022 return 0; 3022 return 0;
3023} 3023}
@@ -3387,7 +3387,7 @@ static int pmcraid_build_passthrough_ioadls(
3387 } 3387 }
3388 3388
3389 /* setup the last descriptor */ 3389 /* setup the last descriptor */
3390 ioadl[i - 1].flags = cpu_to_le32(IOADL_FLAGS_LAST_DESC); 3390 ioadl[i - 1].flags = IOADL_FLAGS_LAST_DESC;
3391 3391
3392 return 0; 3392 return 0;
3393} 3393}
@@ -5314,7 +5314,7 @@ static void pmcraid_querycfg(struct pmcraid_cmd *cmd)
5314 cpu_to_le32(sizeof(struct pmcraid_config_table)); 5314 cpu_to_le32(sizeof(struct pmcraid_config_table));
5315 5315
5316 ioadl = &(ioarcb->add_data.u.ioadl[0]); 5316 ioadl = &(ioarcb->add_data.u.ioadl[0]);
5317 ioadl->flags = cpu_to_le32(IOADL_FLAGS_LAST_DESC); 5317 ioadl->flags = IOADL_FLAGS_LAST_DESC;
5318 ioadl->address = cpu_to_le64(pinstance->cfg_table_bus_addr); 5318 ioadl->address = cpu_to_le64(pinstance->cfg_table_bus_addr);
5319 ioadl->data_len = cpu_to_le32(sizeof(struct pmcraid_config_table)); 5319 ioadl->data_len = cpu_to_le32(sizeof(struct pmcraid_config_table));
5320 5320
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index c44783801402..47291bcff0d5 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -317,6 +317,7 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget,
317out_device_destroy: 317out_device_destroy:
318 scsi_device_set_state(sdev, SDEV_DEL); 318 scsi_device_set_state(sdev, SDEV_DEL);
319 transport_destroy_device(&sdev->sdev_gendev); 319 transport_destroy_device(&sdev->sdev_gendev);
320 put_device(&sdev->sdev_dev);
320 put_device(&sdev->sdev_gendev); 321 put_device(&sdev->sdev_gendev);
321out: 322out:
322 if (display_failure_msg) 323 if (display_failure_msg)
@@ -951,15 +952,6 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,
951 return SCSI_SCAN_LUN_PRESENT; 952 return SCSI_SCAN_LUN_PRESENT;
952} 953}
953 954
954static inline void scsi_destroy_sdev(struct scsi_device *sdev)
955{
956 scsi_device_set_state(sdev, SDEV_DEL);
957 if (sdev->host->hostt->slave_destroy)
958 sdev->host->hostt->slave_destroy(sdev);
959 transport_destroy_device(&sdev->sdev_gendev);
960 put_device(&sdev->sdev_gendev);
961}
962
963#ifdef CONFIG_SCSI_LOGGING 955#ifdef CONFIG_SCSI_LOGGING
964/** 956/**
965 * scsi_inq_str - print INQUIRY data from min to max index, strip trailing whitespace 957 * scsi_inq_str - print INQUIRY data from min to max index, strip trailing whitespace
@@ -1137,7 +1129,7 @@ static int scsi_probe_and_add_lun(struct scsi_target *starget,
1137 } 1129 }
1138 } 1130 }
1139 } else 1131 } else
1140 scsi_destroy_sdev(sdev); 1132 __scsi_remove_device(sdev);
1141 out: 1133 out:
1142 return res; 1134 return res;
1143} 1135}
@@ -1498,7 +1490,7 @@ static int scsi_report_lun_scan(struct scsi_target *starget, int bflags,
1498 /* 1490 /*
1499 * the sdev we used didn't appear in the report luns scan 1491 * the sdev we used didn't appear in the report luns scan
1500 */ 1492 */
1501 scsi_destroy_sdev(sdev); 1493 __scsi_remove_device(sdev);
1502 return ret; 1494 return ret;
1503} 1495}
1504 1496
@@ -1708,7 +1700,7 @@ static void scsi_sysfs_add_devices(struct Scsi_Host *shost)
1708 shost_for_each_device(sdev, shost) { 1700 shost_for_each_device(sdev, shost) {
1709 if (!scsi_host_scan_allowed(shost) || 1701 if (!scsi_host_scan_allowed(shost) ||
1710 scsi_sysfs_add_sdev(sdev) != 0) 1702 scsi_sysfs_add_sdev(sdev) != 0)
1711 scsi_destroy_sdev(sdev); 1703 __scsi_remove_device(sdev);
1712 } 1704 }
1713} 1705}
1714 1706
@@ -1941,7 +1933,7 @@ void scsi_free_host_dev(struct scsi_device *sdev)
1941{ 1933{
1942 BUG_ON(sdev->id != sdev->host->this_id); 1934 BUG_ON(sdev->id != sdev->host->this_id);
1943 1935
1944 scsi_destroy_sdev(sdev); 1936 __scsi_remove_device(sdev);
1945} 1937}
1946EXPORT_SYMBOL(scsi_free_host_dev); 1938EXPORT_SYMBOL(scsi_free_host_dev);
1947 1939
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
index fde54537d715..392d8db33905 100644
--- a/drivers/scsi/scsi_sysfs.c
+++ b/drivers/scsi/scsi_sysfs.c
@@ -854,85 +854,73 @@ int scsi_sysfs_add_sdev(struct scsi_device *sdev)
854 transport_configure_device(&starget->dev); 854 transport_configure_device(&starget->dev);
855 error = device_add(&sdev->sdev_gendev); 855 error = device_add(&sdev->sdev_gendev);
856 if (error) { 856 if (error) {
857 put_device(sdev->sdev_gendev.parent);
858 printk(KERN_INFO "error 1\n"); 857 printk(KERN_INFO "error 1\n");
859 return error; 858 goto out_remove;
860 } 859 }
861 error = device_add(&sdev->sdev_dev); 860 error = device_add(&sdev->sdev_dev);
862 if (error) { 861 if (error) {
863 printk(KERN_INFO "error 2\n"); 862 printk(KERN_INFO "error 2\n");
864 goto clean_device; 863 device_del(&sdev->sdev_gendev);
864 goto out_remove;
865 } 865 }
866 866 transport_add_device(&sdev->sdev_gendev);
867 /* take a reference for the sdev_dev; this is 867 sdev->is_visible = 1;
868 * released by the sdev_class .release */
869 get_device(&sdev->sdev_gendev);
870 868
871 /* create queue files, which may be writable, depending on the host */ 869 /* create queue files, which may be writable, depending on the host */
872 if (sdev->host->hostt->change_queue_depth) 870 if (sdev->host->hostt->change_queue_depth)
873 error = device_create_file(&sdev->sdev_gendev, &sdev_attr_queue_depth_rw); 871 error = device_create_file(&sdev->sdev_gendev, &sdev_attr_queue_depth_rw);
874 else 872 else
875 error = device_create_file(&sdev->sdev_gendev, &dev_attr_queue_depth); 873 error = device_create_file(&sdev->sdev_gendev, &dev_attr_queue_depth);
876 if (error) { 874 if (error)
877 __scsi_remove_device(sdev); 875 goto out_remove;
878 goto out; 876
879 }
880 if (sdev->host->hostt->change_queue_type) 877 if (sdev->host->hostt->change_queue_type)
881 error = device_create_file(&sdev->sdev_gendev, &sdev_attr_queue_type_rw); 878 error = device_create_file(&sdev->sdev_gendev, &sdev_attr_queue_type_rw);
882 else 879 else
883 error = device_create_file(&sdev->sdev_gendev, &dev_attr_queue_type); 880 error = device_create_file(&sdev->sdev_gendev, &dev_attr_queue_type);
884 if (error) { 881 if (error)
885 __scsi_remove_device(sdev); 882 goto out_remove;
886 goto out;
887 }
888 883
889 error = bsg_register_queue(rq, &sdev->sdev_gendev, NULL, NULL); 884 error = bsg_register_queue(rq, &sdev->sdev_gendev, NULL, NULL);
890 885
891 if (error) 886 if (error)
887 /* we're treating error on bsg register as non-fatal,
888 * so pretend nothing went wrong */
892 sdev_printk(KERN_INFO, sdev, 889 sdev_printk(KERN_INFO, sdev,
893 "Failed to register bsg queue, errno=%d\n", error); 890 "Failed to register bsg queue, errno=%d\n", error);
894 891
895 /* we're treating error on bsg register as non-fatal, so pretend
896 * nothing went wrong */
897 error = 0;
898
899 /* add additional host specific attributes */ 892 /* add additional host specific attributes */
900 if (sdev->host->hostt->sdev_attrs) { 893 if (sdev->host->hostt->sdev_attrs) {
901 for (i = 0; sdev->host->hostt->sdev_attrs[i]; i++) { 894 for (i = 0; sdev->host->hostt->sdev_attrs[i]; i++) {
902 error = device_create_file(&sdev->sdev_gendev, 895 error = device_create_file(&sdev->sdev_gendev,
903 sdev->host->hostt->sdev_attrs[i]); 896 sdev->host->hostt->sdev_attrs[i]);
904 if (error) { 897 if (error)
905 __scsi_remove_device(sdev); 898 goto out_remove;
906 goto out;
907 }
908 } 899 }
909 } 900 }
910 901
911 transport_add_device(&sdev->sdev_gendev); 902 return 0;
912 out:
913 return error;
914
915 clean_device:
916 scsi_device_set_state(sdev, SDEV_CANCEL);
917
918 device_del(&sdev->sdev_gendev);
919 transport_destroy_device(&sdev->sdev_gendev);
920 put_device(&sdev->sdev_gendev);
921 903
904 out_remove:
905 __scsi_remove_device(sdev);
922 return error; 906 return error;
907
923} 908}
924 909
925void __scsi_remove_device(struct scsi_device *sdev) 910void __scsi_remove_device(struct scsi_device *sdev)
926{ 911{
927 struct device *dev = &sdev->sdev_gendev; 912 struct device *dev = &sdev->sdev_gendev;
928 913
929 if (scsi_device_set_state(sdev, SDEV_CANCEL) != 0) 914 if (sdev->is_visible) {
930 return; 915 if (scsi_device_set_state(sdev, SDEV_CANCEL) != 0)
916 return;
931 917
932 bsg_unregister_queue(sdev->request_queue); 918 bsg_unregister_queue(sdev->request_queue);
933 device_unregister(&sdev->sdev_dev); 919 device_unregister(&sdev->sdev_dev);
934 transport_remove_device(dev); 920 transport_remove_device(dev);
935 device_del(dev); 921 device_del(dev);
922 } else
923 put_device(&sdev->sdev_dev);
936 scsi_device_set_state(sdev, SDEV_DEL); 924 scsi_device_set_state(sdev, SDEV_DEL);
937 if (sdev->host->hostt->slave_destroy) 925 if (sdev->host->hostt->slave_destroy)
938 sdev->host->hostt->slave_destroy(sdev); 926 sdev->host->hostt->slave_destroy(sdev);
@@ -1065,7 +1053,7 @@ void scsi_sysfs_device_initialize(struct scsi_device *sdev)
1065 sdev->host->host_no, sdev->channel, sdev->id, sdev->lun); 1053 sdev->host->host_no, sdev->channel, sdev->id, sdev->lun);
1066 1054
1067 device_initialize(&sdev->sdev_dev); 1055 device_initialize(&sdev->sdev_dev);
1068 sdev->sdev_dev.parent = &sdev->sdev_gendev; 1056 sdev->sdev_dev.parent = get_device(&sdev->sdev_gendev);
1069 sdev->sdev_dev.class = &sdev_class; 1057 sdev->sdev_dev.class = &sdev_class;
1070 dev_set_name(&sdev->sdev_dev, "%d:%d:%d:%d", 1058 dev_set_name(&sdev->sdev_dev, "%d:%d:%d:%d",
1071 sdev->host->host_no, sdev->channel, sdev->id, sdev->lun); 1059 sdev->host->host_no, sdev->channel, sdev->id, sdev->lun);
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c
index a67fed10598a..c6f70dae9b2e 100644
--- a/drivers/scsi/scsi_transport_fc.c
+++ b/drivers/scsi/scsi_transport_fc.c
@@ -3656,6 +3656,7 @@ fc_bsg_host_dispatch(struct request_queue *q, struct Scsi_Host *shost,
3656fail_host_msg: 3656fail_host_msg:
3657 /* return the errno failure code as the only status */ 3657 /* return the errno failure code as the only status */
3658 BUG_ON(job->reply_len < sizeof(uint32_t)); 3658 BUG_ON(job->reply_len < sizeof(uint32_t));
3659 job->reply->reply_payload_rcv_len = 0;
3659 job->reply->result = ret; 3660 job->reply->result = ret;
3660 job->reply_len = sizeof(uint32_t); 3661 job->reply_len = sizeof(uint32_t);
3661 fc_bsg_jobdone(job); 3662 fc_bsg_jobdone(job);
@@ -3741,6 +3742,7 @@ check_bidi:
3741fail_rport_msg: 3742fail_rport_msg:
3742 /* return the errno failure code as the only status */ 3743 /* return the errno failure code as the only status */
3743 BUG_ON(job->reply_len < sizeof(uint32_t)); 3744 BUG_ON(job->reply_len < sizeof(uint32_t));
3745 job->reply->reply_payload_rcv_len = 0;
3744 job->reply->result = ret; 3746 job->reply->result = ret;
3745 job->reply_len = sizeof(uint32_t); 3747 job->reply_len = sizeof(uint32_t);
3746 fc_bsg_jobdone(job); 3748 fc_bsg_jobdone(job);
@@ -3797,6 +3799,7 @@ fc_bsg_request_handler(struct request_queue *q, struct Scsi_Host *shost,
3797 /* check if we have the msgcode value at least */ 3799 /* check if we have the msgcode value at least */
3798 if (job->request_len < sizeof(uint32_t)) { 3800 if (job->request_len < sizeof(uint32_t)) {
3799 BUG_ON(job->reply_len < sizeof(uint32_t)); 3801 BUG_ON(job->reply_len < sizeof(uint32_t));
3802 job->reply->reply_payload_rcv_len = 0;
3800 job->reply->result = -ENOMSG; 3803 job->reply->result = -ENOMSG;
3801 job->reply_len = sizeof(uint32_t); 3804 job->reply_len = sizeof(uint32_t);
3802 fc_bsg_jobdone(job); 3805 fc_bsg_jobdone(job);
diff --git a/drivers/scsi/sd_dif.c b/drivers/scsi/sd_dif.c
index 88da97745710..84be62149c6c 100644
--- a/drivers/scsi/sd_dif.c
+++ b/drivers/scsi/sd_dif.c
@@ -418,7 +418,7 @@ error:
418 __func__, virt, phys, be32_to_cpu(sdt->ref_tag), 418 __func__, virt, phys, be32_to_cpu(sdt->ref_tag),
419 be16_to_cpu(sdt->app_tag)); 419 be16_to_cpu(sdt->app_tag));
420 420
421 return -EIO; 421 return -EILSEQ;
422} 422}
423 423
424/* 424/*
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index b1ae774016f1..737b4c960971 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -1089,7 +1089,7 @@ static void autoconfig(struct uart_8250_port *up, unsigned int probeflags)
1089 if (!up->port.iobase && !up->port.mapbase && !up->port.membase) 1089 if (!up->port.iobase && !up->port.mapbase && !up->port.membase)
1090 return; 1090 return;
1091 1091
1092 DEBUG_AUTOCONF("ttyS%d: autoconf (0x%04x, 0x%p): ", 1092 DEBUG_AUTOCONF("ttyS%d: autoconf (0x%04lx, 0x%p): ",
1093 serial_index(&up->port), up->port.iobase, up->port.membase); 1093 serial_index(&up->port), up->port.iobase, up->port.membase);
1094 1094
1095 /* 1095 /*
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c
index e7108e75653d..b28af13c45a1 100644
--- a/drivers/serial/8250_pci.c
+++ b/drivers/serial/8250_pci.c
@@ -1561,11 +1561,16 @@ enum pci_board_num_t {
1561 pbn_exar_XR17C152, 1561 pbn_exar_XR17C152,
1562 pbn_exar_XR17C154, 1562 pbn_exar_XR17C154,
1563 pbn_exar_XR17C158, 1563 pbn_exar_XR17C158,
1564 pbn_exar_ibm_saturn,
1564 pbn_pasemi_1682M, 1565 pbn_pasemi_1682M,
1565 pbn_ni8430_2, 1566 pbn_ni8430_2,
1566 pbn_ni8430_4, 1567 pbn_ni8430_4,
1567 pbn_ni8430_8, 1568 pbn_ni8430_8,
1568 pbn_ni8430_16, 1569 pbn_ni8430_16,
1570 pbn_ADDIDATA_PCIe_1_3906250,
1571 pbn_ADDIDATA_PCIe_2_3906250,
1572 pbn_ADDIDATA_PCIe_4_3906250,
1573 pbn_ADDIDATA_PCIe_8_3906250,
1569}; 1574};
1570 1575
1571/* 1576/*
@@ -2146,6 +2151,13 @@ static struct pciserial_board pci_boards[] __devinitdata = {
2146 .base_baud = 921600, 2151 .base_baud = 921600,
2147 .uart_offset = 0x200, 2152 .uart_offset = 0x200,
2148 }, 2153 },
2154 [pbn_exar_ibm_saturn] = {
2155 .flags = FL_BASE0,
2156 .num_ports = 1,
2157 .base_baud = 921600,
2158 .uart_offset = 0x200,
2159 },
2160
2149 /* 2161 /*
2150 * PA Semi PWRficient PA6T-1682M on-chip UART 2162 * PA Semi PWRficient PA6T-1682M on-chip UART
2151 */ 2163 */
@@ -2185,6 +2197,37 @@ static struct pciserial_board pci_boards[] __devinitdata = {
2185 .uart_offset = 0x10, 2197 .uart_offset = 0x10,
2186 .first_offset = 0x800, 2198 .first_offset = 0x800,
2187 }, 2199 },
2200 /*
2201 * ADDI-DATA GmbH PCI-Express communication cards <info@addi-data.com>
2202 */
2203 [pbn_ADDIDATA_PCIe_1_3906250] = {
2204 .flags = FL_BASE0,
2205 .num_ports = 1,
2206 .base_baud = 3906250,
2207 .uart_offset = 0x200,
2208 .first_offset = 0x1000,
2209 },
2210 [pbn_ADDIDATA_PCIe_2_3906250] = {
2211 .flags = FL_BASE0,
2212 .num_ports = 2,
2213 .base_baud = 3906250,
2214 .uart_offset = 0x200,
2215 .first_offset = 0x1000,
2216 },
2217 [pbn_ADDIDATA_PCIe_4_3906250] = {
2218 .flags = FL_BASE0,
2219 .num_ports = 4,
2220 .base_baud = 3906250,
2221 .uart_offset = 0x200,
2222 .first_offset = 0x1000,
2223 },
2224 [pbn_ADDIDATA_PCIe_8_3906250] = {
2225 .flags = FL_BASE0,
2226 .num_ports = 8,
2227 .base_baud = 3906250,
2228 .uart_offset = 0x200,
2229 .first_offset = 0x1000,
2230 },
2188}; 2231};
2189 2232
2190static const struct pci_device_id softmodem_blacklist[] = { 2233static const struct pci_device_id softmodem_blacklist[] = {
@@ -2340,7 +2383,7 @@ pciserial_init_ports(struct pci_dev *dev, const struct pciserial_board *board)
2340 break; 2383 break;
2341 2384
2342#ifdef SERIAL_DEBUG_PCI 2385#ifdef SERIAL_DEBUG_PCI
2343 printk(KERN_DEBUG "Setup PCI port: port %x, irq %d, type %d\n", 2386 printk(KERN_DEBUG "Setup PCI port: port %lx, irq %d, type %d\n",
2344 serial_port.iobase, serial_port.irq, serial_port.iotype); 2387 serial_port.iobase, serial_port.irq, serial_port.iotype);
2345#endif 2388#endif
2346 2389
@@ -2649,6 +2692,9 @@ static struct pci_device_id serial_pci_tbl[] = {
2649 PCI_SUBVENDOR_ID_CONNECT_TECH, 2692 PCI_SUBVENDOR_ID_CONNECT_TECH,
2650 PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_8_485, 0, 0, 2693 PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_8_485, 0, 0,
2651 pbn_b0_8_1843200_200 }, 2694 pbn_b0_8_1843200_200 },
2695 { PCI_VENDOR_ID_EXAR, PCI_DEVICE_ID_EXAR_XR17C152,
2696 PCI_VENDOR_ID_IBM, PCI_SUBDEVICE_ID_IBM_SATURN_SERIAL_ONE_PORT,
2697 0, 0, pbn_exar_ibm_saturn },
2652 2698
2653 { PCI_VENDOR_ID_SEALEVEL, PCI_DEVICE_ID_SEALEVEL_U530, 2699 { PCI_VENDOR_ID_SEALEVEL, PCI_DEVICE_ID_SEALEVEL_U530,
2654 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2700 PCI_ANY_ID, PCI_ANY_ID, 0, 0,
@@ -3093,6 +3139,12 @@ static struct pci_device_id serial_pci_tbl[] = {
3093 { PCI_VENDOR_ID_LAVA, PCI_DEVICE_ID_LAVA_QUATRO_B, 3139 { PCI_VENDOR_ID_LAVA, PCI_DEVICE_ID_LAVA_QUATRO_B,
3094 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3140 PCI_ANY_ID, PCI_ANY_ID, 0, 0,
3095 pbn_b0_bt_2_115200 }, 3141 pbn_b0_bt_2_115200 },
3142 { PCI_VENDOR_ID_LAVA, PCI_DEVICE_ID_LAVA_QUATTRO_A,
3143 PCI_ANY_ID, PCI_ANY_ID, 0, 0,
3144 pbn_b0_bt_2_115200 },
3145 { PCI_VENDOR_ID_LAVA, PCI_DEVICE_ID_LAVA_QUATTRO_B,
3146 PCI_ANY_ID, PCI_ANY_ID, 0, 0,
3147 pbn_b0_bt_2_115200 },
3096 { PCI_VENDOR_ID_LAVA, PCI_DEVICE_ID_LAVA_OCTO_A, 3148 { PCI_VENDOR_ID_LAVA, PCI_DEVICE_ID_LAVA_OCTO_A,
3097 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3149 PCI_ANY_ID, PCI_ANY_ID, 0, 0,
3098 pbn_b0_bt_4_460800 }, 3150 pbn_b0_bt_4_460800 },
@@ -3556,6 +3608,38 @@ static struct pci_device_id serial_pci_tbl[] = {
3556 0, 3608 0,
3557 pbn_b0_8_115200 }, 3609 pbn_b0_8_115200 },
3558 3610
3611 { PCI_VENDOR_ID_ADDIDATA,
3612 PCI_DEVICE_ID_ADDIDATA_APCIe7500,
3613 PCI_ANY_ID,
3614 PCI_ANY_ID,
3615 0,
3616 0,
3617 pbn_ADDIDATA_PCIe_4_3906250 },
3618
3619 { PCI_VENDOR_ID_ADDIDATA,
3620 PCI_DEVICE_ID_ADDIDATA_APCIe7420,
3621 PCI_ANY_ID,
3622 PCI_ANY_ID,
3623 0,
3624 0,
3625 pbn_ADDIDATA_PCIe_2_3906250 },
3626
3627 { PCI_VENDOR_ID_ADDIDATA,
3628 PCI_DEVICE_ID_ADDIDATA_APCIe7300,
3629 PCI_ANY_ID,
3630 PCI_ANY_ID,
3631 0,
3632 0,
3633 pbn_ADDIDATA_PCIe_1_3906250 },
3634
3635 { PCI_VENDOR_ID_ADDIDATA,
3636 PCI_DEVICE_ID_ADDIDATA_APCIe7800,
3637 PCI_ANY_ID,
3638 PCI_ANY_ID,
3639 0,
3640 0,
3641 pbn_ADDIDATA_PCIe_8_3906250 },
3642
3559 { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9835, 3643 { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9835,
3560 PCI_VENDOR_ID_IBM, 0x0299, 3644 PCI_VENDOR_ID_IBM, 0x0299,
3561 0, 0, pbn_b0_bt_2_115200 }, 3645 0, 0, pbn_b0_bt_2_115200 },
diff --git a/drivers/serial/atmel_serial.c b/drivers/serial/atmel_serial.c
index 3551c5cb7094..9d948bccafaf 100644
--- a/drivers/serial/atmel_serial.c
+++ b/drivers/serial/atmel_serial.c
@@ -1531,7 +1531,7 @@ static int __devinit atmel_serial_probe(struct platform_device *pdev)
1531 void *data; 1531 void *data;
1532 int ret; 1532 int ret;
1533 1533
1534 BUILD_BUG_ON(!is_power_of_2(ATMEL_SERIAL_RINGSIZE)); 1534 BUILD_BUG_ON(ATMEL_SERIAL_RINGSIZE & (ATMEL_SERIAL_RINGSIZE - 1));
1535 1535
1536 port = &atmel_ports[pdev->id]; 1536 port = &atmel_ports[pdev->id];
1537 port->backup_imr = 0; 1537 port->backup_imr = 0;
diff --git a/drivers/serial/bcm63xx_uart.c b/drivers/serial/bcm63xx_uart.c
index beddaa6e9069..37ad0c449937 100644
--- a/drivers/serial/bcm63xx_uart.c
+++ b/drivers/serial/bcm63xx_uart.c
@@ -242,7 +242,7 @@ static void bcm_uart_do_rx(struct uart_port *port)
242 * higher than fifo size anyway since we're much faster than 242 * higher than fifo size anyway since we're much faster than
243 * serial port */ 243 * serial port */
244 max_count = 32; 244 max_count = 32;
245 tty = port->info->port.tty; 245 tty = port->state->port.tty;
246 do { 246 do {
247 unsigned int iestat, c, cstat; 247 unsigned int iestat, c, cstat;
248 char flag; 248 char flag;
@@ -318,7 +318,7 @@ static void bcm_uart_do_tx(struct uart_port *port)
318 return; 318 return;
319 } 319 }
320 320
321 xmit = &port->info->xmit; 321 xmit = &port->state->xmit;
322 if (uart_circ_empty(xmit)) 322 if (uart_circ_empty(xmit))
323 goto txq_empty; 323 goto txq_empty;
324 324
diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c
index d7bcd074d383..7ce9e9f567a3 100644
--- a/drivers/serial/mpc52xx_uart.c
+++ b/drivers/serial/mpc52xx_uart.c
@@ -705,7 +705,7 @@ mpc52xx_uart_verify_port(struct uart_port *port, struct serial_struct *ser)
705 return -EINVAL; 705 return -EINVAL;
706 706
707 if ((ser->irq != port->irq) || 707 if ((ser->irq != port->irq) ||
708 (ser->io_type != SERIAL_IO_MEM) || 708 (ser->io_type != UPIO_MEM) ||
709 (ser->baud_base != port->uartclk) || 709 (ser->baud_base != port->uartclk) ||
710 (ser->iomem_base != (void *)port->mapbase) || 710 (ser->iomem_base != (void *)port->mapbase) ||
711 (ser->hub6 != 0)) 711 (ser->hub6 != 0))
diff --git a/drivers/serial/of_serial.c b/drivers/serial/of_serial.c
index 02406ba6da1c..cdf172eda2e3 100644
--- a/drivers/serial/of_serial.c
+++ b/drivers/serial/of_serial.c
@@ -161,6 +161,7 @@ static int of_platform_serial_remove(struct of_device *ofdev)
161static struct of_device_id __devinitdata of_platform_serial_table[] = { 161static struct of_device_id __devinitdata of_platform_serial_table[] = {
162 { .type = "serial", .compatible = "ns8250", .data = (void *)PORT_8250, }, 162 { .type = "serial", .compatible = "ns8250", .data = (void *)PORT_8250, },
163 { .type = "serial", .compatible = "ns16450", .data = (void *)PORT_16450, }, 163 { .type = "serial", .compatible = "ns16450", .data = (void *)PORT_16450, },
164 { .type = "serial", .compatible = "ns16550a", .data = (void *)PORT_16550A, },
164 { .type = "serial", .compatible = "ns16550", .data = (void *)PORT_16550, }, 165 { .type = "serial", .compatible = "ns16550", .data = (void *)PORT_16550, },
165 { .type = "serial", .compatible = "ns16750", .data = (void *)PORT_16750, }, 166 { .type = "serial", .compatible = "ns16750", .data = (void *)PORT_16750, },
166 { .type = "serial", .compatible = "ns16850", .data = (void *)PORT_16850, }, 167 { .type = "serial", .compatible = "ns16850", .data = (void *)PORT_16850, },
diff --git a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c
index ff4617e21426..7c7914f5fa02 100644
--- a/drivers/serial/serial_cs.c
+++ b/drivers/serial/serial_cs.c
@@ -879,10 +879,10 @@ static struct pcmcia_device_id serial_ids[] = {
879 PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0175, 0x0000, "cis/DP83903.cis"), 879 PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0175, 0x0000, "cis/DP83903.cis"),
880 PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x0035, "cis/3CXEM556.cis"), 880 PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x0035, "cis/3CXEM556.cis"),
881 PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x003d, "cis/3CXEM556.cis"), 881 PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x003d, "cis/3CXEM556.cis"),
882 PCMCIA_DEVICE_CIS_PROD_ID12("Sierra Wireless", "AC850", 0xd85f6206, 0x42a2c018, "SW_8xx_SER.cis"), /* Sierra Wireless AC850 3G Network Adapter R1 */ 882 PCMCIA_DEVICE_CIS_PROD_ID12("Sierra Wireless", "AC850", 0xd85f6206, 0x42a2c018, "cis/SW_8xx_SER.cis"), /* Sierra Wireless AC850 3G Network Adapter R1 */
883 PCMCIA_DEVICE_CIS_MANF_CARD(0x0192, 0x0710, "SW_7xx_SER.cis"), /* Sierra Wireless AC710/AC750 GPRS Network Adapter R1 */ 883 PCMCIA_DEVICE_CIS_PROD_ID12("Sierra Wireless", "AC710/AC750", 0xd85f6206, 0x761b11e0, "cis/SW_7xx_SER.cis"), /* Sierra Wireless AC710/AC750 GPRS Network Adapter R1 */
884 PCMCIA_DEVICE_CIS_MANF_CARD(0x0192, 0xa555, "SW_555_SER.cis"), /* Sierra Aircard 555 CDMA 1xrtt Modem -- pre update */ 884 PCMCIA_DEVICE_CIS_MANF_CARD(0x0192, 0xa555, "cis/SW_555_SER.cis"), /* Sierra Aircard 555 CDMA 1xrtt Modem -- pre update */
885 PCMCIA_DEVICE_CIS_MANF_CARD(0x013f, 0xa555, "SW_555_SER.cis"), /* Sierra Aircard 555 CDMA 1xrtt Modem -- post update */ 885 PCMCIA_DEVICE_CIS_MANF_CARD(0x013f, 0xa555, "cis/SW_555_SER.cis"), /* Sierra Aircard 555 CDMA 1xrtt Modem -- post update */
886 PCMCIA_DEVICE_CIS_PROD_ID12("MultiTech", "PCMCIA 56K DataFax", 0x842047ee, 0xc2efcf03, "cis/MT5634ZLX.cis"), 886 PCMCIA_DEVICE_CIS_PROD_ID12("MultiTech", "PCMCIA 56K DataFax", 0x842047ee, 0xc2efcf03, "cis/MT5634ZLX.cis"),
887 PCMCIA_DEVICE_CIS_PROD_ID12("ADVANTECH", "COMpad-32/85B-2", 0x96913a85, 0x27ab5437, "cis/COMpad2.cis"), 887 PCMCIA_DEVICE_CIS_PROD_ID12("ADVANTECH", "COMpad-32/85B-2", 0x96913a85, 0x27ab5437, "cis/COMpad2.cis"),
888 PCMCIA_DEVICE_CIS_PROD_ID12("ADVANTECH", "COMpad-32/85B-4", 0x96913a85, 0xcec8f102, "cis/COMpad4.cis"), 888 PCMCIA_DEVICE_CIS_PROD_ID12("ADVANTECH", "COMpad-32/85B-4", 0x96913a85, 0xcec8f102, "cis/COMpad4.cis"),
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c
index 85119fb7cb50..6498bd1fb6dd 100644
--- a/drivers/serial/sh-sci.c
+++ b/drivers/serial/sh-sci.c
@@ -1143,7 +1143,7 @@ static void serial_console_write(struct console *co, const char *s,
1143 while ((sci_in(port, SCxSR) & bits) != bits) 1143 while ((sci_in(port, SCxSR) & bits) != bits)
1144 cpu_relax(); 1144 cpu_relax();
1145 1145
1146 if (sci_port->disable); 1146 if (sci_port->disable)
1147 sci_port->disable(port); 1147 sci_port->disable(port);
1148} 1148}
1149 1149
diff --git a/drivers/serial/suncore.c b/drivers/serial/suncore.c
index a2d4a19550ab..ed7d958b0a01 100644
--- a/drivers/serial/suncore.c
+++ b/drivers/serial/suncore.c
@@ -53,20 +53,21 @@ void sunserial_unregister_minors(struct uart_driver *drv, int count)
53EXPORT_SYMBOL(sunserial_unregister_minors); 53EXPORT_SYMBOL(sunserial_unregister_minors);
54 54
55int sunserial_console_match(struct console *con, struct device_node *dp, 55int sunserial_console_match(struct console *con, struct device_node *dp,
56 struct uart_driver *drv, int line) 56 struct uart_driver *drv, int line, bool ignore_line)
57{ 57{
58 int off;
59
60 if (!con || of_console_device != dp) 58 if (!con || of_console_device != dp)
61 return 0; 59 return 0;
62 60
63 off = 0; 61 if (!ignore_line) {
64 if (of_console_options && 62 int off = 0;
65 *of_console_options == 'b')
66 off = 1;
67 63
68 if ((line & 1) != off) 64 if (of_console_options &&
69 return 0; 65 *of_console_options == 'b')
66 off = 1;
67
68 if ((line & 1) != off)
69 return 0;
70 }
70 71
71 con->index = line; 72 con->index = line;
72 drv->cons = con; 73 drv->cons = con;
@@ -76,23 +77,24 @@ int sunserial_console_match(struct console *con, struct device_node *dp,
76} 77}
77EXPORT_SYMBOL(sunserial_console_match); 78EXPORT_SYMBOL(sunserial_console_match);
78 79
79void 80void sunserial_console_termios(struct console *con, struct device_node *uart_dp)
80sunserial_console_termios(struct console *con)
81{ 81{
82 struct device_node *dp; 82 const char *mode, *s;
83 const char *od, *mode, *s;
84 char mode_prop[] = "ttyX-mode"; 83 char mode_prop[] = "ttyX-mode";
85 int baud, bits, stop, cflag; 84 int baud, bits, stop, cflag;
86 char parity; 85 char parity;
87 86
88 dp = of_find_node_by_path("/options"); 87 if (!strcmp(uart_dp->name, "rsc") ||
89 od = of_get_property(dp, "output-device", NULL); 88 !strcmp(uart_dp->name, "rsc-console") ||
90 if (!strcmp(od, "rsc")) { 89 !strcmp(uart_dp->name, "rsc-control")) {
91 mode = of_get_property(of_console_device, 90 mode = of_get_property(uart_dp,
92 "ssp-console-modes", NULL); 91 "ssp-console-modes", NULL);
93 if (!mode) 92 if (!mode)
94 mode = "115200,8,n,1,-"; 93 mode = "115200,8,n,1,-";
94 } else if (!strcmp(uart_dp->name, "lom-console")) {
95 mode = "9600,8,n,1,-";
95 } else { 96 } else {
97 struct device_node *dp;
96 char c; 98 char c;
97 99
98 c = 'a'; 100 c = 'a';
@@ -101,6 +103,7 @@ sunserial_console_termios(struct console *con)
101 103
102 mode_prop[3] = c; 104 mode_prop[3] = c;
103 105
106 dp = of_find_node_by_path("/options");
104 mode = of_get_property(dp, mode_prop, NULL); 107 mode = of_get_property(dp, mode_prop, NULL);
105 if (!mode) 108 if (!mode)
106 mode = "9600,8,n,1,-"; 109 mode = "9600,8,n,1,-";
diff --git a/drivers/serial/suncore.h b/drivers/serial/suncore.h
index 042668aa602e..db2057936c31 100644
--- a/drivers/serial/suncore.h
+++ b/drivers/serial/suncore.h
@@ -26,7 +26,8 @@ extern int sunserial_register_minors(struct uart_driver *, int);
26extern void sunserial_unregister_minors(struct uart_driver *, int); 26extern void sunserial_unregister_minors(struct uart_driver *, int);
27 27
28extern int sunserial_console_match(struct console *, struct device_node *, 28extern int sunserial_console_match(struct console *, struct device_node *,
29 struct uart_driver *, int); 29 struct uart_driver *, int, bool);
30extern void sunserial_console_termios(struct console *); 30extern void sunserial_console_termios(struct console *,
31 struct device_node *);
31 32
32#endif /* !(_SERIAL_SUN_H) */ 33#endif /* !(_SERIAL_SUN_H) */
diff --git a/drivers/serial/sunhv.c b/drivers/serial/sunhv.c
index d548652dee50..d14cca7fb88d 100644
--- a/drivers/serial/sunhv.c
+++ b/drivers/serial/sunhv.c
@@ -566,7 +566,7 @@ static int __devinit hv_probe(struct of_device *op, const struct of_device_id *m
566 goto out_free_con_read_page; 566 goto out_free_con_read_page;
567 567
568 sunserial_console_match(&sunhv_console, op->node, 568 sunserial_console_match(&sunhv_console, op->node,
569 &sunhv_reg, port->line); 569 &sunhv_reg, port->line, false);
570 570
571 err = uart_add_one_port(&sunhv_reg, port); 571 err = uart_add_one_port(&sunhv_reg, port);
572 if (err) 572 if (err)
diff --git a/drivers/serial/sunsab.c b/drivers/serial/sunsab.c
index d1ad34128635..d514e28d0755 100644
--- a/drivers/serial/sunsab.c
+++ b/drivers/serial/sunsab.c
@@ -883,7 +883,7 @@ static int sunsab_console_setup(struct console *con, char *options)
883 printk("Console: ttyS%d (SAB82532)\n", 883 printk("Console: ttyS%d (SAB82532)\n",
884 (sunsab_reg.minor - 64) + con->index); 884 (sunsab_reg.minor - 64) + con->index);
885 885
886 sunserial_console_termios(con); 886 sunserial_console_termios(con, to_of_device(up->port.dev)->node);
887 887
888 switch (con->cflag & CBAUD) { 888 switch (con->cflag & CBAUD) {
889 case B150: baud = 150; break; 889 case B150: baud = 150; break;
@@ -1027,10 +1027,12 @@ static int __devinit sab_probe(struct of_device *op, const struct of_device_id *
1027 goto out1; 1027 goto out1;
1028 1028
1029 sunserial_console_match(SUNSAB_CONSOLE(), op->node, 1029 sunserial_console_match(SUNSAB_CONSOLE(), op->node,
1030 &sunsab_reg, up[0].port.line); 1030 &sunsab_reg, up[0].port.line,
1031 false);
1031 1032
1032 sunserial_console_match(SUNSAB_CONSOLE(), op->node, 1033 sunserial_console_match(SUNSAB_CONSOLE(), op->node,
1033 &sunsab_reg, up[1].port.line); 1034 &sunsab_reg, up[1].port.line,
1035 false);
1034 1036
1035 err = uart_add_one_port(&sunsab_reg, &up[0].port); 1037 err = uart_add_one_port(&sunsab_reg, &up[0].port);
1036 if (err) 1038 if (err)
@@ -1116,7 +1118,6 @@ static int __init sunsab_init(void)
1116 if (!sunsab_ports) 1118 if (!sunsab_ports)
1117 return -ENOMEM; 1119 return -ENOMEM;
1118 1120
1119 sunsab_reg.cons = SUNSAB_CONSOLE();
1120 err = sunserial_register_minors(&sunsab_reg, num_channels); 1121 err = sunserial_register_minors(&sunsab_reg, num_channels);
1121 if (err) { 1122 if (err) {
1122 kfree(sunsab_ports); 1123 kfree(sunsab_ports);
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c
index 68d262b15749..170d3d68c8f0 100644
--- a/drivers/serial/sunsu.c
+++ b/drivers/serial/sunsu.c
@@ -1329,11 +1329,9 @@ static void sunsu_console_write(struct console *co, const char *s,
1329 */ 1329 */
1330static int __init sunsu_console_setup(struct console *co, char *options) 1330static int __init sunsu_console_setup(struct console *co, char *options)
1331{ 1331{
1332 static struct ktermios dummy;
1333 struct ktermios termios;
1332 struct uart_port *port; 1334 struct uart_port *port;
1333 int baud = 9600;
1334 int bits = 8;
1335 int parity = 'n';
1336 int flow = 'n';
1337 1335
1338 printk("Console: ttyS%d (SU)\n", 1336 printk("Console: ttyS%d (SU)\n",
1339 (sunsu_reg.minor - 64) + co->index); 1337 (sunsu_reg.minor - 64) + co->index);
@@ -1352,10 +1350,15 @@ static int __init sunsu_console_setup(struct console *co, char *options)
1352 */ 1350 */
1353 spin_lock_init(&port->lock); 1351 spin_lock_init(&port->lock);
1354 1352
1355 if (options) 1353 /* Get firmware console settings. */
1356 uart_parse_options(options, &baud, &parity, &bits, &flow); 1354 sunserial_console_termios(co, to_of_device(port->dev)->node);
1357 1355
1358 return uart_set_options(port, co, baud, parity, bits, flow); 1356 memset(&termios, 0, sizeof(struct ktermios));
1357 termios.c_cflag = co->cflag;
1358 port->mctrl |= TIOCM_DTR;
1359 port->ops->set_termios(port, &termios, &dummy);
1360
1361 return 0;
1359} 1362}
1360 1363
1361static struct console sunsu_console = { 1364static struct console sunsu_console = {
@@ -1409,6 +1412,7 @@ static int __devinit su_probe(struct of_device *op, const struct of_device_id *m
1409 struct uart_sunsu_port *up; 1412 struct uart_sunsu_port *up;
1410 struct resource *rp; 1413 struct resource *rp;
1411 enum su_type type; 1414 enum su_type type;
1415 bool ignore_line;
1412 int err; 1416 int err;
1413 1417
1414 type = su_get_type(dp); 1418 type = su_get_type(dp);
@@ -1467,8 +1471,14 @@ static int __devinit su_probe(struct of_device *op, const struct of_device_id *m
1467 1471
1468 up->port.ops = &sunsu_pops; 1472 up->port.ops = &sunsu_pops;
1469 1473
1474 ignore_line = false;
1475 if (!strcmp(dp->name, "rsc-console") ||
1476 !strcmp(dp->name, "lom-console"))
1477 ignore_line = true;
1478
1470 sunserial_console_match(SUNSU_CONSOLE(), dp, 1479 sunserial_console_match(SUNSU_CONSOLE(), dp,
1471 &sunsu_reg, up->port.line); 1480 &sunsu_reg, up->port.line,
1481 ignore_line);
1472 err = uart_add_one_port(&sunsu_reg, &up->port); 1482 err = uart_add_one_port(&sunsu_reg, &up->port);
1473 if (err) 1483 if (err)
1474 goto out_unmap; 1484 goto out_unmap;
@@ -1517,6 +1527,10 @@ static const struct of_device_id su_match[] = {
1517 .name = "serial", 1527 .name = "serial",
1518 .compatible = "su", 1528 .compatible = "su",
1519 }, 1529 },
1530 {
1531 .type = "serial",
1532 .compatible = "su",
1533 },
1520 {}, 1534 {},
1521}; 1535};
1522MODULE_DEVICE_TABLE(of, su_match); 1536MODULE_DEVICE_TABLE(of, su_match);
@@ -1548,6 +1562,12 @@ static int __init sunsu_init(void)
1548 num_uart++; 1562 num_uart++;
1549 } 1563 }
1550 } 1564 }
1565 for_each_node_by_type(dp, "serial") {
1566 if (of_device_is_compatible(dp, "su")) {
1567 if (su_get_type(dp) == SU_PORT_PORT)
1568 num_uart++;
1569 }
1570 }
1551 1571
1552 if (num_uart) { 1572 if (num_uart) {
1553 err = sunserial_register_minors(&sunsu_reg, num_uart); 1573 err = sunserial_register_minors(&sunsu_reg, num_uart);
diff --git a/drivers/serial/sunzilog.c b/drivers/serial/sunzilog.c
index ef693ae22e7f..2c7a66af4f52 100644
--- a/drivers/serial/sunzilog.c
+++ b/drivers/serial/sunzilog.c
@@ -1180,7 +1180,7 @@ static int __init sunzilog_console_setup(struct console *con, char *options)
1180 (sunzilog_reg.minor - 64) + con->index, con->index); 1180 (sunzilog_reg.minor - 64) + con->index, con->index);
1181 1181
1182 /* Get firmware console settings. */ 1182 /* Get firmware console settings. */
1183 sunserial_console_termios(con); 1183 sunserial_console_termios(con, to_of_device(up->port.dev)->node);
1184 1184
1185 /* Firmware console speed is limited to 150-->38400 baud so 1185 /* Firmware console speed is limited to 150-->38400 baud so
1186 * this hackish cflag thing is OK. 1186 * this hackish cflag thing is OK.
@@ -1416,7 +1416,8 @@ static int __devinit zs_probe(struct of_device *op, const struct of_device_id *m
1416 1416
1417 if (!keyboard_mouse) { 1417 if (!keyboard_mouse) {
1418 if (sunserial_console_match(SUNZILOG_CONSOLE(), op->node, 1418 if (sunserial_console_match(SUNZILOG_CONSOLE(), op->node,
1419 &sunzilog_reg, up[0].port.line)) 1419 &sunzilog_reg, up[0].port.line,
1420 false))
1420 up->flags |= SUNZILOG_FLAG_IS_CONS; 1421 up->flags |= SUNZILOG_FLAG_IS_CONS;
1421 err = uart_add_one_port(&sunzilog_reg, &up[0].port); 1422 err = uart_add_one_port(&sunzilog_reg, &up[0].port);
1422 if (err) { 1423 if (err) {
@@ -1425,7 +1426,8 @@ static int __devinit zs_probe(struct of_device *op, const struct of_device_id *m
1425 return err; 1426 return err;
1426 } 1427 }
1427 if (sunserial_console_match(SUNZILOG_CONSOLE(), op->node, 1428 if (sunserial_console_match(SUNZILOG_CONSOLE(), op->node,
1428 &sunzilog_reg, up[1].port.line)) 1429 &sunzilog_reg, up[1].port.line,
1430 false))
1429 up->flags |= SUNZILOG_FLAG_IS_CONS; 1431 up->flags |= SUNZILOG_FLAG_IS_CONS;
1430 err = uart_add_one_port(&sunzilog_reg, &up[1].port); 1432 err = uart_add_one_port(&sunzilog_reg, &up[1].port);
1431 if (err) { 1433 if (err) {
diff --git a/drivers/spi/spi_stmp.c b/drivers/spi/spi_stmp.c
index d871dc23909c..2552bb364005 100644
--- a/drivers/spi/spi_stmp.c
+++ b/drivers/spi/spi_stmp.c
@@ -242,7 +242,7 @@ static int stmp_spi_txrx_dma(struct stmp_spi *ss, int cs,
242 wait_for_completion(&ss->done); 242 wait_for_completion(&ss->done);
243 243
244 if (!busy_wait(readl(ss->regs + HW_SSP_CTRL0) & BM_SSP_CTRL0_RUN)) 244 if (!busy_wait(readl(ss->regs + HW_SSP_CTRL0) & BM_SSP_CTRL0_RUN))
245 status = ETIMEDOUT; 245 status = -ETIMEDOUT;
246 246
247 if (!dma_buf) 247 if (!dma_buf)
248 dma_unmap_single(ss->master_dev, spi_buf_dma, len, dir); 248 dma_unmap_single(ss->master_dev, spi_buf_dma, len, dir);
diff --git a/drivers/spi/spi_txx9.c b/drivers/spi/spi_txx9.c
index 96057de133ad..19f75627c3de 100644
--- a/drivers/spi/spi_txx9.c
+++ b/drivers/spi/spi_txx9.c
@@ -29,6 +29,8 @@
29 29
30 30
31#define SPI_FIFO_SIZE 4 31#define SPI_FIFO_SIZE 4
32#define SPI_MAX_DIVIDER 0xff /* Max. value for SPCR1.SER */
33#define SPI_MIN_DIVIDER 1 /* Min. value for SPCR1.SER */
32 34
33#define TXx9_SPMCR 0x00 35#define TXx9_SPMCR 0x00
34#define TXx9_SPCR0 0x04 36#define TXx9_SPCR0 0x04
@@ -193,11 +195,8 @@ static void txx9spi_work_one(struct txx9spi *c, struct spi_message *m)
193 195
194 if (prev_speed_hz != speed_hz 196 if (prev_speed_hz != speed_hz
195 || prev_bits_per_word != bits_per_word) { 197 || prev_bits_per_word != bits_per_word) {
196 u32 n = (c->baseclk + speed_hz - 1) / speed_hz; 198 int n = DIV_ROUND_UP(c->baseclk, speed_hz) - 1;
197 if (n < 1) 199 n = clamp(n, SPI_MIN_DIVIDER, SPI_MAX_DIVIDER);
198 n = 1;
199 else if (n > 0xff)
200 n = 0xff;
201 /* enter config mode */ 200 /* enter config mode */
202 txx9spi_wr(c, mcr | TXx9_SPMCR_CONFIG | TXx9_SPMCR_BCLR, 201 txx9spi_wr(c, mcr | TXx9_SPMCR_CONFIG | TXx9_SPMCR_BCLR,
203 TXx9_SPMCR); 202 TXx9_SPMCR);
@@ -370,8 +369,8 @@ static int __init txx9spi_probe(struct platform_device *dev)
370 goto exit; 369 goto exit;
371 } 370 }
372 c->baseclk = clk_get_rate(c->clk); 371 c->baseclk = clk_get_rate(c->clk);
373 c->min_speed_hz = (c->baseclk + 0xff - 1) / 0xff; 372 c->min_speed_hz = DIV_ROUND_UP(c->baseclk, SPI_MAX_DIVIDER + 1);
374 c->max_speed_hz = c->baseclk; 373 c->max_speed_hz = c->baseclk / (SPI_MIN_DIVIDER + 1);
375 374
376 res = platform_get_resource(dev, IORESOURCE_MEM, 0); 375 res = platform_get_resource(dev, IORESOURCE_MEM, 0);
377 if (!res) 376 if (!res)
diff --git a/drivers/ssb/scan.c b/drivers/ssb/scan.c
index b74212d698c7..e8b89e8ac9bd 100644
--- a/drivers/ssb/scan.c
+++ b/drivers/ssb/scan.c
@@ -162,6 +162,8 @@ static u8 chipid_to_nrcores(u16 chipid)
162static u32 scan_read32(struct ssb_bus *bus, u8 current_coreidx, 162static u32 scan_read32(struct ssb_bus *bus, u8 current_coreidx,
163 u16 offset) 163 u16 offset)
164{ 164{
165 u32 lo, hi;
166
165 switch (bus->bustype) { 167 switch (bus->bustype) {
166 case SSB_BUSTYPE_SSB: 168 case SSB_BUSTYPE_SSB:
167 offset += current_coreidx * SSB_CORE_SIZE; 169 offset += current_coreidx * SSB_CORE_SIZE;
@@ -174,7 +176,9 @@ static u32 scan_read32(struct ssb_bus *bus, u8 current_coreidx,
174 offset -= 0x800; 176 offset -= 0x800;
175 } else 177 } else
176 ssb_pcmcia_switch_segment(bus, 0); 178 ssb_pcmcia_switch_segment(bus, 0);
177 break; 179 lo = readw(bus->mmio + offset);
180 hi = readw(bus->mmio + offset + 2);
181 return lo | (hi << 16);
178 case SSB_BUSTYPE_SDIO: 182 case SSB_BUSTYPE_SDIO:
179 offset += current_coreidx * SSB_CORE_SIZE; 183 offset += current_coreidx * SSB_CORE_SIZE;
180 return ssb_sdio_scan_read32(bus, offset); 184 return ssb_sdio_scan_read32(bus, offset);
diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index 7df3ba4f1f4d..d21b3469f6d7 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -93,8 +93,6 @@ source "drivers/staging/dst/Kconfig"
93 93
94source "drivers/staging/pohmelfs/Kconfig" 94source "drivers/staging/pohmelfs/Kconfig"
95 95
96source "drivers/staging/stlc45xx/Kconfig"
97
98source "drivers/staging/b3dfg/Kconfig" 96source "drivers/staging/b3dfg/Kconfig"
99 97
100source "drivers/staging/phison/Kconfig" 98source "drivers/staging/phison/Kconfig"
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index 747571172269..8cbf1aebea2e 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -29,7 +29,6 @@ obj-$(CONFIG_ANDROID) += android/
29obj-$(CONFIG_ANDROID) += dream/ 29obj-$(CONFIG_ANDROID) += dream/
30obj-$(CONFIG_DST) += dst/ 30obj-$(CONFIG_DST) += dst/
31obj-$(CONFIG_POHMELFS) += pohmelfs/ 31obj-$(CONFIG_POHMELFS) += pohmelfs/
32obj-$(CONFIG_STLC45XX) += stlc45xx/
33obj-$(CONFIG_B3DFG) += b3dfg/ 32obj-$(CONFIG_B3DFG) += b3dfg/
34obj-$(CONFIG_IDE_PHISON) += phison/ 33obj-$(CONFIG_IDE_PHISON) += phison/
35obj-$(CONFIG_PLAN9AUTH) += p9auth/ 34obj-$(CONFIG_PLAN9AUTH) += p9auth/
diff --git a/drivers/staging/android/Kconfig b/drivers/staging/android/Kconfig
index 247194992374..eb675635ae60 100644
--- a/drivers/staging/android/Kconfig
+++ b/drivers/staging/android/Kconfig
@@ -2,6 +2,7 @@ menu "Android"
2 2
3config ANDROID 3config ANDROID
4 bool "Android Drivers" 4 bool "Android Drivers"
5 depends on BROKEN
5 default N 6 default N
6 ---help--- 7 ---help---
7 Enable support for various drivers needed on the Android platform 8 Enable support for various drivers needed on the Android platform
diff --git a/drivers/staging/go7007/s2250-board.c b/drivers/staging/go7007/s2250-board.c
index 8c85a9c3665a..f4a6541c3e60 100644
--- a/drivers/staging/go7007/s2250-board.c
+++ b/drivers/staging/go7007/s2250-board.c
@@ -261,7 +261,7 @@ static int read_reg_fp(struct i2c_client *client, u16 addr, u16 *val)
261 261
262 memset(buf, 0xcd, 6); 262 memset(buf, 0xcd, 6);
263 usb = go->hpi_context; 263 usb = go->hpi_context;
264 if (down_interruptible(&usb->i2c_lock) != 0) { 264 if (mutex_lock_interruptible(&usb->i2c_lock) != 0) {
265 printk(KERN_INFO "i2c lock failed\n"); 265 printk(KERN_INFO "i2c lock failed\n");
266 kfree(buf); 266 kfree(buf);
267 return -EINTR; 267 return -EINTR;
@@ -270,7 +270,7 @@ static int read_reg_fp(struct i2c_client *client, u16 addr, u16 *val)
270 kfree(buf); 270 kfree(buf);
271 return -EFAULT; 271 return -EFAULT;
272 } 272 }
273 up(&usb->i2c_lock); 273 mutex_unlock(&usb->i2c_lock);
274 274
275 *val = (buf[0] << 8) | buf[1]; 275 *val = (buf[0] << 8) | buf[1];
276 kfree(buf); 276 kfree(buf);
diff --git a/drivers/staging/go7007/s2250-loader.h b/drivers/staging/go7007/s2250-loader.h
new file mode 100644
index 000000000000..b7c301af16cc
--- /dev/null
+++ b/drivers/staging/go7007/s2250-loader.h
@@ -0,0 +1,24 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18#ifndef _S2250_LOADER_H_
19#define _S2250_LOADER_H_
20
21extern int s2250loader_init(void);
22extern void s2250loader_cleanup(void);
23
24#endif
diff --git a/drivers/staging/hv/BlkVsc.c b/drivers/staging/hv/BlkVsc.c
index 51aa861292fc..a48ee3a12646 100644
--- a/drivers/staging/hv/BlkVsc.c
+++ b/drivers/staging/hv/BlkVsc.c
@@ -16,6 +16,7 @@
16 * Place - Suite 330, Boston, MA 02111-1307 USA. 16 * Place - Suite 330, Boston, MA 02111-1307 USA.
17 * 17 *
18 * Authors: 18 * Authors:
19 * Haiyang Zhang <haiyangz@microsoft.com>
19 * Hank Janssen <hjanssen@microsoft.com> 20 * Hank Janssen <hjanssen@microsoft.com>
20 * 21 *
21 */ 22 */
diff --git a/drivers/staging/hv/Channel.c b/drivers/staging/hv/Channel.c
index d649ee169d95..746370e82115 100644
--- a/drivers/staging/hv/Channel.c
+++ b/drivers/staging/hv/Channel.c
@@ -611,7 +611,7 @@ void VmbusChannelClose(struct vmbus_channel *Channel)
611 611
612 /* Stop callback and cancel the timer asap */ 612 /* Stop callback and cancel the timer asap */
613 Channel->OnChannelCallback = NULL; 613 Channel->OnChannelCallback = NULL;
614 del_timer(&Channel->poll_timer); 614 del_timer_sync(&Channel->poll_timer);
615 615
616 /* Send a closing message */ 616 /* Send a closing message */
617 info = kmalloc(sizeof(*info) + 617 info = kmalloc(sizeof(*info) +
@@ -978,14 +978,10 @@ void VmbusChannelOnChannelEvent(struct vmbus_channel *Channel)
978{ 978{
979 DumpVmbusChannel(Channel); 979 DumpVmbusChannel(Channel);
980 ASSERT(Channel->OnChannelCallback); 980 ASSERT(Channel->OnChannelCallback);
981#ifdef ENABLE_POLLING 981
982 del_timer(&Channel->poll_timer);
983 Channel->OnChannelCallback(Channel->ChannelCallbackContext);
984 channel->poll_timer.expires(jiffies + usecs_to_jiffies(100);
985 add_timer(&channel->poll_timer);
986#else
987 Channel->OnChannelCallback(Channel->ChannelCallbackContext); 982 Channel->OnChannelCallback(Channel->ChannelCallbackContext);
988#endif 983
984 mod_timer(&Channel->poll_timer, jiffies + usecs_to_jiffies(100));
989} 985}
990 986
991/** 987/**
@@ -997,10 +993,6 @@ void VmbusChannelOnTimer(unsigned long data)
997 993
998 if (channel->OnChannelCallback) { 994 if (channel->OnChannelCallback) {
999 channel->OnChannelCallback(channel->ChannelCallbackContext); 995 channel->OnChannelCallback(channel->ChannelCallbackContext);
1000#ifdef ENABLE_POLLING
1001 channel->poll_timer.expires(jiffies + usecs_to_jiffies(100);
1002 add_timer(&channel->poll_timer);
1003#endif
1004 } 996 }
1005} 997}
1006 998
diff --git a/drivers/staging/hv/ChannelMgmt.c b/drivers/staging/hv/ChannelMgmt.c
index 3db62caedcff..ef38467ed4e2 100644
--- a/drivers/staging/hv/ChannelMgmt.c
+++ b/drivers/staging/hv/ChannelMgmt.c
@@ -119,7 +119,7 @@ static inline void ReleaseVmbusChannel(void *context)
119 */ 119 */
120void FreeVmbusChannel(struct vmbus_channel *Channel) 120void FreeVmbusChannel(struct vmbus_channel *Channel)
121{ 121{
122 del_timer(&Channel->poll_timer); 122 del_timer_sync(&Channel->poll_timer);
123 123
124 /* 124 /*
125 * We have to release the channel's workqueue/thread in the vmbus's 125 * We have to release the channel's workqueue/thread in the vmbus's
diff --git a/drivers/staging/hv/ChannelMgmt.h b/drivers/staging/hv/ChannelMgmt.h
index a839d8fe6cec..fa973d86b624 100644
--- a/drivers/staging/hv/ChannelMgmt.h
+++ b/drivers/staging/hv/ChannelMgmt.h
@@ -26,6 +26,7 @@
26#define _CHANNEL_MGMT_H_ 26#define _CHANNEL_MGMT_H_
27 27
28#include <linux/list.h> 28#include <linux/list.h>
29#include <linux/timer.h>
29#include "RingBuffer.h" 30#include "RingBuffer.h"
30#include "VmbusChannelInterface.h" 31#include "VmbusChannelInterface.h"
31#include "VmbusPacketFormat.h" 32#include "VmbusPacketFormat.h"
@@ -54,7 +55,7 @@ enum vmbus_channel_message_type {
54 ChannelMessageViewRangeRemove = 18, 55 ChannelMessageViewRangeRemove = 18,
55#endif 56#endif
56 ChannelMessageCount 57 ChannelMessageCount
57} __attribute__((packed)); 58};
58 59
59struct vmbus_channel_message_header { 60struct vmbus_channel_message_header {
60 enum vmbus_channel_message_type MessageType; 61 enum vmbus_channel_message_type MessageType;
diff --git a/drivers/staging/hv/NetVsc.c b/drivers/staging/hv/NetVsc.c
index 1610b845198f..1c717f9a554e 100644
--- a/drivers/staging/hv/NetVsc.c
+++ b/drivers/staging/hv/NetVsc.c
@@ -15,6 +15,7 @@
15 * Place - Suite 330, Boston, MA 02111-1307 USA. 15 * Place - Suite 330, Boston, MA 02111-1307 USA.
16 * 16 *
17 * Authors: 17 * Authors:
18 * Haiyang Zhang <haiyangz@microsoft.com>
18 * Hank Janssen <hjanssen@microsoft.com> 19 * Hank Janssen <hjanssen@microsoft.com>
19 */ 20 */
20#include <linux/kernel.h> 21#include <linux/kernel.h>
@@ -1052,7 +1053,7 @@ static void NetVscOnReceive(struct hv_device *Device,
1052 */ 1053 */
1053 spin_lock_irqsave(&netDevice->receive_packet_list_lock, flags); 1054 spin_lock_irqsave(&netDevice->receive_packet_list_lock, flags);
1054 while (!list_empty(&netDevice->ReceivePacketList)) { 1055 while (!list_empty(&netDevice->ReceivePacketList)) {
1055 list_move_tail(&netDevice->ReceivePacketList, &listHead); 1056 list_move_tail(netDevice->ReceivePacketList.next, &listHead);
1056 if (++count == vmxferpagePacket->RangeCount + 1) 1057 if (++count == vmxferpagePacket->RangeCount + 1)
1057 break; 1058 break;
1058 } 1059 }
@@ -1071,7 +1072,7 @@ static void NetVscOnReceive(struct hv_device *Device,
1071 /* Return it to the freelist */ 1072 /* Return it to the freelist */
1072 spin_lock_irqsave(&netDevice->receive_packet_list_lock, flags); 1073 spin_lock_irqsave(&netDevice->receive_packet_list_lock, flags);
1073 for (i = count; i != 0; i--) { 1074 for (i = count; i != 0; i--) {
1074 list_move_tail(&listHead, 1075 list_move_tail(listHead.next,
1075 &netDevice->ReceivePacketList); 1076 &netDevice->ReceivePacketList);
1076 } 1077 }
1077 spin_unlock_irqrestore(&netDevice->receive_packet_list_lock, 1078 spin_unlock_irqrestore(&netDevice->receive_packet_list_lock,
@@ -1085,8 +1086,7 @@ static void NetVscOnReceive(struct hv_device *Device,
1085 } 1086 }
1086 1087
1087 /* Remove the 1st packet to represent the xfer page packet itself */ 1088 /* Remove the 1st packet to represent the xfer page packet itself */
1088 xferpagePacket = list_entry(&listHead, struct xferpage_packet, 1089 xferpagePacket = (struct xferpage_packet*)listHead.next;
1089 ListEntry);
1090 list_del(&xferpagePacket->ListEntry); 1090 list_del(&xferpagePacket->ListEntry);
1091 1091
1092 /* This is how much we can satisfy */ 1092 /* This is how much we can satisfy */
@@ -1102,8 +1102,7 @@ static void NetVscOnReceive(struct hv_device *Device,
1102 1102
1103 /* Each range represents 1 RNDIS pkt that contains 1 ethernet frame */ 1103 /* Each range represents 1 RNDIS pkt that contains 1 ethernet frame */
1104 for (i = 0; i < (count - 1); i++) { 1104 for (i = 0; i < (count - 1); i++) {
1105 netvscPacket = list_entry(&listHead, struct hv_netvsc_packet, 1105 netvscPacket = (struct hv_netvsc_packet*)listHead.next;
1106 ListEntry);
1107 list_del(&netvscPacket->ListEntry); 1106 list_del(&netvscPacket->ListEntry);
1108 1107
1109 /* Initialize the netvsc packet */ 1108 /* Initialize the netvsc packet */
diff --git a/drivers/staging/hv/NetVsc.h b/drivers/staging/hv/NetVsc.h
index 3e7112f7c755..6e0e03494126 100644
--- a/drivers/staging/hv/NetVsc.h
+++ b/drivers/staging/hv/NetVsc.h
@@ -16,6 +16,7 @@
16 * Place - Suite 330, Boston, MA 02111-1307 USA. 16 * Place - Suite 330, Boston, MA 02111-1307 USA.
17 * 17 *
18 * Authors: 18 * Authors:
19 * Haiyang Zhang <haiyangz@microsoft.com>
19 * Hank Janssen <hjanssen@microsoft.com> 20 * Hank Janssen <hjanssen@microsoft.com>
20 * 21 *
21 */ 22 */
diff --git a/drivers/staging/hv/StorVsc.c b/drivers/staging/hv/StorVsc.c
index 14015c927940..2f7c425896f7 100644
--- a/drivers/staging/hv/StorVsc.c
+++ b/drivers/staging/hv/StorVsc.c
@@ -196,7 +196,7 @@ static int StorVscChannelInit(struct hv_device *Device)
196 * Now, initiate the vsc/vsp initialization protocol on the open 196 * Now, initiate the vsc/vsp initialization protocol on the open
197 * channel 197 * channel
198 */ 198 */
199 memset(request, sizeof(struct storvsc_request_extension), 0); 199 memset(request, 0, sizeof(struct storvsc_request_extension));
200 request->WaitEvent = osd_WaitEventCreate(); 200 request->WaitEvent = osd_WaitEventCreate();
201 201
202 vstorPacket->Operation = VStorOperationBeginInitialization; 202 vstorPacket->Operation = VStorOperationBeginInitialization;
@@ -233,7 +233,7 @@ static int StorVscChannelInit(struct hv_device *Device)
233 DPRINT_INFO(STORVSC, "QUERY_PROTOCOL_VERSION_OPERATION..."); 233 DPRINT_INFO(STORVSC, "QUERY_PROTOCOL_VERSION_OPERATION...");
234 234
235 /* reuse the packet for version range supported */ 235 /* reuse the packet for version range supported */
236 memset(vstorPacket, sizeof(struct vstor_packet), 0); 236 memset(vstorPacket, 0, sizeof(struct vstor_packet));
237 vstorPacket->Operation = VStorOperationQueryProtocolVersion; 237 vstorPacket->Operation = VStorOperationQueryProtocolVersion;
238 vstorPacket->Flags = REQUEST_COMPLETION_FLAG; 238 vstorPacket->Flags = REQUEST_COMPLETION_FLAG;
239 239
@@ -266,7 +266,7 @@ static int StorVscChannelInit(struct hv_device *Device)
266 /* Query channel properties */ 266 /* Query channel properties */
267 DPRINT_INFO(STORVSC, "QUERY_PROPERTIES_OPERATION..."); 267 DPRINT_INFO(STORVSC, "QUERY_PROPERTIES_OPERATION...");
268 268
269 memset(vstorPacket, sizeof(struct vstor_packet), 0); 269 memset(vstorPacket, 0, sizeof(struct vstor_packet));
270 vstorPacket->Operation = VStorOperationQueryProperties; 270 vstorPacket->Operation = VStorOperationQueryProperties;
271 vstorPacket->Flags = REQUEST_COMPLETION_FLAG; 271 vstorPacket->Flags = REQUEST_COMPLETION_FLAG;
272 vstorPacket->StorageChannelProperties.PortNumber = 272 vstorPacket->StorageChannelProperties.PortNumber =
@@ -305,7 +305,7 @@ static int StorVscChannelInit(struct hv_device *Device)
305 305
306 DPRINT_INFO(STORVSC, "END_INITIALIZATION_OPERATION..."); 306 DPRINT_INFO(STORVSC, "END_INITIALIZATION_OPERATION...");
307 307
308 memset(vstorPacket, sizeof(struct vstor_packet), 0); 308 memset(vstorPacket, 0, sizeof(struct vstor_packet));
309 vstorPacket->Operation = VStorOperationEndInitialization; 309 vstorPacket->Operation = VStorOperationEndInitialization;
310 vstorPacket->Flags = REQUEST_COMPLETION_FLAG; 310 vstorPacket->Flags = REQUEST_COMPLETION_FLAG;
311 311
@@ -508,7 +508,7 @@ static int StorVscConnectToVsp(struct hv_device *Device)
508 int ret; 508 int ret;
509 509
510 storDriver = (struct storvsc_driver_object *)Device->Driver; 510 storDriver = (struct storvsc_driver_object *)Device->Driver;
511 memset(&props, sizeof(struct vmstorage_channel_properties), 0); 511 memset(&props, 0, sizeof(struct vmstorage_channel_properties));
512 512
513 /* Open the channel */ 513 /* Open the channel */
514 ret = Device->Driver->VmbusChannelInterface.Open(Device, 514 ret = Device->Driver->VmbusChannelInterface.Open(Device,
diff --git a/drivers/staging/hv/TODO b/drivers/staging/hv/TODO
index 4d390b237742..dbfbde937a66 100644
--- a/drivers/staging/hv/TODO
+++ b/drivers/staging/hv/TODO
@@ -1,11 +1,17 @@
1TODO: 1TODO:
2 - fix remaining checkpatch warnings and errors 2 - fix remaining checkpatch warnings and errors
3 - use of /** when it is not a kerneldoc header
3 - remove RingBuffer.c to us in-kernel ringbuffer functions instead. 4 - remove RingBuffer.c to us in-kernel ringbuffer functions instead.
4 - audit the vmbus to verify it is working properly with the 5 - audit the vmbus to verify it is working properly with the
5 driver model 6 driver model
7 - convert vmbus driver interface function pointer tables
8 to constant, a.k.a vmbus_ops
6 - see if the vmbus can be merged with the other virtual busses 9 - see if the vmbus can be merged with the other virtual busses
7 in the kernel 10 in the kernel
8 - audit the network driver 11 - audit the network driver
12 - use existing net_device_stats struct in network device
13 - checking for carrier inside open is wrong, network device API
14 confusion??
9 - audit the block driver 15 - audit the block driver
10 - audit the scsi driver 16 - audit the scsi driver
11 17
diff --git a/drivers/staging/hv/blkvsc_drv.c b/drivers/staging/hv/blkvsc_drv.c
index 99c49261a8b4..62b282844a53 100644
--- a/drivers/staging/hv/blkvsc_drv.c
+++ b/drivers/staging/hv/blkvsc_drv.c
@@ -15,6 +15,7 @@
15 * Place - Suite 330, Boston, MA 02111-1307 USA. 15 * Place - Suite 330, Boston, MA 02111-1307 USA.
16 * 16 *
17 * Authors: 17 * Authors:
18 * Haiyang Zhang <haiyangz@microsoft.com>
18 * Hank Janssen <hjanssen@microsoft.com> 19 * Hank Janssen <hjanssen@microsoft.com>
19 */ 20 */
20#include <linux/init.h> 21#include <linux/init.h>
diff --git a/drivers/staging/hv/netvsc_drv.c b/drivers/staging/hv/netvsc_drv.c
index 3192d50f7251..0d7459e2d036 100644
--- a/drivers/staging/hv/netvsc_drv.c
+++ b/drivers/staging/hv/netvsc_drv.c
@@ -15,6 +15,7 @@
15 * Place - Suite 330, Boston, MA 02111-1307 USA. 15 * Place - Suite 330, Boston, MA 02111-1307 USA.
16 * 16 *
17 * Authors: 17 * Authors:
18 * Haiyang Zhang <haiyangz@microsoft.com>
18 * Hank Janssen <hjanssen@microsoft.com> 19 * Hank Janssen <hjanssen@microsoft.com>
19 */ 20 */
20#include <linux/init.h> 21#include <linux/init.h>
diff --git a/drivers/staging/hv/osd.h b/drivers/staging/hv/osd.h
index 9504604c72bd..ce064e8ea644 100644
--- a/drivers/staging/hv/osd.h
+++ b/drivers/staging/hv/osd.h
@@ -25,6 +25,7 @@
25#ifndef _OSD_H_ 25#ifndef _OSD_H_
26#define _OSD_H_ 26#define _OSD_H_
27 27
28#include <linux/workqueue.h>
28 29
29/* Defines */ 30/* Defines */
30#define ALIGN_UP(value, align) (((value) & (align-1)) ? \ 31#define ALIGN_UP(value, align) (((value) & (align-1)) ? \
diff --git a/drivers/staging/hv/vmbus_drv.c b/drivers/staging/hv/vmbus_drv.c
index 582318f10222..894eecfc63ca 100644
--- a/drivers/staging/hv/vmbus_drv.c
+++ b/drivers/staging/hv/vmbus_drv.c
@@ -507,12 +507,12 @@ static struct hv_device *vmbus_child_device_create(struct hv_guid *type,
507 507
508 child_device_obj = &child_device_ctx->device_obj; 508 child_device_obj = &child_device_ctx->device_obj;
509 child_device_obj->context = context; 509 child_device_obj->context = context;
510 memcpy(&child_device_obj->deviceType, &type, sizeof(struct hv_guid)); 510 memcpy(&child_device_obj->deviceType, type, sizeof(struct hv_guid));
511 memcpy(&child_device_obj->deviceInstance, &instance, 511 memcpy(&child_device_obj->deviceInstance, instance,
512 sizeof(struct hv_guid)); 512 sizeof(struct hv_guid));
513 513
514 memcpy(&child_device_ctx->class_id, &type, sizeof(struct hv_guid)); 514 memcpy(&child_device_ctx->class_id, type, sizeof(struct hv_guid));
515 memcpy(&child_device_ctx->device_id, &instance, sizeof(struct hv_guid)); 515 memcpy(&child_device_ctx->device_id, instance, sizeof(struct hv_guid));
516 516
517 DPRINT_EXIT(VMBUS_DRV); 517 DPRINT_EXIT(VMBUS_DRV);
518 518
@@ -537,18 +537,7 @@ static int vmbus_child_device_register(struct hv_device *root_device_obj,
537 DPRINT_DBG(VMBUS_DRV, "child device (%p) registering", 537 DPRINT_DBG(VMBUS_DRV, "child device (%p) registering",
538 child_device_ctx); 538 child_device_ctx);
539 539
540 /* Make sure we are not registered already */ 540 /* Set the device name. Otherwise, device_register() will fail. */
541 if (strlen(dev_name(&child_device_ctx->device)) != 0) {
542 DPRINT_ERR(VMBUS_DRV,
543 "child device (%p) already registered - busid %s",
544 child_device_ctx,
545 dev_name(&child_device_ctx->device));
546
547 ret = -1;
548 goto Cleanup;
549 }
550
551 /* Set the device bus id. Otherwise, device_register()will fail. */
552 dev_set_name(&child_device_ctx->device, "vmbus_0_%d", 541 dev_set_name(&child_device_ctx->device, "vmbus_0_%d",
553 atomic_inc_return(&device_num)); 542 atomic_inc_return(&device_num));
554 543
@@ -573,7 +562,6 @@ static int vmbus_child_device_register(struct hv_device *root_device_obj,
573 DPRINT_INFO(VMBUS_DRV, "child device (%p) registered", 562 DPRINT_INFO(VMBUS_DRV, "child device (%p) registered",
574 &child_device_ctx->device); 563 &child_device_ctx->device);
575 564
576Cleanup:
577 DPRINT_EXIT(VMBUS_DRV); 565 DPRINT_EXIT(VMBUS_DRV);
578 566
579 return ret; 567 return ret;
@@ -623,8 +611,6 @@ static void vmbus_child_device_destroy(struct hv_device *device_obj)
623static int vmbus_uevent(struct device *device, struct kobj_uevent_env *env) 611static int vmbus_uevent(struct device *device, struct kobj_uevent_env *env)
624{ 612{
625 struct device_context *device_ctx = device_to_device_context(device); 613 struct device_context *device_ctx = device_to_device_context(device);
626 int i = 0;
627 int len = 0;
628 int ret; 614 int ret;
629 615
630 DPRINT_ENTER(VMBUS_DRV); 616 DPRINT_ENTER(VMBUS_DRV);
@@ -644,8 +630,6 @@ static int vmbus_uevent(struct device *device, struct kobj_uevent_env *env)
644 device_ctx->class_id.data[14], 630 device_ctx->class_id.data[14],
645 device_ctx->class_id.data[15]); 631 device_ctx->class_id.data[15]);
646 632
647 env->envp_idx = i;
648 env->buflen = len;
649 ret = add_uevent_var(env, "VMBUS_DEVICE_CLASS_GUID={" 633 ret = add_uevent_var(env, "VMBUS_DEVICE_CLASS_GUID={"
650 "%02x%02x%02x%02x-%02x%02x-%02x%02x-" 634 "%02x%02x%02x%02x-%02x%02x-%02x%02x-"
651 "%02x%02x%02x%02x%02x%02x%02x%02x}", 635 "%02x%02x%02x%02x%02x%02x%02x%02x}",
@@ -691,8 +675,6 @@ static int vmbus_uevent(struct device *device, struct kobj_uevent_env *env)
691 if (ret) 675 if (ret)
692 return ret; 676 return ret;
693 677
694 env->envp[env->envp_idx] = NULL;
695
696 DPRINT_EXIT(VMBUS_DRV); 678 DPRINT_EXIT(VMBUS_DRV);
697 679
698 return 0; 680 return 0;
diff --git a/drivers/staging/octeon/ethernet-mdio.c b/drivers/staging/octeon/ethernet-mdio.c
index 42230e62a222..31a58e508924 100644
--- a/drivers/staging/octeon/ethernet-mdio.c
+++ b/drivers/staging/octeon/ethernet-mdio.c
@@ -170,7 +170,7 @@ static u32 cvm_oct_get_link(struct net_device *dev)
170 return ret; 170 return ret;
171} 171}
172 172
173struct const ethtool_ops cvm_oct_ethtool_ops = { 173const struct ethtool_ops cvm_oct_ethtool_ops = {
174 .get_drvinfo = cvm_oct_get_drvinfo, 174 .get_drvinfo = cvm_oct_get_drvinfo,
175 .get_settings = cvm_oct_get_settings, 175 .get_settings = cvm_oct_get_settings,
176 .set_settings = cvm_oct_set_settings, 176 .set_settings = cvm_oct_set_settings,
diff --git a/drivers/staging/octeon/ethernet-spi.c b/drivers/staging/octeon/ethernet-spi.c
index 66190b0cb68f..00dc0f4bad19 100644
--- a/drivers/staging/octeon/ethernet-spi.c
+++ b/drivers/staging/octeon/ethernet-spi.c
@@ -317,6 +317,6 @@ void cvm_oct_spi_uninit(struct net_device *dev)
317 cvmx_write_csr(CVMX_SPXX_INT_MSK(interface), 0); 317 cvmx_write_csr(CVMX_SPXX_INT_MSK(interface), 0);
318 cvmx_write_csr(CVMX_STXX_INT_MSK(interface), 0); 318 cvmx_write_csr(CVMX_STXX_INT_MSK(interface), 0);
319 } 319 }
320 free_irq(8 + 46, &number_spi_ports); 320 free_irq(OCTEON_IRQ_RML, &number_spi_ports);
321 } 321 }
322} 322}
diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
index b8479517dce2..492c5029992d 100644
--- a/drivers/staging/octeon/ethernet.c
+++ b/drivers/staging/octeon/ethernet.c
@@ -111,6 +111,16 @@ MODULE_PARM_DESC(disable_core_queueing, "\n"
111 "\tallows packets to be sent without lock contention in the packet\n" 111 "\tallows packets to be sent without lock contention in the packet\n"
112 "\tscheduler resulting in some cases in improved throughput.\n"); 112 "\tscheduler resulting in some cases in improved throughput.\n");
113 113
114
115/*
116 * The offset from mac_addr_base that should be used for the next port
117 * that is configured. By convention, if any mgmt ports exist on the
118 * chip, they get the first mac addresses, The ports controlled by
119 * this driver are numbered sequencially following any mgmt addresses
120 * that may exist.
121 */
122static unsigned int cvm_oct_mac_addr_offset;
123
114/** 124/**
115 * Periodic timer to check auto negotiation 125 * Periodic timer to check auto negotiation
116 */ 126 */
@@ -474,16 +484,30 @@ static int cvm_oct_common_set_mac_address(struct net_device *dev, void *addr)
474 */ 484 */
475int cvm_oct_common_init(struct net_device *dev) 485int cvm_oct_common_init(struct net_device *dev)
476{ 486{
477 static int count;
478 char mac[8] = { 0x00, 0x00,
479 octeon_bootinfo->mac_addr_base[0],
480 octeon_bootinfo->mac_addr_base[1],
481 octeon_bootinfo->mac_addr_base[2],
482 octeon_bootinfo->mac_addr_base[3],
483 octeon_bootinfo->mac_addr_base[4],
484 octeon_bootinfo->mac_addr_base[5] + count
485 };
486 struct octeon_ethernet *priv = netdev_priv(dev); 487 struct octeon_ethernet *priv = netdev_priv(dev);
488 struct sockaddr sa;
489 u64 mac = ((u64)(octeon_bootinfo->mac_addr_base[0] & 0xff) << 40) |
490 ((u64)(octeon_bootinfo->mac_addr_base[1] & 0xff) << 32) |
491 ((u64)(octeon_bootinfo->mac_addr_base[2] & 0xff) << 24) |
492 ((u64)(octeon_bootinfo->mac_addr_base[3] & 0xff) << 16) |
493 ((u64)(octeon_bootinfo->mac_addr_base[4] & 0xff) << 8) |
494 (u64)(octeon_bootinfo->mac_addr_base[5] & 0xff);
495
496 mac += cvm_oct_mac_addr_offset;
497 sa.sa_data[0] = (mac >> 40) & 0xff;
498 sa.sa_data[1] = (mac >> 32) & 0xff;
499 sa.sa_data[2] = (mac >> 24) & 0xff;
500 sa.sa_data[3] = (mac >> 16) & 0xff;
501 sa.sa_data[4] = (mac >> 8) & 0xff;
502 sa.sa_data[5] = mac & 0xff;
503
504 if (cvm_oct_mac_addr_offset >= octeon_bootinfo->mac_addr_count)
505 printk(KERN_DEBUG "%s: Using MAC outside of the assigned range:"
506 " %02x:%02x:%02x:%02x:%02x:%02x\n", dev->name,
507 sa.sa_data[0] & 0xff, sa.sa_data[1] & 0xff,
508 sa.sa_data[2] & 0xff, sa.sa_data[3] & 0xff,
509 sa.sa_data[4] & 0xff, sa.sa_data[5] & 0xff);
510 cvm_oct_mac_addr_offset++;
487 511
488 /* 512 /*
489 * Force the interface to use the POW send if always_use_pow 513 * Force the interface to use the POW send if always_use_pow
@@ -496,14 +520,12 @@ int cvm_oct_common_init(struct net_device *dev)
496 if (priv->queue != -1 && USE_HW_TCPUDP_CHECKSUM) 520 if (priv->queue != -1 && USE_HW_TCPUDP_CHECKSUM)
497 dev->features |= NETIF_F_IP_CSUM; 521 dev->features |= NETIF_F_IP_CSUM;
498 522
499 count++;
500
501 /* We do our own locking, Linux doesn't need to */ 523 /* We do our own locking, Linux doesn't need to */
502 dev->features |= NETIF_F_LLTX; 524 dev->features |= NETIF_F_LLTX;
503 SET_ETHTOOL_OPS(dev, &cvm_oct_ethtool_ops); 525 SET_ETHTOOL_OPS(dev, &cvm_oct_ethtool_ops);
504 526
505 cvm_oct_mdio_setup_device(dev); 527 cvm_oct_mdio_setup_device(dev);
506 dev->netdev_ops->ndo_set_mac_address(dev, mac); 528 dev->netdev_ops->ndo_set_mac_address(dev, &sa);
507 dev->netdev_ops->ndo_change_mtu(dev, dev->mtu); 529 dev->netdev_ops->ndo_change_mtu(dev, dev->mtu);
508 530
509 /* 531 /*
@@ -620,6 +642,13 @@ static int __init cvm_oct_init_module(void)
620 642
621 pr_notice("cavium-ethernet %s\n", OCTEON_ETHERNET_VERSION); 643 pr_notice("cavium-ethernet %s\n", OCTEON_ETHERNET_VERSION);
622 644
645 if (OCTEON_IS_MODEL(OCTEON_CN52XX))
646 cvm_oct_mac_addr_offset = 2; /* First two are the mgmt ports. */
647 else if (OCTEON_IS_MODEL(OCTEON_CN56XX))
648 cvm_oct_mac_addr_offset = 1; /* First one is the mgmt port. */
649 else
650 cvm_oct_mac_addr_offset = 0;
651
623 cvm_oct_proc_initialize(); 652 cvm_oct_proc_initialize();
624 cvm_oct_rx_initialize(); 653 cvm_oct_rx_initialize();
625 cvm_oct_configure_common_hw(); 654 cvm_oct_configure_common_hw();
diff --git a/drivers/staging/otus/Kconfig b/drivers/staging/otus/Kconfig
index d549d08fd495..f6cc2625e341 100644
--- a/drivers/staging/otus/Kconfig
+++ b/drivers/staging/otus/Kconfig
@@ -1,6 +1,6 @@
1config OTUS 1config OTUS
2 tristate "Atheros OTUS 802.11n USB wireless support" 2 tristate "Atheros OTUS 802.11n USB wireless support"
3 depends on USB && WLAN_80211 && MAC80211 3 depends on USB && WLAN && MAC80211
4 default N 4 default N
5 ---help--- 5 ---help---
6 Enable support for Atheros 802.11n USB hardware: 6 Enable support for Atheros 802.11n USB hardware:
diff --git a/drivers/staging/panel/panel.c b/drivers/staging/panel/panel.c
index dd7d3fde9699..4ce399b6d237 100644
--- a/drivers/staging/panel/panel.c
+++ b/drivers/staging/panel/panel.c
@@ -2071,11 +2071,15 @@ static void panel_detach(struct parport *port)
2071 return; 2071 return;
2072 } 2072 }
2073 2073
2074 if (keypad_enabled && keypad_initialized) 2074 if (keypad_enabled && keypad_initialized) {
2075 misc_deregister(&keypad_dev); 2075 misc_deregister(&keypad_dev);
2076 keypad_initialized = 0;
2077 }
2076 2078
2077 if (lcd_enabled && lcd_initialized) 2079 if (lcd_enabled && lcd_initialized) {
2078 misc_deregister(&lcd_dev); 2080 misc_deregister(&lcd_dev);
2081 lcd_initialized = 0;
2082 }
2079 2083
2080 parport_release(pprt); 2084 parport_release(pprt);
2081 parport_unregister_device(pprt); 2085 parport_unregister_device(pprt);
@@ -2211,13 +2215,16 @@ static void __exit panel_cleanup_module(void)
2211 del_timer(&scan_timer); 2215 del_timer(&scan_timer);
2212 2216
2213 if (pprt != NULL) { 2217 if (pprt != NULL) {
2214 if (keypad_enabled) 2218 if (keypad_enabled) {
2215 misc_deregister(&keypad_dev); 2219 misc_deregister(&keypad_dev);
2220 keypad_initialized = 0;
2221 }
2216 2222
2217 if (lcd_enabled) { 2223 if (lcd_enabled) {
2218 panel_lcd_print("\x0cLCD driver " PANEL_VERSION 2224 panel_lcd_print("\x0cLCD driver " PANEL_VERSION
2219 "\nunloaded.\x1b[Lc\x1b[Lb\x1b[L-"); 2225 "\nunloaded.\x1b[Lc\x1b[Lb\x1b[L-");
2220 misc_deregister(&lcd_dev); 2226 misc_deregister(&lcd_dev);
2227 lcd_initialized = 0;
2221 } 2228 }
2222 2229
2223 /* TODO: free all input signals */ 2230 /* TODO: free all input signals */
diff --git a/drivers/staging/rt2860/Kconfig b/drivers/staging/rt2860/Kconfig
index 7f44e5e72463..efe38e25c5ed 100644
--- a/drivers/staging/rt2860/Kconfig
+++ b/drivers/staging/rt2860/Kconfig
@@ -1,5 +1,5 @@
1config RT2860 1config RT2860
2 tristate "Ralink 2860 wireless support" 2 tristate "Ralink 2860 wireless support"
3 depends on PCI && X86 && WLAN_80211 3 depends on PCI && X86 && WLAN
4 ---help--- 4 ---help---
5 This is an experimental driver for the Ralink 2860 wireless chip. 5 This is an experimental driver for the Ralink 2860 wireless chip.
diff --git a/drivers/staging/rt2870/Kconfig b/drivers/staging/rt2870/Kconfig
index 76841f6dea93..aea5c8221810 100644
--- a/drivers/staging/rt2870/Kconfig
+++ b/drivers/staging/rt2870/Kconfig
@@ -1,5 +1,5 @@
1config RT2870 1config RT2870
2 tristate "Ralink 2870/3070 wireless support" 2 tristate "Ralink 2870/3070 wireless support"
3 depends on USB && X86 && WLAN_80211 3 depends on USB && X86 && WLAN
4 ---help--- 4 ---help---
5 This is an experimental driver for the Ralink xx70 wireless chips. 5 This is an experimental driver for the Ralink xx70 wireless chips.
diff --git a/drivers/staging/rt3090/Kconfig b/drivers/staging/rt3090/Kconfig
index 255e8eaa4836..2b3f745d72b7 100644
--- a/drivers/staging/rt3090/Kconfig
+++ b/drivers/staging/rt3090/Kconfig
@@ -1,5 +1,5 @@
1config RT3090 1config RT3090
2 tristate "Ralink 3090 wireless support" 2 tristate "Ralink 3090 wireless support"
3 depends on PCI && X86 && WLAN_80211 3 depends on PCI && X86 && WLAN
4 ---help--- 4 ---help---
5 This is an experimental driver for the Ralink 3090 wireless chip. 5 This is an experimental driver for the Ralink 3090 wireless chip.
diff --git a/drivers/staging/rtl8187se/Kconfig b/drivers/staging/rtl8187se/Kconfig
index 236e42725447..203c79b8180f 100644
--- a/drivers/staging/rtl8187se/Kconfig
+++ b/drivers/staging/rtl8187se/Kconfig
@@ -1,6 +1,6 @@
1config RTL8187SE 1config RTL8187SE
2 tristate "RealTek RTL8187SE Wireless LAN NIC driver" 2 tristate "RealTek RTL8187SE Wireless LAN NIC driver"
3 depends on PCI 3 depends on PCI && WLAN
4 depends on WIRELESS_EXT 4 depends on WIRELESS_EXT
5 default N 5 default N
6 ---help--- 6 ---help---
diff --git a/drivers/staging/rtl8187se/TODO b/drivers/staging/rtl8187se/TODO
index c09a9160739d..a762e79873e9 100644
--- a/drivers/staging/rtl8187se/TODO
+++ b/drivers/staging/rtl8187se/TODO
@@ -11,5 +11,4 @@ TODO:
11- sparse fixes 11- sparse fixes
12- integrate with drivers/net/wireless/rtl818x 12- integrate with drivers/net/wireless/rtl818x
13 13
14Please send any patches to Greg Kroah-Hartman <greg@kroah.com> and 14Please send any patches to Greg Kroah-Hartman <greg@kroah.com>.
15Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>.
diff --git a/drivers/staging/rtl8187se/ieee80211/ieee80211_crypt.c b/drivers/staging/rtl8187se/ieee80211/ieee80211_crypt.c
index 013c3e19ae25..4c5d63fd5833 100644
--- a/drivers/staging/rtl8187se/ieee80211/ieee80211_crypt.c
+++ b/drivers/staging/rtl8187se/ieee80211/ieee80211_crypt.c
@@ -53,10 +53,8 @@ void ieee80211_crypt_deinit_entries(struct ieee80211_device *ieee,
53 53
54 list_del(ptr); 54 list_del(ptr);
55 55
56 if (entry->ops) { 56 if (entry->ops)
57 entry->ops->deinit(entry->priv); 57 entry->ops->deinit(entry->priv);
58 module_put(entry->ops->owner);
59 }
60 kfree(entry); 58 kfree(entry);
61 } 59 }
62} 60}
diff --git a/drivers/staging/rtl8187se/ieee80211/ieee80211_module.c b/drivers/staging/rtl8187se/ieee80211/ieee80211_module.c
index 6fbe4890cb66..18392fce487d 100644
--- a/drivers/staging/rtl8187se/ieee80211/ieee80211_module.c
+++ b/drivers/staging/rtl8187se/ieee80211/ieee80211_module.c
@@ -189,10 +189,8 @@ void free_ieee80211(struct net_device *dev)
189 for (i = 0; i < WEP_KEYS; i++) { 189 for (i = 0; i < WEP_KEYS; i++) {
190 struct ieee80211_crypt_data *crypt = ieee->crypt[i]; 190 struct ieee80211_crypt_data *crypt = ieee->crypt[i];
191 if (crypt) { 191 if (crypt) {
192 if (crypt->ops) { 192 if (crypt->ops)
193 crypt->ops->deinit(crypt->priv); 193 crypt->ops->deinit(crypt->priv);
194 module_put(crypt->ops->owner);
195 }
196 kfree(crypt); 194 kfree(crypt);
197 ieee->crypt[i] = NULL; 195 ieee->crypt[i] = NULL;
198 } 196 }
diff --git a/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c
index 59b2ab48cdcf..334e4c7ec61b 100644
--- a/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c
+++ b/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c
@@ -2839,16 +2839,12 @@ static int ieee80211_wpa_set_encryption(struct ieee80211_device *ieee,
2839 goto skip_host_crypt; 2839 goto skip_host_crypt;
2840 2840
2841 ops = ieee80211_get_crypto_ops(param->u.crypt.alg); 2841 ops = ieee80211_get_crypto_ops(param->u.crypt.alg);
2842 if (ops == NULL && strcmp(param->u.crypt.alg, "WEP") == 0) { 2842 if (ops == NULL && strcmp(param->u.crypt.alg, "WEP") == 0)
2843 request_module("ieee80211_crypt_wep");
2844 ops = ieee80211_get_crypto_ops(param->u.crypt.alg); 2843 ops = ieee80211_get_crypto_ops(param->u.crypt.alg);
2845 } else if (ops == NULL && strcmp(param->u.crypt.alg, "TKIP") == 0) { 2844 else if (ops == NULL && strcmp(param->u.crypt.alg, "TKIP") == 0)
2846 request_module("ieee80211_crypt_tkip");
2847 ops = ieee80211_get_crypto_ops(param->u.crypt.alg); 2845 ops = ieee80211_get_crypto_ops(param->u.crypt.alg);
2848 } else if (ops == NULL && strcmp(param->u.crypt.alg, "CCMP") == 0) { 2846 else if (ops == NULL && strcmp(param->u.crypt.alg, "CCMP") == 0)
2849 request_module("ieee80211_crypt_ccmp");
2850 ops = ieee80211_get_crypto_ops(param->u.crypt.alg); 2847 ops = ieee80211_get_crypto_ops(param->u.crypt.alg);
2851 }
2852 if (ops == NULL) { 2848 if (ops == NULL) {
2853 printk("unknown crypto alg '%s'\n", param->u.crypt.alg); 2849 printk("unknown crypto alg '%s'\n", param->u.crypt.alg);
2854 param->u.crypt.err = IEEE_CRYPT_ERR_UNKNOWN_ALG; 2850 param->u.crypt.err = IEEE_CRYPT_ERR_UNKNOWN_ALG;
@@ -2869,7 +2865,7 @@ static int ieee80211_wpa_set_encryption(struct ieee80211_device *ieee,
2869 } 2865 }
2870 memset(new_crypt, 0, sizeof(struct ieee80211_crypt_data)); 2866 memset(new_crypt, 0, sizeof(struct ieee80211_crypt_data));
2871 new_crypt->ops = ops; 2867 new_crypt->ops = ops;
2872 if (new_crypt->ops && try_module_get(new_crypt->ops->owner)) 2868 if (new_crypt->ops)
2873 new_crypt->priv = 2869 new_crypt->priv =
2874 new_crypt->ops->init(param->u.crypt.idx); 2870 new_crypt->ops->init(param->u.crypt.idx);
2875 2871
diff --git a/drivers/staging/rtl8187se/ieee80211/ieee80211_wx.c b/drivers/staging/rtl8187se/ieee80211/ieee80211_wx.c
index 8d8bdd0a130e..a08b97a09512 100644
--- a/drivers/staging/rtl8187se/ieee80211/ieee80211_wx.c
+++ b/drivers/staging/rtl8187se/ieee80211/ieee80211_wx.c
@@ -331,12 +331,10 @@ int ieee80211_wx_set_encode(struct ieee80211_device *ieee,
331 return -ENOMEM; 331 return -ENOMEM;
332 memset(new_crypt, 0, sizeof(struct ieee80211_crypt_data)); 332 memset(new_crypt, 0, sizeof(struct ieee80211_crypt_data));
333 new_crypt->ops = ieee80211_get_crypto_ops("WEP"); 333 new_crypt->ops = ieee80211_get_crypto_ops("WEP");
334 if (!new_crypt->ops) { 334 if (!new_crypt->ops)
335 request_module("ieee80211_crypt_wep");
336 new_crypt->ops = ieee80211_get_crypto_ops("WEP"); 335 new_crypt->ops = ieee80211_get_crypto_ops("WEP");
337 }
338 336
339 if (new_crypt->ops && try_module_get(new_crypt->ops->owner)) 337 if (new_crypt->ops)
340 new_crypt->priv = new_crypt->ops->init(key); 338 new_crypt->priv = new_crypt->ops->init(key);
341 339
342 if (!new_crypt->ops || !new_crypt->priv) { 340 if (!new_crypt->ops || !new_crypt->priv) {
@@ -483,7 +481,7 @@ int ieee80211_wx_set_encode_ext(struct ieee80211_device *ieee,
483 struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; 481 struct iw_encode_ext *ext = (struct iw_encode_ext *)extra;
484 int i, idx, ret = 0; 482 int i, idx, ret = 0;
485 int group_key = 0; 483 int group_key = 0;
486 const char *alg, *module; 484 const char *alg;
487 struct ieee80211_crypto_ops *ops; 485 struct ieee80211_crypto_ops *ops;
488 struct ieee80211_crypt_data **crypt; 486 struct ieee80211_crypt_data **crypt;
489 487
@@ -539,15 +537,12 @@ int ieee80211_wx_set_encode_ext(struct ieee80211_device *ieee,
539 switch (ext->alg) { 537 switch (ext->alg) {
540 case IW_ENCODE_ALG_WEP: 538 case IW_ENCODE_ALG_WEP:
541 alg = "WEP"; 539 alg = "WEP";
542 module = "ieee80211_crypt_wep";
543 break; 540 break;
544 case IW_ENCODE_ALG_TKIP: 541 case IW_ENCODE_ALG_TKIP:
545 alg = "TKIP"; 542 alg = "TKIP";
546 module = "ieee80211_crypt_tkip";
547 break; 543 break;
548 case IW_ENCODE_ALG_CCMP: 544 case IW_ENCODE_ALG_CCMP:
549 alg = "CCMP"; 545 alg = "CCMP";
550 module = "ieee80211_crypt_ccmp";
551 break; 546 break;
552 default: 547 default:
553 IEEE80211_DEBUG_WX("%s: unknown crypto alg %d\n", 548 IEEE80211_DEBUG_WX("%s: unknown crypto alg %d\n",
@@ -558,10 +553,8 @@ int ieee80211_wx_set_encode_ext(struct ieee80211_device *ieee,
558// printk("8-09-08-9=====>%s, alg name:%s\n",__func__, alg); 553// printk("8-09-08-9=====>%s, alg name:%s\n",__func__, alg);
559 554
560 ops = ieee80211_get_crypto_ops(alg); 555 ops = ieee80211_get_crypto_ops(alg);
561 if (ops == NULL) { 556 if (ops == NULL)
562 request_module(module);
563 ops = ieee80211_get_crypto_ops(alg); 557 ops = ieee80211_get_crypto_ops(alg);
564 }
565 if (ops == NULL) { 558 if (ops == NULL) {
566 IEEE80211_DEBUG_WX("%s: unknown crypto alg %d\n", 559 IEEE80211_DEBUG_WX("%s: unknown crypto alg %d\n",
567 dev->name, ext->alg); 560 dev->name, ext->alg);
@@ -581,7 +574,7 @@ int ieee80211_wx_set_encode_ext(struct ieee80211_device *ieee,
581 goto done; 574 goto done;
582 } 575 }
583 new_crypt->ops = ops; 576 new_crypt->ops = ops;
584 if (new_crypt->ops && try_module_get(new_crypt->ops->owner)) 577 if (new_crypt->ops)
585 new_crypt->priv = new_crypt->ops->init(idx); 578 new_crypt->priv = new_crypt->ops->init(idx);
586 if (new_crypt->priv == NULL) { 579 if (new_crypt->priv == NULL) {
587 kfree(new_crypt); 580 kfree(new_crypt);
diff --git a/drivers/staging/rtl8192e/Kconfig b/drivers/staging/rtl8192e/Kconfig
index 3100aa58c940..37e4fde45073 100644
--- a/drivers/staging/rtl8192e/Kconfig
+++ b/drivers/staging/rtl8192e/Kconfig
@@ -1,6 +1,6 @@
1config RTL8192E 1config RTL8192E
2 tristate "RealTek RTL8192E Wireless LAN NIC driver" 2 tristate "RealTek RTL8192E Wireless LAN NIC driver"
3 depends on PCI 3 depends on PCI && WLAN
4 depends on WIRELESS_EXT 4 depends on WIRELESS_EXT
5 default N 5 default N
6 ---help--- 6 ---help---
diff --git a/drivers/staging/rtl8192e/ieee80211/ieee80211_crypt.c b/drivers/staging/rtl8192e/ieee80211/ieee80211_crypt.c
index 1a8ea8a40c3c..b1c54932da3e 100644
--- a/drivers/staging/rtl8192e/ieee80211/ieee80211_crypt.c
+++ b/drivers/staging/rtl8192e/ieee80211/ieee80211_crypt.c
@@ -53,14 +53,8 @@ void ieee80211_crypt_deinit_entries(struct ieee80211_device *ieee,
53 53
54 list_del(ptr); 54 list_del(ptr);
55 55
56 if (entry->ops) { 56 if (entry->ops)
57 entry->ops->deinit(entry->priv); 57 entry->ops->deinit(entry->priv);
58#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
59 module_put(entry->ops->owner);
60#else
61 __MOD_DEC_USE_COUNT(entry->ops->owner);
62#endif
63 }
64 kfree(entry); 58 kfree(entry);
65 } 59 }
66} 60}
diff --git a/drivers/staging/rtl8192e/ieee80211/ieee80211_module.c b/drivers/staging/rtl8192e/ieee80211/ieee80211_module.c
index 16256a31f993..12c2a18e1fa2 100644
--- a/drivers/staging/rtl8192e/ieee80211/ieee80211_module.c
+++ b/drivers/staging/rtl8192e/ieee80211/ieee80211_module.c
@@ -242,14 +242,8 @@ void free_ieee80211(struct net_device *dev)
242 for (i = 0; i < WEP_KEYS; i++) { 242 for (i = 0; i < WEP_KEYS; i++) {
243 struct ieee80211_crypt_data *crypt = ieee->crypt[i]; 243 struct ieee80211_crypt_data *crypt = ieee->crypt[i];
244 if (crypt) { 244 if (crypt) {
245 if (crypt->ops) { 245 if (crypt->ops)
246 crypt->ops->deinit(crypt->priv); 246 crypt->ops->deinit(crypt->priv);
247#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
248 module_put(crypt->ops->owner);
249#else
250 __MOD_DEC_USE_COUNT(crypt->ops->owner);
251#endif
252 }
253 kfree(crypt); 247 kfree(crypt);
254 ieee->crypt[i] = NULL; 248 ieee->crypt[i] = NULL;
255 } 249 }
diff --git a/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c
index 2fc04df872ca..eae7c4579a68 100644
--- a/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c
+++ b/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c
@@ -3284,17 +3284,14 @@ static int ieee80211_wpa_set_encryption(struct ieee80211_device *ieee,
3284 goto skip_host_crypt; 3284 goto skip_host_crypt;
3285 3285
3286 ops = ieee80211_get_crypto_ops(param->u.crypt.alg); 3286 ops = ieee80211_get_crypto_ops(param->u.crypt.alg);
3287 if (ops == NULL && strcmp(param->u.crypt.alg, "WEP") == 0) { 3287 if (ops == NULL && strcmp(param->u.crypt.alg, "WEP") == 0)
3288 request_module("ieee80211_crypt_wep");
3289 ops = ieee80211_get_crypto_ops(param->u.crypt.alg); 3288 ops = ieee80211_get_crypto_ops(param->u.crypt.alg);
3290 //set WEP40 first, it will be modified according to WEP104 or WEP40 at other place 3289 /* set WEP40 first, it will be modified according to WEP104 or
3291 } else if (ops == NULL && strcmp(param->u.crypt.alg, "TKIP") == 0) { 3290 * WEP40 at other place */
3292 request_module("ieee80211_crypt_tkip"); 3291 else if (ops == NULL && strcmp(param->u.crypt.alg, "TKIP") == 0)
3293 ops = ieee80211_get_crypto_ops(param->u.crypt.alg); 3292 ops = ieee80211_get_crypto_ops(param->u.crypt.alg);
3294 } else if (ops == NULL && strcmp(param->u.crypt.alg, "CCMP") == 0) { 3293 else if (ops == NULL && strcmp(param->u.crypt.alg, "CCMP") == 0)
3295 request_module("ieee80211_crypt_ccmp");
3296 ops = ieee80211_get_crypto_ops(param->u.crypt.alg); 3294 ops = ieee80211_get_crypto_ops(param->u.crypt.alg);
3297 }
3298 if (ops == NULL) { 3295 if (ops == NULL) {
3299 printk("unknown crypto alg '%s'\n", param->u.crypt.alg); 3296 printk("unknown crypto alg '%s'\n", param->u.crypt.alg);
3300 param->u.crypt.err = IEEE_CRYPT_ERR_UNKNOWN_ALG; 3297 param->u.crypt.err = IEEE_CRYPT_ERR_UNKNOWN_ALG;
@@ -3315,11 +3312,7 @@ static int ieee80211_wpa_set_encryption(struct ieee80211_device *ieee,
3315 } 3312 }
3316 memset(new_crypt, 0, sizeof(struct ieee80211_crypt_data)); 3313 memset(new_crypt, 0, sizeof(struct ieee80211_crypt_data));
3317 new_crypt->ops = ops; 3314 new_crypt->ops = ops;
3318#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) 3315 if (new_crypt->ops)
3319 if (new_crypt->ops && try_module_get(new_crypt->ops->owner))
3320#else
3321 if (new_crypt->ops && try_inc_mod_count(new_crypt->ops->owner))
3322#endif
3323 new_crypt->priv = 3316 new_crypt->priv =
3324 new_crypt->ops->init(param->u.crypt.idx); 3317 new_crypt->ops->init(param->u.crypt.idx);
3325 3318
diff --git a/drivers/staging/rtl8192e/ieee80211/ieee80211_wx.c b/drivers/staging/rtl8192e/ieee80211/ieee80211_wx.c
index 223483126b0e..4e34a1f4c66b 100644
--- a/drivers/staging/rtl8192e/ieee80211/ieee80211_wx.c
+++ b/drivers/staging/rtl8192e/ieee80211/ieee80211_wx.c
@@ -482,15 +482,9 @@ int ieee80211_wx_set_encode(struct ieee80211_device *ieee,
482 return -ENOMEM; 482 return -ENOMEM;
483 memset(new_crypt, 0, sizeof(struct ieee80211_crypt_data)); 483 memset(new_crypt, 0, sizeof(struct ieee80211_crypt_data));
484 new_crypt->ops = ieee80211_get_crypto_ops("WEP"); 484 new_crypt->ops = ieee80211_get_crypto_ops("WEP");
485 if (!new_crypt->ops) { 485 if (!new_crypt->ops)
486 request_module("ieee80211_crypt_wep");
487 new_crypt->ops = ieee80211_get_crypto_ops("WEP"); 486 new_crypt->ops = ieee80211_get_crypto_ops("WEP");
488 } 487 if (new_crypt->ops)
489#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
490 if (new_crypt->ops && try_module_get(new_crypt->ops->owner))
491#else
492 if (new_crypt->ops && try_inc_mod_count(new_crypt->ops->owner))
493#endif
494 new_crypt->priv = new_crypt->ops->init(key); 488 new_crypt->priv = new_crypt->ops->init(key);
495 489
496 if (!new_crypt->ops || !new_crypt->priv) { 490 if (!new_crypt->ops || !new_crypt->priv) {
@@ -644,7 +638,7 @@ int ieee80211_wx_set_encode_ext(struct ieee80211_device *ieee,
644 struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; 638 struct iw_encode_ext *ext = (struct iw_encode_ext *)extra;
645 int i, idx; 639 int i, idx;
646 int group_key = 0; 640 int group_key = 0;
647 const char *alg, *module; 641 const char *alg;
648 struct ieee80211_crypto_ops *ops; 642 struct ieee80211_crypto_ops *ops;
649 struct ieee80211_crypt_data **crypt; 643 struct ieee80211_crypt_data **crypt;
650 644
@@ -711,15 +705,12 @@ int ieee80211_wx_set_encode_ext(struct ieee80211_device *ieee,
711 switch (ext->alg) { 705 switch (ext->alg) {
712 case IW_ENCODE_ALG_WEP: 706 case IW_ENCODE_ALG_WEP:
713 alg = "WEP"; 707 alg = "WEP";
714 module = "ieee80211_crypt_wep";
715 break; 708 break;
716 case IW_ENCODE_ALG_TKIP: 709 case IW_ENCODE_ALG_TKIP:
717 alg = "TKIP"; 710 alg = "TKIP";
718 module = "ieee80211_crypt_tkip";
719 break; 711 break;
720 case IW_ENCODE_ALG_CCMP: 712 case IW_ENCODE_ALG_CCMP:
721 alg = "CCMP"; 713 alg = "CCMP";
722 module = "ieee80211_crypt_ccmp";
723 break; 714 break;
724 default: 715 default:
725 IEEE80211_DEBUG_WX("%s: unknown crypto alg %d\n", 716 IEEE80211_DEBUG_WX("%s: unknown crypto alg %d\n",
@@ -730,10 +721,8 @@ int ieee80211_wx_set_encode_ext(struct ieee80211_device *ieee,
730 printk("alg name:%s\n",alg); 721 printk("alg name:%s\n",alg);
731 722
732 ops = ieee80211_get_crypto_ops(alg); 723 ops = ieee80211_get_crypto_ops(alg);
733 if (ops == NULL) { 724 if (ops == NULL)
734 request_module(module);
735 ops = ieee80211_get_crypto_ops(alg); 725 ops = ieee80211_get_crypto_ops(alg);
736 }
737 if (ops == NULL) { 726 if (ops == NULL) {
738 IEEE80211_DEBUG_WX("%s: unknown crypto alg %d\n", 727 IEEE80211_DEBUG_WX("%s: unknown crypto alg %d\n",
739 dev->name, ext->alg); 728 dev->name, ext->alg);
@@ -758,7 +747,7 @@ int ieee80211_wx_set_encode_ext(struct ieee80211_device *ieee,
758 goto done; 747 goto done;
759 } 748 }
760 new_crypt->ops = ops; 749 new_crypt->ops = ops;
761 if (new_crypt->ops && try_module_get(new_crypt->ops->owner)) 750 if (new_crypt->ops)
762 new_crypt->priv = new_crypt->ops->init(idx); 751 new_crypt->priv = new_crypt->ops->init(idx);
763 if (new_crypt->priv == NULL) { 752 if (new_crypt->priv == NULL) {
764 kfree(new_crypt); 753 kfree(new_crypt);
diff --git a/drivers/staging/rtl8192su/Kconfig b/drivers/staging/rtl8192su/Kconfig
index 770f41280f21..b8c95f942069 100644
--- a/drivers/staging/rtl8192su/Kconfig
+++ b/drivers/staging/rtl8192su/Kconfig
@@ -1,6 +1,6 @@
1config RTL8192SU 1config RTL8192SU
2 tristate "RealTek RTL8192SU Wireless LAN NIC driver" 2 tristate "RealTek RTL8192SU Wireless LAN NIC driver"
3 depends on PCI 3 depends on PCI && WLAN
4 depends on WIRELESS_EXT 4 depends on WIRELESS_EXT
5 default N 5 default N
6 ---help--- 6 ---help---
diff --git a/drivers/staging/rtl8192su/TODO b/drivers/staging/rtl8192su/TODO
index b13be9edb278..f11eec700030 100644
--- a/drivers/staging/rtl8192su/TODO
+++ b/drivers/staging/rtl8192su/TODO
@@ -14,5 +14,4 @@ TODO:
14- sparse fixes 14- sparse fixes
15- integrate with drivers/net/wireless/rtl818x 15- integrate with drivers/net/wireless/rtl818x
16 16
17Please send any patches to Greg Kroah-Hartman <greg@kroah.com> and 17Please send any patches to Greg Kroah-Hartman <greg@kroah.com>.
18Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>.
diff --git a/drivers/staging/rtl8192su/ieee80211/ieee80211_crypt.c b/drivers/staging/rtl8192su/ieee80211/ieee80211_crypt.c
index d76a54d59d2f..521e7b989934 100644
--- a/drivers/staging/rtl8192su/ieee80211/ieee80211_crypt.c
+++ b/drivers/staging/rtl8192su/ieee80211/ieee80211_crypt.c
@@ -53,10 +53,8 @@ void ieee80211_crypt_deinit_entries(struct ieee80211_device *ieee,
53 53
54 list_del(ptr); 54 list_del(ptr);
55 55
56 if (entry->ops) { 56 if (entry->ops)
57 entry->ops->deinit(entry->priv); 57 entry->ops->deinit(entry->priv);
58 module_put(entry->ops->owner);
59 }
60 kfree(entry); 58 kfree(entry);
61 } 59 }
62} 60}
diff --git a/drivers/staging/rtl8192su/ieee80211/ieee80211_module.c b/drivers/staging/rtl8192su/ieee80211/ieee80211_module.c
index 68dc8fa094cc..c3383bb8b760 100644
--- a/drivers/staging/rtl8192su/ieee80211/ieee80211_module.c
+++ b/drivers/staging/rtl8192su/ieee80211/ieee80211_module.c
@@ -216,10 +216,8 @@ void free_ieee80211(struct net_device *dev)
216 for (i = 0; i < WEP_KEYS; i++) { 216 for (i = 0; i < WEP_KEYS; i++) {
217 struct ieee80211_crypt_data *crypt = ieee->crypt[i]; 217 struct ieee80211_crypt_data *crypt = ieee->crypt[i];
218 if (crypt) { 218 if (crypt) {
219 if (crypt->ops) { 219 if (crypt->ops)
220 crypt->ops->deinit(crypt->priv); 220 crypt->ops->deinit(crypt->priv);
221 module_put(crypt->ops->owner);
222 }
223 kfree(crypt); 221 kfree(crypt);
224 ieee->crypt[i] = NULL; 222 ieee->crypt[i] = NULL;
225 } 223 }
diff --git a/drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c
index c64ae03f68a0..fd8e11252f1b 100644
--- a/drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c
+++ b/drivers/staging/rtl8192su/ieee80211/ieee80211_softmac.c
@@ -3026,17 +3026,14 @@ static int ieee80211_wpa_set_encryption(struct ieee80211_device *ieee,
3026 goto skip_host_crypt; 3026 goto skip_host_crypt;
3027 3027
3028 ops = ieee80211_get_crypto_ops(param->u.crypt.alg); 3028 ops = ieee80211_get_crypto_ops(param->u.crypt.alg);
3029 if (ops == NULL && strcmp(param->u.crypt.alg, "WEP") == 0) { 3029 if (ops == NULL && strcmp(param->u.crypt.alg, "WEP") == 0)
3030 request_module("ieee80211_crypt_wep");
3031 ops = ieee80211_get_crypto_ops(param->u.crypt.alg); 3030 ops = ieee80211_get_crypto_ops(param->u.crypt.alg);
3032 //set WEP40 first, it will be modified according to WEP104 or WEP40 at other place 3031 /* set WEP40 first, it will be modified according to WEP104 or
3033 } else if (ops == NULL && strcmp(param->u.crypt.alg, "TKIP") == 0) { 3032 * WEP40 at other place */
3034 request_module("ieee80211_crypt_tkip"); 3033 else if (ops == NULL && strcmp(param->u.crypt.alg, "TKIP") == 0)
3035 ops = ieee80211_get_crypto_ops(param->u.crypt.alg); 3034 ops = ieee80211_get_crypto_ops(param->u.crypt.alg);
3036 } else if (ops == NULL && strcmp(param->u.crypt.alg, "CCMP") == 0) { 3035 else if (ops == NULL && strcmp(param->u.crypt.alg, "CCMP") == 0)
3037 request_module("ieee80211_crypt_ccmp");
3038 ops = ieee80211_get_crypto_ops(param->u.crypt.alg); 3036 ops = ieee80211_get_crypto_ops(param->u.crypt.alg);
3039 }
3040 if (ops == NULL) { 3037 if (ops == NULL) {
3041 printk("unknown crypto alg '%s'\n", param->u.crypt.alg); 3038 printk("unknown crypto alg '%s'\n", param->u.crypt.alg);
3042 param->u.crypt.err = IEEE_CRYPT_ERR_UNKNOWN_ALG; 3039 param->u.crypt.err = IEEE_CRYPT_ERR_UNKNOWN_ALG;
@@ -3058,7 +3055,7 @@ static int ieee80211_wpa_set_encryption(struct ieee80211_device *ieee,
3058 memset(new_crypt, 0, sizeof(struct ieee80211_crypt_data)); 3055 memset(new_crypt, 0, sizeof(struct ieee80211_crypt_data));
3059 new_crypt->ops = ops; 3056 new_crypt->ops = ops;
3060 3057
3061 if (new_crypt->ops && try_module_get(new_crypt->ops->owner)) 3058 if (new_crypt->ops)
3062 new_crypt->priv = 3059 new_crypt->priv =
3063 new_crypt->ops->init(param->u.crypt.idx); 3060 new_crypt->ops->init(param->u.crypt.idx);
3064 3061
diff --git a/drivers/staging/rtl8192su/ieee80211/ieee80211_wx.c b/drivers/staging/rtl8192su/ieee80211/ieee80211_wx.c
index 107759024335..6146c6435dde 100644
--- a/drivers/staging/rtl8192su/ieee80211/ieee80211_wx.c
+++ b/drivers/staging/rtl8192su/ieee80211/ieee80211_wx.c
@@ -358,11 +358,9 @@ int ieee80211_wx_set_encode(struct ieee80211_device *ieee,
358 return -ENOMEM; 358 return -ENOMEM;
359 memset(new_crypt, 0, sizeof(struct ieee80211_crypt_data)); 359 memset(new_crypt, 0, sizeof(struct ieee80211_crypt_data));
360 new_crypt->ops = ieee80211_get_crypto_ops("WEP"); 360 new_crypt->ops = ieee80211_get_crypto_ops("WEP");
361 if (!new_crypt->ops) { 361 if (!new_crypt->ops)
362 request_module("ieee80211_crypt_wep");
363 new_crypt->ops = ieee80211_get_crypto_ops("WEP"); 362 new_crypt->ops = ieee80211_get_crypto_ops("WEP");
364 } 363 if (new_crypt->ops)
365 if (new_crypt->ops && try_module_get(new_crypt->ops->owner))
366 new_crypt->priv = new_crypt->ops->init(key); 364 new_crypt->priv = new_crypt->ops->init(key);
367 365
368 if (!new_crypt->ops || !new_crypt->priv) { 366 if (!new_crypt->ops || !new_crypt->priv) {
@@ -507,7 +505,7 @@ int ieee80211_wx_set_encode_ext(struct ieee80211_device *ieee,
507 struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; 505 struct iw_encode_ext *ext = (struct iw_encode_ext *)extra;
508 int i, idx; 506 int i, idx;
509 int group_key = 0; 507 int group_key = 0;
510 const char *alg, *module; 508 const char *alg;
511 struct ieee80211_crypto_ops *ops; 509 struct ieee80211_crypto_ops *ops;
512 struct ieee80211_crypt_data **crypt; 510 struct ieee80211_crypt_data **crypt;
513 511
@@ -570,15 +568,12 @@ int ieee80211_wx_set_encode_ext(struct ieee80211_device *ieee,
570 switch (ext->alg) { 568 switch (ext->alg) {
571 case IW_ENCODE_ALG_WEP: 569 case IW_ENCODE_ALG_WEP:
572 alg = "WEP"; 570 alg = "WEP";
573 module = "ieee80211_crypt_wep";
574 break; 571 break;
575 case IW_ENCODE_ALG_TKIP: 572 case IW_ENCODE_ALG_TKIP:
576 alg = "TKIP"; 573 alg = "TKIP";
577 module = "ieee80211_crypt_tkip";
578 break; 574 break;
579 case IW_ENCODE_ALG_CCMP: 575 case IW_ENCODE_ALG_CCMP:
580 alg = "CCMP"; 576 alg = "CCMP";
581 module = "ieee80211_crypt_ccmp";
582 break; 577 break;
583 default: 578 default:
584 IEEE80211_DEBUG_WX("%s: unknown crypto alg %d\n", 579 IEEE80211_DEBUG_WX("%s: unknown crypto alg %d\n",
@@ -589,10 +584,8 @@ int ieee80211_wx_set_encode_ext(struct ieee80211_device *ieee,
589 printk("alg name:%s\n",alg); 584 printk("alg name:%s\n",alg);
590 585
591 ops = ieee80211_get_crypto_ops(alg); 586 ops = ieee80211_get_crypto_ops(alg);
592 if (ops == NULL) { 587 if (ops == NULL)
593 request_module("%s", module);
594 ops = ieee80211_get_crypto_ops(alg); 588 ops = ieee80211_get_crypto_ops(alg);
595 }
596 if (ops == NULL) { 589 if (ops == NULL) {
597 IEEE80211_DEBUG_WX("%s: unknown crypto alg %d\n", 590 IEEE80211_DEBUG_WX("%s: unknown crypto alg %d\n",
598 dev->name, ext->alg); 591 dev->name, ext->alg);
@@ -612,7 +605,7 @@ int ieee80211_wx_set_encode_ext(struct ieee80211_device *ieee,
612 goto done; 605 goto done;
613 } 606 }
614 new_crypt->ops = ops; 607 new_crypt->ops = ops;
615 if (new_crypt->ops && try_module_get(new_crypt->ops->owner)) 608 if (new_crypt->ops)
616 new_crypt->priv = new_crypt->ops->init(idx); 609 new_crypt->priv = new_crypt->ops->init(idx);
617 if (new_crypt->priv == NULL) { 610 if (new_crypt->priv == NULL) {
618 kfree(new_crypt); 611 kfree(new_crypt);
diff --git a/drivers/staging/stlc45xx/Kconfig b/drivers/staging/stlc45xx/Kconfig
deleted file mode 100644
index 947fb75a9c68..000000000000
--- a/drivers/staging/stlc45xx/Kconfig
+++ /dev/null
@@ -1,8 +0,0 @@
1config STLC45XX
2 tristate "stlc4550/4560 support"
3 depends on MAC80211 && WLAN_80211 && SPI_MASTER && GENERIC_HARDIRQS
4 ---help---
5 This is a driver for stlc4550 and stlc4560 chipsets.
6
7 To compile this driver as a module, choose M here: the module will be
8 called stlc45xx. If unsure, say N.
diff --git a/drivers/staging/stlc45xx/Makefile b/drivers/staging/stlc45xx/Makefile
deleted file mode 100644
index 7ee32903055a..000000000000
--- a/drivers/staging/stlc45xx/Makefile
+++ /dev/null
@@ -1 +0,0 @@
1obj-$(CONFIG_STLC45XX) += stlc45xx.o
diff --git a/drivers/staging/stlc45xx/stlc45xx.c b/drivers/staging/stlc45xx/stlc45xx.c
deleted file mode 100644
index be99eb33d817..000000000000
--- a/drivers/staging/stlc45xx/stlc45xx.c
+++ /dev/null
@@ -1,2594 +0,0 @@
1/*
2 * This file is part of stlc45xx
3 *
4 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
5 *
6 * Contact: Kalle Valo <kalle.valo@nokia.com>
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * version 2 as published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20 * 02110-1301 USA
21 *
22 */
23
24#include "stlc45xx.h"
25
26#include <linux/module.h>
27#include <linux/platform_device.h>
28#include <linux/interrupt.h>
29#include <linux/firmware.h>
30#include <linux/delay.h>
31#include <linux/irq.h>
32#include <linux/spi/spi.h>
33#include <linux/etherdevice.h>
34#include <linux/gpio.h>
35#include <linux/moduleparam.h>
36
37#include "stlc45xx_lmac.h"
38
39/*
40 * gpios should be handled in board files and provided via platform data,
41 * but because it's currently impossible for stlc45xx to have a header file
42 * in include/linux, let's use module paramaters for now
43 */
44static int stlc45xx_gpio_power = 97;
45module_param(stlc45xx_gpio_power, int, 0444);
46MODULE_PARM_DESC(stlc45xx_gpio_power, "stlc45xx gpio number for power line");
47
48static int stlc45xx_gpio_irq = 87;
49module_param(stlc45xx_gpio_irq, int, 0444);
50MODULE_PARM_DESC(stlc45xx_gpio_irq, "stlc45xx gpio number for irq line");
51
52static const u8 default_cal_channels[] = {
53 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
54 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x09,
55 0x00, 0x00, 0xc9, 0xff, 0xd8, 0xff, 0x00, 0x00, 0x00, 0x01, 0x10,
56 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0xe0, 0x00, 0xe0, 0x00,
57 0xe0, 0x00, 0xe0, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xd0,
58 0x00, 0x54, 0x01, 0xab, 0xf6, 0xc0, 0x42, 0xc0, 0x42, 0xc0, 0x42,
59 0xc0, 0x42, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00,
60 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x22, 0x01, 0x37, 0xa9,
61 0xc0, 0x33, 0xc0, 0x33, 0xc0, 0x33, 0xc0, 0x33, 0x00, 0xbc, 0x00,
62 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc,
63 0x00, 0xbc, 0xfb, 0x00, 0xca, 0x79, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0,
64 0x2b, 0xc0, 0x2b, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4,
65 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0xd0, 0x00, 0x5d,
66 0x54, 0xc0, 0x21, 0xc0, 0x21, 0xc0, 0x21, 0xc0, 0x21, 0x00, 0xaa,
67 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00,
68 0xaa, 0x00, 0xaa, 0xa7, 0x00, 0xa9, 0x3d, 0xc0, 0x17, 0xc0, 0x17,
69 0xc0, 0x17, 0xc0, 0x17, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00,
70 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x7a, 0x00,
71 0x06, 0x2c, 0xc0, 0x0d, 0xc0, 0x0d, 0xc0, 0x0d, 0xc0, 0x0d, 0x00,
72 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96,
73 0x00, 0x96, 0x00, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
74 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
75 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
76 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
77 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
78 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
79 0x00, 0x00, 0x06, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
80 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
81 0x00, 0x00, 0x00, 0x00, 0x71, 0x09, 0x00, 0x00, 0xc9, 0xff, 0xd8,
82 0xff, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01,
83 0x10, 0x01, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xd0,
84 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0x54, 0x01, 0xab, 0xf6,
85 0xc0, 0x42, 0xc0, 0x42, 0xc0, 0x42, 0xc0, 0x42, 0x00, 0xcb, 0x00,
86 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb,
87 0x00, 0xcb, 0x22, 0x01, 0x37, 0xa9, 0xc0, 0x33, 0xc0, 0x33, 0xc0,
88 0x33, 0xc0, 0x33, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc,
89 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0xfb, 0x00, 0xca,
90 0x79, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0x00, 0xb4,
91 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00,
92 0xb4, 0x00, 0xb4, 0xd0, 0x00, 0x5d, 0x54, 0xc0, 0x21, 0xc0, 0x21,
93 0xc0, 0x21, 0xc0, 0x21, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00,
94 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0xa7, 0x00,
95 0xa9, 0x3d, 0xc0, 0x17, 0xc0, 0x17, 0xc0, 0x17, 0xc0, 0x17, 0x00,
96 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0,
97 0x00, 0xa0, 0x00, 0xa0, 0x7a, 0x00, 0x06, 0x2c, 0xc0, 0x0d, 0xc0,
98 0x0d, 0xc0, 0x0d, 0xc0, 0x0d, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96,
99 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00,
100 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
101 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
102 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
103 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
104 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
105 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x80,
106 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
107 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76,
108 0x09, 0x00, 0x00, 0xc9, 0xff, 0xd8, 0xff, 0x00, 0x00, 0x00, 0x01,
109 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0xf0, 0x00, 0xf0,
110 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xd0, 0x00,
111 0xd0, 0x00, 0x54, 0x01, 0xab, 0xf6, 0xc0, 0x42, 0xc0, 0x42, 0xc0,
112 0x42, 0xc0, 0x42, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb,
113 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x22, 0x01, 0x37,
114 0xa9, 0xc0, 0x33, 0xc0, 0x33, 0xc0, 0x33, 0xc0, 0x33, 0x00, 0xbc,
115 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00,
116 0xbc, 0x00, 0xbc, 0xfb, 0x00, 0xca, 0x79, 0xc0, 0x2b, 0xc0, 0x2b,
117 0xc0, 0x2b, 0xc0, 0x2b, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00,
118 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0xd0, 0x00,
119 0x5d, 0x54, 0xc0, 0x21, 0xc0, 0x21, 0xc0, 0x21, 0xc0, 0x21, 0x00,
120 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa,
121 0x00, 0xaa, 0x00, 0xaa, 0xa7, 0x00, 0xa9, 0x3d, 0xc0, 0x17, 0xc0,
122 0x17, 0xc0, 0x17, 0xc0, 0x17, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0,
123 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x7a,
124 0x00, 0x06, 0x2c, 0xc0, 0x0d, 0xc0, 0x0d, 0xc0, 0x0d, 0xc0, 0x0d,
125 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00,
126 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
127 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
128 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
129 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
130 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
131 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
132 0x00, 0x00, 0x00, 0x06, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
133 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
134 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x09, 0x00, 0x00, 0xc9, 0xff,
135 0xd8, 0xff, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10,
136 0x01, 0x10, 0x01, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00,
137 0xd0, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0x54, 0x01, 0xab,
138 0xf6, 0xc0, 0x42, 0xc0, 0x42, 0xc0, 0x42, 0xc0, 0x42, 0x00, 0xcb,
139 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00,
140 0xcb, 0x00, 0xcb, 0x22, 0x01, 0x37, 0xa9, 0xc0, 0x33, 0xc0, 0x33,
141 0xc0, 0x33, 0xc0, 0x33, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00,
142 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0xfb, 0x00,
143 0xca, 0x79, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0x00,
144 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4,
145 0x00, 0xb4, 0x00, 0xb4, 0xd0, 0x00, 0x5d, 0x54, 0xc0, 0x21, 0xc0,
146 0x21, 0xc0, 0x21, 0xc0, 0x21, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa,
147 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0xa7,
148 0x00, 0xa9, 0x3d, 0xc0, 0x17, 0xc0, 0x17, 0xc0, 0x17, 0xc0, 0x17,
149 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00,
150 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x7a, 0x00, 0x06, 0x2c, 0xc0, 0x0d,
151 0xc0, 0x0d, 0xc0, 0x0d, 0xc0, 0x0d, 0x00, 0x96, 0x00, 0x96, 0x00,
152 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96,
153 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
154 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
155 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
156 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
157 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
158 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80,
159 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
160 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
161 0x80, 0x09, 0x00, 0x00, 0xc9, 0xff, 0xd8, 0xff, 0x00, 0x00, 0x00,
162 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0xf0, 0x00,
163 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xd0,
164 0x00, 0xd0, 0x00, 0x54, 0x01, 0xab, 0xf6, 0xc0, 0x42, 0xc0, 0x42,
165 0xc0, 0x42, 0xc0, 0x42, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00,
166 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x22, 0x01,
167 0x37, 0xa9, 0xc0, 0x33, 0xc0, 0x33, 0xc0, 0x33, 0xc0, 0x33, 0x00,
168 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc,
169 0x00, 0xbc, 0x00, 0xbc, 0xfb, 0x00, 0xca, 0x79, 0xc0, 0x2b, 0xc0,
170 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4,
171 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0xd0,
172 0x00, 0x5d, 0x54, 0xc0, 0x21, 0xc0, 0x21, 0xc0, 0x21, 0xc0, 0x21,
173 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00,
174 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0xa7, 0x00, 0xa9, 0x3d, 0xc0, 0x17,
175 0xc0, 0x17, 0xc0, 0x17, 0xc0, 0x17, 0x00, 0xa0, 0x00, 0xa0, 0x00,
176 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0,
177 0x7a, 0x00, 0x06, 0x2c, 0xc0, 0x0d, 0xc0, 0x0d, 0xc0, 0x0d, 0xc0,
178 0x0d, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96,
179 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00,
180 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
181 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
182 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
183 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
184 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
185 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
186 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
187 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x09, 0x00, 0x00, 0xc9,
188 0xff, 0xd8, 0xff, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0x10, 0x01,
189 0x10, 0x01, 0x10, 0x01, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0,
190 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0x54, 0x01,
191 0xab, 0xf6, 0xc0, 0x42, 0xc0, 0x42, 0xc0, 0x42, 0xc0, 0x42, 0x00,
192 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb,
193 0x00, 0xcb, 0x00, 0xcb, 0x22, 0x01, 0x37, 0xa9, 0xc0, 0x33, 0xc0,
194 0x33, 0xc0, 0x33, 0xc0, 0x33, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc,
195 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0xfb,
196 0x00, 0xca, 0x79, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b,
197 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00,
198 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0xd0, 0x00, 0x5d, 0x54, 0xc0, 0x21,
199 0xc0, 0x21, 0xc0, 0x21, 0xc0, 0x21, 0x00, 0xaa, 0x00, 0xaa, 0x00,
200 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa,
201 0xa7, 0x00, 0xa9, 0x3d, 0xc0, 0x17, 0xc0, 0x17, 0xc0, 0x17, 0xc0,
202 0x17, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0,
203 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x7a, 0x00, 0x06, 0x2c, 0xc0,
204 0x0d, 0xc0, 0x0d, 0xc0, 0x0d, 0xc0, 0x0d, 0x00, 0x96, 0x00, 0x96,
205 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00,
206 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
210 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
212 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
214 0x00, 0x8a, 0x09, 0x00, 0x00, 0xc9, 0xff, 0xd8, 0xff, 0x00, 0x00,
215 0x00, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0xf0,
216 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xd0, 0x00, 0xd0, 0x00,
217 0xd0, 0x00, 0xd0, 0x00, 0x54, 0x01, 0xab, 0xf6, 0xc0, 0x42, 0xc0,
218 0x42, 0xc0, 0x42, 0xc0, 0x42, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb,
219 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x22,
220 0x01, 0x37, 0xa9, 0xc0, 0x33, 0xc0, 0x33, 0xc0, 0x33, 0xc0, 0x33,
221 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00,
222 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0xfb, 0x00, 0xca, 0x79, 0xc0, 0x2b,
223 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0x00, 0xb4, 0x00, 0xb4, 0x00,
224 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4,
225 0xd0, 0x00, 0x5d, 0x54, 0xc0, 0x21, 0xc0, 0x21, 0xc0, 0x21, 0xc0,
226 0x21, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa,
227 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0xa7, 0x00, 0xa9, 0x3d, 0xc0,
228 0x17, 0xc0, 0x17, 0xc0, 0x17, 0xc0, 0x17, 0x00, 0xa0, 0x00, 0xa0,
229 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00,
230 0xa0, 0x7a, 0x00, 0x06, 0x2c, 0xc0, 0x0d, 0xc0, 0x0d, 0xc0, 0x0d,
231 0xc0, 0x0d, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00,
232 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x00, 0x00, 0x00,
233 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
234 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
235 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
236 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
237 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
238 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x80, 0x00, 0x00, 0x00,
239 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x09, 0x00, 0x00,
241 0xc9, 0xff, 0xd8, 0xff, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0x10,
242 0x01, 0x10, 0x01, 0x10, 0x01, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00,
243 0xf0, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0x54,
244 0x01, 0xab, 0xf6, 0xc0, 0x42, 0xc0, 0x42, 0xc0, 0x42, 0xc0, 0x42,
245 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00,
246 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x22, 0x01, 0x37, 0xa9, 0xc0, 0x33,
247 0xc0, 0x33, 0xc0, 0x33, 0xc0, 0x33, 0x00, 0xbc, 0x00, 0xbc, 0x00,
248 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc,
249 0xfb, 0x00, 0xca, 0x79, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0,
250 0x2b, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4,
251 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0xd0, 0x00, 0x5d, 0x54, 0xc0,
252 0x21, 0xc0, 0x21, 0xc0, 0x21, 0xc0, 0x21, 0x00, 0xaa, 0x00, 0xaa,
253 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00,
254 0xaa, 0xa7, 0x00, 0xa9, 0x3d, 0xc0, 0x17, 0xc0, 0x17, 0xc0, 0x17,
255 0xc0, 0x17, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00,
256 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x7a, 0x00, 0x06, 0x2c,
257 0xc0, 0x0d, 0xc0, 0x0d, 0xc0, 0x0d, 0xc0, 0x0d, 0x00, 0x96, 0x00,
258 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96,
259 0x00, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
260 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
261 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
262 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
263 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
264 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
265 0x06, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
266 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
267 0x00, 0x00, 0x94, 0x09, 0x00, 0x00, 0xc9, 0xff, 0xd8, 0xff, 0x00,
268 0x00, 0x00, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01,
269 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xd0, 0x00, 0xd0,
270 0x00, 0xd0, 0x00, 0xd0, 0x00, 0x54, 0x01, 0xab, 0xf6, 0xc0, 0x42,
271 0xc0, 0x42, 0xc0, 0x42, 0xc0, 0x42, 0x00, 0xcb, 0x00, 0xcb, 0x00,
272 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb,
273 0x22, 0x01, 0x37, 0xa9, 0xc0, 0x33, 0xc0, 0x33, 0xc0, 0x33, 0xc0,
274 0x33, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc,
275 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0xfb, 0x00, 0xca, 0x79, 0xc0,
276 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0x00, 0xb4, 0x00, 0xb4,
277 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00,
278 0xb4, 0xd0, 0x00, 0x5d, 0x54, 0xc0, 0x21, 0xc0, 0x21, 0xc0, 0x21,
279 0xc0, 0x21, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00,
280 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0xa7, 0x00, 0xa9, 0x3d,
281 0xc0, 0x17, 0xc0, 0x17, 0xc0, 0x17, 0xc0, 0x17, 0x00, 0xa0, 0x00,
282 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0,
283 0x00, 0xa0, 0x7a, 0x00, 0x06, 0x2c, 0xc0, 0x0d, 0xc0, 0x0d, 0xc0,
284 0x0d, 0xc0, 0x0d, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96,
285 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x00, 0x00,
286 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
287 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
288 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
289 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
290 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
291 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x80, 0x00, 0x00,
292 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
293 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x09, 0x00,
294 0x00, 0xc9, 0xff, 0xd8, 0xff, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01,
295 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0xf0, 0x00, 0xf0, 0x00, 0xf0,
296 0x00, 0xf0, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xd0, 0x00,
297 0x54, 0x01, 0xab, 0xf6, 0xc0, 0x42, 0xc0, 0x42, 0xc0, 0x42, 0xc0,
298 0x42, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb,
299 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x22, 0x01, 0x37, 0xa9, 0xc0,
300 0x33, 0xc0, 0x33, 0xc0, 0x33, 0xc0, 0x33, 0x00, 0xbc, 0x00, 0xbc,
301 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00,
302 0xbc, 0xfb, 0x00, 0xca, 0x79, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b,
303 0xc0, 0x2b, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00,
304 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0xd0, 0x00, 0x5d, 0x54,
305 0xc0, 0x21, 0xc0, 0x21, 0xc0, 0x21, 0xc0, 0x21, 0x00, 0xaa, 0x00,
306 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa,
307 0x00, 0xaa, 0xa7, 0x00, 0xa9, 0x3d, 0xc0, 0x17, 0xc0, 0x17, 0xc0,
308 0x17, 0xc0, 0x17, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0,
309 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x7a, 0x00, 0x06,
310 0x2c, 0xc0, 0x0d, 0xc0, 0x0d, 0xc0, 0x0d, 0xc0, 0x0d, 0x00, 0x96,
311 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00,
312 0x96, 0x00, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
313 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
314 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
315 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
316 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
317 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
318 0x00, 0x06, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
319 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
320 0x00, 0x00, 0x00, 0x9e, 0x09, 0x00, 0x00, 0xc9, 0xff, 0xd8, 0xff,
321 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10,
322 0x01, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xd0, 0x00,
323 0xd0, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0x54, 0x01, 0xab, 0xf6, 0xc0,
324 0x42, 0xc0, 0x42, 0xc0, 0x42, 0xc0, 0x42, 0x00, 0xcb, 0x00, 0xcb,
325 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00,
326 0xcb, 0x22, 0x01, 0x37, 0xa9, 0xc0, 0x33, 0xc0, 0x33, 0xc0, 0x33,
327 0xc0, 0x33, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00,
328 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0xfb, 0x00, 0xca, 0x79,
329 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0x00, 0xb4, 0x00,
330 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb4,
331 0x00, 0xb4, 0xd0, 0x00, 0x5d, 0x54, 0xc0, 0x21, 0xc0, 0x21, 0xc0,
332 0x21, 0xc0, 0x21, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa,
333 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0xa7, 0x00, 0xa9,
334 0x3d, 0xc0, 0x17, 0xc0, 0x17, 0xc0, 0x17, 0xc0, 0x17, 0x00, 0xa0,
335 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00,
336 0xa0, 0x00, 0xa0, 0x7a, 0x00, 0x06, 0x2c, 0xc0, 0x0d, 0xc0, 0x0d,
337 0xc0, 0x0d, 0xc0, 0x0d, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00,
338 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x96, 0x00, 0x00,
339 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
340 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
341 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
342 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
343 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
344 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x80, 0x00,
345 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
346 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
347 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
348 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
349 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
350 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
351 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
352 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
353 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
354 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
355 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
356 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
357 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
358 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
359 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
360 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
361 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
362 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
363 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
364 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
365 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
366 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
367 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
368 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
369 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
370 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
371 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
372 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
373 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
374 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
375 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
376 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
377 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
378 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
379 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
380 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
381 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
382 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
383 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
384 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
385 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
386 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
387 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
388 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
389 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
390 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
391 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
392 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
393 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
394 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
395 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
396 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
397 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
398 0x00 };
399
400static const u8 default_cal_rssi[] = {
401 0x0a, 0x01, 0x72, 0xfe, 0x1a, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x72,
402 0xfe, 0x1a, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x72, 0xfe, 0x1a, 0x00,
403 0x00, 0x00, 0x0a, 0x01, 0x72, 0xfe, 0x1a, 0x00, 0x00, 0x00, 0x0a,
404 0x01, 0x72, 0xfe, 0x1a, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x72, 0xfe,
405 0x1a, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x72, 0xfe, 0x1a, 0x00, 0x00,
406 0x00, 0x0a, 0x01, 0x72, 0xfe, 0x1a, 0x00, 0x00, 0x00, 0x0a, 0x01,
407 0x72, 0xfe, 0x1a, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x72, 0xfe, 0x1a,
408 0x00, 0x00, 0x00, 0x0a, 0x01, 0x72, 0xfe, 0x1a, 0x00, 0x00, 0x00,
409 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
410 0x00, 0x00, 0x00, 0x00, 0x00 };
411
412static void stlc45xx_tx_edcf(struct stlc45xx *stlc);
413static void stlc45xx_tx_setup(struct stlc45xx *stlc);
414static void stlc45xx_tx_scan(struct stlc45xx *stlc);
415static void stlc45xx_tx_psm(struct stlc45xx *stlc, bool enable);
416static int stlc45xx_tx_nullfunc(struct stlc45xx *stlc, bool powersave);
417static int stlc45xx_tx_pspoll(struct stlc45xx *stlc, bool powersave);
418
419static ssize_t stlc45xx_sysfs_show_cal_rssi(struct device *dev,
420 struct device_attribute *attr,
421 char *buf)
422{
423 struct stlc45xx *stlc = dev_get_drvdata(dev);
424 ssize_t len;
425
426 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
427
428 len = PAGE_SIZE;
429
430 mutex_lock(&stlc->mutex);
431
432 if (stlc->cal_rssi)
433 hex_dump_to_buffer(stlc->cal_rssi, RSSI_CAL_ARRAY_LEN, 16,
434 2, buf, len, 0);
435 mutex_unlock(&stlc->mutex);
436
437 len = strlen(buf);
438
439 return len;
440}
441
442static ssize_t stlc45xx_sysfs_store_cal_rssi(struct device *dev,
443 struct device_attribute *attr,
444 const char *buf, size_t count)
445{
446 struct stlc45xx *stlc = dev_get_drvdata(dev);
447
448 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
449
450 mutex_lock(&stlc->mutex);
451
452 if (count != RSSI_CAL_ARRAY_LEN) {
453 stlc45xx_error("invalid cal_rssi length: %zu", count);
454 count = 0;
455 goto out_unlock;
456 }
457
458 kfree(stlc->cal_rssi);
459
460 stlc->cal_rssi = kmemdup(buf, RSSI_CAL_ARRAY_LEN, GFP_KERNEL);
461
462 if (!stlc->cal_rssi) {
463 stlc45xx_error("failed to allocate memory for cal_rssi");
464 count = 0;
465 goto out_unlock;
466 }
467
468 out_unlock:
469 mutex_unlock(&stlc->mutex);
470
471 return count;
472}
473
474static ssize_t stlc45xx_sysfs_show_cal_channels(struct device *dev,
475 struct device_attribute *attr,
476 char *buf)
477{
478 struct stlc45xx *stlc = dev_get_drvdata(dev);
479 ssize_t len;
480
481 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
482
483 len = PAGE_SIZE;
484
485 mutex_lock(&stlc->mutex);
486
487 if (stlc->cal_channels)
488 hex_dump_to_buffer(stlc->cal_channels, CHANNEL_CAL_ARRAY_LEN,
489 16, 2, buf, len, 0);
490
491 mutex_unlock(&stlc->mutex);
492
493 len = strlen(buf);
494
495 return len;
496}
497
498static ssize_t stlc45xx_sysfs_store_cal_channels(struct device *dev,
499 struct device_attribute *attr,
500 const char *buf, size_t count)
501{
502 struct stlc45xx *stlc = dev_get_drvdata(dev);
503
504 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
505
506 mutex_lock(&stlc->mutex);
507
508 if (count != CHANNEL_CAL_ARRAY_LEN) {
509 stlc45xx_error("invalid cal_channels size: %zu ", count);
510 count = 0;
511 goto out_unlock;
512 }
513
514 kfree(stlc->cal_channels);
515
516 stlc->cal_channels = kmemdup(buf, count, GFP_KERNEL);
517
518 if (!stlc->cal_channels) {
519 stlc45xx_error("failed to allocate memory for cal_channels");
520 count = 0;
521 goto out_unlock;
522 }
523
524out_unlock:
525 mutex_unlock(&stlc->mutex);
526
527 return count;
528}
529
530static ssize_t stlc45xx_sysfs_show_tx_buf(struct device *dev,
531 struct device_attribute *attr,
532 char *buf)
533{
534 struct stlc45xx *stlc = dev_get_drvdata(dev);
535 struct txbuffer *entry;
536 ssize_t len = 0;
537
538 stlc45xx_debug(DEBUG_FUNC, "%s()", __func__);
539
540 mutex_lock(&stlc->mutex);
541
542 list_for_each_entry(entry, &stlc->tx_sent, tx_list) {
543 len += sprintf(buf + len, "0x%x: 0x%x-0x%x\n",
544 entry->handle, entry->start,
545 entry->end);
546 }
547
548 mutex_unlock(&stlc->mutex);
549
550 return len;
551}
552
553static DEVICE_ATTR(cal_rssi, S_IRUGO | S_IWUSR,
554 stlc45xx_sysfs_show_cal_rssi,
555 stlc45xx_sysfs_store_cal_rssi);
556static DEVICE_ATTR(cal_channels, S_IRUGO | S_IWUSR,
557 stlc45xx_sysfs_show_cal_channels,
558 stlc45xx_sysfs_store_cal_channels);
559static DEVICE_ATTR(tx_buf, S_IRUGO, stlc45xx_sysfs_show_tx_buf, NULL);
560
561static void stlc45xx_spi_read(struct stlc45xx *stlc, unsigned long addr,
562 void *buf, size_t len)
563{
564 struct spi_transfer t[2];
565 struct spi_message m;
566
567 /* We first push the address */
568 addr = (addr << 8) | ADDR_READ_BIT_15;
569
570 spi_message_init(&m);
571 memset(t, 0, sizeof(t));
572
573 t[0].tx_buf = &addr;
574 t[0].len = 2;
575 spi_message_add_tail(&t[0], &m);
576
577 t[1].rx_buf = buf;
578 t[1].len = len;
579 spi_message_add_tail(&t[1], &m);
580
581 spi_sync(stlc->spi, &m);
582}
583
584
585static void stlc45xx_spi_write(struct stlc45xx *stlc, unsigned long addr,
586 void *buf, size_t len)
587{
588 struct spi_transfer t[3];
589 struct spi_message m;
590 u16 last_word;
591
592 /* We first push the address */
593 addr = addr << 8;
594
595 spi_message_init(&m);
596 memset(t, 0, sizeof(t));
597
598 t[0].tx_buf = &addr;
599 t[0].len = 2;
600 spi_message_add_tail(&t[0], &m);
601
602 t[1].tx_buf = buf;
603 t[1].len = len;
604 spi_message_add_tail(&t[1], &m);
605
606 if (len % 2) {
607 last_word = ((u8 *)buf)[len - 1];
608
609 t[2].tx_buf = &last_word;
610 t[2].len = 2;
611 spi_message_add_tail(&t[2], &m);
612 }
613
614 spi_sync(stlc->spi, &m);
615}
616
617static u16 stlc45xx_read16(struct stlc45xx *stlc, unsigned long addr)
618{
619 u16 val;
620
621 stlc45xx_spi_read(stlc, addr, &val, sizeof(val));
622
623 return val;
624}
625
626static u32 stlc45xx_read32(struct stlc45xx *stlc, unsigned long addr)
627{
628 u32 val;
629
630 stlc45xx_spi_read(stlc, addr, &val, sizeof(val));
631
632 return val;
633}
634
635static void stlc45xx_write16(struct stlc45xx *stlc, unsigned long addr, u16 val)
636{
637 stlc45xx_spi_write(stlc, addr, &val, sizeof(val));
638}
639
640static void stlc45xx_write32(struct stlc45xx *stlc, unsigned long addr, u32 val)
641{
642 stlc45xx_spi_write(stlc, addr, &val, sizeof(val));
643}
644
645struct stlc45xx_spi_reg {
646 u16 address;
647 u16 length;
648 char *name;
649};
650
651/* caller must hold tx_lock */
652static void stlc45xx_txbuffer_dump(struct stlc45xx *stlc)
653{
654 struct txbuffer *txbuffer;
655 char *buf, *pos;
656 int buf_len, l, count;
657
658 if (!(DEBUG_LEVEL & DEBUG_TXBUFFER))
659 return;
660
661 stlc45xx_debug(DEBUG_FUNC, "%s()", __func__);
662
663 buf_len = 500;
664 buf = kmalloc(buf_len, GFP_ATOMIC);
665 if (!buf)
666 return;
667
668 pos = buf;
669 count = 0;
670
671 list_for_each_entry(txbuffer, &stlc->txbuffer, buffer_list) {
672 l = snprintf(pos, buf_len, "0x%x-0x%x,",
673 txbuffer->start, txbuffer->end);
674 /* drop the null byte */
675 pos += l;
676 buf_len -= l;
677 count++;
678 }
679
680 if (count == 0)
681 *pos = '\0';
682 else
683 *--pos = '\0';
684
685 stlc45xx_debug(DEBUG_TXBUFFER, "txbuffer: in buffer %d regions: %s",
686 count, buf);
687
688 kfree(buf);
689}
690
691/* caller must hold tx_lock */
692static int stlc45xx_txbuffer_find(struct stlc45xx *stlc, size_t len)
693{
694 struct txbuffer *txbuffer;
695 int pos;
696
697 stlc45xx_debug(DEBUG_FUNC, "%s()", __func__);
698
699 pos = FIRMWARE_TXBUFFER_START;
700
701 if (list_empty(&stlc->txbuffer))
702 goto out;
703
704 /*
705 * the entries in txbuffer must be in the same order as they are in
706 * the real buffer
707 */
708 list_for_each_entry(txbuffer, &stlc->txbuffer, buffer_list) {
709 if (pos + len < txbuffer->start)
710 break;
711 pos = ALIGN(txbuffer->end + 1, 4);
712 }
713
714 if (pos + len > FIRMWARE_TXBUFFER_END)
715 /* not enough room */
716 pos = -1;
717
718 stlc45xx_debug(DEBUG_TXBUFFER, "txbuffer: find %zu B: 0x%x", len, pos);
719
720out:
721 return pos;
722}
723
724static int stlc45xx_txbuffer_add(struct stlc45xx *stlc,
725 struct txbuffer *txbuffer)
726{
727 struct txbuffer *r, *prev = NULL;
728
729 if (list_empty(&stlc->txbuffer)) {
730 list_add(&txbuffer->buffer_list, &stlc->txbuffer);
731 return 0;
732 }
733
734 r = list_first_entry(&stlc->txbuffer, struct txbuffer, buffer_list);
735
736 if (txbuffer->start < r->start) {
737 /* add to the beginning of the list */
738 list_add(&txbuffer->buffer_list, &stlc->txbuffer);
739 return 0;
740 }
741
742 prev = NULL;
743 list_for_each_entry(r, &stlc->txbuffer, buffer_list) {
744 /* skip first entry, we checked for that above */
745 if (!prev) {
746 prev = r;
747 continue;
748 }
749
750 /* double-check overlaps */
751 WARN_ON_ONCE(txbuffer->start >= r->start &&
752 txbuffer->start <= r->end);
753 WARN_ON_ONCE(txbuffer->end >= r->start &&
754 txbuffer->end <= r->end);
755
756 if (prev->end < txbuffer->start &&
757 txbuffer->end < r->start) {
758 /* insert at this spot */
759 list_add_tail(&txbuffer->buffer_list, &r->buffer_list);
760 return 0;
761 }
762
763 prev = r;
764 }
765
766 /* not found */
767 list_add_tail(&txbuffer->buffer_list, &stlc->txbuffer);
768
769 return 0;
770
771}
772
773/* caller must hold tx_lock */
774static struct txbuffer *stlc45xx_txbuffer_alloc(struct stlc45xx *stlc,
775 size_t frame_len)
776{
777 struct txbuffer *entry = NULL;
778 size_t len;
779 int pos;
780
781 stlc45xx_debug(DEBUG_FUNC, "%s()", __func__);
782
783 len = FIRMWARE_TXBUFFER_HEADER + frame_len + FIRMWARE_TXBUFFER_TRAILER;
784 pos = stlc45xx_txbuffer_find(stlc, len);
785
786 if (pos < 0)
787 return NULL;
788
789 WARN_ON_ONCE(pos + len > FIRMWARE_TXBUFFER_END);
790 WARN_ON_ONCE(pos < FIRMWARE_TXBUFFER_START);
791
792 entry = kmalloc(sizeof(*entry), GFP_ATOMIC);
793 entry->start = pos;
794 entry->frame_start = pos + FIRMWARE_TXBUFFER_HEADER;
795 entry->end = entry->start + len - 1;
796
797 stlc45xx_debug(DEBUG_TXBUFFER, "txbuffer: allocated 0x%x-0x%x",
798 entry->start, entry->end);
799
800 stlc45xx_txbuffer_add(stlc, entry);
801
802 stlc45xx_txbuffer_dump(stlc);
803
804 return entry;
805}
806
807/* caller must hold tx_lock */
808static void stlc45xx_txbuffer_free(struct stlc45xx *stlc,
809 struct txbuffer *txbuffer)
810{
811 stlc45xx_debug(DEBUG_FUNC, "%s()", __func__);
812
813 stlc45xx_debug(DEBUG_TXBUFFER, "txbuffer: freed 0x%x-0x%x",
814 txbuffer->start, txbuffer->end);
815
816 list_del(&txbuffer->buffer_list);
817 kfree(txbuffer);
818}
819
820
821static int stlc45xx_wait_bit(struct stlc45xx *stlc, u16 reg, u32 mask,
822 u32 expected)
823{
824 int i;
825 char buffer[4];
826
827 for (i = 0; i < 2000; i++) {
828 stlc45xx_spi_read(stlc, reg, buffer, sizeof(buffer));
829 if (((*(u32 *)buffer) & mask) == expected)
830 return 1;
831 msleep(1);
832 }
833
834 return 0;
835}
836
837static int stlc45xx_request_firmware(struct stlc45xx *stlc)
838{
839 const struct firmware *fw;
840 int ret;
841
842 /* FIXME: should driver use it's own struct device? */
843 ret = request_firmware(&fw, "3826.arm", &stlc->spi->dev);
844
845 if (ret < 0) {
846 stlc45xx_error("request_firmware() failed: %d", ret);
847 return ret;
848 }
849
850 if (fw->size % 4) {
851 stlc45xx_error("firmware size is not multiple of 32bit: %zu",
852 fw->size);
853 return -EILSEQ; /* Illegal byte sequence */;
854 }
855
856 if (fw->size < 1000) {
857 stlc45xx_error("firmware is too small: %zu", fw->size);
858 return -EILSEQ;
859 }
860
861 stlc->fw = kmemdup(fw->data, fw->size, GFP_KERNEL);
862 if (!stlc->fw) {
863 stlc45xx_error("could not allocate memory for firmware");
864 return -ENOMEM;
865 }
866
867 stlc->fw_len = fw->size;
868
869 release_firmware(fw);
870
871 return 0;
872}
873
874static int stlc45xx_upload_firmware(struct stlc45xx *stlc)
875{
876 struct s_dma_regs dma_regs;
877 unsigned long fw_len, fw_addr;
878 long _fw_len;
879 int ret;
880
881 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
882
883 if (!stlc->fw) {
884 ret = stlc45xx_request_firmware(stlc);
885 if (ret < 0)
886 return ret;
887 }
888
889 /* stop the device */
890 stlc45xx_write16(stlc, SPI_ADRS_DEV_CTRL_STAT,
891 SPI_CTRL_STAT_HOST_OVERRIDE | SPI_CTRL_STAT_HOST_RESET
892 | SPI_CTRL_STAT_START_HALTED);
893
894 msleep(TARGET_BOOT_SLEEP);
895
896 stlc45xx_write16(stlc, SPI_ADRS_DEV_CTRL_STAT,
897 SPI_CTRL_STAT_HOST_OVERRIDE
898 | SPI_CTRL_STAT_START_HALTED);
899
900 msleep(TARGET_BOOT_SLEEP);
901
902 fw_addr = FIRMWARE_ADDRESS;
903 fw_len = stlc->fw_len;
904
905 while (fw_len > 0) {
906 _fw_len = (fw_len > SPI_MAX_PACKET_SIZE)
907 ? SPI_MAX_PACKET_SIZE : fw_len;
908 dma_regs.cmd = SPI_DMA_WRITE_CTRL_ENABLE;
909 dma_regs.len = cpu_to_le16(_fw_len);
910 dma_regs.addr = cpu_to_le32(fw_addr);
911
912 fw_len -= _fw_len;
913 fw_addr += _fw_len;
914
915 stlc45xx_write16(stlc, SPI_ADRS_DMA_WRITE_CTRL, dma_regs.cmd);
916
917 if (stlc45xx_wait_bit(stlc, SPI_ADRS_DMA_WRITE_CTRL,
918 HOST_ALLOWED, HOST_ALLOWED) == 0) {
919 stlc45xx_error("fw_upload not allowed to DMA write");
920 return -EAGAIN;
921 }
922
923 stlc45xx_write16(stlc, SPI_ADRS_DMA_WRITE_LEN, dma_regs.len);
924 stlc45xx_write32(stlc, SPI_ADRS_DMA_WRITE_BASE, dma_regs.addr);
925
926 stlc45xx_spi_write(stlc, SPI_ADRS_DMA_DATA, stlc->fw, _fw_len);
927
928 /* FIXME: I think this doesn't work if firmware is large,
929 * this loop goes to second round. fw->data is not
930 * increased at all! */
931 }
932
933 BUG_ON(fw_len != 0);
934
935 /* enable host interrupts */
936 stlc45xx_write32(stlc, SPI_ADRS_HOST_INT_EN, SPI_HOST_INTS_DEFAULT);
937
938 /* boot the device */
939 stlc45xx_write16(stlc, SPI_ADRS_DEV_CTRL_STAT,
940 SPI_CTRL_STAT_HOST_OVERRIDE | SPI_CTRL_STAT_HOST_RESET
941 | SPI_CTRL_STAT_RAM_BOOT);
942
943 msleep(TARGET_BOOT_SLEEP);
944
945 stlc45xx_write16(stlc, SPI_ADRS_DEV_CTRL_STAT,
946 SPI_CTRL_STAT_HOST_OVERRIDE | SPI_CTRL_STAT_RAM_BOOT);
947 msleep(TARGET_BOOT_SLEEP);
948
949 return 0;
950}
951
952/* caller must hold tx_lock */
953static void stlc45xx_check_txsent(struct stlc45xx *stlc)
954{
955 struct txbuffer *entry, *n;
956
957 list_for_each_entry_safe(entry, n, &stlc->tx_sent, tx_list) {
958 if (time_after(jiffies, entry->lifetime)) {
959 if (net_ratelimit())
960 stlc45xx_warning("frame 0x%x lifetime exceeded",
961 entry->start);
962 list_del(&entry->tx_list);
963 skb_pull(entry->skb, entry->header_len);
964 ieee80211_tx_status(stlc->hw, entry->skb);
965 stlc45xx_txbuffer_free(stlc, entry);
966 }
967 }
968}
969
970static void stlc45xx_power_off(struct stlc45xx *stlc)
971{
972 disable_irq(gpio_to_irq(stlc45xx_gpio_irq));
973 gpio_set_value(stlc45xx_gpio_power, 0);
974}
975
976static void stlc45xx_power_on(struct stlc45xx *stlc)
977{
978 gpio_set_value(stlc45xx_gpio_power, 1);
979 enable_irq(gpio_to_irq(stlc45xx_gpio_irq));
980
981 /*
982 * need to wait a while before device can be accessed, the length
983 * is just a guess
984 */
985 msleep(10);
986}
987
988/* caller must hold tx_lock */
989static void stlc45xx_flush_queues(struct stlc45xx *stlc)
990{
991 struct txbuffer *entry;
992
993 while (!list_empty(&stlc->tx_sent)) {
994 entry = list_first_entry(&stlc->tx_sent,
995 struct txbuffer, tx_list);
996 list_del(&entry->tx_list);
997 dev_kfree_skb(entry->skb);
998 stlc45xx_txbuffer_free(stlc, entry);
999 }
1000
1001 WARN_ON(!list_empty(&stlc->tx_sent));
1002
1003 while (!list_empty(&stlc->tx_pending)) {
1004 entry = list_first_entry(&stlc->tx_pending,
1005 struct txbuffer, tx_list);
1006 list_del(&entry->tx_list);
1007 dev_kfree_skb(entry->skb);
1008 stlc45xx_txbuffer_free(stlc, entry);
1009 }
1010
1011 WARN_ON(!list_empty(&stlc->tx_pending));
1012 WARN_ON(!list_empty(&stlc->txbuffer));
1013}
1014
1015static void stlc45xx_work_reset(struct work_struct *work)
1016{
1017 struct stlc45xx *stlc = container_of(work, struct stlc45xx,
1018 work_reset);
1019
1020 mutex_lock(&stlc->mutex);
1021
1022 if (stlc->fw_state != FW_STATE_RESET)
1023 goto out;
1024
1025 stlc45xx_power_off(stlc);
1026
1027 mutex_unlock(&stlc->mutex);
1028
1029 /* wait that all work_structs have finished, we can't hold
1030 * stlc->mutex to avoid deadlock */
1031 cancel_work_sync(&stlc->work);
1032
1033 /* FIXME: find out good value to wait for chip power down */
1034 msleep(100);
1035
1036 mutex_lock(&stlc->mutex);
1037
1038 /* FIXME: we should gracefully handle if the state has changed
1039 * after re-acquiring mutex */
1040 WARN_ON(stlc->fw_state != FW_STATE_RESET);
1041
1042 spin_lock_bh(&stlc->tx_lock);
1043 stlc45xx_flush_queues(stlc);
1044 spin_unlock_bh(&stlc->tx_lock);
1045
1046 stlc->fw_state = FW_STATE_RESETTING;
1047
1048 stlc45xx_power_on(stlc);
1049 stlc45xx_upload_firmware(stlc);
1050
1051out:
1052 mutex_unlock(&stlc->mutex);
1053}
1054
1055/* caller must hold mutex */
1056static void stlc45xx_reset(struct stlc45xx *stlc)
1057{
1058 stlc45xx_warning("resetting firmware");
1059 stlc->fw_state = FW_STATE_RESET;
1060 ieee80211_stop_queues(stlc->hw);
1061 queue_work(stlc->hw->workqueue, &stlc->work_reset);
1062}
1063
1064static void stlc45xx_work_tx_timeout(struct work_struct *work)
1065{
1066 struct stlc45xx *stlc = container_of(work, struct stlc45xx,
1067 work_tx_timeout.work);
1068
1069 stlc45xx_warning("tx timeout");
1070
1071 mutex_lock(&stlc->mutex);
1072
1073 if (stlc->fw_state != FW_STATE_READY)
1074 goto out;
1075
1076 stlc45xx_reset(stlc);
1077
1078out:
1079 mutex_unlock(&stlc->mutex);
1080}
1081
1082static void stlc45xx_int_ack(struct stlc45xx *stlc, u32 val)
1083{
1084 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
1085
1086 stlc45xx_write32(stlc, SPI_ADRS_HOST_INT_ACK, val);
1087}
1088
1089static void stlc45xx_wakeup(struct stlc45xx *stlc)
1090{
1091 unsigned long timeout;
1092 u32 ints;
1093
1094 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
1095
1096 /* wake the chip */
1097 stlc45xx_write32(stlc, SPI_ADRS_ARM_INTERRUPTS, SPI_TARGET_INT_WAKEUP);
1098
1099 /* And wait for the READY interrupt */
1100 timeout = jiffies + HZ;
1101
1102 ints = stlc45xx_read32(stlc, SPI_ADRS_HOST_INTERRUPTS);
1103 while (!(ints & SPI_HOST_INT_READY)) {
1104 if (time_after(jiffies, timeout))
1105 goto out;
1106 ints = stlc45xx_read32(stlc, SPI_ADRS_HOST_INTERRUPTS);
1107 }
1108
1109 stlc45xx_int_ack(stlc, SPI_HOST_INT_READY);
1110
1111out:
1112 return;
1113}
1114
1115static void stlc45xx_sleep(struct stlc45xx *stlc)
1116{
1117 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
1118
1119 stlc45xx_write32(stlc, SPI_ADRS_ARM_INTERRUPTS, SPI_TARGET_INT_SLEEP);
1120}
1121
1122static void stlc45xx_int_ready(struct stlc45xx *stlc)
1123{
1124 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
1125
1126 stlc45xx_write32(stlc, SPI_ADRS_HOST_INT_EN,
1127 SPI_HOST_INT_UPDATE | SPI_HOST_INT_SW_UPDATE);
1128
1129 switch (stlc->fw_state) {
1130 case FW_STATE_BOOTING:
1131 stlc->fw_state = FW_STATE_READY;
1132 complete(&stlc->fw_comp);
1133 break;
1134 case FW_STATE_RESETTING:
1135 stlc->fw_state = FW_STATE_READY;
1136
1137 stlc45xx_tx_scan(stlc);
1138 stlc45xx_tx_setup(stlc);
1139 stlc45xx_tx_edcf(stlc);
1140
1141 ieee80211_wake_queues(stlc->hw);
1142 break;
1143 default:
1144 break;
1145 }
1146}
1147
1148static int stlc45xx_rx_txack(struct stlc45xx *stlc, struct sk_buff *skb)
1149{
1150 struct ieee80211_tx_info *info;
1151 struct s_lm_control *control;
1152 struct s_lmo_tx *tx;
1153 struct txbuffer *entry;
1154 int found = 0;
1155
1156 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
1157
1158 control = (struct s_lm_control *) skb->data;
1159 tx = (struct s_lmo_tx *) (control + 1);
1160
1161 if (list_empty(&stlc->tx_sent)) {
1162 if (net_ratelimit())
1163 stlc45xx_warning("no frames waiting for "
1164 "acknowledgement");
1165 return -1;
1166 }
1167
1168 list_for_each_entry(entry, &stlc->tx_sent, tx_list) {
1169 if (control->handle == entry->handle) {
1170 found = 1;
1171 break;
1172 }
1173 }
1174
1175 if (!found) {
1176 if (net_ratelimit())
1177 stlc45xx_warning("couldn't find frame for tx ack 0x%x",
1178 control->handle);
1179 return -1;
1180 }
1181
1182 stlc45xx_debug(DEBUG_TX, "TX ACK 0x%x", entry->handle);
1183
1184 if (entry->status_needed) {
1185 info = IEEE80211_SKB_CB(entry->skb);
1186
1187 if (!(tx->flags & LM_TX_FAILED)) {
1188 /* frame was acked */
1189 info->flags |= IEEE80211_TX_STAT_ACK;
1190 info->status.ack_signal = tx->rcpi / 2 - 110;
1191 }
1192
1193 skb_pull(entry->skb, entry->header_len);
1194
1195 ieee80211_tx_status(stlc->hw, entry->skb);
1196 }
1197
1198 list_del(&entry->tx_list);
1199
1200 stlc45xx_check_txsent(stlc);
1201 if (list_empty(&stlc->tx_sent))
1202 /* there are no pending frames, we can stop the tx timeout
1203 * timer */
1204 cancel_delayed_work(&stlc->work_tx_timeout);
1205
1206 spin_lock_bh(&stlc->tx_lock);
1207
1208 stlc45xx_txbuffer_free(stlc, entry);
1209
1210 if (stlc->tx_queue_stopped &&
1211 stlc45xx_txbuffer_find(stlc, MAX_FRAME_LEN) != -1) {
1212 stlc45xx_debug(DEBUG_QUEUE, "room in tx buffer, waking queues");
1213 ieee80211_wake_queues(stlc->hw);
1214 stlc->tx_queue_stopped = 0;
1215 }
1216
1217 spin_unlock_bh(&stlc->tx_lock);
1218
1219 return 0;
1220}
1221
1222static int stlc45xx_rx_control(struct stlc45xx *stlc, struct sk_buff *skb)
1223{
1224 struct s_lm_control *control;
1225 int ret = 0;
1226
1227 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
1228
1229 control = (struct s_lm_control *) skb->data;
1230
1231 switch (control->oid) {
1232 case LM_OID_TX:
1233 ret = stlc45xx_rx_txack(stlc, skb);
1234 break;
1235 case LM_OID_SETUP:
1236 case LM_OID_SCAN:
1237 case LM_OID_TRAP:
1238 case LM_OID_EDCF:
1239 case LM_OID_KEYCACHE:
1240 case LM_OID_PSM:
1241 case LM_OID_STATS:
1242 case LM_OID_LED:
1243 default:
1244 stlc45xx_warning("unhandled rx control oid %d\n",
1245 control->oid);
1246 break;
1247 }
1248
1249 dev_kfree_skb(skb);
1250
1251 return ret;
1252}
1253
1254/* copied from mac80211 */
1255static void stlc45xx_parse_elems(u8 *start, size_t len,
1256 struct stlc45xx_ie_tim **tim,
1257 size_t *tim_len)
1258{
1259 size_t left = len;
1260 u8 *pos = start;
1261
1262 while (left >= 2) {
1263 u8 id, elen;
1264
1265 id = *pos++;
1266 elen = *pos++;
1267 left -= 2;
1268
1269 if (elen > left)
1270 return;
1271
1272 switch (id) {
1273 case WLAN_EID_TIM:
1274 *tim = (struct stlc45xx_ie_tim *) pos;
1275 *tim_len = elen;
1276 break;
1277 default:
1278 break;
1279 }
1280
1281 left -= elen;
1282 pos += elen;
1283 }
1284}
1285
1286/*
1287 * mac80211 doesn't have support for asking frames with PS-Poll, so let's
1288 * implement in the driver for now. We have to add support to mac80211
1289 * later.
1290 */
1291static int stlc45xx_check_more_data(struct stlc45xx *stlc, struct sk_buff *skb)
1292{
1293 struct s_lm_data_in *data = (struct s_lm_data_in *) skb->data;
1294 struct ieee80211_hdr *hdr;
1295 size_t len;
1296 u16 fc;
1297
1298 hdr = (void *) skb->data + sizeof(*data);
1299 len = skb->len - sizeof(*data);
1300
1301 /* minimum frame length is the null frame length 24 bytes */
1302 if (len < 24) {
1303 stlc45xx_warning("invalid frame length when checking for "
1304 "more data");
1305 return -EINVAL;
1306 }
1307
1308 fc = le16_to_cpu(hdr->frame_control);
1309 if (!(fc & IEEE80211_FCTL_FROMDS))
1310 /* this is not from DS */
1311 return 0;
1312
1313 if (compare_ether_addr(hdr->addr1, stlc->mac_addr) != 0)
1314 /* the frame was not for us */
1315 return 0;
1316
1317 if (!(fc & IEEE80211_FCTL_MOREDATA)) {
1318 /* AP has no more frames buffered for us */
1319 stlc45xx_debug(DEBUG_PSM, "all buffered frames retrieved");
1320 stlc->pspolling = false;
1321 return 0;
1322 }
1323
1324 /* MOREDATA bit is set, let's ask for a new frame from the AP */
1325 stlc45xx_tx_pspoll(stlc, stlc->psm);
1326
1327 return 0;
1328}
1329
1330/*
1331 * mac80211 cannot read TIM from beacons, so let's add a hack to the
1332 * driver. We have to add support to mac80211 later.
1333 */
1334static int stlc45xx_rx_data_beacon(struct stlc45xx *stlc, struct sk_buff *skb)
1335{
1336 struct s_lm_data_in *data = (struct s_lm_data_in *) skb->data;
1337 size_t len = skb->len, tim_len = 0, baselen, pvbmap_len;
1338 struct ieee80211_mgmt *mgmt;
1339 struct stlc45xx_ie_tim *tim = NULL;
1340 int bmap_offset, index, aid_bit;
1341
1342 mgmt = (void *) skb->data + sizeof(*data);
1343
1344 baselen = (u8 *) mgmt->u.beacon.variable - (u8 *) mgmt;
1345 if (baselen > len) {
1346 stlc45xx_warning("invalid baselen in beacon");
1347 return -EINVAL;
1348 }
1349
1350 stlc45xx_parse_elems(mgmt->u.beacon.variable, len - baselen, &tim,
1351 &tim_len);
1352
1353 if (!tim) {
1354 stlc45xx_warning("didn't find tim from a beacon");
1355 return -EINVAL;
1356 }
1357
1358 bmap_offset = tim->bmap_control & 0xfe;
1359 index = stlc->aid / 8 - bmap_offset;
1360
1361 pvbmap_len = tim_len - 3;
1362 if (index > pvbmap_len)
1363 return -EINVAL;
1364
1365 aid_bit = !!(tim->pvbmap[index] & (1 << stlc->aid % 8));
1366
1367 stlc45xx_debug(DEBUG_PSM, "fc 0x%x duration %d seq %d dtim %u "
1368 "bmap_control 0x%x aid_bit %d",
1369 mgmt->frame_control, mgmt->duration, mgmt->seq_ctrl >> 4,
1370 tim->dtim_count, tim->bmap_control, aid_bit);
1371
1372 if (!aid_bit)
1373 return 0;
1374
1375 stlc->pspolling = true;
1376 stlc45xx_tx_pspoll(stlc, stlc->psm);
1377
1378 return 0;
1379}
1380
1381static int stlc45xx_rx_data(struct stlc45xx *stlc, struct sk_buff *skb)
1382{
1383 struct ieee80211_rx_status status;
1384 struct s_lm_data_in *data = (struct s_lm_data_in *) skb->data;
1385 int align = 0;
1386 u8 *p, align_len;
1387 u16 len;
1388
1389 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
1390
1391 if (stlc->psm) {
1392 if (data->flags & LM_IN_BEACON)
1393 stlc45xx_rx_data_beacon(stlc, skb);
1394 else if (stlc->pspolling && (data->flags & LM_IN_DATA))
1395 stlc45xx_check_more_data(stlc, skb);
1396 }
1397
1398 memset(&status, 0, sizeof(status));
1399
1400 status.freq = data->frequency;
1401 status.signal = data->rcpi / 2 - 110;
1402
1403 /* let's assume that maximum rcpi value is 140 (= 35 dBm) */
1404 status.qual = data->rcpi * 100 / 140;
1405
1406 status.band = IEEE80211_BAND_2GHZ;
1407
1408 /*
1409 * FIXME: this gives warning from __ieee80211_rx()
1410 *
1411 * status.rate_idx = data->rate;
1412 */
1413
1414 len = data->length;
1415
1416 if (data->flags & LM_FLAG_ALIGN)
1417 align = 1;
1418
1419 skb_pull(skb, sizeof(*data));
1420
1421 if (align) {
1422 p = skb->data;
1423 align_len = *p;
1424 skb_pull(skb, align_len);
1425 }
1426
1427 skb_trim(skb, len);
1428
1429 stlc45xx_debug(DEBUG_RX, "rx data 0x%p %d B", skb->data, skb->len);
1430 stlc45xx_dump(DEBUG_RX_CONTENT, skb->data, skb->len);
1431
1432 memcpy(IEEE80211_SKB_RXCB(skb), &status, sizeof(status));
1433 ieee80211_rx(stlc->hw, skb);
1434
1435 return 0;
1436}
1437
1438
1439
1440static int stlc45xx_rx(struct stlc45xx *stlc)
1441{
1442 struct s_lm_control *control;
1443 struct sk_buff *skb;
1444 int ret;
1445 u16 len;
1446
1447 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
1448
1449 stlc45xx_wakeup(stlc);
1450
1451 /* dummy read to flush SPI DMA controller bug */
1452 stlc45xx_read16(stlc, SPI_ADRS_GEN_PURP_1);
1453
1454 len = stlc45xx_read16(stlc, SPI_ADRS_DMA_DATA);
1455
1456 if (len == 0) {
1457 stlc45xx_warning("rx request of zero bytes");
1458 return 0;
1459 }
1460
1461 skb = dev_alloc_skb(len);
1462 if (!skb) {
1463 stlc45xx_warning("could not alloc skb");
1464 return 0;
1465 }
1466
1467 stlc45xx_spi_read(stlc, SPI_ADRS_DMA_DATA, skb_put(skb, len), len);
1468
1469 stlc45xx_sleep(stlc);
1470
1471 stlc45xx_debug(DEBUG_RX, "rx frame 0x%p %d B", skb->data, skb->len);
1472 stlc45xx_dump(DEBUG_RX_CONTENT, skb->data, skb->len);
1473
1474 control = (struct s_lm_control *) skb->data;
1475
1476 if (control->flags & LM_FLAG_CONTROL)
1477 ret = stlc45xx_rx_control(stlc, skb);
1478 else
1479 ret = stlc45xx_rx_data(stlc, skb);
1480
1481 return ret;
1482}
1483
1484
1485static irqreturn_t stlc45xx_interrupt(int irq, void *config)
1486{
1487 struct spi_device *spi = config;
1488 struct stlc45xx *stlc = dev_get_drvdata(&spi->dev);
1489
1490 stlc45xx_debug(DEBUG_IRQ, "IRQ");
1491
1492 queue_work(stlc->hw->workqueue, &stlc->work);
1493
1494 return IRQ_HANDLED;
1495}
1496
1497static int stlc45xx_tx_frame(struct stlc45xx *stlc, u32 address,
1498 void *buf, size_t len)
1499{
1500 struct s_dma_regs dma_regs;
1501 unsigned long timeout;
1502 int ret = 0;
1503 u32 ints;
1504
1505 stlc->tx_frames++;
1506
1507 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
1508
1509 stlc45xx_debug(DEBUG_TX, "tx frame 0x%p %zu B", buf, len);
1510 stlc45xx_dump(DEBUG_TX_CONTENT, buf, len);
1511
1512 stlc45xx_wakeup(stlc);
1513
1514 dma_regs.cmd = SPI_DMA_WRITE_CTRL_ENABLE;
1515 dma_regs.len = cpu_to_le16(len);
1516 dma_regs.addr = cpu_to_le32(address);
1517
1518 stlc45xx_spi_write(stlc, SPI_ADRS_DMA_WRITE_CTRL, &dma_regs,
1519 sizeof(dma_regs));
1520
1521 stlc45xx_spi_write(stlc, SPI_ADRS_DMA_DATA, buf, len);
1522
1523 timeout = jiffies + 2 * HZ;
1524 ints = stlc45xx_read32(stlc, SPI_ADRS_HOST_INTERRUPTS);
1525 while (!(ints & SPI_HOST_INT_WR_READY)) {
1526 if (time_after(jiffies, timeout)) {
1527 stlc45xx_warning("WR_READY timeout");
1528 ret = -1;
1529 goto out;
1530 }
1531 ints = stlc45xx_read32(stlc, SPI_ADRS_HOST_INTERRUPTS);
1532 }
1533
1534 stlc45xx_int_ack(stlc, SPI_HOST_INT_WR_READY);
1535
1536 stlc45xx_sleep(stlc);
1537
1538out:
1539 return ret;
1540}
1541
1542static int stlc45xx_wq_tx(struct stlc45xx *stlc)
1543{
1544 struct txbuffer *entry;
1545 int ret = 0;
1546
1547 spin_lock_bh(&stlc->tx_lock);
1548
1549 while (!list_empty(&stlc->tx_pending)) {
1550 entry = list_entry(stlc->tx_pending.next,
1551 struct txbuffer, tx_list);
1552
1553 list_del_init(&entry->tx_list);
1554
1555 spin_unlock_bh(&stlc->tx_lock);
1556
1557 ret = stlc45xx_tx_frame(stlc, entry->frame_start,
1558 entry->skb->data, entry->skb->len);
1559
1560 spin_lock_bh(&stlc->tx_lock);
1561
1562 if (ret < 0) {
1563 /* frame transfer to firmware buffer failed */
1564 /* FIXME: report this to mac80211 */
1565 dev_kfree_skb(entry->skb);
1566 stlc45xx_txbuffer_free(stlc, entry);
1567 goto out;
1568 }
1569
1570 list_add(&entry->tx_list, &stlc->tx_sent);
1571 queue_delayed_work(stlc->hw->workqueue,
1572 &stlc->work_tx_timeout,
1573 msecs_to_jiffies(TX_TIMEOUT));
1574 }
1575
1576out:
1577 spin_unlock_bh(&stlc->tx_lock);
1578 return ret;
1579}
1580
1581static void stlc45xx_work(struct work_struct *work)
1582{
1583 struct stlc45xx *stlc = container_of(work, struct stlc45xx, work);
1584 u32 ints;
1585 int ret;
1586
1587 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
1588
1589 mutex_lock(&stlc->mutex);
1590
1591 if (stlc->fw_state == FW_STATE_OFF &&
1592 stlc->fw_state == FW_STATE_RESET)
1593 goto out;
1594
1595 ints = stlc45xx_read32(stlc, SPI_ADRS_HOST_INTERRUPTS);
1596 stlc45xx_debug(DEBUG_BH, "begin host_ints 0x%08x", ints);
1597
1598 if (ints & SPI_HOST_INT_READY) {
1599 stlc45xx_int_ready(stlc);
1600 stlc45xx_int_ack(stlc, SPI_HOST_INT_READY);
1601 }
1602
1603 if (stlc->fw_state != FW_STATE_READY)
1604 goto out;
1605
1606 if (ints & SPI_HOST_INT_UPDATE) {
1607 stlc45xx_int_ack(stlc, SPI_HOST_INT_UPDATE);
1608 ret = stlc45xx_rx(stlc);
1609 if (ret < 0) {
1610 stlc45xx_reset(stlc);
1611 goto out;
1612 }
1613 }
1614 if (ints & SPI_HOST_INT_SW_UPDATE) {
1615 stlc45xx_int_ack(stlc, SPI_HOST_INT_SW_UPDATE);
1616 ret = stlc45xx_rx(stlc);
1617 if (ret < 0) {
1618 stlc45xx_reset(stlc);
1619 goto out;
1620 }
1621 }
1622
1623 ret = stlc45xx_wq_tx(stlc);
1624 if (ret < 0) {
1625 stlc45xx_reset(stlc);
1626 goto out;
1627 }
1628
1629 ints = stlc45xx_read32(stlc, SPI_ADRS_HOST_INTERRUPTS);
1630 stlc45xx_debug(DEBUG_BH, "end host_ints 0x%08x", ints);
1631
1632out:
1633 mutex_unlock(&stlc->mutex);
1634}
1635
1636static void stlc45xx_tx_edcf(struct stlc45xx *stlc)
1637{
1638 struct s_lm_control *control;
1639 struct s_lmo_edcf *edcf;
1640 size_t len, edcf_len;
1641
1642 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
1643
1644 edcf_len = sizeof(*edcf);
1645 len = sizeof(*control) + edcf_len;
1646 control = kzalloc(len, GFP_KERNEL);
1647 edcf = (struct s_lmo_edcf *) (control + 1);
1648
1649 control->flags = LM_FLAG_CONTROL | LM_CTRL_OPSET;
1650 control->length = edcf_len;
1651 control->oid = LM_OID_EDCF;
1652
1653 edcf->slottime = 0x14;
1654 edcf->sifs = 10;
1655 edcf->eofpad = 6;
1656 edcf->maxburst = 1500;
1657
1658 edcf->queues[0].aifs = 2;
1659 edcf->queues[0].pad0 = 1;
1660 edcf->queues[0].cwmin = 3;
1661 edcf->queues[0].cwmax = 7;
1662 edcf->queues[0].txop = 47;
1663 edcf->queues[1].aifs = 2;
1664 edcf->queues[1].pad0 = 0;
1665 edcf->queues[1].cwmin = 7;
1666 edcf->queues[1].cwmax = 15;
1667 edcf->queues[1].txop = 94;
1668 edcf->queues[2].aifs = 3;
1669 edcf->queues[2].pad0 = 0;
1670 edcf->queues[2].cwmin = 15;
1671 edcf->queues[2].cwmax = 1023;
1672 edcf->queues[2].txop = 0;
1673 edcf->queues[3].aifs = 7;
1674 edcf->queues[3].pad0 = 0;
1675 edcf->queues[3].cwmin = 15;
1676 edcf->queues[3].cwmax = 1023;
1677 edcf->queues[3].txop = 0;
1678 edcf->queues[4].aifs = 13;
1679 edcf->queues[4].pad0 = 99;
1680 edcf->queues[4].cwmin = 3437;
1681 edcf->queues[4].cwmax = 512;
1682 edcf->queues[4].txop = 12;
1683 edcf->queues[5].aifs = 142;
1684 edcf->queues[5].pad0 = 109;
1685 edcf->queues[5].cwmin = 8756;
1686 edcf->queues[5].cwmax = 6;
1687 edcf->queues[5].txop = 0;
1688 edcf->queues[6].aifs = 4;
1689 edcf->queues[6].pad0 = 0;
1690 edcf->queues[6].cwmin = 0;
1691 edcf->queues[6].cwmax = 58705;
1692 edcf->queues[6].txop = 25716;
1693 edcf->queues[7].aifs = 0;
1694 edcf->queues[7].pad0 = 0;
1695 edcf->queues[7].cwmin = 0;
1696 edcf->queues[7].cwmax = 0;
1697 edcf->queues[7].txop = 0;
1698
1699 stlc45xx_tx_frame(stlc, FIRMWARE_CONFIG_START, control, len);
1700
1701 kfree(control);
1702}
1703
1704static void stlc45xx_tx_setup(struct stlc45xx *stlc)
1705{
1706 struct s_lm_control *control;
1707 struct s_lmo_setup *setup;
1708 size_t len, setup_len;
1709
1710 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
1711
1712 setup_len = sizeof(*setup);
1713 len = sizeof(*control) + setup_len;
1714 control = kzalloc(len, GFP_KERNEL);
1715 setup = (struct s_lmo_setup *) (control + 1);
1716
1717 control->flags = LM_FLAG_CONTROL | LM_CTRL_OPSET;
1718 control->length = setup_len;
1719 control->oid = LM_OID_SETUP;
1720
1721 setup->flags = LM_SETUP_INFRA;
1722 setup->antenna = 2;
1723 setup->rx_align = 0;
1724 setup->rx_buffer = FIRMWARE_RXBUFFER_START;
1725 setup->rx_mtu = FIRMWARE_MTU;
1726 setup->frontend = 5;
1727 setup->timeout = 0;
1728 setup->truncate = 48896;
1729 setup->bratemask = 0xffffffff;
1730 setup->ref_clock = 644245094;
1731 setup->lpf_bandwidth = 65535;
1732 setup->osc_start_delay = 65535;
1733
1734 memcpy(setup->macaddr, stlc->mac_addr, ETH_ALEN);
1735 memcpy(setup->bssid, stlc->bssid, ETH_ALEN);
1736
1737 stlc45xx_tx_frame(stlc, FIRMWARE_CONFIG_START, control, len);
1738
1739 kfree(control);
1740}
1741
1742static void stlc45xx_tx_scan(struct stlc45xx *stlc)
1743{
1744 struct s_lm_control *control;
1745 struct s_lmo_scan *scan;
1746 size_t len, scan_len;
1747
1748 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
1749
1750 scan_len = sizeof(*scan);
1751 len = sizeof(*control) + scan_len;
1752 control = kzalloc(len, GFP_KERNEL);
1753 scan = (struct s_lmo_scan *) (control + 1);
1754
1755 control->flags = LM_FLAG_CONTROL | LM_CTRL_OPSET;
1756 control->length = scan_len;
1757 control->oid = LM_OID_SCAN;
1758
1759 scan->flags = LM_SCAN_EXIT;
1760 scan->bratemask = 0x15f;
1761 scan->aloft[0] = 3;
1762 scan->aloft[1] = 3;
1763 scan->aloft[2] = 1;
1764 scan->aloft[3] = 0;
1765 scan->aloft[4] = 0;
1766 scan->aloft[5] = 0;
1767 scan->aloft[6] = 0;
1768 scan->aloft[7] = 0;
1769
1770 memcpy(&scan->rssical, &stlc->cal_rssi[(stlc->channel - 1) *
1771 RSSI_CAL_LEN],
1772 RSSI_CAL_LEN);
1773 memcpy(&scan->channel, &stlc->cal_channels[(stlc->channel - 1) *
1774 CHANNEL_CAL_LEN],
1775 CHANNEL_CAL_LEN);
1776
1777 stlc45xx_tx_frame(stlc, FIRMWARE_CONFIG_START, control, len);
1778
1779 kfree(control);
1780}
1781
1782/*
1783 * caller must hold mutex
1784 */
1785static int stlc45xx_tx_pspoll(struct stlc45xx *stlc, bool powersave)
1786{
1787 struct ieee80211_hdr *pspoll;
1788 int payload_len, padding, i;
1789 struct s_lm_data_out *data;
1790 struct txbuffer *entry;
1791 struct sk_buff *skb;
1792 char *payload;
1793 u16 fc;
1794
1795 skb = dev_alloc_skb(stlc->hw->extra_tx_headroom + 16);
1796 if (!skb) {
1797 stlc45xx_warning("failed to allocate pspoll frame");
1798 return -ENOMEM;
1799 }
1800 skb_reserve(skb, stlc->hw->extra_tx_headroom);
1801
1802 pspoll = (struct ieee80211_hdr *) skb_put(skb, 16);
1803 memset(pspoll, 0, 16);
1804 fc = IEEE80211_FTYPE_CTL | IEEE80211_STYPE_PSPOLL;
1805 if (powersave)
1806 fc |= IEEE80211_FCTL_PM;
1807 pspoll->frame_control = cpu_to_le16(fc);
1808 pspoll->duration_id = cpu_to_le16(stlc->aid);
1809
1810 /* aid in PS-Poll has its two MSBs each set to 1 */
1811 pspoll->duration_id |= cpu_to_le16(1 << 15) | cpu_to_le16(1 << 14);
1812
1813 memcpy(pspoll->addr1, stlc->bssid, ETH_ALEN);
1814 memcpy(pspoll->addr2, stlc->mac_addr, ETH_ALEN);
1815
1816 stlc45xx_debug(DEBUG_PSM, "sending PS-Poll frame to %pM (powersave %d, "
1817 "fc 0x%x, aid %d)", pspoll->addr1,
1818 powersave, fc, stlc->aid);
1819
1820 spin_lock_bh(&stlc->tx_lock);
1821
1822 entry = stlc45xx_txbuffer_alloc(stlc, skb->len);
1823
1824 spin_unlock_bh(&stlc->tx_lock);
1825
1826 if (!entry) {
1827 /*
1828 * The queue should be stopped before the firmware buffer
1829 * is full, so firmware buffer should always have enough
1830 * space.
1831 *
1832 * But I'm too lazy and omit it for now.
1833 */
1834 if (net_ratelimit())
1835 stlc45xx_warning("firmware tx buffer full is full "
1836 "for null frame");
1837 return -ENOSPC;
1838 }
1839
1840 payload = skb->data;
1841 payload_len = skb->len;
1842 padding = (int) (skb->data - sizeof(*data)) & 3;
1843 entry->header_len = sizeof(*data) + padding;
1844
1845 entry->skb = skb;
1846 entry->status_needed = false;
1847 entry->handle = (u32) skb;
1848 entry->lifetime = jiffies + msecs_to_jiffies(TX_FRAME_LIFETIME);
1849
1850 stlc45xx_debug(DEBUG_TX, "tx data 0x%x (0x%p payload %d B "
1851 "padding %d header_len %d)",
1852 entry->handle, payload, payload_len, padding,
1853 entry->header_len);
1854 stlc45xx_dump(DEBUG_TX_CONTENT, payload, payload_len);
1855
1856 data = (struct s_lm_data_out *) skb_push(skb, entry->header_len);
1857
1858 memset(data, 0, entry->header_len);
1859
1860 if (padding)
1861 data->flags = LM_FLAG_ALIGN;
1862
1863 data->flags = LM_OUT_BURST;
1864 data->length = payload_len;
1865 data->handle = entry->handle;
1866 data->aid = 1;
1867 data->rts_retries = 7;
1868 data->retries = 7;
1869 data->aloft_ctrl = 0;
1870 data->crypt_offset = 58;
1871 data->keytype = 0;
1872 data->keylen = 0;
1873 data->queue = LM_QUEUE_DATA3;
1874 data->backlog = 32;
1875 data->antenna = 2;
1876 data->cts = 3;
1877 data->power = 127;
1878
1879 for (i = 0; i < 8; i++)
1880 data->aloft[i] = 0;
1881
1882 /*
1883 * check if there's enough space in tx buffer
1884 *
1885 * FIXME: ignored for now
1886 */
1887
1888 stlc45xx_tx_frame(stlc, entry->start, skb->data, skb->len);
1889
1890 list_add(&entry->tx_list, &stlc->tx_sent);
1891
1892 return 0;
1893}
1894
1895/*
1896 * caller must hold mutex
1897 *
1898 * shamelessly stolen from mac80211/ieee80211_send_nullfunc
1899 */
1900static int stlc45xx_tx_nullfunc(struct stlc45xx *stlc, bool powersave)
1901{
1902 struct ieee80211_hdr *nullfunc;
1903 int payload_len, padding, i;
1904 struct s_lm_data_out *data;
1905 struct txbuffer *entry;
1906 struct sk_buff *skb;
1907 char *payload;
1908 u16 fc;
1909
1910 skb = dev_alloc_skb(stlc->hw->extra_tx_headroom + 24);
1911 if (!skb) {
1912 stlc45xx_warning("failed to allocate buffer for null frame\n");
1913 return -ENOMEM;
1914 }
1915 skb_reserve(skb, stlc->hw->extra_tx_headroom);
1916
1917 nullfunc = (struct ieee80211_hdr *) skb_put(skb, 24);
1918 memset(nullfunc, 0, 24);
1919 fc = IEEE80211_FTYPE_DATA | IEEE80211_STYPE_NULLFUNC |
1920 IEEE80211_FCTL_TODS;
1921
1922 if (powersave)
1923 fc |= IEEE80211_FCTL_PM;
1924
1925 nullfunc->frame_control = cpu_to_le16(fc);
1926 memcpy(nullfunc->addr1, stlc->bssid, ETH_ALEN);
1927 memcpy(nullfunc->addr2, stlc->mac_addr, ETH_ALEN);
1928 memcpy(nullfunc->addr3, stlc->bssid, ETH_ALEN);
1929
1930 stlc45xx_debug(DEBUG_PSM, "sending Null frame to %pM (powersave %d, "
1931 "fc 0x%x)", nullfunc->addr1, powersave, fc);
1932
1933 spin_lock_bh(&stlc->tx_lock);
1934
1935 entry = stlc45xx_txbuffer_alloc(stlc, skb->len);
1936
1937 spin_unlock_bh(&stlc->tx_lock);
1938
1939 if (!entry) {
1940 /*
1941 * The queue should be stopped before the firmware buffer
1942 * is full, so firmware buffer should always have enough
1943 * space.
1944 *
1945 * But I'm too lazy and omit it for now.
1946 */
1947 if (net_ratelimit())
1948 stlc45xx_warning("firmware tx buffer full is full "
1949 "for null frame");
1950 return -ENOSPC;
1951 }
1952
1953 payload = skb->data;
1954 payload_len = skb->len;
1955 padding = (int) (skb->data - sizeof(*data)) & 3;
1956 entry->header_len = sizeof(*data) + padding;
1957
1958 entry->skb = skb;
1959 entry->status_needed = false;
1960 entry->handle = (u32) skb;
1961 entry->lifetime = jiffies + msecs_to_jiffies(TX_FRAME_LIFETIME);
1962
1963 stlc45xx_debug(DEBUG_TX, "tx data 0x%x (0x%p payload %d B "
1964 "padding %d header_len %d)",
1965 entry->handle, payload, payload_len, padding,
1966 entry->header_len);
1967 stlc45xx_dump(DEBUG_TX_CONTENT, payload, payload_len);
1968
1969 data = (struct s_lm_data_out *) skb_push(skb, entry->header_len);
1970
1971 memset(data, 0, entry->header_len);
1972
1973 if (padding)
1974 data->flags = LM_FLAG_ALIGN;
1975
1976 data->flags = LM_OUT_BURST;
1977 data->length = payload_len;
1978 data->handle = entry->handle;
1979 data->aid = 1;
1980 data->rts_retries = 7;
1981 data->retries = 7;
1982 data->aloft_ctrl = 0;
1983 data->crypt_offset = 58;
1984 data->keytype = 0;
1985 data->keylen = 0;
1986 data->queue = LM_QUEUE_DATA3;
1987 data->backlog = 32;
1988 data->antenna = 2;
1989 data->cts = 3;
1990 data->power = 127;
1991
1992 for (i = 0; i < 8; i++)
1993 data->aloft[i] = 0;
1994
1995 /*
1996 * check if there's enough space in tx buffer
1997 *
1998 * FIXME: ignored for now
1999 */
2000
2001 stlc45xx_tx_frame(stlc, entry->start, skb->data, skb->len);
2002
2003 list_add(&entry->tx_list, &stlc->tx_sent);
2004
2005 return 0;
2006}
2007
2008/* caller must hold mutex */
2009static void stlc45xx_tx_psm(struct stlc45xx *stlc, bool enable)
2010{
2011 struct s_lm_control *control;
2012 struct s_lmo_psm *psm;
2013 size_t len, psm_len;
2014
2015 WARN_ON(!stlc->associated);
2016 WARN_ON(stlc->aid < 1);
2017 WARN_ON(stlc->aid > 2007);
2018
2019 psm_len = sizeof(*psm);
2020 len = sizeof(*control) + psm_len;
2021 control = kzalloc(len, GFP_KERNEL);
2022 psm = (struct s_lmo_psm *) (control + 1);
2023
2024 control->flags = LM_FLAG_CONTROL | LM_CTRL_OPSET;
2025 control->length = psm_len;
2026 control->oid = LM_OID_PSM;
2027
2028 if (enable)
2029 psm->flags |= LM_PSM;
2030
2031 psm->aid = stlc->aid;
2032
2033 psm->beacon_rcpi_skip_max = 60;
2034
2035 psm->intervals[0].interval = 1;
2036 psm->intervals[0].periods = 1;
2037 psm->intervals[1].interval = 1;
2038 psm->intervals[1].periods = 1;
2039 psm->intervals[2].interval = 1;
2040 psm->intervals[2].periods = 1;
2041 psm->intervals[3].interval = 1;
2042 psm->intervals[3].periods = 1;
2043
2044 psm->nr = 0;
2045 psm->exclude[0] = 0;
2046
2047 stlc45xx_debug(DEBUG_PSM, "sending LM_OID_PSM (aid %d, interval %d)",
2048 psm->aid, psm->intervals[0].interval);
2049
2050 stlc45xx_tx_frame(stlc, FIRMWARE_CONFIG_START, control, len);
2051
2052 kfree(control);
2053}
2054
2055static int stlc45xx_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
2056{
2057 struct stlc45xx *stlc = hw->priv;
2058 struct ieee80211_tx_info *info;
2059 struct ieee80211_rate *rate;
2060 int payload_len, padding, i;
2061 struct s_lm_data_out *data;
2062 struct txbuffer *entry;
2063 char *payload;
2064
2065 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
2066
2067 spin_lock_bh(&stlc->tx_lock);
2068
2069 entry = stlc45xx_txbuffer_alloc(stlc, skb->len);
2070 if (!entry) {
2071 /* the queue should be stopped before the firmware buffer
2072 * is full, so firmware buffer should always have enough
2073 * space */
2074 if (net_ratelimit())
2075 stlc45xx_warning("firmware buffer full");
2076 spin_unlock_bh(&stlc->tx_lock);
2077 return NETDEV_TX_BUSY;
2078 }
2079
2080 info = IEEE80211_SKB_CB(skb);
2081
2082 payload = skb->data;
2083 payload_len = skb->len;
2084 padding = (int) (skb->data - sizeof(*data)) & 3;
2085 entry->header_len = sizeof(*data) + padding;
2086
2087 entry->skb = skb;
2088 entry->status_needed = true;
2089 entry->handle = (u32) skb;
2090 entry->lifetime = jiffies + msecs_to_jiffies(TX_FRAME_LIFETIME);
2091
2092 stlc45xx_debug(DEBUG_TX, "tx data 0x%x (0x%p payload %d B "
2093 "padding %d header_len %d)",
2094 entry->handle, payload, payload_len, padding,
2095 entry->header_len);
2096 stlc45xx_dump(DEBUG_TX_CONTENT, payload, payload_len);
2097
2098 data = (struct s_lm_data_out *) skb_push(skb, entry->header_len);
2099
2100 memset(data, 0, entry->header_len);
2101
2102 if (padding)
2103 data->flags = LM_FLAG_ALIGN;
2104
2105 data->flags = LM_OUT_BURST;
2106 data->length = payload_len;
2107 data->handle = entry->handle;
2108 data->aid = 1;
2109 data->rts_retries = 7;
2110 data->retries = 7;
2111 data->aloft_ctrl = 0;
2112 data->crypt_offset = 58;
2113 data->keytype = 0;
2114 data->keylen = 0;
2115 data->queue = 2;
2116 data->backlog = 32;
2117 data->antenna = 2;
2118 data->cts = 3;
2119 data->power = 127;
2120
2121 for (i = 0; i < 8; i++) {
2122 rate = ieee80211_get_tx_rate(stlc->hw, info);
2123 data->aloft[i] = rate->hw_value;
2124 }
2125
2126 list_add_tail(&entry->tx_list, &stlc->tx_pending);
2127
2128 /* check if there's enough space in tx buffer */
2129 if (stlc45xx_txbuffer_find(stlc, MAX_FRAME_LEN) == -1) {
2130 stlc45xx_debug(DEBUG_QUEUE, "tx buffer full, stopping queues");
2131 stlc->tx_queue_stopped = 1;
2132 ieee80211_stop_queues(stlc->hw);
2133 }
2134
2135 queue_work(stlc->hw->workqueue, &stlc->work);
2136
2137 spin_unlock_bh(&stlc->tx_lock);
2138
2139 return NETDEV_TX_OK;
2140}
2141
2142static int stlc45xx_op_start(struct ieee80211_hw *hw)
2143{
2144 struct stlc45xx *stlc = hw->priv;
2145 unsigned long timeout;
2146 int ret = 0;
2147
2148 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
2149
2150 mutex_lock(&stlc->mutex);
2151
2152 stlc->fw_state = FW_STATE_BOOTING;
2153 stlc->channel = 1;
2154
2155 stlc45xx_power_on(stlc);
2156
2157 ret = stlc45xx_upload_firmware(stlc);
2158 if (ret < 0) {
2159 stlc45xx_power_off(stlc);
2160 goto out_unlock;
2161 }
2162
2163 stlc->tx_queue_stopped = 0;
2164
2165 mutex_unlock(&stlc->mutex);
2166
2167 timeout = msecs_to_jiffies(2000);
2168 timeout = wait_for_completion_interruptible_timeout(&stlc->fw_comp,
2169 timeout);
2170 if (!timeout) {
2171 stlc45xx_error("firmware boot failed");
2172 stlc45xx_power_off(stlc);
2173 ret = -1;
2174 goto out;
2175 }
2176
2177 stlc45xx_debug(DEBUG_BOOT, "firmware booted");
2178
2179 /* FIXME: should we take mutex just after wait_for_completion()? */
2180 mutex_lock(&stlc->mutex);
2181
2182 WARN_ON(stlc->fw_state != FW_STATE_READY);
2183
2184out_unlock:
2185 mutex_unlock(&stlc->mutex);
2186
2187out:
2188 return ret;
2189}
2190
2191static void stlc45xx_op_stop(struct ieee80211_hw *hw)
2192{
2193 struct stlc45xx *stlc = hw->priv;
2194
2195 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
2196
2197 mutex_lock(&stlc->mutex);
2198
2199 WARN_ON(stlc->fw_state != FW_STATE_READY);
2200
2201 stlc45xx_power_off(stlc);
2202
2203 /* FIXME: make sure that all work_structs have completed */
2204
2205 spin_lock_bh(&stlc->tx_lock);
2206 stlc45xx_flush_queues(stlc);
2207 spin_unlock_bh(&stlc->tx_lock);
2208
2209 stlc->fw_state = FW_STATE_OFF;
2210
2211 mutex_unlock(&stlc->mutex);
2212}
2213
2214static int stlc45xx_op_add_interface(struct ieee80211_hw *hw,
2215 struct ieee80211_if_init_conf *conf)
2216{
2217 struct stlc45xx *stlc = hw->priv;
2218
2219 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
2220
2221 switch (conf->type) {
2222 case NL80211_IFTYPE_STATION:
2223 break;
2224 default:
2225 return -EOPNOTSUPP;
2226 }
2227
2228 memcpy(stlc->mac_addr, conf->mac_addr, ETH_ALEN);
2229
2230 return 0;
2231}
2232
2233static void stlc45xx_op_remove_interface(struct ieee80211_hw *hw,
2234 struct ieee80211_if_init_conf *conf)
2235{
2236 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
2237}
2238
2239static int stlc45xx_op_config(struct ieee80211_hw *hw, u32 changed)
2240{
2241 struct stlc45xx *stlc = hw->priv;
2242
2243 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
2244
2245 mutex_lock(&stlc->mutex);
2246
2247 stlc->channel = hw->conf.channel->hw_value;
2248 stlc45xx_tx_scan(stlc);
2249 stlc45xx_tx_setup(stlc);
2250 stlc45xx_tx_edcf(stlc);
2251
2252 if ((hw->conf.flags & IEEE80211_CONF_PS) != stlc->psm) {
2253 stlc->psm = hw->conf.flags & IEEE80211_CONF_PS;
2254 if (stlc->associated) {
2255 stlc45xx_tx_psm(stlc, stlc->psm);
2256 stlc45xx_tx_nullfunc(stlc, stlc->psm);
2257 }
2258 }
2259
2260 mutex_unlock(&stlc->mutex);
2261
2262 return 0;
2263}
2264
2265static void stlc45xx_op_configure_filter(struct ieee80211_hw *hw,
2266 unsigned int changed_flags,
2267 unsigned int *total_flags,
2268 int mc_count,
2269 struct dev_addr_list *mc_list)
2270{
2271 *total_flags = 0;
2272}
2273
2274static void stlc45xx_op_bss_info_changed(struct ieee80211_hw *hw,
2275 struct ieee80211_vif *vif,
2276 struct ieee80211_bss_conf *info,
2277 u32 changed)
2278{
2279 struct stlc45xx *stlc = hw->priv;
2280
2281 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
2282 mutex_lock(&stlc->mutex);
2283
2284 memcpy(stlc->bssid, info->bssid, ETH_ALEN);
2285 stlc45xx_tx_setup(stlc);
2286
2287 mutex_unlock(&stlc->mutex);
2288
2289 if (changed & BSS_CHANGED_ASSOC) {
2290 stlc->associated = info->assoc;
2291 if (info->assoc)
2292 stlc->aid = info->aid;
2293 else
2294 stlc->aid = -1;
2295
2296 if (stlc->psm) {
2297 stlc45xx_tx_psm(stlc, stlc->psm);
2298 stlc45xx_tx_nullfunc(stlc, stlc->psm);
2299 }
2300 }
2301}
2302
2303
2304/* can't be const, mac80211 writes to this */
2305static struct ieee80211_rate stlc45xx_rates[] = {
2306 { .bitrate = 10, .hw_value = 0, .hw_value_short = 0, },
2307 { .bitrate = 20, .hw_value = 1, .hw_value_short = 1, },
2308 { .bitrate = 55, .hw_value = 2, .hw_value_short = 2, },
2309 { .bitrate = 110, .hw_value = 3, .hw_value_short = 3, },
2310 { .bitrate = 60, .hw_value = 4, .hw_value_short = 4, },
2311 { .bitrate = 90, .hw_value = 5, .hw_value_short = 5, },
2312 { .bitrate = 120, .hw_value = 6, .hw_value_short = 6, },
2313 { .bitrate = 180, .hw_value = 7, .hw_value_short = 7, },
2314 { .bitrate = 240, .hw_value = 8, .hw_value_short = 8, },
2315 { .bitrate = 360, .hw_value = 9, .hw_value_short = 9, },
2316 { .bitrate = 480, .hw_value = 10, .hw_value_short = 10, },
2317 { .bitrate = 540, .hw_value = 11, .hw_value_short = 11, },
2318};
2319
2320/* can't be const, mac80211 writes to this */
2321static struct ieee80211_channel stlc45xx_channels[] = {
2322 { .hw_value = 1, .center_freq = 2412},
2323 { .hw_value = 2, .center_freq = 2417},
2324 { .hw_value = 3, .center_freq = 2422},
2325 { .hw_value = 4, .center_freq = 2427},
2326 { .hw_value = 5, .center_freq = 2432},
2327 { .hw_value = 6, .center_freq = 2437},
2328 { .hw_value = 7, .center_freq = 2442},
2329 { .hw_value = 8, .center_freq = 2447},
2330 { .hw_value = 9, .center_freq = 2452},
2331 { .hw_value = 10, .center_freq = 2457},
2332 { .hw_value = 11, .center_freq = 2462},
2333 { .hw_value = 12, .center_freq = 2467},
2334 { .hw_value = 13, .center_freq = 2472},
2335};
2336
2337/* can't be const, mac80211 writes to this */
2338static struct ieee80211_supported_band stlc45xx_band_2ghz = {
2339 .channels = stlc45xx_channels,
2340 .n_channels = ARRAY_SIZE(stlc45xx_channels),
2341 .bitrates = stlc45xx_rates,
2342 .n_bitrates = ARRAY_SIZE(stlc45xx_rates),
2343};
2344
2345static const struct ieee80211_ops stlc45xx_ops = {
2346 .start = stlc45xx_op_start,
2347 .stop = stlc45xx_op_stop,
2348 .add_interface = stlc45xx_op_add_interface,
2349 .remove_interface = stlc45xx_op_remove_interface,
2350 .config = stlc45xx_op_config,
2351 .configure_filter = stlc45xx_op_configure_filter,
2352 .tx = stlc45xx_op_tx,
2353 .bss_info_changed = stlc45xx_op_bss_info_changed,
2354};
2355
2356static int stlc45xx_register_mac80211(struct stlc45xx *stlc)
2357{
2358 /* FIXME: SET_IEEE80211_PERM_ADDR() requires default_mac_addr
2359 to be non-const for some strange reason */
2360 static u8 default_mac_addr[ETH_ALEN] = {
2361 0x00, 0x02, 0xee, 0xc0, 0xff, 0xee
2362 };
2363 int ret;
2364
2365 SET_IEEE80211_PERM_ADDR(stlc->hw, default_mac_addr);
2366
2367 ret = ieee80211_register_hw(stlc->hw);
2368 if (ret) {
2369 stlc45xx_error("unable to register mac80211 hw: %d", ret);
2370 return ret;
2371 }
2372
2373 return 0;
2374}
2375
2376static void stlc45xx_device_release(struct device *dev)
2377{
2378
2379}
2380
2381static struct platform_device stlc45xx_device = {
2382 .name = "stlc45xx",
2383 .id = -1,
2384
2385 /* device model insists to have a release function */
2386 .dev = {
2387 .release = stlc45xx_device_release,
2388 },
2389};
2390
2391static int __devinit stlc45xx_probe(struct spi_device *spi)
2392{
2393 struct stlc45xx *stlc;
2394 struct ieee80211_hw *hw;
2395 int ret;
2396
2397 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
2398
2399 /* mac80211 alloc */
2400 hw = ieee80211_alloc_hw(sizeof(*stlc), &stlc45xx_ops);
2401 if (!hw) {
2402 stlc45xx_error("could not alloc ieee80211_hw");
2403 ret = -ENOMEM;
2404 goto out;
2405 }
2406
2407 /* mac80211 clears hw->priv */
2408 stlc = hw->priv;
2409
2410 stlc->hw = hw;
2411 dev_set_drvdata(&spi->dev, stlc);
2412 stlc->spi = spi;
2413
2414 spi->bits_per_word = 16;
2415 spi->max_speed_hz = 24000000;
2416
2417 ret = spi_setup(spi);
2418 if (ret < 0)
2419 stlc45xx_error("spi_setup failed");
2420
2421 ret = gpio_request(stlc45xx_gpio_power, "stlc45xx power");
2422 if (ret < 0) {
2423 stlc45xx_error("power GPIO request failed: %d", ret);
2424 return ret;
2425 }
2426
2427 ret = gpio_request(stlc45xx_gpio_irq, "stlc45xx irq");
2428 if (ret < 0) {
2429 stlc45xx_error("irq GPIO request failed: %d", ret);
2430 goto out;
2431 }
2432
2433 gpio_direction_output(stlc45xx_gpio_power, 0);
2434 gpio_direction_input(stlc45xx_gpio_irq);
2435
2436 ret = request_irq(gpio_to_irq(stlc45xx_gpio_irq),
2437 stlc45xx_interrupt, IRQF_DISABLED, "stlc45xx",
2438 stlc->spi);
2439 if (ret < 0)
2440 /* FIXME: handle the error */
2441 stlc45xx_error("request_irq() failed");
2442
2443 set_irq_type(gpio_to_irq(stlc45xx_gpio_irq),
2444 IRQ_TYPE_EDGE_RISING);
2445
2446 disable_irq(gpio_to_irq(stlc45xx_gpio_irq));
2447
2448 ret = platform_device_register(&stlc45xx_device);
2449 if (ret) {
2450 stlc45xx_error("Couldn't register wlan_omap device.");
2451 return ret;
2452 }
2453 dev_set_drvdata(&stlc45xx_device.dev, stlc);
2454
2455 INIT_WORK(&stlc->work, stlc45xx_work);
2456 INIT_WORK(&stlc->work_reset, stlc45xx_work_reset);
2457 INIT_DELAYED_WORK(&stlc->work_tx_timeout, stlc45xx_work_tx_timeout);
2458 mutex_init(&stlc->mutex);
2459 init_completion(&stlc->fw_comp);
2460 spin_lock_init(&stlc->tx_lock);
2461 INIT_LIST_HEAD(&stlc->txbuffer);
2462 INIT_LIST_HEAD(&stlc->tx_pending);
2463 INIT_LIST_HEAD(&stlc->tx_sent);
2464
2465 hw->flags = IEEE80211_HW_RX_INCLUDES_FCS |
2466 IEEE80211_HW_SIGNAL_DBM |
2467 IEEE80211_HW_NOISE_DBM;
2468 /* four bytes for padding */
2469 hw->extra_tx_headroom = sizeof(struct s_lm_data_out) + 4;
2470
2471 /* unit us */
2472 hw->channel_change_time = 1000;
2473
2474 hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION);
2475 hw->wiphy->bands[IEEE80211_BAND_2GHZ] = &stlc45xx_band_2ghz;
2476
2477 SET_IEEE80211_DEV(hw, &spi->dev);
2478
2479 BUILD_BUG_ON(sizeof(default_cal_rssi) != RSSI_CAL_ARRAY_LEN);
2480 BUILD_BUG_ON(sizeof(default_cal_channels) != CHANNEL_CAL_ARRAY_LEN);
2481
2482 stlc->cal_rssi = kmemdup(default_cal_rssi, RSSI_CAL_ARRAY_LEN,
2483 GFP_KERNEL);
2484 stlc->cal_channels = kmemdup(default_cal_channels,
2485 CHANNEL_CAL_ARRAY_LEN,
2486 GFP_KERNEL);
2487
2488 ret = device_create_file(&stlc45xx_device.dev, &dev_attr_cal_rssi);
2489 if (ret < 0) {
2490 stlc45xx_error("failed to create sysfs file cal_rssi");
2491 goto out;
2492 }
2493
2494 ret = device_create_file(&stlc45xx_device.dev, &dev_attr_cal_channels);
2495 if (ret < 0) {
2496 stlc45xx_error("failed to create sysfs file cal_channels");
2497 goto out;
2498 }
2499
2500 ret = device_create_file(&stlc45xx_device.dev, &dev_attr_tx_buf);
2501 if (ret < 0) {
2502 stlc45xx_error("failed to create sysfs file tx_buf");
2503 goto out;
2504 }
2505
2506 ret = stlc45xx_register_mac80211(stlc);
2507 if (ret < 0)
2508 goto out;
2509
2510 stlc45xx_info("v" DRIVER_VERSION " loaded");
2511
2512 stlc45xx_info("config buffer 0x%x-0x%x",
2513 FIRMWARE_CONFIG_START, FIRMWARE_CONFIG_END);
2514 stlc45xx_info("tx 0x%x-0x%x, rx 0x%x-0x%x",
2515 FIRMWARE_TXBUFFER_START, FIRMWARE_TXBUFFER_END,
2516 FIRMWARE_RXBUFFER_START, FIRMWARE_RXBUFFER_END);
2517
2518out:
2519 return ret;
2520}
2521
2522static int __devexit stlc45xx_remove(struct spi_device *spi)
2523{
2524 struct stlc45xx *stlc = dev_get_drvdata(&spi->dev);
2525
2526 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
2527
2528 platform_device_unregister(&stlc45xx_device);
2529
2530 ieee80211_unregister_hw(stlc->hw);
2531
2532 free_irq(gpio_to_irq(stlc45xx_gpio_irq), spi);
2533
2534 gpio_free(stlc45xx_gpio_power);
2535 gpio_free(stlc45xx_gpio_irq);
2536
2537 /* FIXME: free cal_channels and cal_rssi? */
2538
2539 kfree(stlc->fw);
2540
2541 mutex_destroy(&stlc->mutex);
2542
2543 /* frees also stlc */
2544 ieee80211_free_hw(stlc->hw);
2545 stlc = NULL;
2546
2547 return 0;
2548}
2549
2550
2551static struct spi_driver stlc45xx_spi_driver = {
2552 .driver = {
2553 /* use cx3110x name because board-n800.c uses that for the
2554 * SPI port */
2555 .name = "cx3110x",
2556 .bus = &spi_bus_type,
2557 .owner = THIS_MODULE,
2558 },
2559
2560 .probe = stlc45xx_probe,
2561 .remove = __devexit_p(stlc45xx_remove),
2562};
2563
2564static int __init stlc45xx_init(void)
2565{
2566 int ret;
2567
2568 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
2569
2570 ret = spi_register_driver(&stlc45xx_spi_driver);
2571 if (ret < 0) {
2572 stlc45xx_error("failed to register SPI driver: %d", ret);
2573 goto out;
2574 }
2575
2576out:
2577 return ret;
2578}
2579
2580static void __exit stlc45xx_exit(void)
2581{
2582 stlc45xx_debug(DEBUG_FUNC, "%s", __func__);
2583
2584 spi_unregister_driver(&stlc45xx_spi_driver);
2585
2586 stlc45xx_info("unloaded");
2587}
2588
2589module_init(stlc45xx_init);
2590module_exit(stlc45xx_exit);
2591
2592MODULE_LICENSE("GPL");
2593MODULE_AUTHOR("Kalle Valo <kalle.valo@nokia.com>");
2594MODULE_ALIAS("spi:cx3110x");
diff --git a/drivers/staging/stlc45xx/stlc45xx.h b/drivers/staging/stlc45xx/stlc45xx.h
deleted file mode 100644
index ac96bbbde79f..000000000000
--- a/drivers/staging/stlc45xx/stlc45xx.h
+++ /dev/null
@@ -1,283 +0,0 @@
1/*
2 * This file is part of stlc45xx
3 *
4 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
5 *
6 * Contact: Kalle Valo <kalle.valo@nokia.com>
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * version 2 as published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20 * 02110-1301 USA
21 *
22 */
23
24#include <linux/mutex.h>
25#include <linux/list.h>
26#include <net/mac80211.h>
27
28#include "stlc45xx_lmac.h"
29
30#define DRIVER_NAME "stlc45xx"
31#define DRIVER_VERSION "0.1.3"
32
33#define DRIVER_PREFIX DRIVER_NAME ": "
34
35enum {
36 DEBUG_NONE = 0,
37 DEBUG_FUNC = 1 << 0,
38 DEBUG_IRQ = 1 << 1,
39 DEBUG_BH = 1 << 2,
40 DEBUG_RX = 1 << 3,
41 DEBUG_RX_CONTENT = 1 << 5,
42 DEBUG_TX = 1 << 6,
43 DEBUG_TX_CONTENT = 1 << 8,
44 DEBUG_TXBUFFER = 1 << 9,
45 DEBUG_QUEUE = 1 << 10,
46 DEBUG_BOOT = 1 << 11,
47 DEBUG_PSM = 1 << 12,
48 DEBUG_ALL = ~0,
49};
50
51#define DEBUG_LEVEL DEBUG_NONE
52/* #define DEBUG_LEVEL DEBUG_ALL */
53/* #define DEBUG_LEVEL (DEBUG_TX | DEBUG_RX | DEBUG_IRQ) */
54/* #define DEBUG_LEVEL (DEBUG_TX | DEBUG_MEMREGION | DEBUG_QUEUE) */
55/* #define DEBUG_LEVEL (DEBUG_MEMREGION | DEBUG_QUEUE) */
56
57#define stlc45xx_error(fmt, arg...) \
58 printk(KERN_ERR DRIVER_PREFIX "ERROR " fmt "\n", ##arg)
59
60#define stlc45xx_warning(fmt, arg...) \
61 printk(KERN_WARNING DRIVER_PREFIX "WARNING " fmt "\n", ##arg)
62
63#define stlc45xx_info(fmt, arg...) \
64 printk(KERN_INFO DRIVER_PREFIX fmt "\n", ##arg)
65
66#define stlc45xx_debug(level, fmt, arg...) \
67 do { \
68 if (level & DEBUG_LEVEL) \
69 printk(KERN_DEBUG DRIVER_PREFIX fmt "\n", ##arg); \
70 } while (0)
71
72#define stlc45xx_dump(level, buf, len) \
73 do { \
74 if (level & DEBUG_LEVEL) \
75 print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET, \
76 16, 1, buf, len, 1); \
77 } while (0)
78
79#define MAC2STR(a) ((a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5])
80#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
81
82/* Bit 15 is read/write bit; ON = READ, OFF = WRITE */
83#define ADDR_READ_BIT_15 0x8000
84
85#define SPI_ADRS_ARM_INTERRUPTS 0x00
86#define SPI_ADRS_ARM_INT_EN 0x04
87
88#define SPI_ADRS_HOST_INTERRUPTS 0x08
89#define SPI_ADRS_HOST_INT_EN 0x0c
90#define SPI_ADRS_HOST_INT_ACK 0x10
91
92#define SPI_ADRS_GEN_PURP_1 0x14
93#define SPI_ADRS_GEN_PURP_2 0x18
94
95/* high word */
96#define SPI_ADRS_DEV_CTRL_STAT 0x26
97
98#define SPI_ADRS_DMA_DATA 0x28
99
100#define SPI_ADRS_DMA_WRITE_CTRL 0x2c
101#define SPI_ADRS_DMA_WRITE_LEN 0x2e
102#define SPI_ADRS_DMA_WRITE_BASE 0x30
103
104#define SPI_ADRS_DMA_READ_CTRL 0x34
105#define SPI_ADRS_DMA_READ_LEN 0x36
106#define SPI_ADRS_DMA_READ_BASE 0x38
107
108#define SPI_CTRL_STAT_HOST_OVERRIDE 0x8000
109#define SPI_CTRL_STAT_START_HALTED 0x4000
110#define SPI_CTRL_STAT_RAM_BOOT 0x2000
111#define SPI_CTRL_STAT_HOST_RESET 0x1000
112#define SPI_CTRL_STAT_HOST_CPU_EN 0x0800
113
114#define SPI_DMA_WRITE_CTRL_ENABLE 0x0001
115#define SPI_DMA_READ_CTRL_ENABLE 0x0001
116#define HOST_ALLOWED (1 << 7)
117
118#define FIRMWARE_ADDRESS 0x20000
119
120#define SPI_TIMEOUT 100 /* msec */
121
122#define SPI_MAX_TX_PACKETS 32
123
124#define SPI_MAX_PACKET_SIZE 32767
125
126#define SPI_TARGET_INT_WAKEUP 0x00000001
127#define SPI_TARGET_INT_SLEEP 0x00000002
128#define SPI_TARGET_INT_RDDONE 0x00000004
129
130#define SPI_TARGET_INT_CTS 0x00004000
131#define SPI_TARGET_INT_DR 0x00008000
132
133#define SPI_HOST_INT_READY 0x00000001
134#define SPI_HOST_INT_WR_READY 0x00000002
135#define SPI_HOST_INT_SW_UPDATE 0x00000004
136#define SPI_HOST_INT_UPDATE 0x10000000
137
138/* clear to send */
139#define SPI_HOST_INT_CTS 0x00004000
140
141/* data ready */
142#define SPI_HOST_INT_DR 0x00008000
143
144#define SPI_HOST_INTS_DEFAULT \
145 (SPI_HOST_INT_READY | SPI_HOST_INT_UPDATE | SPI_HOST_INT_SW_UPDATE)
146
147#define TARGET_BOOT_SLEEP 50
148
149/* The firmware buffer is divided into three areas:
150 *
151 * o config area (for control commands)
152 * o tx buffer
153 * o rx buffer
154 */
155#define FIRMWARE_BUFFER_START 0x20200
156#define FIRMWARE_BUFFER_END 0x27c60
157#define FIRMWARE_BUFFER_LEN (FIRMWARE_BUFFER_END - FIRMWARE_BUFFER_START)
158#define FIRMWARE_MTU 3240
159#define FIRMWARE_CONFIG_PAYLOAD_LEN 1024
160#define FIRMWARE_CONFIG_START FIRMWARE_BUFFER_START
161#define FIRMWARE_CONFIG_LEN (sizeof(struct s_lm_control) + \
162 FIRMWARE_CONFIG_PAYLOAD_LEN)
163#define FIRMWARE_CONFIG_END (FIRMWARE_CONFIG_START + FIRMWARE_CONFIG_LEN - 1)
164#define FIRMWARE_RXBUFFER_LEN (5 * FIRMWARE_MTU + 1024)
165#define FIRMWARE_RXBUFFER_START (FIRMWARE_BUFFER_END - FIRMWARE_RXBUFFER_LEN)
166#define FIRMWARE_RXBUFFER_END (FIRMWARE_RXBUFFER_START + \
167 FIRMWARE_RXBUFFER_LEN - 1)
168#define FIRMWARE_TXBUFFER_START (FIRMWARE_BUFFER_START + FIRMWARE_CONFIG_LEN)
169#define FIRMWARE_TXBUFFER_LEN (FIRMWARE_BUFFER_LEN - FIRMWARE_CONFIG_LEN - \
170 FIRMWARE_RXBUFFER_LEN)
171#define FIRMWARE_TXBUFFER_END (FIRMWARE_TXBUFFER_START + \
172 FIRMWARE_TXBUFFER_LEN - 1)
173
174#define FIRMWARE_TXBUFFER_HEADER 100
175#define FIRMWARE_TXBUFFER_TRAILER 4
176
177/* FIXME: come up with a proper value */
178#define MAX_FRAME_LEN 2500
179
180/* unit is ms */
181#define TX_FRAME_LIFETIME 2000
182#define TX_TIMEOUT 4000
183
184#define SUPPORTED_CHANNELS 13
185
186/* FIXME */
187/* #define CHANNEL_CAL_LEN offsetof(struct s_lmo_scan, bratemask) - \ */
188/* offsetof(struct s_lmo_scan, channel) */
189#define CHANNEL_CAL_LEN 292
190#define CHANNEL_CAL_ARRAY_LEN (SUPPORTED_CHANNELS * CHANNEL_CAL_LEN)
191/* FIXME */
192/* #define RSSI_CAL_LEN sizeof(struct s_lmo_scan) - \ */
193/* offsetof(struct s_lmo_scan, rssical) */
194#define RSSI_CAL_LEN 8
195#define RSSI_CAL_ARRAY_LEN (SUPPORTED_CHANNELS * RSSI_CAL_LEN)
196
197struct s_dma_regs {
198 unsigned short cmd;
199 unsigned short len;
200 unsigned long addr;
201};
202
203struct stlc45xx_ie_tim {
204 u8 dtim_count;
205 u8 dtim_period;
206 u8 bmap_control;
207 u8 pvbmap[251];
208};
209
210struct txbuffer {
211 /* can be removed when switched to skb queue */
212 struct list_head tx_list;
213
214 struct list_head buffer_list;
215
216 int start;
217 int frame_start;
218 int end;
219
220 struct sk_buff *skb;
221 u32 handle;
222
223 bool status_needed;
224
225 int header_len;
226
227 /* unit jiffies */
228 unsigned long lifetime;
229};
230
231enum fw_state {
232 FW_STATE_OFF,
233 FW_STATE_BOOTING,
234 FW_STATE_READY,
235 FW_STATE_RESET,
236 FW_STATE_RESETTING,
237};
238
239struct stlc45xx {
240 struct ieee80211_hw *hw;
241 struct spi_device *spi;
242 struct work_struct work;
243 struct work_struct work_reset;
244 struct delayed_work work_tx_timeout;
245 struct mutex mutex;
246 struct completion fw_comp;
247
248
249 u8 bssid[ETH_ALEN];
250 u8 mac_addr[ETH_ALEN];
251 int channel;
252
253 u8 *cal_rssi;
254 u8 *cal_channels;
255
256 enum fw_state fw_state;
257
258 spinlock_t tx_lock;
259
260 /* protected by tx_lock */
261 struct list_head txbuffer;
262
263 /* protected by tx_lock */
264 struct list_head tx_pending;
265
266 /* protected by tx_lock */
267 int tx_queue_stopped;
268
269 /* protected by mutex */
270 struct list_head tx_sent;
271
272 int tx_frames;
273
274 u8 *fw;
275 int fw_len;
276
277 bool psm;
278 bool associated;
279 int aid;
280 bool pspolling;
281};
282
283
diff --git a/drivers/staging/stlc45xx/stlc45xx_lmac.h b/drivers/staging/stlc45xx/stlc45xx_lmac.h
deleted file mode 100644
index af5db801347f..000000000000
--- a/drivers/staging/stlc45xx/stlc45xx_lmac.h
+++ /dev/null
@@ -1,434 +0,0 @@
1/************************************************************************
2* This is the LMAC API interface header file for STLC4560. *
3* Copyright (C) 2007 Conexant Systems, Inc. *
4* This program is free software; you can redistribute it and/or *
5* modify it under the terms of the GNU General Public License *
6* as published by the Free Software Foundation; either version 2 *
7* of the License, or (at your option) any later version. *
8* *
9* This program is distributed in the hope that it will be useful, *
10* but WITHOUT ANY WARRANTY; without even the implied warranty of *
11* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12* GNU General Public License for more details. *
13* *
14* You should have received a copy of the GNU General Public License *
15* along with this program. If not, see <http://www.gnu.org/licenses/>.*
16*************************************************************************/
17
18#ifndef __lmac_h__
19#define __lmac_h__
20
21#define LM_TOP_VARIANT 0x0506
22#define LM_BOTTOM_VARIANT 0x0506
23
24/*
25 * LMAC - UMAC interface definition:
26 */
27
28#define LM_FLAG_CONTROL 0x8000
29#define LM_FLAG_ALIGN 0x4000
30
31#define LM_CTRL_OPSET 0x0001
32
33#define LM_OUT_PROMISC 0x0001
34#define LM_OUT_TIMESTAMP 0x0002
35#define LM_OUT_SEQNR 0x0004
36#define LM_OUT_BURST 0x0010
37#define LM_OUT_NOCANCEL 0x0020
38#define LM_OUT_CLEARTIM 0x0040
39#define LM_OUT_HITCHHIKE 0x0080
40#define LM_OUT_COMPRESS 0x0100
41#define LM_OUT_CONCAT 0x0200
42#define LM_OUT_PCS_ACCEPT 0x0400
43#define LM_OUT_WAITEOSP 0x0800
44
45
46#define LM_ALOFT_SP 0x10
47#define LM_ALOFT_CTS 0x20
48#define LM_ALOFT_RTS 0x40
49#define LM_ALOFT_MASK 0x1f
50#define LM_ALOFT_RATE 0x0f
51
52#define LM_IN_FCS_GOOD 0x0001
53#define LM_IN_MATCH_MAC 0x0002
54#define LM_IN_MCBC 0x0004
55#define LM_IN_BEACON 0x0008
56#define LM_IN_MATCH_BSS 0x0010
57#define LM_IN_BCAST_BSS 0x0020
58#define LM_IN_DATA 0x0040
59#define LM_IN_TRUNCATED 0x0080
60
61#define LM_IN_TRANSPARENT 0x0200
62
63#define LM_QUEUE_BEACON 0
64#define LM_QUEUE_SCAN 1
65#define LM_QUEUE_MGT 2
66#define LM_QUEUE_MCBC 3
67#define LM_QUEUE_DATA 4
68#define LM_QUEUE_DATA0 4
69#define LM_QUEUE_DATA1 5
70#define LM_QUEUE_DATA2 6
71#define LM_QUEUE_DATA3 7
72
73#define LM_SETUP_INFRA 0x0001
74#define LM_SETUP_IBSS 0x0002
75#define LM_SETUP_TRANSPARENT 0x0008
76#define LM_SETUP_PROMISCUOUS 0x0010
77#define LM_SETUP_HIBERNATE 0x0020
78#define LM_SETUP_NOACK 0x0040
79#define LM_SETUP_RX_DISABLED 0x0080
80
81#define LM_ANTENNA_0 0
82#define LM_ANTENNA_1 1
83#define LM_ANTENNA_DIVERSITY 2
84
85#define LM_TX_FAILED 0x0001
86#define LM_TX_PSM 0x0002
87#define LM_TX_PSM_CANCELLED 0x0004
88
89#define LM_SCAN_EXIT 0x0001
90#define LM_SCAN_TRAP 0x0002
91#define LM_SCAN_ACTIVE 0x0004
92#define LM_SCAN_FILTER 0x0008
93
94#define LM_PSM 0x0001
95#define LM_PSM_DTIM 0x0002
96#define LM_PSM_MCBC 0x0004
97#define LM_PSM_CHECKSUM 0x0008
98#define LM_PSM_SKIP_MORE_DATA 0x0010
99#define LM_PSM_BEACON_TIMEOUT 0x0020
100#define LM_PSM_HFOSLEEP 0x0040
101#define LM_PSM_AUTOSWITCH_SLEEP 0x0080
102#define LM_PSM_LPIT 0x0100
103#define LM_PSM_BF_UCAST_SKIP 0x0200
104#define LM_PSM_BF_MCAST_SKIP 0x0400
105
106/* hfosleep */
107#define LM_PSM_SLEEP_OPTION_MASK (LM_PSM_AUTOSWITCH_SLEEP | LM_PSM_HFOSLEEP)
108#define LM_PSM_SLEEP_OPTION_SHIFT 6
109/* hfosleepend */
110#define LM_PSM_BF_OPTION_MASK (LM_PSM_BF_MCAST_SKIP | LM_PSM_BF_UCAST_SKIP)
111#define LM_PSM_BF_OPTION_SHIFT 9
112
113
114#define LM_PRIVACC_WEP 0x01
115#define LM_PRIVACC_TKIP 0x02
116#define LM_PRIVACC_MICHAEL 0x04
117#define LM_PRIVACC_CCX_KP 0x08
118#define LM_PRIVACC_CCX_MIC 0x10
119#define LM_PRIVACC_AES_CCMP 0x20
120
121/* size of s_lm_descr in words */
122#define LM_DESCR_SIZE_WORDS 11
123
124#ifndef __ASSEMBLER__
125
126enum {
127 LM_MODE_CLIENT = 0,
128 LM_MODE_AP
129};
130
131struct s_lm_descr {
132 uint16_t modes;
133 uint16_t flags;
134 uint32_t buffer_start;
135 uint32_t buffer_end;
136 uint8_t header;
137 uint8_t trailer;
138 uint8_t tx_queues;
139 uint8_t tx_depth;
140 uint8_t privacy;
141 uint8_t rx_keycache;
142 uint8_t tim_size;
143 uint8_t pad1;
144 uint8_t rates[16];
145 uint32_t link;
146 uint16_t mtu;
147};
148
149
150struct s_lm_control {
151 uint16_t flags;
152 uint16_t length;
153 uint32_t handle;
154 uint16_t oid;
155 uint16_t pad;
156 /* uint8_t data[]; */
157};
158
159enum {
160 LM_PRIV_NONE = 0,
161 LM_PRIV_WEP,
162 LM_PRIV_TKIP,
163 LM_PRIV_TKIPMICHAEL,
164 LM_PRIV_CCX_WEPMIC,
165 LM_PRIV_CCX_KPMIC,
166 LM_PRIV_CCX_KP,
167 LM_PRIV_AES_CCMP
168};
169
170enum {
171 LM_DECRYPT_NONE,
172 LM_DECRYPT_OK,
173 LM_DECRYPT_NOKEY,
174 LM_DECRYPT_NOMICHAEL,
175 LM_DECRYPT_NOCKIPMIC,
176 LM_DECRYPT_FAIL_WEP,
177 LM_DECRYPT_FAIL_TKIP,
178 LM_DECRYPT_FAIL_MICHAEL,
179 LM_DECRYPT_FAIL_CKIPKP,
180 LM_DECRYPT_FAIL_CKIPMIC,
181 LM_DECRYPT_FAIL_AESCCMP
182};
183
184struct s_lm_data_out {
185 uint16_t flags;
186 uint16_t length;
187 uint32_t handle;
188 uint16_t aid;
189 uint8_t rts_retries;
190 uint8_t retries;
191 uint8_t aloft[8];
192 uint8_t aloft_ctrl;
193 uint8_t crypt_offset;
194 uint8_t keytype;
195 uint8_t keylen;
196 uint8_t key[16];
197 uint8_t queue;
198 uint8_t backlog;
199 uint16_t durations[4];
200 uint8_t antenna;
201 uint8_t cts;
202 int16_t power;
203 uint8_t pad[2];
204 /*uint8_t data[];*/
205};
206
207#define LM_RCPI_INVALID (0xff)
208
209struct s_lm_data_in {
210 uint16_t flags;
211 uint16_t length;
212 uint16_t frequency;
213 uint8_t antenna;
214 uint8_t rate;
215 uint8_t rcpi;
216 uint8_t sq;
217 uint8_t decrypt;
218 uint8_t rssi_raw;
219 uint32_t clock[2];
220 /*uint8_t data[];*/
221};
222
223union u_lm_data {
224 struct s_lm_data_out out;
225 struct s_lm_data_in in;
226};
227
228enum {
229 LM_OID_SETUP = 0,
230 LM_OID_SCAN = 1,
231 LM_OID_TRAP = 2,
232 LM_OID_EDCF = 3,
233 LM_OID_KEYCACHE = 4,
234 LM_OID_PSM = 6,
235 LM_OID_TXCANCEL = 7,
236 LM_OID_TX = 8,
237 LM_OID_BURST = 9,
238 LM_OID_STATS = 10,
239 LM_OID_LED = 13,
240 LM_OID_TIMER = 15,
241 LM_OID_NAV = 20,
242 LM_OID_PCS = 22,
243 LM_OID_BT_BALANCER = 28,
244 LM_OID_GROUP_ADDRESS_TABLE = 30,
245 LM_OID_ARPTABLE = 31,
246 LM_OID_BT_OPTIONS = 35
247};
248
249enum {
250 LM_FRONTEND_UNKNOWN = 0,
251 LM_FRONTEND_DUETTE3,
252 LM_FRONTEND_DUETTE2,
253 LM_FRONTEND_FRISBEE,
254 LM_FRONTEND_CROSSBOW,
255 LM_FRONTEND_LONGBOW
256};
257
258
259#define INVALID_LPF_BANDWIDTH 0xffff
260#define INVALID_OSC_START_DELAY 0xffff
261
262struct s_lmo_setup {
263 uint16_t flags;
264 uint8_t macaddr[6];
265 uint8_t bssid[6];
266 uint8_t antenna;
267 uint8_t rx_align;
268 uint32_t rx_buffer;
269 uint16_t rx_mtu;
270 uint16_t frontend;
271 uint16_t timeout;
272 uint16_t truncate;
273 uint32_t bratemask;
274 uint8_t sbss_offset;
275 uint8_t mcast_window;
276 uint8_t rx_rssi_threshold;
277 uint8_t rx_ed_threshold;
278 uint32_t ref_clock;
279 uint16_t lpf_bandwidth;
280 uint16_t osc_start_delay;
281};
282
283
284struct s_lmo_scan {
285 uint16_t flags;
286 uint16_t dwell;
287 uint8_t channel[292];
288 uint32_t bratemask;
289 uint8_t aloft[8];
290 uint8_t rssical[8];
291};
292
293
294enum {
295 LM_TRAP_SCAN = 0,
296 LM_TRAP_TIMER,
297 LM_TRAP_BEACON_TX,
298 LM_TRAP_FAA_RADIO_ON,
299 LM_TRAP_FAA_RADIO_OFF,
300 LM_TRAP_RADAR,
301 LM_TRAP_NO_BEACON,
302 LM_TRAP_TBTT,
303 LM_TRAP_SCO_ENTER,
304 LM_TRAP_SCO_EXIT
305};
306
307struct s_lmo_trap {
308 uint16_t event;
309 uint16_t frequency;
310};
311
312struct s_lmo_timer {
313 uint32_t interval;
314};
315
316struct s_lmo_nav {
317 uint32_t period;
318};
319
320
321struct s_lmo_edcf_queue;
322
323struct s_lmo_edcf {
324 uint8_t flags;
325 uint8_t slottime;
326 uint8_t sifs;
327 uint8_t eofpad;
328 struct s_lmo_edcf_queue {
329 uint8_t aifs;
330 uint8_t pad0;
331 uint16_t cwmin;
332 uint16_t cwmax;
333 uint16_t txop;
334 } queues[8];
335 uint8_t mapping[4];
336 uint16_t maxburst;
337 uint16_t round_trip_delay;
338};
339
340struct s_lmo_keycache {
341 uint8_t entry;
342 uint8_t keyid;
343 uint8_t address[6];
344 uint8_t pad[2];
345 uint8_t keytype;
346 uint8_t keylen;
347 uint8_t key[24];
348};
349
350
351struct s_lm_interval;
352
353struct s_lmo_psm {
354 uint16_t flags;
355 uint16_t aid;
356 struct s_lm_interval {
357 uint16_t interval;
358 uint16_t periods;
359 } intervals[4];
360 /* uint16_t pad; */
361 uint8_t beacon_rcpi_skip_max;
362 uint8_t rcpi_delta_threshold;
363 uint8_t nr;
364 uint8_t exclude[1];
365};
366
367#define MC_FILTER_ADDRESS_NUM 4
368
369struct s_lmo_group_address_table {
370 uint16_t filter_enable;
371 uint16_t num_address;
372 uint8_t macaddr_list[MC_FILTER_ADDRESS_NUM][6];
373};
374
375struct s_lmo_txcancel {
376 uint32_t address[1];
377};
378
379
380struct s_lmo_tx {
381 uint8_t flags;
382 uint8_t retries;
383 uint8_t rcpi;
384 uint8_t sq;
385 uint16_t seqctrl;
386 uint8_t antenna;
387 uint8_t pad;
388};
389
390struct s_lmo_burst {
391 uint8_t flags;
392 uint8_t queue;
393 uint8_t backlog;
394 uint8_t pad;
395 uint16_t durations[32];
396};
397
398struct s_lmo_stats {
399 uint32_t valid;
400 uint32_t fcs;
401 uint32_t abort;
402 uint32_t phyabort;
403 uint32_t rts_success;
404 uint32_t rts_fail;
405 uint32_t timestamp;
406 uint32_t time_tx;
407 uint32_t noisefloor;
408 uint32_t sample_noise[8];
409 uint32_t sample_cca;
410 uint32_t sample_tx;
411};
412
413
414struct s_lmo_led {
415 uint16_t flags;
416 uint16_t mask[2];
417 uint16_t delay/*[2]*/;
418};
419
420
421struct s_lmo_bt_balancer {
422 uint16_t prio_thresh;
423 uint16_t acl_thresh;
424};
425
426
427struct s_lmo_arp_table {
428 uint16_t filter_enable;
429 uint32_t ipaddr;
430};
431
432#endif /* __ASSEMBLER__ */
433
434#endif /* __lmac_h__ */
diff --git a/drivers/staging/vt6655/TODO b/drivers/staging/vt6655/TODO
index 8462cd17eb61..cb04aaafc46f 100644
--- a/drivers/staging/vt6655/TODO
+++ b/drivers/staging/vt6655/TODO
@@ -16,6 +16,5 @@ TODO:
16- sparse fixes 16- sparse fixes
17- integrate with drivers/net/wireless 17- integrate with drivers/net/wireless
18 18
19Please send any patches to Greg Kroah-Hartman <greg@kroah.com>, 19Please send any patches to Greg Kroah-Hartman <greg@kroah.com>
20Forest Bond <forest@alittletooquiet.net> and Bartlomiej Zolnierkiewicz 20and Forest Bond <forest@alittletooquiet.net>.
21<bzolnier@gmail.com>.
diff --git a/drivers/staging/vt6656/TODO b/drivers/staging/vt6656/TODO
index 17cf50c6735e..a318995ba07f 100644
--- a/drivers/staging/vt6656/TODO
+++ b/drivers/staging/vt6656/TODO
@@ -15,6 +15,5 @@ TODO:
15- sparse fixes 15- sparse fixes
16- integrate with drivers/net/wireless 16- integrate with drivers/net/wireless
17 17
18Please send any patches to Greg Kroah-Hartman <greg@kroah.com>, 18Please send any patches to Greg Kroah-Hartman <greg@kroah.com>
19Forest Bond <forest@alittletooquiet.net> and Bartlomiej Zolnierkiewicz 19and Forest Bond <forest@alittletooquiet.net>.
20<bzolnier@gmail.com>.
diff --git a/drivers/staging/vt6656/main_usb.c b/drivers/staging/vt6656/main_usb.c
index 7f96bcaf1c60..05186110c029 100644
--- a/drivers/staging/vt6656/main_usb.c
+++ b/drivers/staging/vt6656/main_usb.c
@@ -1332,7 +1332,6 @@ device_release_WPADEV(pDevice);
1332 free_netdev(pDevice->dev); 1332 free_netdev(pDevice->dev);
1333 } 1333 }
1334 1334
1335 kfree(pDevice);
1336 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "device_disconnect3.. \n"); 1335 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "device_disconnect3.. \n");
1337} 1336}
1338 1337
diff --git a/drivers/staging/winbond/Kconfig b/drivers/staging/winbond/Kconfig
index 940460c39f36..132671d96d0d 100644
--- a/drivers/staging/winbond/Kconfig
+++ b/drivers/staging/winbond/Kconfig
@@ -1,6 +1,6 @@
1config W35UND 1config W35UND
2 tristate "IS89C35 WLAN USB driver" 2 tristate "IS89C35 WLAN USB driver"
3 depends on MAC80211 && WLAN_80211 && USB && EXPERIMENTAL 3 depends on MAC80211 && WLAN && USB && EXPERIMENTAL
4 default n 4 default n
5 ---help--- 5 ---help---
6 This is highly experimental driver for Winbond WIFI card. 6 This is highly experimental driver for Winbond WIFI card.
diff --git a/drivers/staging/wlan-ng/Kconfig b/drivers/staging/wlan-ng/Kconfig
index 9959b658c8cf..f44294b0d8dc 100644
--- a/drivers/staging/wlan-ng/Kconfig
+++ b/drivers/staging/wlan-ng/Kconfig
@@ -1,6 +1,6 @@
1config PRISM2_USB 1config PRISM2_USB
2 tristate "Prism2.5/3 USB driver" 2 tristate "Prism2.5/3 USB driver"
3 depends on WLAN_80211 && USB && WIRELESS_EXT 3 depends on WLAN && USB && WIRELESS_EXT
4 default n 4 default n
5 ---help--- 5 ---help---
6 This is the wlan-ng prism 2.5/3 USB driver for a wide range of 6 This is the wlan-ng prism 2.5/3 USB driver for a wide range of
diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c
index 4e83c297ec9e..6f8d8f971212 100644
--- a/drivers/thermal/thermal_sys.c
+++ b/drivers/thermal/thermal_sys.c
@@ -180,15 +180,15 @@ trip_point_type_show(struct device *dev, struct device_attribute *attr,
180 180
181 switch (type) { 181 switch (type) {
182 case THERMAL_TRIP_CRITICAL: 182 case THERMAL_TRIP_CRITICAL:
183 return sprintf(buf, "critical"); 183 return sprintf(buf, "critical\n");
184 case THERMAL_TRIP_HOT: 184 case THERMAL_TRIP_HOT:
185 return sprintf(buf, "hot"); 185 return sprintf(buf, "hot\n");
186 case THERMAL_TRIP_PASSIVE: 186 case THERMAL_TRIP_PASSIVE:
187 return sprintf(buf, "passive"); 187 return sprintf(buf, "passive\n");
188 case THERMAL_TRIP_ACTIVE: 188 case THERMAL_TRIP_ACTIVE:
189 return sprintf(buf, "active"); 189 return sprintf(buf, "active\n");
190 default: 190 default:
191 return sprintf(buf, "unknown"); 191 return sprintf(buf, "unknown\n");
192 } 192 }
193} 193}
194 194
diff --git a/drivers/uio/uio_pdrv_genirq.c b/drivers/uio/uio_pdrv_genirq.c
index 02347c57357d..aa53db9f2e88 100644
--- a/drivers/uio/uio_pdrv_genirq.c
+++ b/drivers/uio/uio_pdrv_genirq.c
@@ -178,6 +178,7 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev)
178 return 0; 178 return 0;
179 bad1: 179 bad1:
180 kfree(priv); 180 kfree(priv);
181 pm_runtime_disable(&pdev->dev);
181 bad0: 182 bad0:
182 return ret; 183 return ret;
183} 184}
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
index e3861b21e776..e4eca7810bcf 100644
--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
@@ -609,9 +609,9 @@ static int acm_tty_open(struct tty_struct *tty, struct file *filp)
609 609
610 acm->throttle = 0; 610 acm->throttle = 0;
611 611
612 tasklet_schedule(&acm->urb_task);
613 set_bit(ASYNCB_INITIALIZED, &acm->port.flags); 612 set_bit(ASYNCB_INITIALIZED, &acm->port.flags);
614 rv = tty_port_block_til_ready(&acm->port, tty, filp); 613 rv = tty_port_block_til_ready(&acm->port, tty, filp);
614 tasklet_schedule(&acm->urb_task);
615done: 615done:
616 mutex_unlock(&acm->mutex); 616 mutex_unlock(&acm->mutex);
617err_out: 617err_out:
@@ -686,15 +686,21 @@ static void acm_tty_close(struct tty_struct *tty, struct file *filp)
686 686
687 /* Perform the closing process and see if we need to do the hardware 687 /* Perform the closing process and see if we need to do the hardware
688 shutdown */ 688 shutdown */
689 if (!acm || tty_port_close_start(&acm->port, tty, filp) == 0) 689 if (!acm)
690 return;
691 if (tty_port_close_start(&acm->port, tty, filp) == 0) {
692 mutex_lock(&open_mutex);
693 if (!acm->dev) {
694 tty_port_tty_set(&acm->port, NULL);
695 acm_tty_unregister(acm);
696 tty->driver_data = NULL;
697 }
698 mutex_unlock(&open_mutex);
690 return; 699 return;
700 }
691 acm_port_down(acm, 0); 701 acm_port_down(acm, 0);
692 tty_port_close_end(&acm->port, tty); 702 tty_port_close_end(&acm->port, tty);
693 mutex_lock(&open_mutex);
694 tty_port_tty_set(&acm->port, NULL); 703 tty_port_tty_set(&acm->port, NULL);
695 if (!acm->dev)
696 acm_tty_unregister(acm);
697 mutex_unlock(&open_mutex);
698} 704}
699 705
700static int acm_tty_write(struct tty_struct *tty, 706static int acm_tty_write(struct tty_struct *tty,
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 5ce839137ad6..0f857e645058 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -444,7 +444,7 @@ resubmit:
444static inline int 444static inline int
445hub_clear_tt_buffer (struct usb_device *hdev, u16 devinfo, u16 tt) 445hub_clear_tt_buffer (struct usb_device *hdev, u16 devinfo, u16 tt)
446{ 446{
447 return usb_control_msg(hdev, usb_rcvctrlpipe(hdev, 0), 447 return usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0),
448 HUB_CLEAR_TT_BUFFER, USB_RT_PORT, devinfo, 448 HUB_CLEAR_TT_BUFFER, USB_RT_PORT, devinfo,
449 tt, NULL, 0, 1000); 449 tt, NULL, 0, 1000);
450} 450}
diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
index 33351312327f..a18e3c5dd82e 100644
--- a/drivers/usb/gadget/Kconfig
+++ b/drivers/usb/gadget/Kconfig
@@ -223,6 +223,7 @@ config USB_OTG
223config USB_GADGET_PXA25X 223config USB_GADGET_PXA25X
224 boolean "PXA 25x or IXP 4xx" 224 boolean "PXA 25x or IXP 4xx"
225 depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX 225 depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX
226 select USB_OTG_UTILS
226 help 227 help
227 Intel's PXA 25x series XScale ARM-5TE processors include 228 Intel's PXA 25x series XScale ARM-5TE processors include
228 an integrated full speed USB 1.1 device controller. The 229 an integrated full speed USB 1.1 device controller. The
diff --git a/drivers/usb/gadget/amd5536udc.c b/drivers/usb/gadget/amd5536udc.c
index d5b65962dd36..731150d4b1d9 100644
--- a/drivers/usb/gadget/amd5536udc.c
+++ b/drivers/usb/gadget/amd5536udc.c
@@ -1213,7 +1213,12 @@ udc_queue(struct usb_ep *usbep, struct usb_request *usbreq, gfp_t gfp)
1213 tmp &= AMD_UNMASK_BIT(ep->num); 1213 tmp &= AMD_UNMASK_BIT(ep->num);
1214 writel(tmp, &dev->regs->ep_irqmsk); 1214 writel(tmp, &dev->regs->ep_irqmsk);
1215 } 1215 }
1216 } 1216 } else if (ep->in) {
1217 /* enable ep irq */
1218 tmp = readl(&dev->regs->ep_irqmsk);
1219 tmp &= AMD_UNMASK_BIT(ep->num);
1220 writel(tmp, &dev->regs->ep_irqmsk);
1221 }
1217 1222
1218 } else if (ep->dma) { 1223 } else if (ep->dma) {
1219 1224
@@ -2005,18 +2010,17 @@ __acquires(dev->lock)
2005{ 2010{
2006 int tmp; 2011 int tmp;
2007 2012
2008 /* empty queues and init hardware */
2009 udc_basic_init(dev);
2010 for (tmp = 0; tmp < UDC_EP_NUM; tmp++) {
2011 empty_req_queue(&dev->ep[tmp]);
2012 }
2013
2014 if (dev->gadget.speed != USB_SPEED_UNKNOWN) { 2013 if (dev->gadget.speed != USB_SPEED_UNKNOWN) {
2015 spin_unlock(&dev->lock); 2014 spin_unlock(&dev->lock);
2016 driver->disconnect(&dev->gadget); 2015 driver->disconnect(&dev->gadget);
2017 spin_lock(&dev->lock); 2016 spin_lock(&dev->lock);
2018 } 2017 }
2019 /* init */ 2018
2019 /* empty queues and init hardware */
2020 udc_basic_init(dev);
2021 for (tmp = 0; tmp < UDC_EP_NUM; tmp++)
2022 empty_req_queue(&dev->ep[tmp]);
2023
2020 udc_setup_endpoints(dev); 2024 udc_setup_endpoints(dev);
2021} 2025}
2022 2026
@@ -2472,6 +2476,13 @@ static irqreturn_t udc_data_in_isr(struct udc *dev, int ep_ix)
2472 } 2476 }
2473 } 2477 }
2474 2478
2479 } else if (!use_dma && ep->in) {
2480 /* disable interrupt */
2481 tmp = readl(
2482 &dev->regs->ep_irqmsk);
2483 tmp |= AMD_BIT(ep->num);
2484 writel(tmp,
2485 &dev->regs->ep_irqmsk);
2475 } 2486 }
2476 } 2487 }
2477 /* clear status bits */ 2488 /* clear status bits */
@@ -3279,6 +3290,17 @@ static int udc_pci_probe(
3279 goto finished; 3290 goto finished;
3280 } 3291 }
3281 3292
3293 spin_lock_init(&dev->lock);
3294 /* udc csr registers base */
3295 dev->csr = dev->virt_addr + UDC_CSR_ADDR;
3296 /* dev registers base */
3297 dev->regs = dev->virt_addr + UDC_DEVCFG_ADDR;
3298 /* ep registers base */
3299 dev->ep_regs = dev->virt_addr + UDC_EPREGS_ADDR;
3300 /* fifo's base */
3301 dev->rxfifo = (u32 __iomem *)(dev->virt_addr + UDC_RXFIFO_ADDR);
3302 dev->txfifo = (u32 __iomem *)(dev->virt_addr + UDC_TXFIFO_ADDR);
3303
3282 if (request_irq(pdev->irq, udc_irq, IRQF_SHARED, name, dev) != 0) { 3304 if (request_irq(pdev->irq, udc_irq, IRQF_SHARED, name, dev) != 0) {
3283 dev_dbg(&dev->pdev->dev, "request_irq(%d) fail\n", pdev->irq); 3305 dev_dbg(&dev->pdev->dev, "request_irq(%d) fail\n", pdev->irq);
3284 kfree(dev); 3306 kfree(dev);
@@ -3331,7 +3353,6 @@ static int udc_probe(struct udc *dev)
3331 udc_pollstall_timer.data = 0; 3353 udc_pollstall_timer.data = 0;
3332 3354
3333 /* device struct setup */ 3355 /* device struct setup */
3334 spin_lock_init(&dev->lock);
3335 dev->gadget.ops = &udc_ops; 3356 dev->gadget.ops = &udc_ops;
3336 3357
3337 dev_set_name(&dev->gadget.dev, "gadget"); 3358 dev_set_name(&dev->gadget.dev, "gadget");
@@ -3340,16 +3361,6 @@ static int udc_probe(struct udc *dev)
3340 dev->gadget.name = name; 3361 dev->gadget.name = name;
3341 dev->gadget.is_dualspeed = 1; 3362 dev->gadget.is_dualspeed = 1;
3342 3363
3343 /* udc csr registers base */
3344 dev->csr = dev->virt_addr + UDC_CSR_ADDR;
3345 /* dev registers base */
3346 dev->regs = dev->virt_addr + UDC_DEVCFG_ADDR;
3347 /* ep registers base */
3348 dev->ep_regs = dev->virt_addr + UDC_EPREGS_ADDR;
3349 /* fifo's base */
3350 dev->rxfifo = (u32 __iomem *)(dev->virt_addr + UDC_RXFIFO_ADDR);
3351 dev->txfifo = (u32 __iomem *)(dev->virt_addr + UDC_TXFIFO_ADDR);
3352
3353 /* init registers, interrupts, ... */ 3364 /* init registers, interrupts, ... */
3354 startup_registers(dev); 3365 startup_registers(dev);
3355 3366
diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c
index 42a74b8a0bb8..fa3d142ba64d 100644
--- a/drivers/usb/gadget/fsl_udc_core.c
+++ b/drivers/usb/gadget/fsl_udc_core.c
@@ -2139,7 +2139,7 @@ static int fsl_proc_read(char *page, char **start, off_t off, int count,
2139static void fsl_udc_release(struct device *dev) 2139static void fsl_udc_release(struct device *dev)
2140{ 2140{
2141 complete(udc_controller->done); 2141 complete(udc_controller->done);
2142 dma_free_coherent(dev, udc_controller->ep_qh_size, 2142 dma_free_coherent(dev->parent, udc_controller->ep_qh_size,
2143 udc_controller->ep_qh, udc_controller->ep_qh_dma); 2143 udc_controller->ep_qh, udc_controller->ep_qh_dma);
2144 kfree(udc_controller); 2144 kfree(udc_controller);
2145} 2145}
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 9835e0713943..f5f5601701c9 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -28,6 +28,7 @@
28#include <linux/errno.h> 28#include <linux/errno.h>
29#include <linux/init.h> 29#include <linux/init.h>
30#include <linux/timer.h> 30#include <linux/timer.h>
31#include <linux/ktime.h>
31#include <linux/list.h> 32#include <linux/list.h>
32#include <linux/interrupt.h> 33#include <linux/interrupt.h>
33#include <linux/usb.h> 34#include <linux/usb.h>
@@ -676,6 +677,7 @@ static int ehci_run (struct usb_hcd *hcd)
676 ehci_readl(ehci, &ehci->regs->command); /* unblock posted writes */ 677 ehci_readl(ehci, &ehci->regs->command); /* unblock posted writes */
677 msleep(5); 678 msleep(5);
678 up_write(&ehci_cf_port_reset_rwsem); 679 up_write(&ehci_cf_port_reset_rwsem);
680 ehci->last_periodic_enable = ktime_get_real();
679 681
680 temp = HC_VERSION(ehci_readl(ehci, &ehci->caps->hc_capbase)); 682 temp = HC_VERSION(ehci_readl(ehci, &ehci->caps->hc_capbase));
681 ehci_info (ehci, 683 ehci_info (ehci,
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
index 378861b9d79a..ead5f4f2aa5a 100644
--- a/drivers/usb/host/ehci-pci.c
+++ b/drivers/usb/host/ehci-pci.c
@@ -111,6 +111,10 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
111 switch (pdev->vendor) { 111 switch (pdev->vendor) {
112 case PCI_VENDOR_ID_INTEL: 112 case PCI_VENDOR_ID_INTEL:
113 ehci->need_io_watchdog = 0; 113 ehci->need_io_watchdog = 0;
114 if (pdev->device == 0x27cc) {
115 ehci->broken_periodic = 1;
116 ehci_info(ehci, "using broken periodic workaround\n");
117 }
114 break; 118 break;
115 case PCI_VENDOR_ID_TDI: 119 case PCI_VENDOR_ID_TDI:
116 if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) { 120 if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) {
diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
index 00ad9ce392ed..139a2cc3f641 100644
--- a/drivers/usb/host/ehci-q.c
+++ b/drivers/usb/host/ehci-q.c
@@ -487,8 +487,20 @@ halt:
487 * we must clear the TT buffer (11.17.5). 487 * we must clear the TT buffer (11.17.5).
488 */ 488 */
489 if (unlikely(last_status != -EINPROGRESS && 489 if (unlikely(last_status != -EINPROGRESS &&
490 last_status != -EREMOTEIO)) 490 last_status != -EREMOTEIO)) {
491 ehci_clear_tt_buffer(ehci, qh, urb, token); 491 /* The TT's in some hubs malfunction when they
492 * receive this request following a STALL (they
493 * stop sending isochronous packets). Since a
494 * STALL can't leave the TT buffer in a busy
495 * state (if you believe Figures 11-48 - 11-51
496 * in the USB 2.0 spec), we won't clear the TT
497 * buffer in this case. Strictly speaking this
498 * is a violation of the spec.
499 */
500 if (last_status != -EPIPE)
501 ehci_clear_tt_buffer(ehci, qh, urb,
502 token);
503 }
492 } 504 }
493 505
494 /* if we're removing something not at the queue head, 506 /* if we're removing something not at the queue head,
diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c
index b25cdea93a1f..a5535b5e3fe2 100644
--- a/drivers/usb/host/ehci-sched.c
+++ b/drivers/usb/host/ehci-sched.c
@@ -475,6 +475,8 @@ static int enable_periodic (struct ehci_hcd *ehci)
475 /* make sure ehci_work scans these */ 475 /* make sure ehci_work scans these */
476 ehci->next_uframe = ehci_readl(ehci, &ehci->regs->frame_index) 476 ehci->next_uframe = ehci_readl(ehci, &ehci->regs->frame_index)
477 % (ehci->periodic_size << 3); 477 % (ehci->periodic_size << 3);
478 if (unlikely(ehci->broken_periodic))
479 ehci->last_periodic_enable = ktime_get_real();
478 return 0; 480 return 0;
479} 481}
480 482
@@ -486,6 +488,16 @@ static int disable_periodic (struct ehci_hcd *ehci)
486 if (--ehci->periodic_sched) 488 if (--ehci->periodic_sched)
487 return 0; 489 return 0;
488 490
491 if (unlikely(ehci->broken_periodic)) {
492 /* delay experimentally determined */
493 ktime_t safe = ktime_add_us(ehci->last_periodic_enable, 1000);
494 ktime_t now = ktime_get_real();
495 s64 delay = ktime_us_delta(safe, now);
496
497 if (unlikely(delay > 0))
498 udelay(delay);
499 }
500
489 /* did setting PSE not take effect yet? 501 /* did setting PSE not take effect yet?
490 * takes effect only at frame boundaries... 502 * takes effect only at frame boundaries...
491 */ 503 */
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index 064e76821ff5..2d85e21ff282 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -118,6 +118,7 @@ struct ehci_hcd { /* one per controller */
118 unsigned stamp; 118 unsigned stamp;
119 unsigned random_frame; 119 unsigned random_frame;
120 unsigned long next_statechange; 120 unsigned long next_statechange;
121 ktime_t last_periodic_enable;
121 u32 command; 122 u32 command;
122 123
123 /* SILICON QUIRKS */ 124 /* SILICON QUIRKS */
@@ -127,6 +128,7 @@ struct ehci_hcd { /* one per controller */
127 unsigned big_endian_desc:1; 128 unsigned big_endian_desc:1;
128 unsigned has_amcc_usb23:1; 129 unsigned has_amcc_usb23:1;
129 unsigned need_io_watchdog:1; 130 unsigned need_io_watchdog:1;
131 unsigned broken_periodic:1;
130 132
131 /* required for usb32 quirk */ 133 /* required for usb32 quirk */
132 #define OHCI_CTRL_HCFS (3 << 6) 134 #define OHCI_CTRL_HCFS (3 << 6)
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
index 78bb7710f36d..24eb74781919 100644
--- a/drivers/usb/host/ohci-hcd.c
+++ b/drivers/usb/host/ohci-hcd.c
@@ -87,6 +87,7 @@ static int ohci_restart (struct ohci_hcd *ohci);
87#ifdef CONFIG_PCI 87#ifdef CONFIG_PCI
88static void quirk_amd_pll(int state); 88static void quirk_amd_pll(int state);
89static void amd_iso_dev_put(void); 89static void amd_iso_dev_put(void);
90static void sb800_prefetch(struct ohci_hcd *ohci, int on);
90#else 91#else
91static inline void quirk_amd_pll(int state) 92static inline void quirk_amd_pll(int state)
92{ 93{
@@ -96,6 +97,10 @@ static inline void amd_iso_dev_put(void)
96{ 97{
97 return; 98 return;
98} 99}
100static inline void sb800_prefetch(struct ohci_hcd *ohci, int on)
101{
102 return;
103}
99#endif 104#endif
100 105
101 106
diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c
index d2ba04dd785e..b8a1148f248e 100644
--- a/drivers/usb/host/ohci-pci.c
+++ b/drivers/usb/host/ohci-pci.c
@@ -177,6 +177,13 @@ static int ohci_quirk_amd700(struct usb_hcd *hcd)
177 return 0; 177 return 0;
178 178
179 pci_read_config_byte(amd_smbus_dev, PCI_REVISION_ID, &rev); 179 pci_read_config_byte(amd_smbus_dev, PCI_REVISION_ID, &rev);
180
181 /* SB800 needs pre-fetch fix */
182 if ((rev >= 0x40) && (rev <= 0x4f)) {
183 ohci->flags |= OHCI_QUIRK_AMD_PREFETCH;
184 ohci_dbg(ohci, "enabled AMD prefetch quirk\n");
185 }
186
180 if ((rev > 0x3b) || (rev < 0x30)) { 187 if ((rev > 0x3b) || (rev < 0x30)) {
181 pci_dev_put(amd_smbus_dev); 188 pci_dev_put(amd_smbus_dev);
182 amd_smbus_dev = NULL; 189 amd_smbus_dev = NULL;
@@ -262,6 +269,19 @@ static void amd_iso_dev_put(void)
262 269
263} 270}
264 271
272static void sb800_prefetch(struct ohci_hcd *ohci, int on)
273{
274 struct pci_dev *pdev;
275 u16 misc;
276
277 pdev = to_pci_dev(ohci_to_hcd(ohci)->self.controller);
278 pci_read_config_word(pdev, 0x50, &misc);
279 if (on == 0)
280 pci_write_config_word(pdev, 0x50, misc & 0xfcff);
281 else
282 pci_write_config_word(pdev, 0x50, misc | 0x0300);
283}
284
265/* List of quirks for OHCI */ 285/* List of quirks for OHCI */
266static const struct pci_device_id ohci_pci_quirks[] = { 286static const struct pci_device_id ohci_pci_quirks[] = {
267 { 287 {
diff --git a/drivers/usb/host/ohci-q.c b/drivers/usb/host/ohci-q.c
index 16fecb8ecc39..35288bcae0db 100644
--- a/drivers/usb/host/ohci-q.c
+++ b/drivers/usb/host/ohci-q.c
@@ -49,9 +49,12 @@ __acquires(ohci->lock)
49 switch (usb_pipetype (urb->pipe)) { 49 switch (usb_pipetype (urb->pipe)) {
50 case PIPE_ISOCHRONOUS: 50 case PIPE_ISOCHRONOUS:
51 ohci_to_hcd(ohci)->self.bandwidth_isoc_reqs--; 51 ohci_to_hcd(ohci)->self.bandwidth_isoc_reqs--;
52 if (ohci_to_hcd(ohci)->self.bandwidth_isoc_reqs == 0 52 if (ohci_to_hcd(ohci)->self.bandwidth_isoc_reqs == 0) {
53 && quirk_amdiso(ohci)) 53 if (quirk_amdiso(ohci))
54 quirk_amd_pll(1); 54 quirk_amd_pll(1);
55 if (quirk_amdprefetch(ohci))
56 sb800_prefetch(ohci, 0);
57 }
55 break; 58 break;
56 case PIPE_INTERRUPT: 59 case PIPE_INTERRUPT:
57 ohci_to_hcd(ohci)->self.bandwidth_int_reqs--; 60 ohci_to_hcd(ohci)->self.bandwidth_int_reqs--;
@@ -680,9 +683,12 @@ static void td_submit_urb (
680 data + urb->iso_frame_desc [cnt].offset, 683 data + urb->iso_frame_desc [cnt].offset,
681 urb->iso_frame_desc [cnt].length, urb, cnt); 684 urb->iso_frame_desc [cnt].length, urb, cnt);
682 } 685 }
683 if (ohci_to_hcd(ohci)->self.bandwidth_isoc_reqs == 0 686 if (ohci_to_hcd(ohci)->self.bandwidth_isoc_reqs == 0) {
684 && quirk_amdiso(ohci)) 687 if (quirk_amdiso(ohci))
685 quirk_amd_pll(0); 688 quirk_amd_pll(0);
689 if (quirk_amdprefetch(ohci))
690 sb800_prefetch(ohci, 1);
691 }
686 periodic = ohci_to_hcd(ohci)->self.bandwidth_isoc_reqs++ == 0 692 periodic = ohci_to_hcd(ohci)->self.bandwidth_isoc_reqs++ == 0
687 && ohci_to_hcd(ohci)->self.bandwidth_int_reqs == 0; 693 && ohci_to_hcd(ohci)->self.bandwidth_int_reqs == 0;
688 break; 694 break;
diff --git a/drivers/usb/host/ohci.h b/drivers/usb/host/ohci.h
index 222011f6172c..5bf15fed0d9f 100644
--- a/drivers/usb/host/ohci.h
+++ b/drivers/usb/host/ohci.h
@@ -402,6 +402,7 @@ struct ohci_hcd {
402#define OHCI_QUIRK_FRAME_NO 0x80 /* no big endian frame_no shift */ 402#define OHCI_QUIRK_FRAME_NO 0x80 /* no big endian frame_no shift */
403#define OHCI_QUIRK_HUB_POWER 0x100 /* distrust firmware power/oc setup */ 403#define OHCI_QUIRK_HUB_POWER 0x100 /* distrust firmware power/oc setup */
404#define OHCI_QUIRK_AMD_ISO 0x200 /* ISO transfers*/ 404#define OHCI_QUIRK_AMD_ISO 0x200 /* ISO transfers*/
405#define OHCI_QUIRK_AMD_PREFETCH 0x400 /* pre-fetch for ISO transfer */
405 // there are also chip quirks/bugs in init logic 406 // there are also chip quirks/bugs in init logic
406 407
407 struct work_struct nec_work; /* Worker for NEC quirk */ 408 struct work_struct nec_work; /* Worker for NEC quirk */
@@ -433,6 +434,10 @@ static inline int quirk_amdiso(struct ohci_hcd *ohci)
433{ 434{
434 return ohci->flags & OHCI_QUIRK_AMD_ISO; 435 return ohci->flags & OHCI_QUIRK_AMD_ISO;
435} 436}
437static inline int quirk_amdprefetch(struct ohci_hcd *ohci)
438{
439 return ohci->flags & OHCI_QUIRK_AMD_PREFETCH;
440}
436#else 441#else
437static inline int quirk_nec(struct ohci_hcd *ohci) 442static inline int quirk_nec(struct ohci_hcd *ohci)
438{ 443{
@@ -446,6 +451,10 @@ static inline int quirk_amdiso(struct ohci_hcd *ohci)
446{ 451{
447 return 0; 452 return 0;
448} 453}
454static inline int quirk_amdprefetch(struct ohci_hcd *ohci)
455{
456 return 0;
457}
449#endif 458#endif
450 459
451/* convert between an hcd pointer and the corresponding ohci_hcd */ 460/* convert between an hcd pointer and the corresponding ohci_hcd */
diff --git a/drivers/usb/host/r8a66597-hcd.c b/drivers/usb/host/r8a66597-hcd.c
index 749b53742828..e33d36256350 100644
--- a/drivers/usb/host/r8a66597-hcd.c
+++ b/drivers/usb/host/r8a66597-hcd.c
@@ -1003,19 +1003,20 @@ static void r8a66597_check_syssts(struct r8a66597 *r8a66597, int port,
1003 if (syssts == SE0) { 1003 if (syssts == SE0) {
1004 r8a66597_write(r8a66597, ~ATTCH, get_intsts_reg(port)); 1004 r8a66597_write(r8a66597, ~ATTCH, get_intsts_reg(port));
1005 r8a66597_bset(r8a66597, ATTCHE, get_intenb_reg(port)); 1005 r8a66597_bset(r8a66597, ATTCHE, get_intenb_reg(port));
1006 return; 1006 } else {
1007 } 1007 if (syssts == FS_JSTS)
1008 r8a66597_bset(r8a66597, HSE, get_syscfg_reg(port));
1009 else if (syssts == LS_JSTS)
1010 r8a66597_bclr(r8a66597, HSE, get_syscfg_reg(port));
1008 1011
1009 if (syssts == FS_JSTS) 1012 r8a66597_write(r8a66597, ~DTCH, get_intsts_reg(port));
1010 r8a66597_bset(r8a66597, HSE, get_syscfg_reg(port)); 1013 r8a66597_bset(r8a66597, DTCHE, get_intenb_reg(port));
1011 else if (syssts == LS_JSTS)
1012 r8a66597_bclr(r8a66597, HSE, get_syscfg_reg(port));
1013 1014
1014 r8a66597_write(r8a66597, ~DTCH, get_intsts_reg(port)); 1015 if (r8a66597->bus_suspended)
1015 r8a66597_bset(r8a66597, DTCHE, get_intenb_reg(port)); 1016 usb_hcd_resume_root_hub(r8a66597_to_hcd(r8a66597));
1017 }
1016 1018
1017 if (r8a66597->bus_suspended) 1019 usb_hcd_poll_rh_status(r8a66597_to_hcd(r8a66597));
1018 usb_hcd_resume_root_hub(r8a66597_to_hcd(r8a66597));
1019} 1020}
1020 1021
1021/* this function must be called with interrupt disabled */ 1022/* this function must be called with interrupt disabled */
@@ -1024,6 +1025,8 @@ static void r8a66597_usb_connect(struct r8a66597 *r8a66597, int port)
1024 u16 speed = get_rh_usb_speed(r8a66597, port); 1025 u16 speed = get_rh_usb_speed(r8a66597, port);
1025 struct r8a66597_root_hub *rh = &r8a66597->root_hub[port]; 1026 struct r8a66597_root_hub *rh = &r8a66597->root_hub[port];
1026 1027
1028 rh->port &= ~((1 << USB_PORT_FEAT_HIGHSPEED) |
1029 (1 << USB_PORT_FEAT_LOWSPEED));
1027 if (speed == HSMODE) 1030 if (speed == HSMODE)
1028 rh->port |= (1 << USB_PORT_FEAT_HIGHSPEED); 1031 rh->port |= (1 << USB_PORT_FEAT_HIGHSPEED);
1029 else if (speed == LSMODE) 1032 else if (speed == LSMODE)
diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
index 1db4fea8c170..b8fd270a8b0d 100644
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
@@ -802,9 +802,11 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
802 int i; 802 int i;
803 803
804 /* Free the Event Ring Segment Table and the actual Event Ring */ 804 /* Free the Event Ring Segment Table and the actual Event Ring */
805 xhci_writel(xhci, 0, &xhci->ir_set->erst_size); 805 if (xhci->ir_set) {
806 xhci_write_64(xhci, 0, &xhci->ir_set->erst_base); 806 xhci_writel(xhci, 0, &xhci->ir_set->erst_size);
807 xhci_write_64(xhci, 0, &xhci->ir_set->erst_dequeue); 807 xhci_write_64(xhci, 0, &xhci->ir_set->erst_base);
808 xhci_write_64(xhci, 0, &xhci->ir_set->erst_dequeue);
809 }
808 size = sizeof(struct xhci_erst_entry)*(xhci->erst.num_entries); 810 size = sizeof(struct xhci_erst_entry)*(xhci->erst.num_entries);
809 if (xhci->erst.entries) 811 if (xhci->erst.entries)
810 pci_free_consistent(pdev, size, 812 pci_free_consistent(pdev, size,
@@ -841,9 +843,9 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
841 xhci->dcbaa, xhci->dcbaa->dma); 843 xhci->dcbaa, xhci->dcbaa->dma);
842 xhci->dcbaa = NULL; 844 xhci->dcbaa = NULL;
843 845
846 scratchpad_free(xhci);
844 xhci->page_size = 0; 847 xhci->page_size = 0;
845 xhci->page_shift = 0; 848 xhci->page_shift = 0;
846 scratchpad_free(xhci);
847} 849}
848 850
849int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) 851int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags)
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 173c39c76489..821b7b4709de 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -864,9 +864,11 @@ static struct xhci_segment *trb_in_td(
864 cur_seg = start_seg; 864 cur_seg = start_seg;
865 865
866 do { 866 do {
867 if (start_dma == 0)
868 return 0;
867 /* We may get an event for a Link TRB in the middle of a TD */ 869 /* We may get an event for a Link TRB in the middle of a TD */
868 end_seg_dma = xhci_trb_virt_to_dma(cur_seg, 870 end_seg_dma = xhci_trb_virt_to_dma(cur_seg,
869 &start_seg->trbs[TRBS_PER_SEGMENT - 1]); 871 &cur_seg->trbs[TRBS_PER_SEGMENT - 1]);
870 /* If the end TRB isn't in this segment, this is set to 0 */ 872 /* If the end TRB isn't in this segment, this is set to 0 */
871 end_trb_dma = xhci_trb_virt_to_dma(cur_seg, end_trb); 873 end_trb_dma = xhci_trb_virt_to_dma(cur_seg, end_trb);
872 874
@@ -893,8 +895,9 @@ static struct xhci_segment *trb_in_td(
893 } 895 }
894 cur_seg = cur_seg->next; 896 cur_seg = cur_seg->next;
895 start_dma = xhci_trb_virt_to_dma(cur_seg, &cur_seg->trbs[0]); 897 start_dma = xhci_trb_virt_to_dma(cur_seg, &cur_seg->trbs[0]);
896 } while (1); 898 } while (cur_seg != start_seg);
897 899
900 return 0;
898} 901}
899 902
900/* 903/*
diff --git a/drivers/usb/mon/mon_bin.c b/drivers/usb/mon/mon_bin.c
index 9ed3e741bee1..10f3205798e8 100644
--- a/drivers/usb/mon/mon_bin.c
+++ b/drivers/usb/mon/mon_bin.c
@@ -348,12 +348,12 @@ static unsigned int mon_buff_area_alloc_contiguous(struct mon_reader_bin *rp,
348 348
349/* 349/*
350 * Return a few (kilo-)bytes to the head of the buffer. 350 * Return a few (kilo-)bytes to the head of the buffer.
351 * This is used if a DMA fetch fails. 351 * This is used if a data fetch fails.
352 */ 352 */
353static void mon_buff_area_shrink(struct mon_reader_bin *rp, unsigned int size) 353static void mon_buff_area_shrink(struct mon_reader_bin *rp, unsigned int size)
354{ 354{
355 355
356 size = (size + PKT_ALIGN-1) & ~(PKT_ALIGN-1); 356 /* size &= ~(PKT_ALIGN-1); -- we're called with aligned size */
357 rp->b_cnt -= size; 357 rp->b_cnt -= size;
358 if (rp->b_in < size) 358 if (rp->b_in < size)
359 rp->b_in += rp->b_size; 359 rp->b_in += rp->b_size;
@@ -433,6 +433,7 @@ static void mon_bin_event(struct mon_reader_bin *rp, struct urb *urb,
433 unsigned int urb_length; 433 unsigned int urb_length;
434 unsigned int offset; 434 unsigned int offset;
435 unsigned int length; 435 unsigned int length;
436 unsigned int delta;
436 unsigned int ndesc, lendesc; 437 unsigned int ndesc, lendesc;
437 unsigned char dir; 438 unsigned char dir;
438 struct mon_bin_hdr *ep; 439 struct mon_bin_hdr *ep;
@@ -537,8 +538,10 @@ static void mon_bin_event(struct mon_reader_bin *rp, struct urb *urb,
537 if (length != 0) { 538 if (length != 0) {
538 ep->flag_data = mon_bin_get_data(rp, offset, urb, length); 539 ep->flag_data = mon_bin_get_data(rp, offset, urb, length);
539 if (ep->flag_data != 0) { /* Yes, it's 0x00, not '0' */ 540 if (ep->flag_data != 0) { /* Yes, it's 0x00, not '0' */
540 ep->len_cap = 0; 541 delta = (ep->len_cap + PKT_ALIGN-1) & ~(PKT_ALIGN-1);
541 mon_buff_area_shrink(rp, length); 542 ep->len_cap -= length;
543 delta -= (ep->len_cap + PKT_ALIGN-1) & ~(PKT_ALIGN-1);
544 mon_buff_area_shrink(rp, delta);
542 } 545 }
543 } else { 546 } else {
544 ep->flag_data = data_tag; 547 ep->flag_data = data_tag;
diff --git a/drivers/usb/musb/cppi_dma.c b/drivers/usb/musb/cppi_dma.c
index c3577bbbae6c..ef2332a9941d 100644
--- a/drivers/usb/musb/cppi_dma.c
+++ b/drivers/usb/musb/cppi_dma.c
@@ -1442,11 +1442,6 @@ static int cppi_channel_abort(struct dma_channel *channel)
1442 musb_writew(regs, MUSB_TXCSR, value); 1442 musb_writew(regs, MUSB_TXCSR, value);
1443 musb_writew(regs, MUSB_TXCSR, value); 1443 musb_writew(regs, MUSB_TXCSR, value);
1444 1444
1445 /* re-enable interrupt */
1446 if (enabled)
1447 musb_writel(tibase, DAVINCI_TXCPPI_INTENAB_REG,
1448 (1 << cppi_ch->index));
1449
1450 /* While we scrub the TX state RAM, ensure that we clean 1445 /* While we scrub the TX state RAM, ensure that we clean
1451 * up any interrupt that's currently asserted: 1446 * up any interrupt that's currently asserted:
1452 * 1. Write to completion Ptr value 0x1(bit 0 set) 1447 * 1. Write to completion Ptr value 0x1(bit 0 set)
@@ -1459,6 +1454,11 @@ static int cppi_channel_abort(struct dma_channel *channel)
1459 cppi_reset_tx(tx_ram, 1); 1454 cppi_reset_tx(tx_ram, 1);
1460 musb_writel(&tx_ram->tx_complete, 0, 0); 1455 musb_writel(&tx_ram->tx_complete, 0, 0);
1461 1456
1457 /* re-enable interrupt */
1458 if (enabled)
1459 musb_writel(tibase, DAVINCI_TXCPPI_INTENAB_REG,
1460 (1 << cppi_ch->index));
1461
1462 cppi_dump_tx(5, cppi_ch, " (done teardown)"); 1462 cppi_dump_tx(5, cppi_ch, " (done teardown)");
1463 1463
1464 /* REVISIT tx side _should_ clean up the same way 1464 /* REVISIT tx side _should_ clean up the same way
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
index 3a61ddb62bd2..547e0e390726 100644
--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -1450,7 +1450,7 @@ static int __init musb_core_init(u16 musb_type, struct musb *musb)
1450#endif 1450#endif
1451 1451
1452 if (hw_ep->max_packet_sz_tx) { 1452 if (hw_ep->max_packet_sz_tx) {
1453 printk(KERN_DEBUG 1453 DBG(1,
1454 "%s: hw_ep %d%s, %smax %d\n", 1454 "%s: hw_ep %d%s, %smax %d\n",
1455 musb_driver_name, i, 1455 musb_driver_name, i,
1456 hw_ep->is_shared_fifo ? "shared" : "tx", 1456 hw_ep->is_shared_fifo ? "shared" : "tx",
@@ -1459,7 +1459,7 @@ static int __init musb_core_init(u16 musb_type, struct musb *musb)
1459 hw_ep->max_packet_sz_tx); 1459 hw_ep->max_packet_sz_tx);
1460 } 1460 }
1461 if (hw_ep->max_packet_sz_rx && !hw_ep->is_shared_fifo) { 1461 if (hw_ep->max_packet_sz_rx && !hw_ep->is_shared_fifo) {
1462 printk(KERN_DEBUG 1462 DBG(1,
1463 "%s: hw_ep %d%s, %smax %d\n", 1463 "%s: hw_ep %d%s, %smax %d\n",
1464 musb_driver_name, i, 1464 musb_driver_name, i,
1465 "rx", 1465 "rx",
diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
index 8b3c4e2ed7b8..74073f9a43f0 100644
--- a/drivers/usb/musb/musb_gadget.c
+++ b/drivers/usb/musb/musb_gadget.c
@@ -4,6 +4,7 @@
4 * Copyright 2005 Mentor Graphics Corporation 4 * Copyright 2005 Mentor Graphics Corporation
5 * Copyright (C) 2005-2006 by Texas Instruments 5 * Copyright (C) 2005-2006 by Texas Instruments
6 * Copyright (C) 2006-2007 Nokia Corporation 6 * Copyright (C) 2006-2007 Nokia Corporation
7 * Copyright (C) 2009 MontaVista Software, Inc. <source@mvista.com>
7 * 8 *
8 * This program is free software; you can redistribute it and/or 9 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License 10 * modify it under the terms of the GNU General Public License
@@ -436,14 +437,6 @@ void musb_g_tx(struct musb *musb, u8 epnum)
436 csr |= MUSB_TXCSR_P_WZC_BITS; 437 csr |= MUSB_TXCSR_P_WZC_BITS;
437 csr &= ~MUSB_TXCSR_P_SENTSTALL; 438 csr &= ~MUSB_TXCSR_P_SENTSTALL;
438 musb_writew(epio, MUSB_TXCSR, csr); 439 musb_writew(epio, MUSB_TXCSR, csr);
439 if (dma_channel_status(dma) == MUSB_DMA_STATUS_BUSY) {
440 dma->status = MUSB_DMA_STATUS_CORE_ABORT;
441 musb->dma_controller->channel_abort(dma);
442 }
443
444 if (request)
445 musb_g_giveback(musb_ep, request, -EPIPE);
446
447 break; 440 break;
448 } 441 }
449 442
@@ -582,15 +575,25 @@ void musb_g_tx(struct musb *musb, u8 epnum)
582 */ 575 */
583static void rxstate(struct musb *musb, struct musb_request *req) 576static void rxstate(struct musb *musb, struct musb_request *req)
584{ 577{
585 u16 csr = 0;
586 const u8 epnum = req->epnum; 578 const u8 epnum = req->epnum;
587 struct usb_request *request = &req->request; 579 struct usb_request *request = &req->request;
588 struct musb_ep *musb_ep = &musb->endpoints[epnum].ep_out; 580 struct musb_ep *musb_ep = &musb->endpoints[epnum].ep_out;
589 void __iomem *epio = musb->endpoints[epnum].regs; 581 void __iomem *epio = musb->endpoints[epnum].regs;
590 unsigned fifo_count = 0; 582 unsigned fifo_count = 0;
591 u16 len = musb_ep->packet_sz; 583 u16 len = musb_ep->packet_sz;
584 u16 csr = musb_readw(epio, MUSB_RXCSR);
592 585
593 csr = musb_readw(epio, MUSB_RXCSR); 586 /* We shouldn't get here while DMA is active, but we do... */
587 if (dma_channel_status(musb_ep->dma) == MUSB_DMA_STATUS_BUSY) {
588 DBG(4, "DMA pending...\n");
589 return;
590 }
591
592 if (csr & MUSB_RXCSR_P_SENDSTALL) {
593 DBG(5, "%s stalling, RXCSR %04x\n",
594 musb_ep->end_point.name, csr);
595 return;
596 }
594 597
595 if (is_cppi_enabled() && musb_ep->dma) { 598 if (is_cppi_enabled() && musb_ep->dma) {
596 struct dma_controller *c = musb->dma_controller; 599 struct dma_controller *c = musb->dma_controller;
@@ -761,19 +764,10 @@ void musb_g_rx(struct musb *musb, u8 epnum)
761 csr, dma ? " (dma)" : "", request); 764 csr, dma ? " (dma)" : "", request);
762 765
763 if (csr & MUSB_RXCSR_P_SENTSTALL) { 766 if (csr & MUSB_RXCSR_P_SENTSTALL) {
764 if (dma_channel_status(dma) == MUSB_DMA_STATUS_BUSY) {
765 dma->status = MUSB_DMA_STATUS_CORE_ABORT;
766 (void) musb->dma_controller->channel_abort(dma);
767 request->actual += musb_ep->dma->actual_len;
768 }
769
770 csr |= MUSB_RXCSR_P_WZC_BITS; 767 csr |= MUSB_RXCSR_P_WZC_BITS;
771 csr &= ~MUSB_RXCSR_P_SENTSTALL; 768 csr &= ~MUSB_RXCSR_P_SENTSTALL;
772 musb_writew(epio, MUSB_RXCSR, csr); 769 musb_writew(epio, MUSB_RXCSR, csr);
773 770 return;
774 if (request)
775 musb_g_giveback(musb_ep, request, -EPIPE);
776 goto done;
777 } 771 }
778 772
779 if (csr & MUSB_RXCSR_P_OVERRUN) { 773 if (csr & MUSB_RXCSR_P_OVERRUN) {
@@ -795,7 +789,7 @@ void musb_g_rx(struct musb *musb, u8 epnum)
795 DBG((csr & MUSB_RXCSR_DMAENAB) ? 4 : 1, 789 DBG((csr & MUSB_RXCSR_DMAENAB) ? 4 : 1,
796 "%s busy, csr %04x\n", 790 "%s busy, csr %04x\n",
797 musb_ep->end_point.name, csr); 791 musb_ep->end_point.name, csr);
798 goto done; 792 return;
799 } 793 }
800 794
801 if (dma && (csr & MUSB_RXCSR_DMAENAB)) { 795 if (dma && (csr & MUSB_RXCSR_DMAENAB)) {
@@ -826,22 +820,15 @@ void musb_g_rx(struct musb *musb, u8 epnum)
826 if ((request->actual < request->length) 820 if ((request->actual < request->length)
827 && (musb_ep->dma->actual_len 821 && (musb_ep->dma->actual_len
828 == musb_ep->packet_sz)) 822 == musb_ep->packet_sz))
829 goto done; 823 return;
830#endif 824#endif
831 musb_g_giveback(musb_ep, request, 0); 825 musb_g_giveback(musb_ep, request, 0);
832 826
833 request = next_request(musb_ep); 827 request = next_request(musb_ep);
834 if (!request) 828 if (!request)
835 goto done; 829 return;
836
837 /* don't start more i/o till the stall clears */
838 musb_ep_select(mbase, epnum);
839 csr = musb_readw(epio, MUSB_RXCSR);
840 if (csr & MUSB_RXCSR_P_SENDSTALL)
841 goto done;
842 } 830 }
843 831
844
845 /* analyze request if the ep is hot */ 832 /* analyze request if the ep is hot */
846 if (request) 833 if (request)
847 rxstate(musb, to_musb_request(request)); 834 rxstate(musb, to_musb_request(request));
@@ -849,8 +836,6 @@ void musb_g_rx(struct musb *musb, u8 epnum)
849 DBG(3, "packet waiting for %s%s request\n", 836 DBG(3, "packet waiting for %s%s request\n",
850 musb_ep->desc ? "" : "inactive ", 837 musb_ep->desc ? "" : "inactive ",
851 musb_ep->end_point.name); 838 musb_ep->end_point.name);
852
853done:
854 return; 839 return;
855} 840}
856 841
@@ -1244,7 +1229,7 @@ int musb_gadget_set_halt(struct usb_ep *ep, int value)
1244 void __iomem *mbase; 1229 void __iomem *mbase;
1245 unsigned long flags; 1230 unsigned long flags;
1246 u16 csr; 1231 u16 csr;
1247 struct musb_request *request = NULL; 1232 struct musb_request *request;
1248 int status = 0; 1233 int status = 0;
1249 1234
1250 if (!ep) 1235 if (!ep)
@@ -1260,24 +1245,29 @@ int musb_gadget_set_halt(struct usb_ep *ep, int value)
1260 1245
1261 musb_ep_select(mbase, epnum); 1246 musb_ep_select(mbase, epnum);
1262 1247
1263 /* cannot portably stall with non-empty FIFO */
1264 request = to_musb_request(next_request(musb_ep)); 1248 request = to_musb_request(next_request(musb_ep));
1265 if (value && musb_ep->is_in) { 1249 if (value) {
1266 csr = musb_readw(epio, MUSB_TXCSR); 1250 if (request) {
1267 if (csr & MUSB_TXCSR_FIFONOTEMPTY) { 1251 DBG(3, "request in progress, cannot halt %s\n",
1268 DBG(3, "%s fifo busy, cannot halt\n", ep->name); 1252 ep->name);
1269 spin_unlock_irqrestore(&musb->lock, flags); 1253 status = -EAGAIN;
1270 return -EAGAIN; 1254 goto done;
1255 }
1256 /* Cannot portably stall with non-empty FIFO */
1257 if (musb_ep->is_in) {
1258 csr = musb_readw(epio, MUSB_TXCSR);
1259 if (csr & MUSB_TXCSR_FIFONOTEMPTY) {
1260 DBG(3, "FIFO busy, cannot halt %s\n", ep->name);
1261 status = -EAGAIN;
1262 goto done;
1263 }
1271 } 1264 }
1272
1273 } 1265 }
1274 1266
1275 /* set/clear the stall and toggle bits */ 1267 /* set/clear the stall and toggle bits */
1276 DBG(2, "%s: %s stall\n", ep->name, value ? "set" : "clear"); 1268 DBG(2, "%s: %s stall\n", ep->name, value ? "set" : "clear");
1277 if (musb_ep->is_in) { 1269 if (musb_ep->is_in) {
1278 csr = musb_readw(epio, MUSB_TXCSR); 1270 csr = musb_readw(epio, MUSB_TXCSR);
1279 if (csr & MUSB_TXCSR_FIFONOTEMPTY)
1280 csr |= MUSB_TXCSR_FLUSHFIFO;
1281 csr |= MUSB_TXCSR_P_WZC_BITS 1271 csr |= MUSB_TXCSR_P_WZC_BITS
1282 | MUSB_TXCSR_CLRDATATOG; 1272 | MUSB_TXCSR_CLRDATATOG;
1283 if (value) 1273 if (value)
@@ -1300,14 +1290,13 @@ int musb_gadget_set_halt(struct usb_ep *ep, int value)
1300 musb_writew(epio, MUSB_RXCSR, csr); 1290 musb_writew(epio, MUSB_RXCSR, csr);
1301 } 1291 }
1302 1292
1303done:
1304
1305 /* maybe start the first request in the queue */ 1293 /* maybe start the first request in the queue */
1306 if (!musb_ep->busy && !value && request) { 1294 if (!musb_ep->busy && !value && request) {
1307 DBG(3, "restarting the request\n"); 1295 DBG(3, "restarting the request\n");
1308 musb_ep_restart(musb, request); 1296 musb_ep_restart(musb, request);
1309 } 1297 }
1310 1298
1299done:
1311 spin_unlock_irqrestore(&musb->lock, flags); 1300 spin_unlock_irqrestore(&musb->lock, flags);
1312 return status; 1301 return status;
1313} 1302}
diff --git a/drivers/usb/musb/musb_gadget_ep0.c b/drivers/usb/musb/musb_gadget_ep0.c
index 7a6778675ad3..522efb31b56b 100644
--- a/drivers/usb/musb/musb_gadget_ep0.c
+++ b/drivers/usb/musb/musb_gadget_ep0.c
@@ -511,7 +511,8 @@ static void ep0_txstate(struct musb *musb)
511 511
512 /* update the flags */ 512 /* update the flags */
513 if (fifo_count < MUSB_MAX_END0_PACKET 513 if (fifo_count < MUSB_MAX_END0_PACKET
514 || request->actual == request->length) { 514 || (request->actual == request->length
515 && !request->zero)) {
515 musb->ep0_state = MUSB_EP0_STAGE_STATUSOUT; 516 musb->ep0_state = MUSB_EP0_STAGE_STATUSOUT;
516 csr |= MUSB_CSR0_P_DATAEND; 517 csr |= MUSB_CSR0_P_DATAEND;
517 } else 518 } else
diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
index cf94511485f2..e3ab40a966eb 100644
--- a/drivers/usb/musb/musb_host.c
+++ b/drivers/usb/musb/musb_host.c
@@ -1301,8 +1301,11 @@ void musb_host_tx(struct musb *musb, u8 epnum)
1301 return; 1301 return;
1302 } else if (usb_pipeisoc(pipe) && dma) { 1302 } else if (usb_pipeisoc(pipe) && dma) {
1303 if (musb_tx_dma_program(musb->dma_controller, hw_ep, qh, urb, 1303 if (musb_tx_dma_program(musb->dma_controller, hw_ep, qh, urb,
1304 offset, length)) 1304 offset, length)) {
1305 if (is_cppi_enabled() || tusb_dma_omap())
1306 musb_h_tx_dma_start(hw_ep);
1305 return; 1307 return;
1308 }
1306 } else if (tx_csr & MUSB_TXCSR_DMAENAB) { 1309 } else if (tx_csr & MUSB_TXCSR_DMAENAB) {
1307 DBG(1, "not complete, but DMA enabled?\n"); 1310 DBG(1, "not complete, but DMA enabled?\n");
1308 return; 1311 return;
diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
index 698252a4dc5d..bd254ec97d14 100644
--- a/drivers/usb/serial/cp210x.c
+++ b/drivers/usb/serial/cp210x.c
@@ -50,6 +50,8 @@ static int cp210x_tiocmset_port(struct usb_serial_port *port, struct file *,
50static void cp210x_break_ctl(struct tty_struct *, int); 50static void cp210x_break_ctl(struct tty_struct *, int);
51static int cp210x_startup(struct usb_serial *); 51static int cp210x_startup(struct usb_serial *);
52static void cp210x_disconnect(struct usb_serial *); 52static void cp210x_disconnect(struct usb_serial *);
53static void cp210x_dtr_rts(struct usb_serial_port *p, int on);
54static int cp210x_carrier_raised(struct usb_serial_port *p);
53 55
54static int debug; 56static int debug;
55 57
@@ -143,6 +145,8 @@ static struct usb_serial_driver cp210x_device = {
143 .tiocmset = cp210x_tiocmset, 145 .tiocmset = cp210x_tiocmset,
144 .attach = cp210x_startup, 146 .attach = cp210x_startup,
145 .disconnect = cp210x_disconnect, 147 .disconnect = cp210x_disconnect,
148 .dtr_rts = cp210x_dtr_rts,
149 .carrier_raised = cp210x_carrier_raised
146}; 150};
147 151
148/* Config request types */ 152/* Config request types */
@@ -746,6 +750,14 @@ static int cp210x_tiocmset_port(struct usb_serial_port *port, struct file *file,
746 return cp210x_set_config(port, CP210X_SET_MHS, &control, 2); 750 return cp210x_set_config(port, CP210X_SET_MHS, &control, 2);
747} 751}
748 752
753static void cp210x_dtr_rts(struct usb_serial_port *p, int on)
754{
755 if (on)
756 cp210x_tiocmset_port(p, NULL, TIOCM_DTR|TIOCM_RTS, 0);
757 else
758 cp210x_tiocmset_port(p, NULL, 0, TIOCM_DTR|TIOCM_RTS);
759}
760
749static int cp210x_tiocmget (struct tty_struct *tty, struct file *file) 761static int cp210x_tiocmget (struct tty_struct *tty, struct file *file)
750{ 762{
751 struct usb_serial_port *port = tty->driver_data; 763 struct usb_serial_port *port = tty->driver_data;
@@ -768,6 +780,15 @@ static int cp210x_tiocmget (struct tty_struct *tty, struct file *file)
768 return result; 780 return result;
769} 781}
770 782
783static int cp210x_carrier_raised(struct usb_serial_port *p)
784{
785 unsigned int control;
786 cp210x_get_config(p, CP210X_GET_MDMSTS, &control, 1);
787 if (control & CONTROL_DCD)
788 return 1;
789 return 0;
790}
791
771static void cp210x_break_ctl (struct tty_struct *tty, int break_state) 792static void cp210x_break_ctl (struct tty_struct *tty, int break_state)
772{ 793{
773 struct usb_serial_port *port = tty->driver_data; 794 struct usb_serial_port *port = tty->driver_data;
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 9c60d6d4908a..ebcc6d0e2e91 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -1937,7 +1937,7 @@ static void ftdi_write_bulk_callback(struct urb *urb)
1937 return; 1937 return;
1938 } 1938 }
1939 /* account for transferred data */ 1939 /* account for transferred data */
1940 countback = urb->actual_length; 1940 countback = urb->transfer_buffer_length;
1941 data_offset = priv->write_offset; 1941 data_offset = priv->write_offset;
1942 if (data_offset > 0) { 1942 if (data_offset > 0) {
1943 /* Subtract the control bytes */ 1943 /* Subtract the control bytes */
@@ -1950,7 +1950,6 @@ static void ftdi_write_bulk_callback(struct urb *urb)
1950 1950
1951 if (status) { 1951 if (status) {
1952 dbg("nonzero write bulk status received: %d", status); 1952 dbg("nonzero write bulk status received: %d", status);
1953 return;
1954 } 1953 }
1955 1954
1956 usb_serial_port_softint(port); 1955 usb_serial_port_softint(port);
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 65d96b214f95..0577e4b61114 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -308,6 +308,7 @@ static int option_resume(struct usb_serial *serial);
308 308
309#define DLINK_VENDOR_ID 0x1186 309#define DLINK_VENDOR_ID 0x1186
310#define DLINK_PRODUCT_DWM_652 0x3e04 310#define DLINK_PRODUCT_DWM_652 0x3e04
311#define DLINK_PRODUCT_DWM_652_U5 0xce16
311 312
312#define QISDA_VENDOR_ID 0x1da5 313#define QISDA_VENDOR_ID 0x1da5
313#define QISDA_PRODUCT_H21_4512 0x4512 314#define QISDA_PRODUCT_H21_4512 0x4512
@@ -315,6 +316,9 @@ static int option_resume(struct usb_serial *serial);
315#define QISDA_PRODUCT_H20_4515 0x4515 316#define QISDA_PRODUCT_H20_4515 0x4515
316#define QISDA_PRODUCT_H20_4519 0x4519 317#define QISDA_PRODUCT_H20_4519 0x4519
317 318
319/* TLAYTECH PRODUCTS */
320#define TLAYTECH_VENDOR_ID 0x20B9
321#define TLAYTECH_PRODUCT_TEU800 0x1682
318 322
319/* TOSHIBA PRODUCTS */ 323/* TOSHIBA PRODUCTS */
320#define TOSHIBA_VENDOR_ID 0x0930 324#define TOSHIBA_VENDOR_ID 0x0930
@@ -332,6 +336,10 @@ static int option_resume(struct usb_serial *serial);
332#define AIRPLUS_VENDOR_ID 0x1011 336#define AIRPLUS_VENDOR_ID 0x1011
333#define AIRPLUS_PRODUCT_MCD650 0x3198 337#define AIRPLUS_PRODUCT_MCD650 0x3198
334 338
339/* 4G Systems products */
340#define FOUR_G_SYSTEMS_VENDOR_ID 0x1c9e
341#define FOUR_G_SYSTEMS_PRODUCT_W14 0x9603
342
335static struct usb_device_id option_ids[] = { 343static struct usb_device_id option_ids[] = {
336 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, 344 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
337 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, 345 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
@@ -583,6 +591,7 @@ static struct usb_device_id option_ids[] = {
583 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) }, 591 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) },
584 { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) }, 592 { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) },
585 { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) }, 593 { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) },
594 { USB_DEVICE(ALINK_VENDOR_ID, DLINK_PRODUCT_DWM_652_U5) }, /* Yes, ALINK_VENDOR_ID */
586 { USB_DEVICE(QISDA_VENDOR_ID, QISDA_PRODUCT_H21_4512) }, 595 { USB_DEVICE(QISDA_VENDOR_ID, QISDA_PRODUCT_H21_4512) },
587 { USB_DEVICE(QISDA_VENDOR_ID, QISDA_PRODUCT_H21_4523) }, 596 { USB_DEVICE(QISDA_VENDOR_ID, QISDA_PRODUCT_H21_4523) },
588 { USB_DEVICE(QISDA_VENDOR_ID, QISDA_PRODUCT_H20_4515) }, 597 { USB_DEVICE(QISDA_VENDOR_ID, QISDA_PRODUCT_H20_4515) },
@@ -593,6 +602,8 @@ static struct usb_device_id option_ids[] = {
593 { USB_DEVICE_AND_INTERFACE_INFO(ALINK_VENDOR_ID, ALINK_PRODUCT_3GU, 0xff, 0xff, 0xff) }, 602 { USB_DEVICE_AND_INTERFACE_INFO(ALINK_VENDOR_ID, ALINK_PRODUCT_3GU, 0xff, 0xff, 0xff) },
594 { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S) }, 603 { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S) },
595 { USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) }, 604 { USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) },
605 { USB_DEVICE(TLAYTECH_VENDOR_ID, TLAYTECH_PRODUCT_TEU800) },
606 { USB_DEVICE(FOUR_G_SYSTEMS_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14) },
596 { } /* Terminating entry */ 607 { } /* Terminating entry */
597}; 608};
598MODULE_DEVICE_TABLE(usb, option_ids); 609MODULE_DEVICE_TABLE(usb, option_ids);
diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c
index 45883988a005..5019325ba25d 100644
--- a/drivers/usb/serial/sierra.c
+++ b/drivers/usb/serial/sierra.c
@@ -296,7 +296,6 @@ struct sierra_port_private {
296 int dsr_state; 296 int dsr_state;
297 int dcd_state; 297 int dcd_state;
298 int ri_state; 298 int ri_state;
299
300 unsigned int opened:1; 299 unsigned int opened:1;
301}; 300};
302 301
@@ -306,6 +305,8 @@ static int sierra_send_setup(struct usb_serial_port *port)
306 struct sierra_port_private *portdata; 305 struct sierra_port_private *portdata;
307 __u16 interface = 0; 306 __u16 interface = 0;
308 int val = 0; 307 int val = 0;
308 int do_send = 0;
309 int retval;
309 310
310 dev_dbg(&port->dev, "%s\n", __func__); 311 dev_dbg(&port->dev, "%s\n", __func__);
311 312
@@ -324,10 +325,7 @@ static int sierra_send_setup(struct usb_serial_port *port)
324 */ 325 */
325 if (port->interrupt_in_urb) { 326 if (port->interrupt_in_urb) {
326 /* send control message */ 327 /* send control message */
327 return usb_control_msg(serial->dev, 328 do_send = 1;
328 usb_rcvctrlpipe(serial->dev, 0),
329 0x22, 0x21, val, interface,
330 NULL, 0, USB_CTRL_SET_TIMEOUT);
331 } 329 }
332 } 330 }
333 331
@@ -339,12 +337,18 @@ static int sierra_send_setup(struct usb_serial_port *port)
339 interface = 1; 337 interface = 1;
340 else if (port->bulk_out_endpointAddress == 5) 338 else if (port->bulk_out_endpointAddress == 5)
341 interface = 2; 339 interface = 2;
342 return usb_control_msg(serial->dev, 340
343 usb_rcvctrlpipe(serial->dev, 0), 341 do_send = 1;
344 0x22, 0x21, val, interface,
345 NULL, 0, USB_CTRL_SET_TIMEOUT);
346 } 342 }
347 return 0; 343 if (!do_send)
344 return 0;
345
346 usb_autopm_get_interface(serial->interface);
347 retval = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0),
348 0x22, 0x21, val, interface, NULL, 0, USB_CTRL_SET_TIMEOUT);
349 usb_autopm_put_interface(serial->interface);
350
351 return retval;
348} 352}
349 353
350static void sierra_set_termios(struct tty_struct *tty, 354static void sierra_set_termios(struct tty_struct *tty,
@@ -773,8 +777,11 @@ static void sierra_close(struct usb_serial_port *port)
773 777
774 if (serial->dev) { 778 if (serial->dev) {
775 mutex_lock(&serial->disc_mutex); 779 mutex_lock(&serial->disc_mutex);
776 if (!serial->disconnected) 780 if (!serial->disconnected) {
781 serial->interface->needs_remote_wakeup = 0;
782 usb_autopm_get_interface(serial->interface);
777 sierra_send_setup(port); 783 sierra_send_setup(port);
784 }
778 mutex_unlock(&serial->disc_mutex); 785 mutex_unlock(&serial->disc_mutex);
779 spin_lock_irq(&intfdata->susp_lock); 786 spin_lock_irq(&intfdata->susp_lock);
780 portdata->opened = 0; 787 portdata->opened = 0;
@@ -788,8 +795,6 @@ static void sierra_close(struct usb_serial_port *port)
788 sierra_release_urb(portdata->in_urbs[i]); 795 sierra_release_urb(portdata->in_urbs[i]);
789 portdata->in_urbs[i] = NULL; 796 portdata->in_urbs[i] = NULL;
790 } 797 }
791 usb_autopm_get_interface(serial->interface);
792 serial->interface->needs_remote_wakeup = 0;
793 } 798 }
794} 799}
795 800
@@ -827,6 +832,8 @@ static int sierra_open(struct tty_struct *tty, struct usb_serial_port *port)
827 if (err) { 832 if (err) {
828 /* get rid of everything as in close */ 833 /* get rid of everything as in close */
829 sierra_close(port); 834 sierra_close(port);
835 /* restore balance for autopm */
836 usb_autopm_put_interface(serial->interface);
830 return err; 837 return err;
831 } 838 }
832 sierra_send_setup(port); 839 sierra_send_setup(port);
@@ -915,7 +922,7 @@ static void sierra_release(struct usb_serial *serial)
915#ifdef CONFIG_PM 922#ifdef CONFIG_PM
916static void stop_read_write_urbs(struct usb_serial *serial) 923static void stop_read_write_urbs(struct usb_serial *serial)
917{ 924{
918 int i, j; 925 int i;
919 struct usb_serial_port *port; 926 struct usb_serial_port *port;
920 struct sierra_port_private *portdata; 927 struct sierra_port_private *portdata;
921 928
@@ -923,8 +930,7 @@ static void stop_read_write_urbs(struct usb_serial *serial)
923 for (i = 0; i < serial->num_ports; ++i) { 930 for (i = 0; i < serial->num_ports; ++i) {
924 port = serial->port[i]; 931 port = serial->port[i];
925 portdata = usb_get_serial_port_data(port); 932 portdata = usb_get_serial_port_data(port);
926 for (j = 0; j < N_IN_URB; j++) 933 sierra_stop_rx_urbs(port);
927 usb_kill_urb(portdata->in_urbs[j]);
928 usb_kill_anchored_urbs(&portdata->active); 934 usb_kill_anchored_urbs(&portdata->active);
929 } 935 }
930} 936}
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index 9bbb2855ea91..188e1ba3b69f 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -2121,7 +2121,7 @@ config FB_EP93XX
2121 2121
2122config FB_PRE_INIT_FB 2122config FB_PRE_INIT_FB
2123 bool "Don't reinitialize, use bootloader's GDC/Display configuration" 2123 bool "Don't reinitialize, use bootloader's GDC/Display configuration"
2124 depends on FB_MB862XX_LIME 2124 depends on FB && FB_MB862XX_LIME
2125 ---help--- 2125 ---help---
2126 Select this option if display contents should be inherited as set by 2126 Select this option if display contents should be inherited as set by
2127 the bootloader. 2127 the bootloader.
diff --git a/drivers/video/atafb.c b/drivers/video/atafb.c
index 8cd279be74e5..37624f74e88b 100644
--- a/drivers/video/atafb.c
+++ b/drivers/video/atafb.c
@@ -329,12 +329,6 @@ extern unsigned char fontdata_8x16[];
329 * 329 *
330 * * perform fb specific mmap * 330 * * perform fb specific mmap *
331 * int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma); 331 * int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma);
332 *
333 * * save current hardware state *
334 * void (*fb_save_state)(struct fb_info *info);
335 *
336 * * restore saved state *
337 * void (*fb_restore_state)(struct fb_info *info);
338 * } ; 332 * } ;
339 */ 333 */
340 334
diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
index 2830ffd72976..d5e801076d33 100644
--- a/drivers/video/atmel_lcdfb.c
+++ b/drivers/video/atmel_lcdfb.c
@@ -484,6 +484,7 @@ static int atmel_lcdfb_set_par(struct fb_info *info)
484 unsigned long value; 484 unsigned long value;
485 unsigned long clk_value_khz; 485 unsigned long clk_value_khz;
486 unsigned long bits_per_line; 486 unsigned long bits_per_line;
487 unsigned long pix_factor = 2;
487 488
488 might_sleep(); 489 might_sleep();
489 490
@@ -516,20 +517,24 @@ static int atmel_lcdfb_set_par(struct fb_info *info)
516 /* Now, the LCDC core... */ 517 /* Now, the LCDC core... */
517 518
518 /* Set pixel clock */ 519 /* Set pixel clock */
520 if (cpu_is_at91sam9g45() && !cpu_is_at91sam9g45es())
521 pix_factor = 1;
522
519 clk_value_khz = clk_get_rate(sinfo->lcdc_clk) / 1000; 523 clk_value_khz = clk_get_rate(sinfo->lcdc_clk) / 1000;
520 524
521 value = DIV_ROUND_UP(clk_value_khz, PICOS2KHZ(info->var.pixclock)); 525 value = DIV_ROUND_UP(clk_value_khz, PICOS2KHZ(info->var.pixclock));
522 526
523 if (value < 2) { 527 if (value < pix_factor) {
524 dev_notice(info->device, "Bypassing pixel clock divider\n"); 528 dev_notice(info->device, "Bypassing pixel clock divider\n");
525 lcdc_writel(sinfo, ATMEL_LCDC_LCDCON1, ATMEL_LCDC_BYPASS); 529 lcdc_writel(sinfo, ATMEL_LCDC_LCDCON1, ATMEL_LCDC_BYPASS);
526 } else { 530 } else {
527 value = (value / 2) - 1; 531 value = (value / pix_factor) - 1;
528 dev_dbg(info->device, " * programming CLKVAL = 0x%08lx\n", 532 dev_dbg(info->device, " * programming CLKVAL = 0x%08lx\n",
529 value); 533 value);
530 lcdc_writel(sinfo, ATMEL_LCDC_LCDCON1, 534 lcdc_writel(sinfo, ATMEL_LCDC_LCDCON1,
531 value << ATMEL_LCDC_CLKVAL_OFFSET); 535 value << ATMEL_LCDC_CLKVAL_OFFSET);
532 info->var.pixclock = KHZ2PICOS(clk_value_khz / (2 * (value + 1))); 536 info->var.pixclock =
537 KHZ2PICOS(clk_value_khz / (pix_factor * (value + 1)));
533 dev_dbg(info->device, " updated pixclk: %lu KHz\n", 538 dev_dbg(info->device, " updated pixclk: %lu KHz\n",
534 PICOS2KHZ(info->var.pixclock)); 539 PICOS2KHZ(info->var.pixclock));
535 } 540 }
diff --git a/drivers/video/backlight/corgi_lcd.c b/drivers/video/backlight/corgi_lcd.c
index 2211a852af9c..96774949cd30 100644
--- a/drivers/video/backlight/corgi_lcd.c
+++ b/drivers/video/backlight/corgi_lcd.c
@@ -433,8 +433,9 @@ static int corgi_bl_update_status(struct backlight_device *bd)
433 433
434 if (corgibl_flags & CORGIBL_SUSPENDED) 434 if (corgibl_flags & CORGIBL_SUSPENDED)
435 intensity = 0; 435 intensity = 0;
436 if (corgibl_flags & CORGIBL_BATTLOW) 436
437 intensity &= lcd->limit_mask; 437 if ((corgibl_flags & CORGIBL_BATTLOW) && intensity > lcd->limit_mask)
438 intensity = lcd->limit_mask;
438 439
439 return corgi_bl_set_intensity(lcd, intensity); 440 return corgi_bl_set_intensity(lcd, intensity);
440} 441}
diff --git a/drivers/video/backlight/lcd.c b/drivers/video/backlight/lcd.c
index b6449470106c..a482dd7b0311 100644
--- a/drivers/video/backlight/lcd.c
+++ b/drivers/video/backlight/lcd.c
@@ -56,7 +56,7 @@ static int fb_notifier_callback(struct notifier_block *self,
56 56
57static int lcd_register_fb(struct lcd_device *ld) 57static int lcd_register_fb(struct lcd_device *ld)
58{ 58{
59 memset(&ld->fb_notif, 0, sizeof(&ld->fb_notif)); 59 memset(&ld->fb_notif, 0, sizeof(ld->fb_notif));
60 ld->fb_notif.notifier_call = fb_notifier_callback; 60 ld->fb_notif.notifier_call = fb_notifier_callback;
61 return fb_register_client(&ld->fb_notif); 61 return fb_register_client(&ld->fb_notif);
62} 62}
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
index 5a686cea23f4..3681c6a88212 100644
--- a/drivers/video/console/fbcon.c
+++ b/drivers/video/console/fbcon.c
@@ -2311,14 +2311,11 @@ static int fbcon_blank(struct vc_data *vc, int blank, int mode_switch)
2311 ops->graphics = 1; 2311 ops->graphics = 1;
2312 2312
2313 if (!blank) { 2313 if (!blank) {
2314 if (info->fbops->fb_save_state)
2315 info->fbops->fb_save_state(info);
2316 var.activate = FB_ACTIVATE_NOW | FB_ACTIVATE_FORCE; 2314 var.activate = FB_ACTIVATE_NOW | FB_ACTIVATE_FORCE;
2317 fb_set_var(info, &var); 2315 fb_set_var(info, &var);
2318 ops->graphics = 0; 2316 ops->graphics = 0;
2319 ops->var = info->var; 2317 ops->var = info->var;
2320 } else if (info->fbops->fb_restore_state) 2318 }
2321 info->fbops->fb_restore_state(info);
2322 } 2319 }
2323 2320
2324 if (!fbcon_is_inactive(vc, info)) { 2321 if (!fbcon_is_inactive(vc, info)) {
diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index d065894ce38f..ea1fd3f47511 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -554,11 +554,11 @@ static int fb_check_var(struct fb_var_screeninfo *var,
554 var->transp.length = 0; 554 var->transp.length = 0;
555 break; 555 break;
556 case 16: /* RGB 565 */ 556 case 16: /* RGB 565 */
557 var->red.offset = 0; 557 var->red.offset = 11;
558 var->red.length = 5; 558 var->red.length = 5;
559 var->green.offset = 5; 559 var->green.offset = 5;
560 var->green.length = 6; 560 var->green.length = 6;
561 var->blue.offset = 11; 561 var->blue.offset = 0;
562 var->blue.length = 5; 562 var->blue.length = 5;
563 var->transp.offset = 0; 563 var->transp.offset = 0;
564 var->transp.length = 0; 564 var->transp.length = 0;
@@ -591,7 +591,7 @@ static int __devexit fb_remove(struct platform_device *dev)
591 unregister_framebuffer(info); 591 unregister_framebuffer(info);
592 fb_dealloc_cmap(&info->cmap); 592 fb_dealloc_cmap(&info->cmap);
593 dma_free_coherent(NULL, par->databuf_sz + PAGE_SIZE, 593 dma_free_coherent(NULL, par->databuf_sz + PAGE_SIZE,
594 info->screen_base, 594 info->screen_base - PAGE_SIZE,
595 info->fix.smem_start); 595 info->fix.smem_start);
596 free_irq(par->irq, par); 596 free_irq(par->irq, par);
597 clk_disable(par->lcdc_clk); 597 clk_disable(par->lcdc_clk);
@@ -704,7 +704,7 @@ static int __init fb_probe(struct platform_device *device)
704 704
705 if (i == ARRAY_SIZE(known_lcd_panels)) { 705 if (i == ARRAY_SIZE(known_lcd_panels)) {
706 dev_err(&device->dev, "GLCD: No valid panel found\n"); 706 dev_err(&device->dev, "GLCD: No valid panel found\n");
707 ret = ENODEV; 707 ret = -ENODEV;
708 goto err_clk_disable; 708 goto err_clk_disable;
709 } else 709 } else
710 dev_info(&device->dev, "GLCD: Found %s panel\n", 710 dev_info(&device->dev, "GLCD: Found %s panel\n",
@@ -749,6 +749,7 @@ static int __init fb_probe(struct platform_device *device)
749 (PAGE_SIZE - par->palette_sz); 749 (PAGE_SIZE - par->palette_sz);
750 750
751 /* the rest of the frame buffer is pixel data */ 751 /* the rest of the frame buffer is pixel data */
752 da8xx_fb_info->screen_base = par->v_palette_base + par->palette_sz;
752 da8xx_fb_fix.smem_start = par->p_palette_base + par->palette_sz; 753 da8xx_fb_fix.smem_start = par->p_palette_base + par->palette_sz;
753 da8xx_fb_fix.smem_len = par->databuf_sz - par->palette_sz; 754 da8xx_fb_fix.smem_len = par->databuf_sz - par->palette_sz;
754 da8xx_fb_fix.line_length = (lcdc_info->width * lcd_cfg->bpp) / 8; 755 da8xx_fb_fix.line_length = (lcdc_info->width * lcd_cfg->bpp) / 8;
@@ -787,6 +788,8 @@ static int __init fb_probe(struct platform_device *device)
787 da8xx_fb_info->var = da8xx_fb_var; 788 da8xx_fb_info->var = da8xx_fb_var;
788 da8xx_fb_info->fbops = &da8xx_fb_ops; 789 da8xx_fb_info->fbops = &da8xx_fb_ops;
789 da8xx_fb_info->pseudo_palette = par->pseudo_palette; 790 da8xx_fb_info->pseudo_palette = par->pseudo_palette;
791 da8xx_fb_info->fix.visual = (da8xx_fb_info->var.bits_per_pixel <= 8) ?
792 FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR;
790 793
791 ret = fb_alloc_cmap(&da8xx_fb_info->cmap, PALETTE_SIZE, 0); 794 ret = fb_alloc_cmap(&da8xx_fb_info->cmap, PALETTE_SIZE, 0);
792 if (ret) 795 if (ret)
@@ -825,7 +828,7 @@ err_free_irq:
825 828
826err_release_fb_mem: 829err_release_fb_mem:
827 dma_free_coherent(NULL, par->databuf_sz + PAGE_SIZE, 830 dma_free_coherent(NULL, par->databuf_sz + PAGE_SIZE,
828 da8xx_fb_info->screen_base, 831 da8xx_fb_info->screen_base - PAGE_SIZE,
829 da8xx_fb_info->fix.smem_start); 832 da8xx_fb_info->fix.smem_start);
830 833
831err_release_fb: 834err_release_fb:
diff --git a/drivers/video/gbefb.c b/drivers/video/gbefb.c
index 1a83709f9611..f67db4268374 100644
--- a/drivers/video/gbefb.c
+++ b/drivers/video/gbefb.c
@@ -1147,7 +1147,7 @@ static int __init gbefb_probe(struct platform_device *p_dev)
1147 gbefb_setup(options); 1147 gbefb_setup(options);
1148#endif 1148#endif
1149 1149
1150 if (!request_region(GBE_BASE, sizeof(struct sgi_gbe), "GBE")) { 1150 if (!request_mem_region(GBE_BASE, sizeof(struct sgi_gbe), "GBE")) {
1151 printk(KERN_ERR "gbefb: couldn't reserve mmio region\n"); 1151 printk(KERN_ERR "gbefb: couldn't reserve mmio region\n");
1152 ret = -EBUSY; 1152 ret = -EBUSY;
1153 goto out_release_framebuffer; 1153 goto out_release_framebuffer;
diff --git a/drivers/video/msm/mddi.c b/drivers/video/msm/mddi.c
index 5c5a1ad1d397..474421fe79a6 100644
--- a/drivers/video/msm/mddi.c
+++ b/drivers/video/msm/mddi.c
@@ -24,6 +24,7 @@
24#include <linux/spinlock.h> 24#include <linux/spinlock.h>
25#include <linux/clk.h> 25#include <linux/clk.h>
26#include <linux/io.h> 26#include <linux/io.h>
27#include <linux/sched.h>
27#include <mach/msm_iomap.h> 28#include <mach/msm_iomap.h>
28#include <mach/irqs.h> 29#include <mach/irqs.h>
29#include <mach/board.h> 30#include <mach/board.h>
diff --git a/drivers/video/msm/mddi_client_nt35399.c b/drivers/video/msm/mddi_client_nt35399.c
index 9c78050ac799..c9e9349451cb 100644
--- a/drivers/video/msm/mddi_client_nt35399.c
+++ b/drivers/video/msm/mddi_client_nt35399.c
@@ -19,6 +19,7 @@
19#include <linux/kernel.h> 19#include <linux/kernel.h>
20#include <linux/platform_device.h> 20#include <linux/platform_device.h>
21#include <linux/interrupt.h> 21#include <linux/interrupt.h>
22#include <linux/sched.h>
22#include <linux/gpio.h> 23#include <linux/gpio.h>
23#include <mach/msm_fb.h> 24#include <mach/msm_fb.h>
24 25
diff --git a/drivers/video/msm/mddi_client_toshiba.c b/drivers/video/msm/mddi_client_toshiba.c
index 80d0f5fdf0b1..71048e78f7f0 100644
--- a/drivers/video/msm/mddi_client_toshiba.c
+++ b/drivers/video/msm/mddi_client_toshiba.c
@@ -20,6 +20,7 @@
20#include <linux/platform_device.h> 20#include <linux/platform_device.h>
21#include <linux/interrupt.h> 21#include <linux/interrupt.h>
22#include <linux/gpio.h> 22#include <linux/gpio.h>
23#include <linux/sched.h>
23#include <mach/msm_fb.h> 24#include <mach/msm_fb.h>
24 25
25 26
diff --git a/drivers/video/msm/mdp.c b/drivers/video/msm/mdp.c
index 99636a2b20f2..6c519e2fa2b7 100644
--- a/drivers/video/msm/mdp.c
+++ b/drivers/video/msm/mdp.c
@@ -22,9 +22,6 @@
22#include <linux/wait.h> 22#include <linux/wait.h>
23#include <linux/clk.h> 23#include <linux/clk.h>
24#include <linux/file.h> 24#include <linux/file.h>
25#ifdef CONFIG_ANDROID_PMEM
26#include <linux/android_pmem.h>
27#endif
28#include <linux/major.h> 25#include <linux/major.h>
29 26
30#include <mach/msm_iomap.h> 27#include <mach/msm_iomap.h>
@@ -262,11 +259,6 @@ int get_img(struct mdp_img *img, struct fb_info *info,
262 struct file *file; 259 struct file *file;
263 unsigned long vstart; 260 unsigned long vstart;
264 261
265#ifdef CONFIG_ANDROID_PMEM
266 if (!get_pmem_file(img->memory_id, start, &vstart, len, filep))
267 return 0;
268#endif
269
270 file = fget_light(img->memory_id, &put_needed); 262 file = fget_light(img->memory_id, &put_needed);
271 if (file == NULL) 263 if (file == NULL)
272 return -1; 264 return -1;
@@ -283,12 +275,6 @@ int get_img(struct mdp_img *img, struct fb_info *info,
283 275
284void put_img(struct file *src_file, struct file *dst_file) 276void put_img(struct file *src_file, struct file *dst_file)
285{ 277{
286#ifdef CONFIG_ANDROID_PMEM
287 if (src_file)
288 put_pmem_file(src_file);
289 if (dst_file)
290 put_pmem_file(dst_file);
291#endif
292} 278}
293 279
294int mdp_blit(struct mdp_device *mdp_dev, struct fb_info *fb, 280int mdp_blit(struct mdp_device *mdp_dev, struct fb_info *fb,
@@ -320,9 +306,6 @@ int mdp_blit(struct mdp_device *mdp_dev, struct fb_info *fb,
320 if (unlikely(get_img(&req->dst, fb, &dst_start, &dst_len, &dst_file))) { 306 if (unlikely(get_img(&req->dst, fb, &dst_start, &dst_len, &dst_file))) {
321 printk(KERN_ERR "mpd_ppp: could not retrieve dst image from " 307 printk(KERN_ERR "mpd_ppp: could not retrieve dst image from "
322 "memory\n"); 308 "memory\n");
323#ifdef CONFIG_ANDROID_PMEM
324 put_pmem_file(src_file);
325#endif
326 return -EINVAL; 309 return -EINVAL;
327 } 310 }
328 mutex_lock(&mdp_mutex); 311 mutex_lock(&mdp_mutex);
@@ -499,7 +482,6 @@ int mdp_probe(struct platform_device *pdev)
499 /* register mdp device */ 482 /* register mdp device */
500 mdp->mdp_dev.dev.parent = &pdev->dev; 483 mdp->mdp_dev.dev.parent = &pdev->dev;
501 mdp->mdp_dev.dev.class = mdp_class; 484 mdp->mdp_dev.dev.class = mdp_class;
502 snprintf(mdp->mdp_dev.dev.bus_id, BUS_ID_SIZE, "mdp%d", pdev->id);
503 485
504 /* if you can remove the platform device you'd have to implement 486 /* if you can remove the platform device you'd have to implement
505 * this: 487 * this:
diff --git a/drivers/video/msm/mdp_ppp.c b/drivers/video/msm/mdp_ppp.c
index ba2c4673b648..4ff001f4cbbd 100644
--- a/drivers/video/msm/mdp_ppp.c
+++ b/drivers/video/msm/mdp_ppp.c
@@ -16,7 +16,6 @@
16#include <linux/file.h> 16#include <linux/file.h>
17#include <linux/delay.h> 17#include <linux/delay.h>
18#include <linux/msm_mdp.h> 18#include <linux/msm_mdp.h>
19#include <linux/android_pmem.h>
20#include <mach/msm_fb.h> 19#include <mach/msm_fb.h>
21 20
22#include "mdp_hw.h" 21#include "mdp_hw.h"
@@ -579,25 +578,6 @@ static int valid_src_dst(unsigned long src_start, unsigned long src_len,
579static void flush_imgs(struct mdp_blit_req *req, struct mdp_regs *regs, 578static void flush_imgs(struct mdp_blit_req *req, struct mdp_regs *regs,
580 struct file *src_file, struct file *dst_file) 579 struct file *src_file, struct file *dst_file)
581{ 580{
582#ifdef CONFIG_ANDROID_PMEM
583 uint32_t src0_len, src1_len, dst0_len, dst1_len;
584
585 /* flush src images to memory before dma to mdp */
586 get_len(&req->src, &req->src_rect, regs->src_bpp, &src0_len,
587 &src1_len);
588 flush_pmem_file(src_file, req->src.offset, src0_len);
589 if (IS_PSEUDOPLNR(req->src.format))
590 flush_pmem_file(src_file, req->src.offset + src0_len,
591 src1_len);
592
593 /* flush dst images */
594 get_len(&req->dst, &req->dst_rect, regs->dst_bpp, &dst0_len,
595 &dst1_len);
596 flush_pmem_file(dst_file, req->dst.offset, dst0_len);
597 if (IS_PSEUDOPLNR(req->dst.format))
598 flush_pmem_file(dst_file, req->dst.offset + dst0_len,
599 dst1_len);
600#endif
601} 581}
602 582
603static void get_chroma_addr(struct mdp_img *img, struct mdp_rect *rect, 583static void get_chroma_addr(struct mdp_img *img, struct mdp_rect *rect,
diff --git a/drivers/video/savage/savagefb_driver.c b/drivers/video/savage/savagefb_driver.c
index 37b135d5d12e..842d157e1025 100644
--- a/drivers/video/savage/savagefb_driver.c
+++ b/drivers/video/savage/savagefb_driver.c
@@ -1565,7 +1565,7 @@ static int savagefb_blank(int blank, struct fb_info *info)
1565 vga_out8(0x3c5, sr8, par); 1565 vga_out8(0x3c5, sr8, par);
1566 vga_out8(0x3c4, 0x0d, par); 1566 vga_out8(0x3c4, 0x0d, par);
1567 srd = vga_in8(0x3c5, par); 1567 srd = vga_in8(0x3c5, par);
1568 srd &= 0x03; 1568 srd &= 0x50;
1569 1569
1570 switch (blank) { 1570 switch (blank) {
1571 case FB_BLANK_UNBLANK: 1571 case FB_BLANK_UNBLANK:
@@ -1606,22 +1606,6 @@ static int savagefb_blank(int blank, struct fb_info *info)
1606 return (blank == FB_BLANK_NORMAL) ? 1 : 0; 1606 return (blank == FB_BLANK_NORMAL) ? 1 : 0;
1607} 1607}
1608 1608
1609static void savagefb_save_state(struct fb_info *info)
1610{
1611 struct savagefb_par *par = info->par;
1612
1613 savage_get_default_par(par, &par->save);
1614}
1615
1616static void savagefb_restore_state(struct fb_info *info)
1617{
1618 struct savagefb_par *par = info->par;
1619
1620 savagefb_blank(FB_BLANK_POWERDOWN, info);
1621 savage_set_default_par(par, &par->save);
1622 savagefb_blank(FB_BLANK_UNBLANK, info);
1623}
1624
1625static int savagefb_open(struct fb_info *info, int user) 1609static int savagefb_open(struct fb_info *info, int user)
1626{ 1610{
1627 struct savagefb_par *par = info->par; 1611 struct savagefb_par *par = info->par;
@@ -1667,8 +1651,6 @@ static struct fb_ops savagefb_ops = {
1667 .fb_setcolreg = savagefb_setcolreg, 1651 .fb_setcolreg = savagefb_setcolreg,
1668 .fb_pan_display = savagefb_pan_display, 1652 .fb_pan_display = savagefb_pan_display,
1669 .fb_blank = savagefb_blank, 1653 .fb_blank = savagefb_blank,
1670 .fb_save_state = savagefb_save_state,
1671 .fb_restore_state = savagefb_restore_state,
1672#if defined(CONFIG_FB_SAVAGE_ACCEL) 1654#if defined(CONFIG_FB_SAVAGE_ACCEL)
1673 .fb_fillrect = savagefb_fillrect, 1655 .fb_fillrect = savagefb_fillrect,
1674 .fb_copyarea = savagefb_copyarea, 1656 .fb_copyarea = savagefb_copyarea,
diff --git a/drivers/video/uvesafb.c b/drivers/video/uvesafb.c
index e35232a18571..54fbb2995a5f 100644
--- a/drivers/video/uvesafb.c
+++ b/drivers/video/uvesafb.c
@@ -1411,23 +1411,6 @@ static int uvesafb_check_var(struct fb_var_screeninfo *var,
1411 return 0; 1411 return 0;
1412} 1412}
1413 1413
1414static void uvesafb_save_state(struct fb_info *info)
1415{
1416 struct uvesafb_par *par = info->par;
1417
1418 if (par->vbe_state_saved)
1419 kfree(par->vbe_state_saved);
1420
1421 par->vbe_state_saved = uvesafb_vbe_state_save(par);
1422}
1423
1424static void uvesafb_restore_state(struct fb_info *info)
1425{
1426 struct uvesafb_par *par = info->par;
1427
1428 uvesafb_vbe_state_restore(par, par->vbe_state_saved);
1429}
1430
1431static struct fb_ops uvesafb_ops = { 1414static struct fb_ops uvesafb_ops = {
1432 .owner = THIS_MODULE, 1415 .owner = THIS_MODULE,
1433 .fb_open = uvesafb_open, 1416 .fb_open = uvesafb_open,
@@ -1441,8 +1424,6 @@ static struct fb_ops uvesafb_ops = {
1441 .fb_imageblit = cfb_imageblit, 1424 .fb_imageblit = cfb_imageblit,
1442 .fb_check_var = uvesafb_check_var, 1425 .fb_check_var = uvesafb_check_var,
1443 .fb_set_par = uvesafb_set_par, 1426 .fb_set_par = uvesafb_set_par,
1444 .fb_save_state = uvesafb_save_state,
1445 .fb_restore_state = uvesafb_restore_state,
1446}; 1427};
1447 1428
1448static void __devinit uvesafb_init_info(struct fb_info *info, 1429static void __devinit uvesafb_init_info(struct fb_info *info,
@@ -1459,15 +1440,6 @@ static void __devinit uvesafb_init_info(struct fb_info *info,
1459 info->fix.ypanstep = par->ypan ? 1 : 0; 1440 info->fix.ypanstep = par->ypan ? 1 : 0;
1460 info->fix.ywrapstep = (par->ypan > 1) ? 1 : 0; 1441 info->fix.ywrapstep = (par->ypan > 1) ? 1 : 0;
1461 1442
1462 /*
1463 * If we were unable to get the state buffer size, disable
1464 * functions for saving and restoring the hardware state.
1465 */
1466 if (par->vbe_state_size == 0) {
1467 info->fbops->fb_save_state = NULL;
1468 info->fbops->fb_restore_state = NULL;
1469 }
1470
1471 /* Disable blanking if the user requested so. */ 1443 /* Disable blanking if the user requested so. */
1472 if (!blank) 1444 if (!blank)
1473 info->fbops->fb_blank = NULL; 1445 info->fbops->fb_blank = NULL;
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
index 4a1f1ebff7bf..28d9cf7cf72f 100644
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -530,19 +530,22 @@ static int vp_try_to_find_vqs(struct virtio_device *vdev, unsigned nvqs,
530 err = PTR_ERR(vqs[i]); 530 err = PTR_ERR(vqs[i]);
531 goto error_find; 531 goto error_find;
532 } 532 }
533
534 if (!vp_dev->per_vq_vectors || msix_vec == VIRTIO_MSI_NO_VECTOR)
535 continue;
536
533 /* allocate per-vq irq if available and necessary */ 537 /* allocate per-vq irq if available and necessary */
534 if (vp_dev->per_vq_vectors) { 538 snprintf(vp_dev->msix_names[msix_vec],
535 snprintf(vp_dev->msix_names[msix_vec], 539 sizeof *vp_dev->msix_names,
536 sizeof *vp_dev->msix_names, 540 "%s-%s",
537 "%s-%s", 541 dev_name(&vp_dev->vdev.dev), names[i]);
538 dev_name(&vp_dev->vdev.dev), names[i]); 542 err = request_irq(vp_dev->msix_entries[msix_vec].vector,
539 err = request_irq(msix_vec, vring_interrupt, 0, 543 vring_interrupt, 0,
540 vp_dev->msix_names[msix_vec], 544 vp_dev->msix_names[msix_vec],
541 vqs[i]); 545 vqs[i]);
542 if (err) { 546 if (err) {
543 vp_del_vq(vqs[i]); 547 vp_del_vq(vqs[i]);
544 goto error_find; 548 goto error_find;
545 }
546 } 549 }
547 } 550 }
548 return 0; 551 return 0;
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index f53600580726..fbd2ecde93e4 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -285,6 +285,9 @@ static void *vring_get_buf(struct virtqueue *_vq, unsigned int *len)
285 return NULL; 285 return NULL;
286 } 286 }
287 287
288 /* Only get used array entries after they have been exposed by host. */
289 rmb();
290
288 i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id; 291 i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id;
289 *len = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].len; 292 *len = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].len;
290 293
diff --git a/drivers/watchdog/pnx4008_wdt.c b/drivers/watchdog/pnx4008_wdt.c
index f24d04132eda..4d227b152001 100644
--- a/drivers/watchdog/pnx4008_wdt.c
+++ b/drivers/watchdog/pnx4008_wdt.c
@@ -317,7 +317,7 @@ static int __devexit pnx4008_wdt_remove(struct platform_device *pdev)
317 317
318static struct platform_driver platform_wdt_driver = { 318static struct platform_driver platform_wdt_driver = {
319 .driver = { 319 .driver = {
320 .name = "watchdog", 320 .name = "pnx4008-watchdog",
321 .owner = THIS_MODULE, 321 .owner = THIS_MODULE,
322 }, 322 },
323 .probe = pnx4008_wdt_probe, 323 .probe = pnx4008_wdt_probe,
@@ -352,4 +352,4 @@ MODULE_PARM_DESC(nowayout,
352 352
353MODULE_LICENSE("GPL"); 353MODULE_LICENSE("GPL");
354MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); 354MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
355MODULE_ALIAS("platform:watchdog"); 355MODULE_ALIAS("platform:pnx4008-watchdog");
diff --git a/drivers/watchdog/rc32434_wdt.c b/drivers/watchdog/rc32434_wdt.c
index f6cccc9df022..bf12d06b5877 100644
--- a/drivers/watchdog/rc32434_wdt.c
+++ b/drivers/watchdog/rc32434_wdt.c
@@ -62,7 +62,7 @@ extern unsigned int idt_cpu_freq;
62static int timeout = WATCHDOG_TIMEOUT; 62static int timeout = WATCHDOG_TIMEOUT;
63module_param(timeout, int, 0); 63module_param(timeout, int, 0);
64MODULE_PARM_DESC(timeout, "Watchdog timeout value, in seconds (default=" 64MODULE_PARM_DESC(timeout, "Watchdog timeout value, in seconds (default="
65 WATCHDOG_TIMEOUT ")"); 65 __MODULE_STRING(WATCHDOG_TIMEOUT) ")");
66 66
67static int nowayout = WATCHDOG_NOWAYOUT; 67static int nowayout = WATCHDOG_NOWAYOUT;
68module_param(nowayout, int, 0); 68module_param(nowayout, int, 0);
@@ -276,7 +276,7 @@ static int __devinit rc32434_wdt_probe(struct platform_device *pdev)
276 return -ENODEV; 276 return -ENODEV;
277 } 277 }
278 278
279 wdt_reg = ioremap_nocache(r->start, r->end - r->start); 279 wdt_reg = ioremap_nocache(r->start, resource_size(r));
280 if (!wdt_reg) { 280 if (!wdt_reg) {
281 printk(KERN_ERR PFX "failed to remap I/O resources\n"); 281 printk(KERN_ERR PFX "failed to remap I/O resources\n");
282 return -ENXIO; 282 return -ENXIO;
diff --git a/drivers/watchdog/sbc_fitpc2_wdt.c b/drivers/watchdog/sbc_fitpc2_wdt.c
index 852ca1977917..91430a89107c 100644
--- a/drivers/watchdog/sbc_fitpc2_wdt.c
+++ b/drivers/watchdog/sbc_fitpc2_wdt.c
@@ -227,7 +227,7 @@ static int __init fitpc2_wdt_init(void)
227 } 227 }
228 228
229 err = misc_register(&fitpc2_wdt_miscdev); 229 err = misc_register(&fitpc2_wdt_miscdev);
230 if (!err) { 230 if (err) {
231 pr_err("cannot register miscdev on minor=%d (err=%d)\n", 231 pr_err("cannot register miscdev on minor=%d (err=%d)\n",
232 WATCHDOG_MINOR, err); 232 WATCHDOG_MINOR, err);
233 goto err_margin; 233 goto err_margin;
diff --git a/firmware/Makefile b/firmware/Makefile
index a6c7c3e47e42..f4ca0c7eb51c 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -69,11 +69,13 @@ fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
69fw-shipped-$(CONFIG_MYRI_SBUS) += myricom/lanai.bin 69fw-shipped-$(CONFIG_MYRI_SBUS) += myricom/lanai.bin
70fw-shipped-$(CONFIG_PCMCIA_PCNET) += cis/LA-PCM.cis cis/PCMLM28.cis \ 70fw-shipped-$(CONFIG_PCMCIA_PCNET) += cis/LA-PCM.cis cis/PCMLM28.cis \
71 cis/DP83903.cis cis/NE2K.cis \ 71 cis/DP83903.cis cis/NE2K.cis \
72 cis/tamarack.cis 72 cis/tamarack.cis cis/PE-200.cis
73fw-shipped-$(CONFIG_PCMCIA_3C589) += cis/3CXEM556.cis 73fw-shipped-$(CONFIG_PCMCIA_3C589) += cis/3CXEM556.cis
74fw-shipped-$(CONFIG_PCMCIA_3C574) += cis/3CCFEM556.cis 74fw-shipped-$(CONFIG_PCMCIA_3C574) += cis/3CCFEM556.cis
75fw-shipped-$(CONFIG_SERIAL_8250_CS) += cis/MT5634ZLX.cis cis/RS-COM-2P.cis \ 75fw-shipped-$(CONFIG_SERIAL_8250_CS) += cis/MT5634ZLX.cis cis/RS-COM-2P.cis \
76 cis/COMpad2.cis cis/COMpad4.cis 76 cis/COMpad2.cis cis/COMpad4.cis \
77 cis/SW_555_SER.cis cis/SW_7xx_SER.cis \
78 cis/SW_8xx_SER.cis
77fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += ositech/Xilinx7OD.bin 79fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += ositech/Xilinx7OD.bin
78fw-shipped-$(CONFIG_SCSI_ADVANSYS) += advansys/mcode.bin advansys/38C1600.bin \ 80fw-shipped-$(CONFIG_SCSI_ADVANSYS) += advansys/mcode.bin advansys/38C1600.bin \
79 advansys/3550.bin advansys/38C0800.bin 81 advansys/3550.bin advansys/38C0800.bin
diff --git a/firmware/WHENCE b/firmware/WHENCE
index c437e14f0b11..7a8adc06eb34 100644
--- a/firmware/WHENCE
+++ b/firmware/WHENCE
@@ -600,6 +600,7 @@ File: cis/LA-PCM.cis
600 cis/DP83903.cis 600 cis/DP83903.cis
601 cis/NE2K.cis 601 cis/NE2K.cis
602 cis/tamarack.cis 602 cis/tamarack.cis
603 cis/PE-200.cis
603 604
604Licence: GPL 605Licence: GPL
605 606
@@ -633,6 +634,9 @@ File: cis/MT5634ZLX.cis
633 cis/RS-COM-2P.cis 634 cis/RS-COM-2P.cis
634 cis/COMpad2.cis 635 cis/COMpad2.cis
635 cis/COMpad4.cis 636 cis/COMpad4.cis
637 cis/SW_555_SER.cis
638 cis/SW_7xx_SER.cis
639 cis/SW_8xx_SER.cis
636 640
637Licence: GPL 641Licence: GPL
638 642
diff --git a/firmware/cis/PE-200.cis.ihex b/firmware/cis/PE-200.cis.ihex
new file mode 100644
index 000000000000..e6dbdab6eb79
--- /dev/null
+++ b/firmware/cis/PE-200.cis.ihex
@@ -0,0 +1,9 @@
1:1000000001030000FF151E0401504D582020200060
2:1000100050452D3230300045544845524E4554002D
3:1000200052303100FF210206031A050101000101CF
4:100030001B0EC181190155E051000F100F30FFFF59
5:040040001400FF00A9
6:00000001FF
7#
8# Replacement CIS for PE-200 ethernet card
9#
diff --git a/firmware/cis/SW_555_SER.cis.ihex b/firmware/cis/SW_555_SER.cis.ihex
new file mode 100644
index 000000000000..9b9348acee7b
--- /dev/null
+++ b/firmware/cis/SW_555_SER.cis.ihex
@@ -0,0 +1,12 @@
1:100000000101FF17034100FF20043F0110072102F7
2:100010000200152A070053696572726120576972E0
3:10002000656C657373004169724361726420353594
4:1000300035004135353500526576203100FF1A050F
5:1000400001030007731B0BE00118A360F8030730DE
6:10005000BC3F1B08A10108A360F802071B08A2010E
7:1000600008A360E803071B08A30108A360E80207D0
8:0A0070001B04A40108231400FF0084
9:00000001FF
10#
11# Replacement CIS for AC555 provided by Sierra Wireless
12#
diff --git a/firmware/cis/SW_7xx_SER.cis.ihex b/firmware/cis/SW_7xx_SER.cis.ihex
new file mode 100644
index 000000000000..11e44ad86437
--- /dev/null
+++ b/firmware/cis/SW_7xx_SER.cis.ihex
@@ -0,0 +1,13 @@
1:100000000101FF17034100FF2004920110072102A4
2:1000100002001537070053696572726120576972D3
3:10002000656C6573730041433731302F4143373579
4:10003000300047505253204E6574776F726B2041E9
5:1000400064617074657200523100FF1A050103008B
6:1000500007731B10E00119784D555D25A360F80367
7:100060000730BC861B08A10108A360F802071B0823
8:10007000A20108A360E803071B08A30108A360E826
9:0C00800002071B04A40108231400FF0069
10:00000001FF
11#
12# Replacement CIS for AC7xx provided by Sierra Wireless
13#
diff --git a/firmware/cis/SW_8xx_SER.cis.ihex b/firmware/cis/SW_8xx_SER.cis.ihex
new file mode 100644
index 000000000000..bbcfe6348328
--- /dev/null
+++ b/firmware/cis/SW_8xx_SER.cis.ihex
@@ -0,0 +1,13 @@
1:100000000101FF17034100FF2004920110072102A4
2:100010000200152F070053696572726120576972DB
3:10002000656C657373004143383530003347204EAB
4:100030006574776F726B20416461707465720052F1
5:100040003100FF1A0501030007731B10E001197846
6:100050004D555D25A360F8480730BC861B08A101FB
7:1000600008A360F847071B08A20108A360E8480737
8:100070001B08A30108A360E847071B04A401082389
9:040080001400FF0069
10:00000001FF
11#
12# Replacement CIS for AC8xx provided by Sierra Wireless
13#
diff --git a/fs/9p/cache.c b/fs/9p/cache.c
index 51c94e26a346..e777961939f3 100644
--- a/fs/9p/cache.c
+++ b/fs/9p/cache.c
@@ -343,18 +343,7 @@ int __v9fs_fscache_release_page(struct page *page, gfp_t gfp)
343 343
344 BUG_ON(!vcookie->fscache); 344 BUG_ON(!vcookie->fscache);
345 345
346 if (PageFsCache(page)) { 346 return fscache_maybe_release_page(vcookie->fscache, page, gfp);
347 if (fscache_check_page_write(vcookie->fscache, page)) {
348 if (!(gfp & __GFP_WAIT))
349 return 0;
350 fscache_wait_on_page_write(vcookie->fscache, page);
351 }
352
353 fscache_uncache_page(vcookie->fscache, page);
354 ClearPageFsCache(page);
355 }
356
357 return 1;
358} 347}
359 348
360void __v9fs_fscache_invalidate_page(struct page *page) 349void __v9fs_fscache_invalidate_page(struct page *page)
@@ -368,7 +357,6 @@ void __v9fs_fscache_invalidate_page(struct page *page)
368 fscache_wait_on_page_write(vcookie->fscache, page); 357 fscache_wait_on_page_write(vcookie->fscache, page);
369 BUG_ON(!PageLocked(page)); 358 BUG_ON(!PageLocked(page));
370 fscache_uncache_page(vcookie->fscache, page); 359 fscache_uncache_page(vcookie->fscache, page);
371 ClearPageFsCache(page);
372 } 360 }
373} 361}
374 362
diff --git a/fs/9p/vfs_dir.c b/fs/9p/vfs_dir.c
index 873cd31baa47..15cce53bf61e 100644
--- a/fs/9p/vfs_dir.c
+++ b/fs/9p/vfs_dir.c
@@ -40,6 +40,24 @@
40#include "fid.h" 40#include "fid.h"
41 41
42/** 42/**
43 * struct p9_rdir - readdir accounting
44 * @mutex: mutex protecting readdir
45 * @head: start offset of current dirread buffer
46 * @tail: end offset of current dirread buffer
47 * @buf: dirread buffer
48 *
49 * private structure for keeping track of readdir
50 * allocated on demand
51 */
52
53struct p9_rdir {
54 struct mutex mutex;
55 int head;
56 int tail;
57 uint8_t *buf;
58};
59
60/**
43 * dt_type - return file type 61 * dt_type - return file type
44 * @mistat: mistat structure 62 * @mistat: mistat structure
45 * 63 *
@@ -70,56 +88,79 @@ static int v9fs_dir_readdir(struct file *filp, void *dirent, filldir_t filldir)
70{ 88{
71 int over; 89 int over;
72 struct p9_wstat st; 90 struct p9_wstat st;
73 int err; 91 int err = 0;
74 struct p9_fid *fid; 92 struct p9_fid *fid;
75 int buflen; 93 int buflen;
76 char *statbuf; 94 int reclen = 0;
77 int n, i = 0; 95 struct p9_rdir *rdir;
78 96
79 P9_DPRINTK(P9_DEBUG_VFS, "name %s\n", filp->f_path.dentry->d_name.name); 97 P9_DPRINTK(P9_DEBUG_VFS, "name %s\n", filp->f_path.dentry->d_name.name);
80 fid = filp->private_data; 98 fid = filp->private_data;
81 99
82 buflen = fid->clnt->msize - P9_IOHDRSZ; 100 buflen = fid->clnt->msize - P9_IOHDRSZ;
83 statbuf = kmalloc(buflen, GFP_KERNEL); 101
84 if (!statbuf) 102 /* allocate rdir on demand */
85 return -ENOMEM; 103 if (!fid->rdir) {
86 104 rdir = kmalloc(sizeof(struct p9_rdir) + buflen, GFP_KERNEL);
87 while (1) { 105
88 err = v9fs_file_readn(filp, statbuf, NULL, buflen, 106 if (rdir == NULL) {
89 fid->rdir_fpos); 107 err = -ENOMEM;
90 if (err <= 0) 108 goto exit;
91 break; 109 }
92 110 spin_lock(&filp->f_dentry->d_lock);
93 n = err; 111 if (!fid->rdir) {
94 while (i < n) { 112 rdir->buf = (uint8_t *)rdir + sizeof(struct p9_rdir);
95 err = p9stat_read(statbuf + i, buflen-i, &st, 113 mutex_init(&rdir->mutex);
96 fid->clnt->dotu); 114 rdir->head = rdir->tail = 0;
115 fid->rdir = (void *) rdir;
116 rdir = NULL;
117 }
118 spin_unlock(&filp->f_dentry->d_lock);
119 kfree(rdir);
120 }
121 rdir = (struct p9_rdir *) fid->rdir;
122
123 err = mutex_lock_interruptible(&rdir->mutex);
124 while (err == 0) {
125 if (rdir->tail == rdir->head) {
126 err = v9fs_file_readn(filp, rdir->buf, NULL,
127 buflen, filp->f_pos);
128 if (err <= 0)
129 goto unlock_and_exit;
130
131 rdir->head = 0;
132 rdir->tail = err;
133 }
134
135 while (rdir->head < rdir->tail) {
136 err = p9stat_read(rdir->buf + rdir->head,
137 buflen - rdir->head, &st,
138 fid->clnt->dotu);
97 if (err) { 139 if (err) {
98 P9_DPRINTK(P9_DEBUG_VFS, "returned %d\n", err); 140 P9_DPRINTK(P9_DEBUG_VFS, "returned %d\n", err);
99 err = -EIO; 141 err = -EIO;
100 p9stat_free(&st); 142 p9stat_free(&st);
101 goto free_and_exit; 143 goto unlock_and_exit;
102 } 144 }
103 145 reclen = st.size+2;
104 i += st.size+2;
105 fid->rdir_fpos += st.size+2;
106 146
107 over = filldir(dirent, st.name, strlen(st.name), 147 over = filldir(dirent, st.name, strlen(st.name),
108 filp->f_pos, v9fs_qid2ino(&st.qid), dt_type(&st)); 148 filp->f_pos, v9fs_qid2ino(&st.qid), dt_type(&st));
109 149
110 filp->f_pos += st.size+2;
111
112 p9stat_free(&st); 150 p9stat_free(&st);
113 151
114 if (over) { 152 if (over) {
115 err = 0; 153 err = 0;
116 goto free_and_exit; 154 goto unlock_and_exit;
117 } 155 }
156 rdir->head += reclen;
157 filp->f_pos += reclen;
118 } 158 }
119 } 159 }
120 160
121free_and_exit: 161unlock_and_exit:
122 kfree(statbuf); 162 mutex_unlock(&rdir->mutex);
163exit:
123 return err; 164 return err;
124} 165}
125 166
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index 5947628aefef..18f74ec4dce9 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -994,8 +994,7 @@ static int v9fs_readlink(struct dentry *dentry, char *buffer, int buflen)
994 P9_DPRINTK(P9_DEBUG_VFS, 994 P9_DPRINTK(P9_DEBUG_VFS,
995 "%s -> %s (%s)\n", dentry->d_name.name, st->extension, buffer); 995 "%s -> %s (%s)\n", dentry->d_name.name, st->extension, buffer);
996 996
997 retval = buflen; 997 retval = strnlen(buffer, buflen);
998
999done: 998done:
1000 kfree(st); 999 kfree(st);
1001 return retval; 1000 return retval;
@@ -1062,7 +1061,7 @@ static void *v9fs_vfs_follow_link(struct dentry *dentry, struct nameidata *nd)
1062 __putname(link); 1061 __putname(link);
1063 link = ERR_PTR(len); 1062 link = ERR_PTR(len);
1064 } else 1063 } else
1065 link[len] = 0; 1064 link[min(len, PATH_MAX-1)] = 0;
1066 } 1065 }
1067 nd_set_link(nd, link); 1066 nd_set_link(nd, link);
1068 1067
diff --git a/fs/Kconfig b/fs/Kconfig
index d4bf8caad8d0..64d44efad7a5 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -135,8 +135,8 @@ config TMPFS_POSIX_ACL
135 135
136config HUGETLBFS 136config HUGETLBFS
137 bool "HugeTLB file system support" 137 bool "HugeTLB file system support"
138 depends on X86 || IA64 || PPC64 || SPARC64 || (SUPERH && MMU) || \ 138 depends on X86 || IA64 || SPARC64 || (S390 && 64BIT) || \
139 (S390 && 64BIT) || SYS_SUPPORTS_HUGETLBFS || BROKEN 139 SYS_SUPPORTS_HUGETLBFS || BROKEN
140 help 140 help
141 hugetlbfs is a filesystem backing for HugeTLB pages, based on 141 hugetlbfs is a filesystem backing for HugeTLB pages, based on
142 ramfs. For architectures that support it, say Y here and read 142 ramfs. For architectures that support it, say Y here and read
diff --git a/fs/afs/file.c b/fs/afs/file.c
index 681c2a7b013f..39b301662f22 100644
--- a/fs/afs/file.c
+++ b/fs/afs/file.c
@@ -315,7 +315,6 @@ static void afs_invalidatepage(struct page *page, unsigned long offset)
315 struct afs_vnode *vnode = AFS_FS_I(page->mapping->host); 315 struct afs_vnode *vnode = AFS_FS_I(page->mapping->host);
316 fscache_wait_on_page_write(vnode->cache, page); 316 fscache_wait_on_page_write(vnode->cache, page);
317 fscache_uncache_page(vnode->cache, page); 317 fscache_uncache_page(vnode->cache, page);
318 ClearPageFsCache(page);
319 } 318 }
320#endif 319#endif
321 320
@@ -349,17 +348,9 @@ static int afs_releasepage(struct page *page, gfp_t gfp_flags)
349 /* deny if page is being written to the cache and the caller hasn't 348 /* deny if page is being written to the cache and the caller hasn't
350 * elected to wait */ 349 * elected to wait */
351#ifdef CONFIG_AFS_FSCACHE 350#ifdef CONFIG_AFS_FSCACHE
352 if (PageFsCache(page)) { 351 if (!fscache_maybe_release_page(vnode->cache, page, gfp_flags)) {
353 if (fscache_check_page_write(vnode->cache, page)) { 352 _leave(" = F [cache busy]");
354 if (!(gfp_flags & __GFP_WAIT)) { 353 return 0;
355 _leave(" = F [cache busy]");
356 return 0;
357 }
358 fscache_wait_on_page_write(vnode->cache, page);
359 }
360
361 fscache_uncache_page(vnode->cache, page);
362 ClearPageFsCache(page);
363 } 354 }
364#endif 355#endif
365 356
diff --git a/fs/bio.c b/fs/bio.c
index 402cb84a92a1..12da5db8682c 100644
--- a/fs/bio.c
+++ b/fs/bio.c
@@ -325,8 +325,16 @@ static void bio_fs_destructor(struct bio *bio)
325 * @gfp_mask: allocation mask to use 325 * @gfp_mask: allocation mask to use
326 * @nr_iovecs: number of iovecs 326 * @nr_iovecs: number of iovecs
327 * 327 *
328 * Allocate a new bio with @nr_iovecs bvecs. If @gfp_mask 328 * bio_alloc will allocate a bio and associated bio_vec array that can hold
329 * contains __GFP_WAIT, the allocation is guaranteed to succeed. 329 * at least @nr_iovecs entries. Allocations will be done from the
330 * fs_bio_set. Also see @bio_alloc_bioset and @bio_kmalloc.
331 *
332 * If %__GFP_WAIT is set, then bio_alloc will always be able to allocate
333 * a bio. This is due to the mempool guarantees. To make this work, callers
334 * must never allocate more than 1 bio at a time from this pool. Callers
335 * that need to allocate more than 1 bio must always submit the previously
336 * allocated bio for IO before attempting to allocate a new one. Failure to
337 * do so can cause livelocks under memory pressure.
330 * 338 *
331 * RETURNS: 339 * RETURNS:
332 * Pointer to new bio on success, NULL on failure. 340 * Pointer to new bio on success, NULL on failure.
@@ -350,21 +358,13 @@ static void bio_kmalloc_destructor(struct bio *bio)
350} 358}
351 359
352/** 360/**
353 * bio_alloc - allocate a bio for I/O 361 * bio_kmalloc - allocate a bio for I/O using kmalloc()
354 * @gfp_mask: the GFP_ mask given to the slab allocator 362 * @gfp_mask: the GFP_ mask given to the slab allocator
355 * @nr_iovecs: number of iovecs to pre-allocate 363 * @nr_iovecs: number of iovecs to pre-allocate
356 * 364 *
357 * Description: 365 * Description:
358 * bio_alloc will allocate a bio and associated bio_vec array that can hold 366 * Allocate a new bio with @nr_iovecs bvecs. If @gfp_mask contains
359 * at least @nr_iovecs entries. Allocations will be done from the 367 * %__GFP_WAIT, the allocation is guaranteed to succeed.
360 * fs_bio_set. Also see @bio_alloc_bioset.
361 *
362 * If %__GFP_WAIT is set, then bio_alloc will always be able to allocate
363 * a bio. This is due to the mempool guarantees. To make this work, callers
364 * must never allocate more than 1 bio at a time from this pool. Callers
365 * that need to allocate more than 1 bio must always submit the previously
366 * allocated bio for IO before attempting to allocate a new one. Failure to
367 * do so can cause livelocks under memory pressure.
368 * 368 *
369 **/ 369 **/
370struct bio *bio_kmalloc(gfp_t gfp_mask, int nr_iovecs) 370struct bio *bio_kmalloc(gfp_t gfp_mask, int nr_iovecs)
@@ -407,7 +407,7 @@ EXPORT_SYMBOL(zero_fill_bio);
407 * 407 *
408 * Description: 408 * Description:
409 * Put a reference to a &struct bio, either one you have gotten with 409 * Put a reference to a &struct bio, either one you have gotten with
410 * bio_alloc or bio_get. The last put of a bio will free it. 410 * bio_alloc, bio_get or bio_clone. The last put of a bio will free it.
411 **/ 411 **/
412void bio_put(struct bio *bio) 412void bio_put(struct bio *bio)
413{ 413{
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 9cf4b926f8e4..8bed0557d88c 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -1248,8 +1248,8 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
1248 bd_set_size(bdev, (loff_t)bdev->bd_part->nr_sects << 9); 1248 bd_set_size(bdev, (loff_t)bdev->bd_part->nr_sects << 9);
1249 } 1249 }
1250 } else { 1250 } else {
1251 put_disk(disk);
1252 module_put(disk->fops->owner); 1251 module_put(disk->fops->owner);
1252 put_disk(disk);
1253 disk = NULL; 1253 disk = NULL;
1254 if (bdev->bd_contains == bdev) { 1254 if (bdev->bd_contains == bdev) {
1255 if (bdev->bd_disk->fops->open) { 1255 if (bdev->bd_disk->fops->open) {
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index e238a0cdac67..94627c4cc193 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -2977,10 +2977,10 @@ static int maybe_allocate_chunk(struct btrfs_root *root,
2977 2977
2978 free_space = btrfs_super_total_bytes(disk_super); 2978 free_space = btrfs_super_total_bytes(disk_super);
2979 /* 2979 /*
2980 * we allow the metadata to grow to a max of either 5gb or 5% of the 2980 * we allow the metadata to grow to a max of either 10gb or 5% of the
2981 * space in the volume. 2981 * space in the volume.
2982 */ 2982 */
2983 min_metadata = min((u64)5 * 1024 * 1024 * 1024, 2983 min_metadata = min((u64)10 * 1024 * 1024 * 1024,
2984 div64_u64(free_space * 5, 100)); 2984 div64_u64(free_space * 5, 100));
2985 if (info->total_bytes >= min_metadata) { 2985 if (info->total_bytes >= min_metadata) {
2986 spin_unlock(&info->lock); 2986 spin_unlock(&info->lock);
@@ -4102,7 +4102,7 @@ wait_block_group_cache_done(struct btrfs_block_group_cache *cache)
4102} 4102}
4103 4103
4104enum btrfs_loop_type { 4104enum btrfs_loop_type {
4105 LOOP_CACHED_ONLY = 0, 4105 LOOP_FIND_IDEAL = 0,
4106 LOOP_CACHING_NOWAIT = 1, 4106 LOOP_CACHING_NOWAIT = 1,
4107 LOOP_CACHING_WAIT = 2, 4107 LOOP_CACHING_WAIT = 2,
4108 LOOP_ALLOC_CHUNK = 3, 4108 LOOP_ALLOC_CHUNK = 3,
@@ -4131,12 +4131,15 @@ static noinline int find_free_extent(struct btrfs_trans_handle *trans,
4131 struct btrfs_block_group_cache *block_group = NULL; 4131 struct btrfs_block_group_cache *block_group = NULL;
4132 int empty_cluster = 2 * 1024 * 1024; 4132 int empty_cluster = 2 * 1024 * 1024;
4133 int allowed_chunk_alloc = 0; 4133 int allowed_chunk_alloc = 0;
4134 int done_chunk_alloc = 0;
4134 struct btrfs_space_info *space_info; 4135 struct btrfs_space_info *space_info;
4135 int last_ptr_loop = 0; 4136 int last_ptr_loop = 0;
4136 int loop = 0; 4137 int loop = 0;
4137 bool found_uncached_bg = false; 4138 bool found_uncached_bg = false;
4138 bool failed_cluster_refill = false; 4139 bool failed_cluster_refill = false;
4139 bool failed_alloc = false; 4140 bool failed_alloc = false;
4141 u64 ideal_cache_percent = 0;
4142 u64 ideal_cache_offset = 0;
4140 4143
4141 WARN_ON(num_bytes < root->sectorsize); 4144 WARN_ON(num_bytes < root->sectorsize);
4142 btrfs_set_key_type(ins, BTRFS_EXTENT_ITEM_KEY); 4145 btrfs_set_key_type(ins, BTRFS_EXTENT_ITEM_KEY);
@@ -4172,14 +4175,19 @@ static noinline int find_free_extent(struct btrfs_trans_handle *trans,
4172 empty_cluster = 0; 4175 empty_cluster = 0;
4173 4176
4174 if (search_start == hint_byte) { 4177 if (search_start == hint_byte) {
4178ideal_cache:
4175 block_group = btrfs_lookup_block_group(root->fs_info, 4179 block_group = btrfs_lookup_block_group(root->fs_info,
4176 search_start); 4180 search_start);
4177 /* 4181 /*
4178 * we don't want to use the block group if it doesn't match our 4182 * we don't want to use the block group if it doesn't match our
4179 * allocation bits, or if its not cached. 4183 * allocation bits, or if its not cached.
4184 *
4185 * However if we are re-searching with an ideal block group
4186 * picked out then we don't care that the block group is cached.
4180 */ 4187 */
4181 if (block_group && block_group_bits(block_group, data) && 4188 if (block_group && block_group_bits(block_group, data) &&
4182 block_group_cache_done(block_group)) { 4189 (block_group->cached != BTRFS_CACHE_NO ||
4190 search_start == ideal_cache_offset)) {
4183 down_read(&space_info->groups_sem); 4191 down_read(&space_info->groups_sem);
4184 if (list_empty(&block_group->list) || 4192 if (list_empty(&block_group->list) ||
4185 block_group->ro) { 4193 block_group->ro) {
@@ -4191,13 +4199,13 @@ static noinline int find_free_extent(struct btrfs_trans_handle *trans,
4191 */ 4199 */
4192 btrfs_put_block_group(block_group); 4200 btrfs_put_block_group(block_group);
4193 up_read(&space_info->groups_sem); 4201 up_read(&space_info->groups_sem);
4194 } else 4202 } else {
4195 goto have_block_group; 4203 goto have_block_group;
4204 }
4196 } else if (block_group) { 4205 } else if (block_group) {
4197 btrfs_put_block_group(block_group); 4206 btrfs_put_block_group(block_group);
4198 } 4207 }
4199 } 4208 }
4200
4201search: 4209search:
4202 down_read(&space_info->groups_sem); 4210 down_read(&space_info->groups_sem);
4203 list_for_each_entry(block_group, &space_info->block_groups, list) { 4211 list_for_each_entry(block_group, &space_info->block_groups, list) {
@@ -4209,28 +4217,45 @@ search:
4209 4217
4210have_block_group: 4218have_block_group:
4211 if (unlikely(block_group->cached == BTRFS_CACHE_NO)) { 4219 if (unlikely(block_group->cached == BTRFS_CACHE_NO)) {
4220 u64 free_percent;
4221
4222 free_percent = btrfs_block_group_used(&block_group->item);
4223 free_percent *= 100;
4224 free_percent = div64_u64(free_percent,
4225 block_group->key.offset);
4226 free_percent = 100 - free_percent;
4227 if (free_percent > ideal_cache_percent &&
4228 likely(!block_group->ro)) {
4229 ideal_cache_offset = block_group->key.objectid;
4230 ideal_cache_percent = free_percent;
4231 }
4232
4212 /* 4233 /*
4213 * we want to start caching kthreads, but not too many 4234 * We only want to start kthread caching if we are at
4214 * right off the bat so we don't overwhelm the system, 4235 * the point where we will wait for caching to make
4215 * so only start them if there are less than 2 and we're 4236 * progress, or if our ideal search is over and we've
4216 * in the initial allocation phase. 4237 * found somebody to start caching.
4217 */ 4238 */
4218 if (loop > LOOP_CACHING_NOWAIT || 4239 if (loop > LOOP_CACHING_NOWAIT ||
4219 atomic_read(&space_info->caching_threads) < 2) { 4240 (loop > LOOP_FIND_IDEAL &&
4241 atomic_read(&space_info->caching_threads) < 2)) {
4220 ret = cache_block_group(block_group); 4242 ret = cache_block_group(block_group);
4221 BUG_ON(ret); 4243 BUG_ON(ret);
4222 } 4244 }
4223 }
4224
4225 cached = block_group_cache_done(block_group);
4226 if (unlikely(!cached)) {
4227 found_uncached_bg = true; 4245 found_uncached_bg = true;
4228 4246
4229 /* if we only want cached bgs, loop */ 4247 /*
4230 if (loop == LOOP_CACHED_ONLY) 4248 * If loop is set for cached only, try the next block
4249 * group.
4250 */
4251 if (loop == LOOP_FIND_IDEAL)
4231 goto loop; 4252 goto loop;
4232 } 4253 }
4233 4254
4255 cached = block_group_cache_done(block_group);
4256 if (unlikely(!cached))
4257 found_uncached_bg = true;
4258
4234 if (unlikely(block_group->ro)) 4259 if (unlikely(block_group->ro))
4235 goto loop; 4260 goto loop;
4236 4261
@@ -4410,9 +4435,11 @@ loop:
4410 } 4435 }
4411 up_read(&space_info->groups_sem); 4436 up_read(&space_info->groups_sem);
4412 4437
4413 /* LOOP_CACHED_ONLY, only search fully cached block groups 4438 /* LOOP_FIND_IDEAL, only search caching/cached bg's, and don't wait for
4414 * LOOP_CACHING_NOWAIT, search partially cached block groups, but 4439 * for them to make caching progress. Also
4415 * dont wait foR them to finish caching 4440 * determine the best possible bg to cache
4441 * LOOP_CACHING_NOWAIT, search partially cached block groups, kicking
4442 * caching kthreads as we move along
4416 * LOOP_CACHING_WAIT, search everything, and wait if our bg is caching 4443 * LOOP_CACHING_WAIT, search everything, and wait if our bg is caching
4417 * LOOP_ALLOC_CHUNK, force a chunk allocation and try again 4444 * LOOP_ALLOC_CHUNK, force a chunk allocation and try again
4418 * LOOP_NO_EMPTY_SIZE, set empty_size and empty_cluster to 0 and try 4445 * LOOP_NO_EMPTY_SIZE, set empty_size and empty_cluster to 0 and try
@@ -4421,12 +4448,47 @@ loop:
4421 if (!ins->objectid && loop < LOOP_NO_EMPTY_SIZE && 4448 if (!ins->objectid && loop < LOOP_NO_EMPTY_SIZE &&
4422 (found_uncached_bg || empty_size || empty_cluster || 4449 (found_uncached_bg || empty_size || empty_cluster ||
4423 allowed_chunk_alloc)) { 4450 allowed_chunk_alloc)) {
4424 if (found_uncached_bg) { 4451 if (loop == LOOP_FIND_IDEAL && found_uncached_bg) {
4425 found_uncached_bg = false; 4452 found_uncached_bg = false;
4426 if (loop < LOOP_CACHING_WAIT) { 4453 loop++;
4427 loop++; 4454 if (!ideal_cache_percent &&
4455 atomic_read(&space_info->caching_threads))
4428 goto search; 4456 goto search;
4429 } 4457
4458 /*
4459 * 1 of the following 2 things have happened so far
4460 *
4461 * 1) We found an ideal block group for caching that
4462 * is mostly full and will cache quickly, so we might
4463 * as well wait for it.
4464 *
4465 * 2) We searched for cached only and we didn't find
4466 * anything, and we didn't start any caching kthreads
4467 * either, so chances are we will loop through and
4468 * start a couple caching kthreads, and then come back
4469 * around and just wait for them. This will be slower
4470 * because we will have 2 caching kthreads reading at
4471 * the same time when we could have just started one
4472 * and waited for it to get far enough to give us an
4473 * allocation, so go ahead and go to the wait caching
4474 * loop.
4475 */
4476 loop = LOOP_CACHING_WAIT;
4477 search_start = ideal_cache_offset;
4478 ideal_cache_percent = 0;
4479 goto ideal_cache;
4480 } else if (loop == LOOP_FIND_IDEAL) {
4481 /*
4482 * Didn't find a uncached bg, wait on anything we find
4483 * next.
4484 */
4485 loop = LOOP_CACHING_WAIT;
4486 goto search;
4487 }
4488
4489 if (loop < LOOP_CACHING_WAIT) {
4490 loop++;
4491 goto search;
4430 } 4492 }
4431 4493
4432 if (loop == LOOP_ALLOC_CHUNK) { 4494 if (loop == LOOP_ALLOC_CHUNK) {
@@ -4438,7 +4500,8 @@ loop:
4438 ret = do_chunk_alloc(trans, root, num_bytes + 4500 ret = do_chunk_alloc(trans, root, num_bytes +
4439 2 * 1024 * 1024, data, 1); 4501 2 * 1024 * 1024, data, 1);
4440 allowed_chunk_alloc = 0; 4502 allowed_chunk_alloc = 0;
4441 } else { 4503 done_chunk_alloc = 1;
4504 } else if (!done_chunk_alloc) {
4442 space_info->force_alloc = 1; 4505 space_info->force_alloc = 1;
4443 } 4506 }
4444 4507
diff --git a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c
index 2c726b7b9faa..ccbdcb54ec5d 100644
--- a/fs/btrfs/extent_map.c
+++ b/fs/btrfs/extent_map.c
@@ -208,7 +208,7 @@ int unpin_extent_cache(struct extent_map_tree *tree, u64 start, u64 len)
208 write_lock(&tree->lock); 208 write_lock(&tree->lock);
209 em = lookup_extent_mapping(tree, start, len); 209 em = lookup_extent_mapping(tree, start, len);
210 210
211 WARN_ON(em->start != start || !em); 211 WARN_ON(!em || em->start != start);
212 212
213 if (!em) 213 if (!em)
214 goto out; 214 goto out;
diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index 5c2caad76212..cb2849f03251 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -1296,7 +1296,7 @@ again:
1296 window_start = entry->offset; 1296 window_start = entry->offset;
1297 window_free = entry->bytes; 1297 window_free = entry->bytes;
1298 last = entry; 1298 last = entry;
1299 max_extent = 0; 1299 max_extent = entry->bytes;
1300 } else { 1300 } else {
1301 last = next; 1301 last = next;
1302 window_free += next->bytes; 1302 window_free += next->bytes;
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index dae12dc7e159..b3ad168a0bfc 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -538,7 +538,7 @@ static noinline int submit_compressed_extents(struct inode *inode,
538 struct btrfs_root *root = BTRFS_I(inode)->root; 538 struct btrfs_root *root = BTRFS_I(inode)->root;
539 struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree; 539 struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree;
540 struct extent_io_tree *io_tree; 540 struct extent_io_tree *io_tree;
541 int ret; 541 int ret = 0;
542 542
543 if (list_empty(&async_cow->extents)) 543 if (list_empty(&async_cow->extents))
544 return 0; 544 return 0;
@@ -552,6 +552,7 @@ static noinline int submit_compressed_extents(struct inode *inode,
552 552
553 io_tree = &BTRFS_I(inode)->io_tree; 553 io_tree = &BTRFS_I(inode)->io_tree;
554 554
555retry:
555 /* did the compression code fall back to uncompressed IO? */ 556 /* did the compression code fall back to uncompressed IO? */
556 if (!async_extent->pages) { 557 if (!async_extent->pages) {
557 int page_started = 0; 558 int page_started = 0;
@@ -562,11 +563,11 @@ static noinline int submit_compressed_extents(struct inode *inode,
562 async_extent->ram_size - 1, GFP_NOFS); 563 async_extent->ram_size - 1, GFP_NOFS);
563 564
564 /* allocate blocks */ 565 /* allocate blocks */
565 cow_file_range(inode, async_cow->locked_page, 566 ret = cow_file_range(inode, async_cow->locked_page,
566 async_extent->start, 567 async_extent->start,
567 async_extent->start + 568 async_extent->start +
568 async_extent->ram_size - 1, 569 async_extent->ram_size - 1,
569 &page_started, &nr_written, 0); 570 &page_started, &nr_written, 0);
570 571
571 /* 572 /*
572 * if page_started, cow_file_range inserted an 573 * if page_started, cow_file_range inserted an
@@ -574,7 +575,7 @@ static noinline int submit_compressed_extents(struct inode *inode,
574 * and IO for us. Otherwise, we need to submit 575 * and IO for us. Otherwise, we need to submit
575 * all those pages down to the drive. 576 * all those pages down to the drive.
576 */ 577 */
577 if (!page_started) 578 if (!page_started && !ret)
578 extent_write_locked_range(io_tree, 579 extent_write_locked_range(io_tree,
579 inode, async_extent->start, 580 inode, async_extent->start,
580 async_extent->start + 581 async_extent->start +
@@ -602,7 +603,21 @@ static noinline int submit_compressed_extents(struct inode *inode,
602 async_extent->compressed_size, 603 async_extent->compressed_size,
603 0, alloc_hint, 604 0, alloc_hint,
604 (u64)-1, &ins, 1); 605 (u64)-1, &ins, 1);
605 BUG_ON(ret); 606 if (ret) {
607 int i;
608 for (i = 0; i < async_extent->nr_pages; i++) {
609 WARN_ON(async_extent->pages[i]->mapping);
610 page_cache_release(async_extent->pages[i]);
611 }
612 kfree(async_extent->pages);
613 async_extent->nr_pages = 0;
614 async_extent->pages = NULL;
615 unlock_extent(io_tree, async_extent->start,
616 async_extent->start +
617 async_extent->ram_size - 1, GFP_NOFS);
618 goto retry;
619 }
620
606 em = alloc_extent_map(GFP_NOFS); 621 em = alloc_extent_map(GFP_NOFS);
607 em->start = async_extent->start; 622 em->start = async_extent->start;
608 em->len = async_extent->ram_size; 623 em->len = async_extent->ram_size;
@@ -743,8 +758,22 @@ static noinline int cow_file_range(struct inode *inode,
743 em = search_extent_mapping(&BTRFS_I(inode)->extent_tree, 758 em = search_extent_mapping(&BTRFS_I(inode)->extent_tree,
744 start, num_bytes); 759 start, num_bytes);
745 if (em) { 760 if (em) {
746 alloc_hint = em->block_start; 761 /*
747 free_extent_map(em); 762 * if block start isn't an actual block number then find the
763 * first block in this inode and use that as a hint. If that
764 * block is also bogus then just don't worry about it.
765 */
766 if (em->block_start >= EXTENT_MAP_LAST_BYTE) {
767 free_extent_map(em);
768 em = search_extent_mapping(em_tree, 0, 0);
769 if (em && em->block_start < EXTENT_MAP_LAST_BYTE)
770 alloc_hint = em->block_start;
771 if (em)
772 free_extent_map(em);
773 } else {
774 alloc_hint = em->block_start;
775 free_extent_map(em);
776 }
748 } 777 }
749 read_unlock(&BTRFS_I(inode)->extent_tree.lock); 778 read_unlock(&BTRFS_I(inode)->extent_tree.lock);
750 btrfs_drop_extent_cache(inode, start, start + num_bytes - 1, 0); 779 btrfs_drop_extent_cache(inode, start, start + num_bytes - 1, 0);
@@ -2474,7 +2503,19 @@ static int btrfs_unlink(struct inode *dir, struct dentry *dentry)
2474 2503
2475 root = BTRFS_I(dir)->root; 2504 root = BTRFS_I(dir)->root;
2476 2505
2506 /*
2507 * 5 items for unlink inode
2508 * 1 for orphan
2509 */
2510 ret = btrfs_reserve_metadata_space(root, 6);
2511 if (ret)
2512 return ret;
2513
2477 trans = btrfs_start_transaction(root, 1); 2514 trans = btrfs_start_transaction(root, 1);
2515 if (IS_ERR(trans)) {
2516 btrfs_unreserve_metadata_space(root, 6);
2517 return PTR_ERR(trans);
2518 }
2478 2519
2479 btrfs_set_trans_block_group(trans, dir); 2520 btrfs_set_trans_block_group(trans, dir);
2480 2521
@@ -2489,6 +2530,7 @@ static int btrfs_unlink(struct inode *dir, struct dentry *dentry)
2489 nr = trans->blocks_used; 2530 nr = trans->blocks_used;
2490 2531
2491 btrfs_end_transaction_throttle(trans, root); 2532 btrfs_end_transaction_throttle(trans, root);
2533 btrfs_unreserve_metadata_space(root, 6);
2492 btrfs_btree_balance_dirty(root, nr); 2534 btrfs_btree_balance_dirty(root, nr);
2493 return ret; 2535 return ret;
2494} 2536}
@@ -2569,7 +2611,16 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry)
2569 inode->i_ino == BTRFS_FIRST_FREE_OBJECTID) 2611 inode->i_ino == BTRFS_FIRST_FREE_OBJECTID)
2570 return -ENOTEMPTY; 2612 return -ENOTEMPTY;
2571 2613
2614 ret = btrfs_reserve_metadata_space(root, 5);
2615 if (ret)
2616 return ret;
2617
2572 trans = btrfs_start_transaction(root, 1); 2618 trans = btrfs_start_transaction(root, 1);
2619 if (IS_ERR(trans)) {
2620 btrfs_unreserve_metadata_space(root, 5);
2621 return PTR_ERR(trans);
2622 }
2623
2573 btrfs_set_trans_block_group(trans, dir); 2624 btrfs_set_trans_block_group(trans, dir);
2574 2625
2575 if (unlikely(inode->i_ino == BTRFS_EMPTY_SUBVOL_DIR_OBJECTID)) { 2626 if (unlikely(inode->i_ino == BTRFS_EMPTY_SUBVOL_DIR_OBJECTID)) {
@@ -2592,6 +2643,7 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry)
2592out: 2643out:
2593 nr = trans->blocks_used; 2644 nr = trans->blocks_used;
2594 ret = btrfs_end_transaction_throttle(trans, root); 2645 ret = btrfs_end_transaction_throttle(trans, root);
2646 btrfs_unreserve_metadata_space(root, 5);
2595 btrfs_btree_balance_dirty(root, nr); 2647 btrfs_btree_balance_dirty(root, nr);
2596 2648
2597 if (ret && !err) 2649 if (ret && !err)
@@ -5128,6 +5180,7 @@ struct inode *btrfs_alloc_inode(struct super_block *sb)
5128 ei->logged_trans = 0; 5180 ei->logged_trans = 0;
5129 ei->outstanding_extents = 0; 5181 ei->outstanding_extents = 0;
5130 ei->reserved_extents = 0; 5182 ei->reserved_extents = 0;
5183 ei->root = NULL;
5131 spin_lock_init(&ei->accounting_lock); 5184 spin_lock_init(&ei->accounting_lock);
5132 btrfs_ordered_inode_tree_init(&ei->ordered_tree); 5185 btrfs_ordered_inode_tree_init(&ei->ordered_tree);
5133 INIT_LIST_HEAD(&ei->i_orphan); 5186 INIT_LIST_HEAD(&ei->i_orphan);
@@ -5144,6 +5197,14 @@ void btrfs_destroy_inode(struct inode *inode)
5144 WARN_ON(inode->i_data.nrpages); 5197 WARN_ON(inode->i_data.nrpages);
5145 5198
5146 /* 5199 /*
5200 * This can happen where we create an inode, but somebody else also
5201 * created the same inode and we need to destroy the one we already
5202 * created.
5203 */
5204 if (!root)
5205 goto free;
5206
5207 /*
5147 * Make sure we're properly removed from the ordered operation 5208 * Make sure we're properly removed from the ordered operation
5148 * lists. 5209 * lists.
5149 */ 5210 */
@@ -5178,6 +5239,7 @@ void btrfs_destroy_inode(struct inode *inode)
5178 } 5239 }
5179 inode_tree_del(inode); 5240 inode_tree_del(inode);
5180 btrfs_drop_extent_cache(inode, 0, (u64)-1, 0); 5241 btrfs_drop_extent_cache(inode, 0, (u64)-1, 0);
5242free:
5181 kmem_cache_free(btrfs_inode_cachep, BTRFS_I(inode)); 5243 kmem_cache_free(btrfs_inode_cachep, BTRFS_I(inode));
5182} 5244}
5183 5245
@@ -5283,11 +5345,14 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry,
5283 return -ENOTEMPTY; 5345 return -ENOTEMPTY;
5284 5346
5285 /* 5347 /*
5286 * 2 items for dir items 5348 * We want to reserve the absolute worst case amount of items. So if
5287 * 1 item for orphan entry 5349 * both inodes are subvols and we need to unlink them then that would
5288 * 1 item for ref 5350 * require 4 item modifications, but if they are both normal inodes it
5351 * would require 5 item modifications, so we'll assume their normal
5352 * inodes. So 5 * 2 is 10, plus 1 for the new link, so 11 total items
5353 * should cover the worst case number of items we'll modify.
5289 */ 5354 */
5290 ret = btrfs_reserve_metadata_space(root, 4); 5355 ret = btrfs_reserve_metadata_space(root, 11);
5291 if (ret) 5356 if (ret)
5292 return ret; 5357 return ret;
5293 5358
@@ -5403,7 +5468,7 @@ out_fail:
5403 if (old_inode->i_ino == BTRFS_FIRST_FREE_OBJECTID) 5468 if (old_inode->i_ino == BTRFS_FIRST_FREE_OBJECTID)
5404 up_read(&root->fs_info->subvol_sem); 5469 up_read(&root->fs_info->subvol_sem);
5405 5470
5406 btrfs_unreserve_metadata_space(root, 4); 5471 btrfs_unreserve_metadata_space(root, 11);
5407 return ret; 5472 return ret;
5408} 5473}
5409 5474
diff --git a/fs/btrfs/root-tree.c b/fs/btrfs/root-tree.c
index 9351428f30e2..67fa2d29d663 100644
--- a/fs/btrfs/root-tree.c
+++ b/fs/btrfs/root-tree.c
@@ -159,7 +159,6 @@ int btrfs_update_root(struct btrfs_trans_handle *trans, struct btrfs_root
159 write_extent_buffer(l, item, ptr, sizeof(*item)); 159 write_extent_buffer(l, item, ptr, sizeof(*item));
160 btrfs_mark_buffer_dirty(path->nodes[0]); 160 btrfs_mark_buffer_dirty(path->nodes[0]);
161out: 161out:
162 btrfs_release_path(root, path);
163 btrfs_free_path(path); 162 btrfs_free_path(path);
164 return ret; 163 return ret;
165} 164}
@@ -332,7 +331,6 @@ int btrfs_del_root(struct btrfs_trans_handle *trans, struct btrfs_root *root,
332 BUG_ON(refs != 0); 331 BUG_ON(refs != 0);
333 ret = btrfs_del_item(trans, root, path); 332 ret = btrfs_del_item(trans, root, path);
334out: 333out:
335 btrfs_release_path(root, path);
336 btrfs_free_path(path); 334 btrfs_free_path(path);
337 return ret; 335 return ret;
338} 336}
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index bca82a4ca8e6..c207e8c32c9b 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -163,8 +163,14 @@ static void wait_current_trans(struct btrfs_root *root)
163 } 163 }
164} 164}
165 165
166enum btrfs_trans_type {
167 TRANS_START,
168 TRANS_JOIN,
169 TRANS_USERSPACE,
170};
171
166static struct btrfs_trans_handle *start_transaction(struct btrfs_root *root, 172static struct btrfs_trans_handle *start_transaction(struct btrfs_root *root,
167 int num_blocks, int wait) 173 int num_blocks, int type)
168{ 174{
169 struct btrfs_trans_handle *h = 175 struct btrfs_trans_handle *h =
170 kmem_cache_alloc(btrfs_trans_handle_cachep, GFP_NOFS); 176 kmem_cache_alloc(btrfs_trans_handle_cachep, GFP_NOFS);
@@ -172,7 +178,8 @@ static struct btrfs_trans_handle *start_transaction(struct btrfs_root *root,
172 178
173 mutex_lock(&root->fs_info->trans_mutex); 179 mutex_lock(&root->fs_info->trans_mutex);
174 if (!root->fs_info->log_root_recovering && 180 if (!root->fs_info->log_root_recovering &&
175 ((wait == 1 && !root->fs_info->open_ioctl_trans) || wait == 2)) 181 ((type == TRANS_START && !root->fs_info->open_ioctl_trans) ||
182 type == TRANS_USERSPACE))
176 wait_current_trans(root); 183 wait_current_trans(root);
177 ret = join_transaction(root); 184 ret = join_transaction(root);
178 BUG_ON(ret); 185 BUG_ON(ret);
@@ -186,7 +193,7 @@ static struct btrfs_trans_handle *start_transaction(struct btrfs_root *root,
186 h->alloc_exclude_start = 0; 193 h->alloc_exclude_start = 0;
187 h->delayed_ref_updates = 0; 194 h->delayed_ref_updates = 0;
188 195
189 if (!current->journal_info) 196 if (!current->journal_info && type != TRANS_USERSPACE)
190 current->journal_info = h; 197 current->journal_info = h;
191 198
192 root->fs_info->running_transaction->use_count++; 199 root->fs_info->running_transaction->use_count++;
@@ -198,18 +205,18 @@ static struct btrfs_trans_handle *start_transaction(struct btrfs_root *root,
198struct btrfs_trans_handle *btrfs_start_transaction(struct btrfs_root *root, 205struct btrfs_trans_handle *btrfs_start_transaction(struct btrfs_root *root,
199 int num_blocks) 206 int num_blocks)
200{ 207{
201 return start_transaction(root, num_blocks, 1); 208 return start_transaction(root, num_blocks, TRANS_START);
202} 209}
203struct btrfs_trans_handle *btrfs_join_transaction(struct btrfs_root *root, 210struct btrfs_trans_handle *btrfs_join_transaction(struct btrfs_root *root,
204 int num_blocks) 211 int num_blocks)
205{ 212{
206 return start_transaction(root, num_blocks, 0); 213 return start_transaction(root, num_blocks, TRANS_JOIN);
207} 214}
208 215
209struct btrfs_trans_handle *btrfs_start_ioctl_transaction(struct btrfs_root *r, 216struct btrfs_trans_handle *btrfs_start_ioctl_transaction(struct btrfs_root *r,
210 int num_blocks) 217 int num_blocks)
211{ 218{
212 return start_transaction(r, num_blocks, 2); 219 return start_transaction(r, num_blocks, TRANS_USERSPACE);
213} 220}
214 221
215/* wait for a transaction commit to be fully complete */ 222/* wait for a transaction commit to be fully complete */
diff --git a/fs/cachefiles/interface.c b/fs/cachefiles/interface.c
index 431accd475a7..27089311fbea 100644
--- a/fs/cachefiles/interface.c
+++ b/fs/cachefiles/interface.c
@@ -114,8 +114,9 @@ nomem_lookup_data:
114 114
115/* 115/*
116 * attempt to look up the nominated node in this cache 116 * attempt to look up the nominated node in this cache
117 * - return -ETIMEDOUT to be scheduled again
117 */ 118 */
118static void cachefiles_lookup_object(struct fscache_object *_object) 119static int cachefiles_lookup_object(struct fscache_object *_object)
119{ 120{
120 struct cachefiles_lookup_data *lookup_data; 121 struct cachefiles_lookup_data *lookup_data;
121 struct cachefiles_object *parent, *object; 122 struct cachefiles_object *parent, *object;
@@ -145,13 +146,15 @@ static void cachefiles_lookup_object(struct fscache_object *_object)
145 object->fscache.cookie->def->type != FSCACHE_COOKIE_TYPE_INDEX) 146 object->fscache.cookie->def->type != FSCACHE_COOKIE_TYPE_INDEX)
146 cachefiles_attr_changed(&object->fscache); 147 cachefiles_attr_changed(&object->fscache);
147 148
148 if (ret < 0) { 149 if (ret < 0 && ret != -ETIMEDOUT) {
149 printk(KERN_WARNING "CacheFiles: Lookup failed error %d\n", 150 if (ret != -ENOBUFS)
150 ret); 151 printk(KERN_WARNING
152 "CacheFiles: Lookup failed error %d\n", ret);
151 fscache_object_lookup_error(&object->fscache); 153 fscache_object_lookup_error(&object->fscache);
152 } 154 }
153 155
154 _leave(" [%d]", ret); 156 _leave(" [%d]", ret);
157 return ret;
155} 158}
156 159
157/* 160/*
@@ -331,6 +334,7 @@ static void cachefiles_put_object(struct fscache_object *_object)
331 } 334 }
332 335
333 cache = object->fscache.cache; 336 cache = object->fscache.cache;
337 fscache_object_destroy(&object->fscache);
334 kmem_cache_free(cachefiles_object_jar, object); 338 kmem_cache_free(cachefiles_object_jar, object);
335 fscache_object_destroyed(cache); 339 fscache_object_destroyed(cache);
336 } 340 }
@@ -403,12 +407,26 @@ static int cachefiles_attr_changed(struct fscache_object *_object)
403 if (oi_size == ni_size) 407 if (oi_size == ni_size)
404 return 0; 408 return 0;
405 409
406 newattrs.ia_size = ni_size;
407 newattrs.ia_valid = ATTR_SIZE;
408
409 cachefiles_begin_secure(cache, &saved_cred); 410 cachefiles_begin_secure(cache, &saved_cred);
410 mutex_lock(&object->backer->d_inode->i_mutex); 411 mutex_lock(&object->backer->d_inode->i_mutex);
412
413 /* if there's an extension to a partial page at the end of the backing
414 * file, we need to discard the partial page so that we pick up new
415 * data after it */
416 if (oi_size & ~PAGE_MASK && ni_size > oi_size) {
417 _debug("discard tail %llx", oi_size);
418 newattrs.ia_valid = ATTR_SIZE;
419 newattrs.ia_size = oi_size & PAGE_MASK;
420 ret = notify_change(object->backer, &newattrs);
421 if (ret < 0)
422 goto truncate_failed;
423 }
424
425 newattrs.ia_valid = ATTR_SIZE;
426 newattrs.ia_size = ni_size;
411 ret = notify_change(object->backer, &newattrs); 427 ret = notify_change(object->backer, &newattrs);
428
429truncate_failed:
412 mutex_unlock(&object->backer->d_inode->i_mutex); 430 mutex_unlock(&object->backer->d_inode->i_mutex);
413 cachefiles_end_secure(cache, saved_cred); 431 cachefiles_end_secure(cache, saved_cred);
414 432
diff --git a/fs/cachefiles/namei.c b/fs/cachefiles/namei.c
index 4ce818ae39ea..14ac4806e291 100644
--- a/fs/cachefiles/namei.c
+++ b/fs/cachefiles/namei.c
@@ -21,17 +21,81 @@
21#include <linux/security.h> 21#include <linux/security.h>
22#include "internal.h" 22#include "internal.h"
23 23
24static int cachefiles_wait_bit(void *flags) 24#define CACHEFILES_KEYBUF_SIZE 512
25
26/*
27 * dump debugging info about an object
28 */
29static noinline
30void __cachefiles_printk_object(struct cachefiles_object *object,
31 const char *prefix,
32 u8 *keybuf)
25{ 33{
26 schedule(); 34 struct fscache_cookie *cookie;
27 return 0; 35 unsigned keylen, loop;
36
37 printk(KERN_ERR "%sobject: OBJ%x\n",
38 prefix, object->fscache.debug_id);
39 printk(KERN_ERR "%sobjstate=%s fl=%lx swfl=%lx ev=%lx[%lx]\n",
40 prefix, fscache_object_states[object->fscache.state],
41 object->fscache.flags, object->fscache.work.flags,
42 object->fscache.events,
43 object->fscache.event_mask & FSCACHE_OBJECT_EVENTS_MASK);
44 printk(KERN_ERR "%sops=%u inp=%u exc=%u\n",
45 prefix, object->fscache.n_ops, object->fscache.n_in_progress,
46 object->fscache.n_exclusive);
47 printk(KERN_ERR "%sparent=%p\n",
48 prefix, object->fscache.parent);
49
50 spin_lock(&object->fscache.lock);
51 cookie = object->fscache.cookie;
52 if (cookie) {
53 printk(KERN_ERR "%scookie=%p [pr=%p nd=%p fl=%lx]\n",
54 prefix,
55 object->fscache.cookie,
56 object->fscache.cookie->parent,
57 object->fscache.cookie->netfs_data,
58 object->fscache.cookie->flags);
59 if (keybuf)
60 keylen = cookie->def->get_key(cookie->netfs_data, keybuf,
61 CACHEFILES_KEYBUF_SIZE);
62 else
63 keylen = 0;
64 } else {
65 printk(KERN_ERR "%scookie=NULL\n", prefix);
66 keylen = 0;
67 }
68 spin_unlock(&object->fscache.lock);
69
70 if (keylen) {
71 printk(KERN_ERR "%skey=[%u] '", prefix, keylen);
72 for (loop = 0; loop < keylen; loop++)
73 printk("%02x", keybuf[loop]);
74 printk("'\n");
75 }
76}
77
78/*
79 * dump debugging info about a pair of objects
80 */
81static noinline void cachefiles_printk_object(struct cachefiles_object *object,
82 struct cachefiles_object *xobject)
83{
84 u8 *keybuf;
85
86 keybuf = kmalloc(CACHEFILES_KEYBUF_SIZE, GFP_NOIO);
87 if (object)
88 __cachefiles_printk_object(object, "", keybuf);
89 if (xobject)
90 __cachefiles_printk_object(xobject, "x", keybuf);
91 kfree(keybuf);
28} 92}
29 93
30/* 94/*
31 * record the fact that an object is now active 95 * record the fact that an object is now active
32 */ 96 */
33static void cachefiles_mark_object_active(struct cachefiles_cache *cache, 97static int cachefiles_mark_object_active(struct cachefiles_cache *cache,
34 struct cachefiles_object *object) 98 struct cachefiles_object *object)
35{ 99{
36 struct cachefiles_object *xobject; 100 struct cachefiles_object *xobject;
37 struct rb_node **_p, *_parent = NULL; 101 struct rb_node **_p, *_parent = NULL;
@@ -42,8 +106,11 @@ static void cachefiles_mark_object_active(struct cachefiles_cache *cache,
42try_again: 106try_again:
43 write_lock(&cache->active_lock); 107 write_lock(&cache->active_lock);
44 108
45 if (test_and_set_bit(CACHEFILES_OBJECT_ACTIVE, &object->flags)) 109 if (test_and_set_bit(CACHEFILES_OBJECT_ACTIVE, &object->flags)) {
110 printk(KERN_ERR "CacheFiles: Error: Object already active\n");
111 cachefiles_printk_object(object, NULL);
46 BUG(); 112 BUG();
113 }
47 114
48 dentry = object->dentry; 115 dentry = object->dentry;
49 _p = &cache->active_nodes.rb_node; 116 _p = &cache->active_nodes.rb_node;
@@ -66,8 +133,8 @@ try_again:
66 rb_insert_color(&object->active_node, &cache->active_nodes); 133 rb_insert_color(&object->active_node, &cache->active_nodes);
67 134
68 write_unlock(&cache->active_lock); 135 write_unlock(&cache->active_lock);
69 _leave(""); 136 _leave(" = 0");
70 return; 137 return 0;
71 138
72 /* an old object from a previous incarnation is hogging the slot - we 139 /* an old object from a previous incarnation is hogging the slot - we
73 * need to wait for it to be destroyed */ 140 * need to wait for it to be destroyed */
@@ -76,44 +143,70 @@ wait_for_old_object:
76 printk(KERN_ERR "\n"); 143 printk(KERN_ERR "\n");
77 printk(KERN_ERR "CacheFiles: Error:" 144 printk(KERN_ERR "CacheFiles: Error:"
78 " Unexpected object collision\n"); 145 " Unexpected object collision\n");
79 printk(KERN_ERR "xobject: OBJ%x\n", 146 cachefiles_printk_object(object, xobject);
80 xobject->fscache.debug_id);
81 printk(KERN_ERR "xobjstate=%s\n",
82 fscache_object_states[xobject->fscache.state]);
83 printk(KERN_ERR "xobjflags=%lx\n", xobject->fscache.flags);
84 printk(KERN_ERR "xobjevent=%lx [%lx]\n",
85 xobject->fscache.events, xobject->fscache.event_mask);
86 printk(KERN_ERR "xops=%u inp=%u exc=%u\n",
87 xobject->fscache.n_ops, xobject->fscache.n_in_progress,
88 xobject->fscache.n_exclusive);
89 printk(KERN_ERR "xcookie=%p [pr=%p nd=%p fl=%lx]\n",
90 xobject->fscache.cookie,
91 xobject->fscache.cookie->parent,
92 xobject->fscache.cookie->netfs_data,
93 xobject->fscache.cookie->flags);
94 printk(KERN_ERR "xparent=%p\n",
95 xobject->fscache.parent);
96 printk(KERN_ERR "object: OBJ%x\n",
97 object->fscache.debug_id);
98 printk(KERN_ERR "cookie=%p [pr=%p nd=%p fl=%lx]\n",
99 object->fscache.cookie,
100 object->fscache.cookie->parent,
101 object->fscache.cookie->netfs_data,
102 object->fscache.cookie->flags);
103 printk(KERN_ERR "parent=%p\n",
104 object->fscache.parent);
105 BUG(); 147 BUG();
106 } 148 }
107 atomic_inc(&xobject->usage); 149 atomic_inc(&xobject->usage);
108 write_unlock(&cache->active_lock); 150 write_unlock(&cache->active_lock);
109 151
110 _debug(">>> wait"); 152 if (test_bit(CACHEFILES_OBJECT_ACTIVE, &xobject->flags)) {
111 wait_on_bit(&xobject->flags, CACHEFILES_OBJECT_ACTIVE, 153 wait_queue_head_t *wq;
112 cachefiles_wait_bit, TASK_UNINTERRUPTIBLE); 154
113 _debug("<<< waited"); 155 signed long timeout = 60 * HZ;
156 wait_queue_t wait;
157 bool requeue;
158
159 /* if the object we're waiting for is queued for processing,
160 * then just put ourselves on the queue behind it */
161 if (slow_work_is_queued(&xobject->fscache.work)) {
162 _debug("queue OBJ%x behind OBJ%x immediately",
163 object->fscache.debug_id,
164 xobject->fscache.debug_id);
165 goto requeue;
166 }
167
168 /* otherwise we sleep until either the object we're waiting for
169 * is done, or the slow-work facility wants the thread back to
170 * do other work */
171 wq = bit_waitqueue(&xobject->flags, CACHEFILES_OBJECT_ACTIVE);
172 init_wait(&wait);
173 requeue = false;
174 do {
175 prepare_to_wait(wq, &wait, TASK_UNINTERRUPTIBLE);
176 if (!test_bit(CACHEFILES_OBJECT_ACTIVE, &xobject->flags))
177 break;
178 requeue = slow_work_sleep_till_thread_needed(
179 &object->fscache.work, &timeout);
180 } while (timeout > 0 && !requeue);
181 finish_wait(wq, &wait);
182
183 if (requeue &&
184 test_bit(CACHEFILES_OBJECT_ACTIVE, &xobject->flags)) {
185 _debug("queue OBJ%x behind OBJ%x after wait",
186 object->fscache.debug_id,
187 xobject->fscache.debug_id);
188 goto requeue;
189 }
190
191 if (timeout <= 0) {
192 printk(KERN_ERR "\n");
193 printk(KERN_ERR "CacheFiles: Error: Overlong"
194 " wait for old active object to go away\n");
195 cachefiles_printk_object(object, xobject);
196 goto requeue;
197 }
198 }
199
200 ASSERT(!test_bit(CACHEFILES_OBJECT_ACTIVE, &xobject->flags));
114 201
115 cache->cache.ops->put_object(&xobject->fscache); 202 cache->cache.ops->put_object(&xobject->fscache);
116 goto try_again; 203 goto try_again;
204
205requeue:
206 clear_bit(CACHEFILES_OBJECT_ACTIVE, &object->flags);
207 cache->cache.ops->put_object(&xobject->fscache);
208 _leave(" = -ETIMEDOUT");
209 return -ETIMEDOUT;
117} 210}
118 211
119/* 212/*
@@ -254,7 +347,7 @@ int cachefiles_delete_object(struct cachefiles_cache *cache,
254 347
255 dir = dget_parent(object->dentry); 348 dir = dget_parent(object->dentry);
256 349
257 mutex_lock(&dir->d_inode->i_mutex); 350 mutex_lock_nested(&dir->d_inode->i_mutex, I_MUTEX_PARENT);
258 ret = cachefiles_bury_object(cache, dir, object->dentry); 351 ret = cachefiles_bury_object(cache, dir, object->dentry);
259 352
260 dput(dir); 353 dput(dir);
@@ -307,7 +400,7 @@ lookup_again:
307 /* search the current directory for the element name */ 400 /* search the current directory for the element name */
308 _debug("lookup '%s'", name); 401 _debug("lookup '%s'", name);
309 402
310 mutex_lock(&dir->d_inode->i_mutex); 403 mutex_lock_nested(&dir->d_inode->i_mutex, I_MUTEX_PARENT);
311 404
312 start = jiffies; 405 start = jiffies;
313 next = lookup_one_len(name, dir, nlen); 406 next = lookup_one_len(name, dir, nlen);
@@ -418,12 +511,15 @@ lookup_again:
418 } 511 }
419 512
420 /* note that we're now using this object */ 513 /* note that we're now using this object */
421 cachefiles_mark_object_active(cache, object); 514 ret = cachefiles_mark_object_active(cache, object);
422 515
423 mutex_unlock(&dir->d_inode->i_mutex); 516 mutex_unlock(&dir->d_inode->i_mutex);
424 dput(dir); 517 dput(dir);
425 dir = NULL; 518 dir = NULL;
426 519
520 if (ret == -ETIMEDOUT)
521 goto mark_active_timed_out;
522
427 _debug("=== OBTAINED_OBJECT ==="); 523 _debug("=== OBTAINED_OBJECT ===");
428 524
429 if (object->new) { 525 if (object->new) {
@@ -467,6 +563,10 @@ create_error:
467 cachefiles_io_error(cache, "Create/mkdir failed"); 563 cachefiles_io_error(cache, "Create/mkdir failed");
468 goto error; 564 goto error;
469 565
566mark_active_timed_out:
567 _debug("mark active timed out");
568 goto release_dentry;
569
470check_error: 570check_error:
471 _debug("check error %d", ret); 571 _debug("check error %d", ret);
472 write_lock(&cache->active_lock); 572 write_lock(&cache->active_lock);
@@ -474,7 +574,7 @@ check_error:
474 clear_bit(CACHEFILES_OBJECT_ACTIVE, &object->flags); 574 clear_bit(CACHEFILES_OBJECT_ACTIVE, &object->flags);
475 wake_up_bit(&object->flags, CACHEFILES_OBJECT_ACTIVE); 575 wake_up_bit(&object->flags, CACHEFILES_OBJECT_ACTIVE);
476 write_unlock(&cache->active_lock); 576 write_unlock(&cache->active_lock);
477 577release_dentry:
478 dput(object->dentry); 578 dput(object->dentry);
479 object->dentry = NULL; 579 object->dentry = NULL;
480 goto error_out; 580 goto error_out;
@@ -495,9 +595,6 @@ error:
495error_out2: 595error_out2:
496 dput(dir); 596 dput(dir);
497error_out: 597error_out:
498 if (ret == -ENOSPC)
499 ret = -ENOBUFS;
500
501 _leave(" = error %d", -ret); 598 _leave(" = error %d", -ret);
502 return ret; 599 return ret;
503} 600}
diff --git a/fs/cachefiles/rdwr.c b/fs/cachefiles/rdwr.c
index a69787e7dd96..a6c8c6fe8df9 100644
--- a/fs/cachefiles/rdwr.c
+++ b/fs/cachefiles/rdwr.c
@@ -11,6 +11,7 @@
11 11
12#include <linux/mount.h> 12#include <linux/mount.h>
13#include <linux/file.h> 13#include <linux/file.h>
14#include <linux/ima.h>
14#include "internal.h" 15#include "internal.h"
15 16
16/* 17/*
@@ -40,8 +41,10 @@ static int cachefiles_read_waiter(wait_queue_t *wait, unsigned mode,
40 41
41 _debug("--- monitor %p %lx ---", page, page->flags); 42 _debug("--- monitor %p %lx ---", page, page->flags);
42 43
43 if (!PageUptodate(page) && !PageError(page)) 44 if (!PageUptodate(page) && !PageError(page)) {
44 dump_stack(); 45 /* unlocked, not uptodate and not erronous? */
46 _debug("page probably truncated");
47 }
45 48
46 /* remove from the waitqueue */ 49 /* remove from the waitqueue */
47 list_del(&wait->task_list); 50 list_del(&wait->task_list);
@@ -61,6 +64,84 @@ static int cachefiles_read_waiter(wait_queue_t *wait, unsigned mode,
61} 64}
62 65
63/* 66/*
67 * handle a probably truncated page
68 * - check to see if the page is still relevant and reissue the read if
69 * possible
70 * - return -EIO on error, -ENODATA if the page is gone, -EINPROGRESS if we
71 * must wait again and 0 if successful
72 */
73static int cachefiles_read_reissue(struct cachefiles_object *object,
74 struct cachefiles_one_read *monitor)
75{
76 struct address_space *bmapping = object->backer->d_inode->i_mapping;
77 struct page *backpage = monitor->back_page, *backpage2;
78 int ret;
79
80 kenter("{ino=%lx},{%lx,%lx}",
81 object->backer->d_inode->i_ino,
82 backpage->index, backpage->flags);
83
84 /* skip if the page was truncated away completely */
85 if (backpage->mapping != bmapping) {
86 kleave(" = -ENODATA [mapping]");
87 return -ENODATA;
88 }
89
90 backpage2 = find_get_page(bmapping, backpage->index);
91 if (!backpage2) {
92 kleave(" = -ENODATA [gone]");
93 return -ENODATA;
94 }
95
96 if (backpage != backpage2) {
97 put_page(backpage2);
98 kleave(" = -ENODATA [different]");
99 return -ENODATA;
100 }
101
102 /* the page is still there and we already have a ref on it, so we don't
103 * need a second */
104 put_page(backpage2);
105
106 INIT_LIST_HEAD(&monitor->op_link);
107 add_page_wait_queue(backpage, &monitor->monitor);
108
109 if (trylock_page(backpage)) {
110 ret = -EIO;
111 if (PageError(backpage))
112 goto unlock_discard;
113 ret = 0;
114 if (PageUptodate(backpage))
115 goto unlock_discard;
116
117 kdebug("reissue read");
118 ret = bmapping->a_ops->readpage(NULL, backpage);
119 if (ret < 0)
120 goto unlock_discard;
121 }
122
123 /* but the page may have been read before the monitor was installed, so
124 * the monitor may miss the event - so we have to ensure that we do get
125 * one in such a case */
126 if (trylock_page(backpage)) {
127 _debug("jumpstart %p {%lx}", backpage, backpage->flags);
128 unlock_page(backpage);
129 }
130
131 /* it'll reappear on the todo list */
132 kleave(" = -EINPROGRESS");
133 return -EINPROGRESS;
134
135unlock_discard:
136 unlock_page(backpage);
137 spin_lock_irq(&object->work_lock);
138 list_del(&monitor->op_link);
139 spin_unlock_irq(&object->work_lock);
140 kleave(" = %d", ret);
141 return ret;
142}
143
144/*
64 * copy data from backing pages to netfs pages to complete a read operation 145 * copy data from backing pages to netfs pages to complete a read operation
65 * - driven by FS-Cache's thread pool 146 * - driven by FS-Cache's thread pool
66 */ 147 */
@@ -92,20 +173,26 @@ static void cachefiles_read_copier(struct fscache_operation *_op)
92 173
93 _debug("- copy {%lu}", monitor->back_page->index); 174 _debug("- copy {%lu}", monitor->back_page->index);
94 175
95 error = -EIO; 176 recheck:
96 if (PageUptodate(monitor->back_page)) { 177 if (PageUptodate(monitor->back_page)) {
97 copy_highpage(monitor->netfs_page, monitor->back_page); 178 copy_highpage(monitor->netfs_page, monitor->back_page);
98 179
99 pagevec_add(&pagevec, monitor->netfs_page); 180 pagevec_add(&pagevec, monitor->netfs_page);
100 fscache_mark_pages_cached(monitor->op, &pagevec); 181 fscache_mark_pages_cached(monitor->op, &pagevec);
101 error = 0; 182 error = 0;
102 } 183 } else if (!PageError(monitor->back_page)) {
103 184 /* the page has probably been truncated */
104 if (error) 185 error = cachefiles_read_reissue(object, monitor);
186 if (error == -EINPROGRESS)
187 goto next;
188 goto recheck;
189 } else {
105 cachefiles_io_error_obj( 190 cachefiles_io_error_obj(
106 object, 191 object,
107 "Readpage failed on backing file %lx", 192 "Readpage failed on backing file %lx",
108 (unsigned long) monitor->back_page->flags); 193 (unsigned long) monitor->back_page->flags);
194 error = -EIO;
195 }
109 196
110 page_cache_release(monitor->back_page); 197 page_cache_release(monitor->back_page);
111 198
@@ -114,6 +201,7 @@ static void cachefiles_read_copier(struct fscache_operation *_op)
114 fscache_put_retrieval(op); 201 fscache_put_retrieval(op);
115 kfree(monitor); 202 kfree(monitor);
116 203
204 next:
117 /* let the thread pool have some air occasionally */ 205 /* let the thread pool have some air occasionally */
118 max--; 206 max--;
119 if (max < 0 || need_resched()) { 207 if (max < 0 || need_resched()) {
@@ -333,7 +421,8 @@ int cachefiles_read_or_alloc_page(struct fscache_retrieval *op,
333 421
334 shift = PAGE_SHIFT - inode->i_sb->s_blocksize_bits; 422 shift = PAGE_SHIFT - inode->i_sb->s_blocksize_bits;
335 423
336 op->op.flags = FSCACHE_OP_FAST; 424 op->op.flags &= FSCACHE_OP_KEEP_FLAGS;
425 op->op.flags |= FSCACHE_OP_FAST;
337 op->op.processor = cachefiles_read_copier; 426 op->op.processor = cachefiles_read_copier;
338 427
339 pagevec_init(&pagevec, 0); 428 pagevec_init(&pagevec, 0);
@@ -639,7 +728,8 @@ int cachefiles_read_or_alloc_pages(struct fscache_retrieval *op,
639 728
640 pagevec_init(&pagevec, 0); 729 pagevec_init(&pagevec, 0);
641 730
642 op->op.flags = FSCACHE_OP_FAST; 731 op->op.flags &= FSCACHE_OP_KEEP_FLAGS;
732 op->op.flags |= FSCACHE_OP_FAST;
643 op->op.processor = cachefiles_read_copier; 733 op->op.processor = cachefiles_read_copier;
644 734
645 INIT_LIST_HEAD(&backpages); 735 INIT_LIST_HEAD(&backpages);
@@ -801,7 +891,8 @@ int cachefiles_write_page(struct fscache_storage *op, struct page *page)
801 struct cachefiles_cache *cache; 891 struct cachefiles_cache *cache;
802 mm_segment_t old_fs; 892 mm_segment_t old_fs;
803 struct file *file; 893 struct file *file;
804 loff_t pos; 894 loff_t pos, eof;
895 size_t len;
805 void *data; 896 void *data;
806 int ret; 897 int ret;
807 898
@@ -832,18 +923,33 @@ int cachefiles_write_page(struct fscache_storage *op, struct page *page)
832 if (IS_ERR(file)) { 923 if (IS_ERR(file)) {
833 ret = PTR_ERR(file); 924 ret = PTR_ERR(file);
834 } else { 925 } else {
926 ima_counts_get(file);
835 ret = -EIO; 927 ret = -EIO;
836 if (file->f_op->write) { 928 if (file->f_op->write) {
837 pos = (loff_t) page->index << PAGE_SHIFT; 929 pos = (loff_t) page->index << PAGE_SHIFT;
930
931 /* we mustn't write more data than we have, so we have
932 * to beware of a partial page at EOF */
933 eof = object->fscache.store_limit_l;
934 len = PAGE_SIZE;
935 if (eof & ~PAGE_MASK) {
936 ASSERTCMP(pos, <, eof);
937 if (eof - pos < PAGE_SIZE) {
938 _debug("cut short %llx to %llx",
939 pos, eof);
940 len = eof - pos;
941 ASSERTCMP(pos + len, ==, eof);
942 }
943 }
944
838 data = kmap(page); 945 data = kmap(page);
839 old_fs = get_fs(); 946 old_fs = get_fs();
840 set_fs(KERNEL_DS); 947 set_fs(KERNEL_DS);
841 ret = file->f_op->write( 948 ret = file->f_op->write(
842 file, (const void __user *) data, PAGE_SIZE, 949 file, (const void __user *) data, len, &pos);
843 &pos);
844 set_fs(old_fs); 950 set_fs(old_fs);
845 kunmap(page); 951 kunmap(page);
846 if (ret != PAGE_SIZE) 952 if (ret != len)
847 ret = -EIO; 953 ret = -EIO;
848 } 954 }
849 fput(file); 955 fput(file);
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index 145540a316ab..094ea65afc85 100644
--- a/fs/cifs/CHANGES
+++ b/fs/cifs/CHANGES
@@ -1,3 +1,12 @@
1Version 1.61
2------------
3Fix append problem to Samba servers (files opened with O_APPEND could
4have duplicated data). Fix oops in cifs_lookup. Workaround problem
5mounting to OS/400 Netserve. Fix oops in cifs_get_tcp_session.
6Disable use of server inode numbers when server only
7partially supports them (e.g. for one server querying inode numbers on
8FindFirst fails but QPathInfo queries works).
9
1Version 1.60 10Version 1.60
2------------- 11-------------
3Fix memory leak in reconnect. Fix oops in DFS mount error path. 12Fix memory leak in reconnect. Fix oops in DFS mount error path.
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index 9a5e4f5f3122..29f1da761bbf 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -1037,7 +1037,7 @@ init_cifs(void)
1037 if (rc) 1037 if (rc)
1038 goto out_unregister_key_type; 1038 goto out_unregister_key_type;
1039#endif 1039#endif
1040 rc = slow_work_register_user(); 1040 rc = slow_work_register_user(THIS_MODULE);
1041 if (rc) 1041 if (rc)
1042 goto out_unregister_resolver_key; 1042 goto out_unregister_resolver_key;
1043 1043
diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h
index 6928c24d1d42..5646727e33f5 100644
--- a/fs/cifs/cifsproto.h
+++ b/fs/cifs/cifsproto.h
@@ -388,4 +388,5 @@ extern int CIFSSMBSetPosixACL(const int xid, struct cifsTconInfo *tcon,
388 const struct nls_table *nls_codepage, int remap_special_chars); 388 const struct nls_table *nls_codepage, int remap_special_chars);
389extern int CIFSGetExtAttr(const int xid, struct cifsTconInfo *tcon, 389extern int CIFSGetExtAttr(const int xid, struct cifsTconInfo *tcon,
390 const int netfid, __u64 *pExtAttrBits, __u64 *pMask); 390 const int netfid, __u64 *pExtAttrBits, __u64 *pMask);
391extern void cifs_autodisable_serverino(struct cifs_sb_info *cifs_sb);
391#endif /* _CIFSPROTO_H */ 392#endif /* _CIFSPROTO_H */
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 43003e0bef18..63ea83ff687f 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -1577,7 +1577,8 @@ cifs_get_tcp_session(struct smb_vol *volume_info)
1577 1577
1578out_err: 1578out_err:
1579 if (tcp_ses) { 1579 if (tcp_ses) {
1580 kfree(tcp_ses->hostname); 1580 if (!IS_ERR(tcp_ses->hostname))
1581 kfree(tcp_ses->hostname);
1581 if (tcp_ses->ssocket) 1582 if (tcp_ses->ssocket)
1582 sock_release(tcp_ses->ssocket); 1583 sock_release(tcp_ses->ssocket);
1583 kfree(tcp_ses); 1584 kfree(tcp_ses);
@@ -2219,16 +2220,8 @@ is_path_accessible(int xid, struct cifsTconInfo *tcon,
2219 struct cifs_sb_info *cifs_sb, const char *full_path) 2220 struct cifs_sb_info *cifs_sb, const char *full_path)
2220{ 2221{
2221 int rc; 2222 int rc;
2222 __u64 inode_num;
2223 FILE_ALL_INFO *pfile_info; 2223 FILE_ALL_INFO *pfile_info;
2224 2224
2225 rc = CIFSGetSrvInodeNumber(xid, tcon, full_path, &inode_num,
2226 cifs_sb->local_nls,
2227 cifs_sb->mnt_cifs_flags &
2228 CIFS_MOUNT_MAP_SPECIAL_CHR);
2229 if (rc != -EOPNOTSUPP)
2230 return rc;
2231
2232 pfile_info = kmalloc(sizeof(FILE_ALL_INFO), GFP_KERNEL); 2225 pfile_info = kmalloc(sizeof(FILE_ALL_INFO), GFP_KERNEL);
2233 if (pfile_info == NULL) 2226 if (pfile_info == NULL)
2234 return -ENOMEM; 2227 return -ENOMEM;
diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
index 627a60a6c1b1..1f42f772865a 100644
--- a/fs/cifs/dir.c
+++ b/fs/cifs/dir.c
@@ -214,8 +214,6 @@ int cifs_posix_open(char *full_path, struct inode **pinode,
214 posix_flags |= SMB_O_EXCL; 214 posix_flags |= SMB_O_EXCL;
215 if (oflags & O_TRUNC) 215 if (oflags & O_TRUNC)
216 posix_flags |= SMB_O_TRUNC; 216 posix_flags |= SMB_O_TRUNC;
217 if (oflags & O_APPEND)
218 posix_flags |= SMB_O_APPEND;
219 if (oflags & O_SYNC) 217 if (oflags & O_SYNC)
220 posix_flags |= SMB_O_SYNC; 218 posix_flags |= SMB_O_SYNC;
221 if (oflags & O_DIRECTORY) 219 if (oflags & O_DIRECTORY)
@@ -643,9 +641,9 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
643 * O_EXCL: optimize away the lookup, but don't hash the dentry. Let 641 * O_EXCL: optimize away the lookup, but don't hash the dentry. Let
644 * the VFS handle the create. 642 * the VFS handle the create.
645 */ 643 */
646 if (nd->flags & LOOKUP_EXCL) { 644 if (nd && (nd->flags & LOOKUP_EXCL)) {
647 d_instantiate(direntry, NULL); 645 d_instantiate(direntry, NULL);
648 return 0; 646 return NULL;
649 } 647 }
650 648
651 /* can not grab the rename sem here since it would 649 /* can not grab the rename sem here since it would
@@ -675,7 +673,7 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
675 * reduction in network traffic in the other paths. 673 * reduction in network traffic in the other paths.
676 */ 674 */
677 if (pTcon->unix_ext) { 675 if (pTcon->unix_ext) {
678 if (!(nd->flags & (LOOKUP_PARENT | LOOKUP_DIRECTORY)) && 676 if (nd && !(nd->flags & (LOOKUP_PARENT | LOOKUP_DIRECTORY)) &&
679 (nd->flags & LOOKUP_OPEN) && !pTcon->broken_posix_open && 677 (nd->flags & LOOKUP_OPEN) && !pTcon->broken_posix_open &&
680 (nd->intent.open.flags & O_CREAT)) { 678 (nd->intent.open.flags & O_CREAT)) {
681 rc = cifs_posix_open(full_path, &newInode, nd->path.mnt, 679 rc = cifs_posix_open(full_path, &newInode, nd->path.mnt,
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index 5e2492535daa..cababd8a52df 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -512,13 +512,10 @@ int cifs_get_inode_info(struct inode **pinode,
512 cifs_sb->local_nls, 512 cifs_sb->local_nls,
513 cifs_sb->mnt_cifs_flags & 513 cifs_sb->mnt_cifs_flags &
514 CIFS_MOUNT_MAP_SPECIAL_CHR); 514 CIFS_MOUNT_MAP_SPECIAL_CHR);
515 if (rc1) { 515 if (rc1 || !fattr.cf_uniqueid) {
516 cFYI(1, ("GetSrvInodeNum rc %d", rc1)); 516 cFYI(1, ("GetSrvInodeNum rc %d", rc1));
517 fattr.cf_uniqueid = iunique(sb, ROOT_I); 517 fattr.cf_uniqueid = iunique(sb, ROOT_I);
518 /* disable serverino if call not supported */ 518 cifs_autodisable_serverino(cifs_sb);
519 if (rc1 == -EINVAL)
520 cifs_sb->mnt_cifs_flags &=
521 ~CIFS_MOUNT_SERVER_INUM;
522 } 519 }
523 } else { 520 } else {
524 fattr.cf_uniqueid = iunique(sb, ROOT_I); 521 fattr.cf_uniqueid = iunique(sb, ROOT_I);
diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
index 0241b25ac33f..d27d4ec6579b 100644
--- a/fs/cifs/misc.c
+++ b/fs/cifs/misc.c
@@ -715,3 +715,17 @@ cifsConvertToUCS(__le16 *target, const char *source, int maxlen,
715ctoUCS_out: 715ctoUCS_out:
716 return i; 716 return i;
717} 717}
718
719void
720cifs_autodisable_serverino(struct cifs_sb_info *cifs_sb)
721{
722 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) {
723 cifs_sb->mnt_cifs_flags &= ~CIFS_MOUNT_SERVER_INUM;
724 cERROR(1, ("Autodisabling the use of server inode numbers on "
725 "%s. This server doesn't seem to support them "
726 "properly. Hardlinks will not be recognized on this "
727 "mount. Consider mounting with the \"noserverino\" "
728 "option to silence this message.",
729 cifs_sb->tcon->treeName));
730 }
731}
diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c
index 1f098ca71636..f84062f9a985 100644
--- a/fs/cifs/readdir.c
+++ b/fs/cifs/readdir.c
@@ -727,11 +727,12 @@ static int cifs_filldir(char *pfindEntry, struct file *file, filldir_t filldir,
727 cifs_dir_info_to_fattr(&fattr, (FILE_DIRECTORY_INFO *) 727 cifs_dir_info_to_fattr(&fattr, (FILE_DIRECTORY_INFO *)
728 pfindEntry, cifs_sb); 728 pfindEntry, cifs_sb);
729 729
730 /* FIXME: make _to_fattr functions fill this out */ 730 if (inum && (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM)) {
731 if (pCifsF->srch_inf.info_level == SMB_FIND_FILE_ID_FULL_DIR_INFO)
732 fattr.cf_uniqueid = inum; 731 fattr.cf_uniqueid = inum;
733 else 732 } else {
734 fattr.cf_uniqueid = iunique(sb, ROOT_I); 733 fattr.cf_uniqueid = iunique(sb, ROOT_I);
734 cifs_autodisable_serverino(cifs_sb);
735 }
735 736
736 ino = cifs_uniqueid_to_ino_t(fattr.cf_uniqueid); 737 ino = cifs_uniqueid_to_ino_t(fattr.cf_uniqueid);
737 tmp_dentry = cifs_readdir_lookup(file->f_dentry, &qstring, &fattr); 738 tmp_dentry = cifs_readdir_lookup(file->f_dentry, &qstring, &fattr);
diff --git a/fs/compat.c b/fs/compat.c
index d576b552e8e2..6c19040ffeef 100644
--- a/fs/compat.c
+++ b/fs/compat.c
@@ -1532,6 +1532,8 @@ int compat_do_execve(char * filename,
1532 if (retval < 0) 1532 if (retval < 0)
1533 goto out; 1533 goto out;
1534 1534
1535 current->stack_start = current->mm->start_stack;
1536
1535 /* execve succeeded */ 1537 /* execve succeeded */
1536 current->fs->in_exec = 0; 1538 current->fs->in_exec = 0;
1537 current->in_execve = 0; 1539 current->in_execve = 0;
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
index f91fd51b32e3..d84e7058c298 100644
--- a/fs/compat_ioctl.c
+++ b/fs/compat_ioctl.c
@@ -1800,7 +1800,7 @@ struct space_resv_32 {
1800/* just account for different alignment */ 1800/* just account for different alignment */
1801static int compat_ioctl_preallocate(struct file *file, unsigned long arg) 1801static int compat_ioctl_preallocate(struct file *file, unsigned long arg)
1802{ 1802{
1803 struct space_resv_32 __user *p32 = (void __user *)arg; 1803 struct space_resv_32 __user *p32 = compat_ptr(arg);
1804 struct space_resv __user *p = compat_alloc_user_space(sizeof(*p)); 1804 struct space_resv __user *p = compat_alloc_user_space(sizeof(*p));
1805 1805
1806 if (copy_in_user(&p->l_type, &p32->l_type, sizeof(s16)) || 1806 if (copy_in_user(&p->l_type, &p32->l_type, sizeof(s16)) ||
@@ -2802,7 +2802,7 @@ asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd,
2802#else 2802#else
2803 case FS_IOC_RESVSP: 2803 case FS_IOC_RESVSP:
2804 case FS_IOC_RESVSP64: 2804 case FS_IOC_RESVSP64:
2805 error = ioctl_preallocate(filp, (void __user *)arg); 2805 error = ioctl_preallocate(filp, compat_ptr(arg));
2806 goto out_fput; 2806 goto out_fput;
2807#endif 2807#endif
2808 2808
diff --git a/fs/exec.c b/fs/exec.c
index d49be6bc1793..ba112bd4a339 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -624,10 +624,8 @@ int setup_arg_pages(struct linux_binprm *bprm,
624 /* Move stack pages down in memory. */ 624 /* Move stack pages down in memory. */
625 if (stack_shift) { 625 if (stack_shift) {
626 ret = shift_arg_pages(vma, stack_shift); 626 ret = shift_arg_pages(vma, stack_shift);
627 if (ret) { 627 if (ret)
628 up_write(&mm->mmap_sem); 628 goto out_unlock;
629 return ret;
630 }
631 } 629 }
632 630
633#ifdef CONFIG_STACK_GROWSUP 631#ifdef CONFIG_STACK_GROWSUP
@@ -641,7 +639,7 @@ int setup_arg_pages(struct linux_binprm *bprm,
641 639
642out_unlock: 640out_unlock:
643 up_write(&mm->mmap_sem); 641 up_write(&mm->mmap_sem);
644 return 0; 642 return ret;
645} 643}
646EXPORT_SYMBOL(setup_arg_pages); 644EXPORT_SYMBOL(setup_arg_pages);
647 645
diff --git a/fs/ext3/fsync.c b/fs/ext3/fsync.c
index 451d166bbe93..8209f266e9ad 100644
--- a/fs/ext3/fsync.c
+++ b/fs/ext3/fsync.c
@@ -46,19 +46,21 @@
46int ext3_sync_file(struct file * file, struct dentry *dentry, int datasync) 46int ext3_sync_file(struct file * file, struct dentry *dentry, int datasync)
47{ 47{
48 struct inode *inode = dentry->d_inode; 48 struct inode *inode = dentry->d_inode;
49 struct ext3_inode_info *ei = EXT3_I(inode);
50 journal_t *journal = EXT3_SB(inode->i_sb)->s_journal;
49 int ret = 0; 51 int ret = 0;
52 tid_t commit_tid;
53
54 if (inode->i_sb->s_flags & MS_RDONLY)
55 return 0;
50 56
51 J_ASSERT(ext3_journal_current_handle() == NULL); 57 J_ASSERT(ext3_journal_current_handle() == NULL);
52 58
53 /* 59 /*
54 * data=writeback: 60 * data=writeback,ordered:
55 * The caller's filemap_fdatawrite()/wait will sync the data. 61 * The caller's filemap_fdatawrite()/wait will sync the data.
56 * sync_inode() will sync the metadata 62 * Metadata is in the journal, we wait for a proper transaction
57 * 63 * to commit here.
58 * data=ordered:
59 * The caller's filemap_fdatawrite() will write the data and
60 * sync_inode() will write the inode if it is dirty. Then the caller's
61 * filemap_fdatawait() will wait on the pages.
62 * 64 *
63 * data=journal: 65 * data=journal:
64 * filemap_fdatawrite won't do anything (the buffers are clean). 66 * filemap_fdatawrite won't do anything (the buffers are clean).
@@ -73,22 +75,16 @@ int ext3_sync_file(struct file * file, struct dentry *dentry, int datasync)
73 goto out; 75 goto out;
74 } 76 }
75 77
76 if (datasync && !(inode->i_state & I_DIRTY_DATASYNC)) 78 if (datasync)
77 goto flush; 79 commit_tid = atomic_read(&ei->i_datasync_tid);
80 else
81 commit_tid = atomic_read(&ei->i_sync_tid);
78 82
79 /* 83 if (log_start_commit(journal, commit_tid)) {
80 * The VFS has written the file data. If the inode is unaltered 84 log_wait_commit(journal, commit_tid);
81 * then we need not start a commit.
82 */
83 if (inode->i_state & (I_DIRTY_SYNC|I_DIRTY_DATASYNC)) {
84 struct writeback_control wbc = {
85 .sync_mode = WB_SYNC_ALL,
86 .nr_to_write = 0, /* sys_fsync did this */
87 };
88 ret = sync_inode(inode, &wbc);
89 goto out; 85 goto out;
90 } 86 }
91flush: 87
92 /* 88 /*
93 * In case we didn't commit a transaction, we have to flush 89 * In case we didn't commit a transaction, we have to flush
94 * disk caches manually so that data really is on persistent 90 * disk caches manually so that data really is on persistent
diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c
index acf1b1423327..354ed3b47b30 100644
--- a/fs/ext3/inode.c
+++ b/fs/ext3/inode.c
@@ -699,8 +699,9 @@ static int ext3_splice_branch(handle_t *handle, struct inode *inode,
699 int err = 0; 699 int err = 0;
700 struct ext3_block_alloc_info *block_i; 700 struct ext3_block_alloc_info *block_i;
701 ext3_fsblk_t current_block; 701 ext3_fsblk_t current_block;
702 struct ext3_inode_info *ei = EXT3_I(inode);
702 703
703 block_i = EXT3_I(inode)->i_block_alloc_info; 704 block_i = ei->i_block_alloc_info;
704 /* 705 /*
705 * If we're splicing into a [td]indirect block (as opposed to the 706 * If we're splicing into a [td]indirect block (as opposed to the
706 * inode) then we need to get write access to the [td]indirect block 707 * inode) then we need to get write access to the [td]indirect block
@@ -741,6 +742,8 @@ static int ext3_splice_branch(handle_t *handle, struct inode *inode,
741 742
742 inode->i_ctime = CURRENT_TIME_SEC; 743 inode->i_ctime = CURRENT_TIME_SEC;
743 ext3_mark_inode_dirty(handle, inode); 744 ext3_mark_inode_dirty(handle, inode);
745 /* ext3_mark_inode_dirty already updated i_sync_tid */
746 atomic_set(&ei->i_datasync_tid, handle->h_transaction->t_tid);
744 747
745 /* had we spliced it onto indirect block? */ 748 /* had we spliced it onto indirect block? */
746 if (where->bh) { 749 if (where->bh) {
@@ -1735,6 +1738,7 @@ static ssize_t ext3_direct_IO(int rw, struct kiocb *iocb,
1735 ssize_t ret; 1738 ssize_t ret;
1736 int orphan = 0; 1739 int orphan = 0;
1737 size_t count = iov_length(iov, nr_segs); 1740 size_t count = iov_length(iov, nr_segs);
1741 int retries = 0;
1738 1742
1739 if (rw == WRITE) { 1743 if (rw == WRITE) {
1740 loff_t final_size = offset + count; 1744 loff_t final_size = offset + count;
@@ -1757,9 +1761,12 @@ static ssize_t ext3_direct_IO(int rw, struct kiocb *iocb,
1757 } 1761 }
1758 } 1762 }
1759 1763
1764retry:
1760 ret = blockdev_direct_IO(rw, iocb, inode, inode->i_sb->s_bdev, iov, 1765 ret = blockdev_direct_IO(rw, iocb, inode, inode->i_sb->s_bdev, iov,
1761 offset, nr_segs, 1766 offset, nr_segs,
1762 ext3_get_block, NULL); 1767 ext3_get_block, NULL);
1768 if (ret == -ENOSPC && ext3_should_retry_alloc(inode->i_sb, &retries))
1769 goto retry;
1763 1770
1764 if (orphan) { 1771 if (orphan) {
1765 int err; 1772 int err;
@@ -2750,6 +2757,8 @@ struct inode *ext3_iget(struct super_block *sb, unsigned long ino)
2750 struct ext3_inode_info *ei; 2757 struct ext3_inode_info *ei;
2751 struct buffer_head *bh; 2758 struct buffer_head *bh;
2752 struct inode *inode; 2759 struct inode *inode;
2760 journal_t *journal = EXT3_SB(sb)->s_journal;
2761 transaction_t *transaction;
2753 long ret; 2762 long ret;
2754 int block; 2763 int block;
2755 2764
@@ -2827,6 +2836,30 @@ struct inode *ext3_iget(struct super_block *sb, unsigned long ino)
2827 ei->i_data[block] = raw_inode->i_block[block]; 2836 ei->i_data[block] = raw_inode->i_block[block];
2828 INIT_LIST_HEAD(&ei->i_orphan); 2837 INIT_LIST_HEAD(&ei->i_orphan);
2829 2838
2839 /*
2840 * Set transaction id's of transactions that have to be committed
2841 * to finish f[data]sync. We set them to currently running transaction
2842 * as we cannot be sure that the inode or some of its metadata isn't
2843 * part of the transaction - the inode could have been reclaimed and
2844 * now it is reread from disk.
2845 */
2846 if (journal) {
2847 tid_t tid;
2848
2849 spin_lock(&journal->j_state_lock);
2850 if (journal->j_running_transaction)
2851 transaction = journal->j_running_transaction;
2852 else
2853 transaction = journal->j_committing_transaction;
2854 if (transaction)
2855 tid = transaction->t_tid;
2856 else
2857 tid = journal->j_commit_sequence;
2858 spin_unlock(&journal->j_state_lock);
2859 atomic_set(&ei->i_sync_tid, tid);
2860 atomic_set(&ei->i_datasync_tid, tid);
2861 }
2862
2830 if (inode->i_ino >= EXT3_FIRST_INO(inode->i_sb) + 1 && 2863 if (inode->i_ino >= EXT3_FIRST_INO(inode->i_sb) + 1 &&
2831 EXT3_INODE_SIZE(inode->i_sb) > EXT3_GOOD_OLD_INODE_SIZE) { 2864 EXT3_INODE_SIZE(inode->i_sb) > EXT3_GOOD_OLD_INODE_SIZE) {
2832 /* 2865 /*
@@ -3011,6 +3044,7 @@ again:
3011 err = rc; 3044 err = rc;
3012 ei->i_state &= ~EXT3_STATE_NEW; 3045 ei->i_state &= ~EXT3_STATE_NEW;
3013 3046
3047 atomic_set(&ei->i_sync_tid, handle->h_transaction->t_tid);
3014out_brelse: 3048out_brelse:
3015 brelse (bh); 3049 brelse (bh);
3016 ext3_std_error(inode->i_sb, err); 3050 ext3_std_error(inode->i_sb, err);
diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index 7a520a862f49..427496c4767c 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -466,6 +466,8 @@ static struct inode *ext3_alloc_inode(struct super_block *sb)
466 return NULL; 466 return NULL;
467 ei->i_block_alloc_info = NULL; 467 ei->i_block_alloc_info = NULL;
468 ei->vfs_inode.i_version = 1; 468 ei->vfs_inode.i_version = 1;
469 atomic_set(&ei->i_datasync_tid, 0);
470 atomic_set(&ei->i_sync_tid, 0);
469 return &ei->vfs_inode; 471 return &ei->vfs_inode;
470} 472}
471 473
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 984ca0cb38c3..8825515eeddd 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -322,6 +322,7 @@ static inline __u32 ext4_mask_flags(umode_t mode, __u32 flags)
322#define EXT4_STATE_NO_EXPAND 0x00000008 /* No space for expansion */ 322#define EXT4_STATE_NO_EXPAND 0x00000008 /* No space for expansion */
323#define EXT4_STATE_DA_ALLOC_CLOSE 0x00000010 /* Alloc DA blks on close */ 323#define EXT4_STATE_DA_ALLOC_CLOSE 0x00000010 /* Alloc DA blks on close */
324#define EXT4_STATE_EXT_MIGRATE 0x00000020 /* Inode is migrating */ 324#define EXT4_STATE_EXT_MIGRATE 0x00000020 /* Inode is migrating */
325#define EXT4_STATE_DIO_UNWRITTEN 0x00000040 /* need convert on dio done*/
325 326
326/* Used to pass group descriptor data when online resize is done */ 327/* Used to pass group descriptor data when online resize is done */
327struct ext4_new_group_input { 328struct ext4_new_group_input {
@@ -743,6 +744,7 @@ struct ext4_inode_info {
743#define EXT4_MOUNT_QUOTA 0x80000 /* Some quota option set */ 744#define EXT4_MOUNT_QUOTA 0x80000 /* Some quota option set */
744#define EXT4_MOUNT_USRQUOTA 0x100000 /* "old" user quota */ 745#define EXT4_MOUNT_USRQUOTA 0x100000 /* "old" user quota */
745#define EXT4_MOUNT_GRPQUOTA 0x200000 /* "old" group quota */ 746#define EXT4_MOUNT_GRPQUOTA 0x200000 /* "old" group quota */
747#define EXT4_MOUNT_JOURNAL_CHECKSUM 0x800000 /* Journal checksums */
746#define EXT4_MOUNT_JOURNAL_ASYNC_COMMIT 0x1000000 /* Journal Async Commit */ 748#define EXT4_MOUNT_JOURNAL_ASYNC_COMMIT 0x1000000 /* Journal Async Commit */
747#define EXT4_MOUNT_I_VERSION 0x2000000 /* i_version support */ 749#define EXT4_MOUNT_I_VERSION 0x2000000 /* i_version support */
748#define EXT4_MOUNT_DELALLOC 0x8000000 /* Delalloc support */ 750#define EXT4_MOUNT_DELALLOC 0x8000000 /* Delalloc support */
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index 10539e364283..715264b4bae4 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -2807,6 +2807,8 @@ fix_extent_len:
2807 * into three uninitialized extent(at most). After IO complete, the part 2807 * into three uninitialized extent(at most). After IO complete, the part
2808 * being filled will be convert to initialized by the end_io callback function 2808 * being filled will be convert to initialized by the end_io callback function
2809 * via ext4_convert_unwritten_extents(). 2809 * via ext4_convert_unwritten_extents().
2810 *
2811 * Returns the size of uninitialized extent to be written on success.
2810 */ 2812 */
2811static int ext4_split_unwritten_extents(handle_t *handle, 2813static int ext4_split_unwritten_extents(handle_t *handle,
2812 struct inode *inode, 2814 struct inode *inode,
@@ -2824,7 +2826,6 @@ static int ext4_split_unwritten_extents(handle_t *handle,
2824 unsigned int allocated, ee_len, depth; 2826 unsigned int allocated, ee_len, depth;
2825 ext4_fsblk_t newblock; 2827 ext4_fsblk_t newblock;
2826 int err = 0; 2828 int err = 0;
2827 int ret = 0;
2828 2829
2829 ext_debug("ext4_split_unwritten_extents: inode %lu," 2830 ext_debug("ext4_split_unwritten_extents: inode %lu,"
2830 "iblock %llu, max_blocks %u\n", inode->i_ino, 2831 "iblock %llu, max_blocks %u\n", inode->i_ino,
@@ -2842,12 +2843,12 @@ static int ext4_split_unwritten_extents(handle_t *handle,
2842 ext4_ext_store_pblock(&orig_ex, ext_pblock(ex)); 2843 ext4_ext_store_pblock(&orig_ex, ext_pblock(ex));
2843 2844
2844 /* 2845 /*
2845 * if the entire unintialized extent length less than 2846 * If the uninitialized extent begins at the same logical
2846 * the size of extent to write, there is no need to split 2847 * block where the write begins, and the write completely
2847 * uninitialized extent 2848 * covers the extent, then we don't need to split it.
2848 */ 2849 */
2849 if (allocated <= max_blocks) 2850 if ((iblock == ee_block) && (allocated <= max_blocks))
2850 return ret; 2851 return allocated;
2851 2852
2852 err = ext4_ext_get_access(handle, inode, path + depth); 2853 err = ext4_ext_get_access(handle, inode, path + depth);
2853 if (err) 2854 if (err)
@@ -3048,12 +3049,18 @@ ext4_ext_handle_uninitialized_extents(handle_t *handle, struct inode *inode,
3048 ret = ext4_split_unwritten_extents(handle, 3049 ret = ext4_split_unwritten_extents(handle,
3049 inode, path, iblock, 3050 inode, path, iblock,
3050 max_blocks, flags); 3051 max_blocks, flags);
3051 /* flag the io_end struct that we need convert when IO done */ 3052 /*
3053 * Flag the inode(non aio case) or end_io struct (aio case)
3054 * that this IO needs to convertion to written when IO is
3055 * completed
3056 */
3052 if (io) 3057 if (io)
3053 io->flag = DIO_AIO_UNWRITTEN; 3058 io->flag = DIO_AIO_UNWRITTEN;
3059 else
3060 EXT4_I(inode)->i_state |= EXT4_STATE_DIO_UNWRITTEN;
3054 goto out; 3061 goto out;
3055 } 3062 }
3056 /* DIO end_io complete, convert the filled extent to written */ 3063 /* async DIO end_io complete, convert the filled extent to written */
3057 if (flags == EXT4_GET_BLOCKS_DIO_CONVERT_EXT) { 3064 if (flags == EXT4_GET_BLOCKS_DIO_CONVERT_EXT) {
3058 ret = ext4_convert_unwritten_extents_dio(handle, inode, 3065 ret = ext4_convert_unwritten_extents_dio(handle, inode,
3059 path); 3066 path);
@@ -3295,10 +3302,16 @@ int ext4_ext_get_blocks(handle_t *handle, struct inode *inode,
3295 * To avoid unecessary convertion for every aio dio rewrite 3302 * To avoid unecessary convertion for every aio dio rewrite
3296 * to the mid of file, here we flag the IO that is really 3303 * to the mid of file, here we flag the IO that is really
3297 * need the convertion. 3304 * need the convertion.
3298 * 3305 * For non asycn direct IO case, flag the inode state
3306 * that we need to perform convertion when IO is done.
3299 */ 3307 */
3300 if (io && flags == EXT4_GET_BLOCKS_DIO_CREATE_EXT) 3308 if (flags == EXT4_GET_BLOCKS_DIO_CREATE_EXT) {
3301 io->flag = DIO_AIO_UNWRITTEN; 3309 if (io)
3310 io->flag = DIO_AIO_UNWRITTEN;
3311 else
3312 EXT4_I(inode)->i_state |=
3313 EXT4_STATE_DIO_UNWRITTEN;;
3314 }
3302 } 3315 }
3303 err = ext4_ext_insert_extent(handle, inode, path, &newex, flags); 3316 err = ext4_ext_insert_extent(handle, inode, path, &newex, flags);
3304 if (err) { 3317 if (err) {
@@ -3519,6 +3532,7 @@ retry:
3519 * 3532 *
3520 * This function is called from the direct IO end io call back 3533 * This function is called from the direct IO end io call back
3521 * function, to convert the fallocated extents after IO is completed. 3534 * function, to convert the fallocated extents after IO is completed.
3535 * Returns 0 on success.
3522 */ 3536 */
3523int ext4_convert_unwritten_extents(struct inode *inode, loff_t offset, 3537int ext4_convert_unwritten_extents(struct inode *inode, loff_t offset,
3524 loff_t len) 3538 loff_t len)
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 5c5bc5dafff8..2c8caa51addb 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -193,7 +193,7 @@ static int try_to_extend_transaction(handle_t *handle, struct inode *inode)
193 * so before we call here everything must be consistently dirtied against 193 * so before we call here everything must be consistently dirtied against
194 * this transaction. 194 * this transaction.
195 */ 195 */
196 int ext4_truncate_restart_trans(handle_t *handle, struct inode *inode, 196int ext4_truncate_restart_trans(handle_t *handle, struct inode *inode,
197 int nblocks) 197 int nblocks)
198{ 198{
199 int ret; 199 int ret;
@@ -209,6 +209,7 @@ static int try_to_extend_transaction(handle_t *handle, struct inode *inode)
209 up_write(&EXT4_I(inode)->i_data_sem); 209 up_write(&EXT4_I(inode)->i_data_sem);
210 ret = ext4_journal_restart(handle, blocks_for_truncate(inode)); 210 ret = ext4_journal_restart(handle, blocks_for_truncate(inode));
211 down_write(&EXT4_I(inode)->i_data_sem); 211 down_write(&EXT4_I(inode)->i_data_sem);
212 ext4_discard_preallocations(inode);
212 213
213 return ret; 214 return ret;
214} 215}
@@ -3445,8 +3446,6 @@ out:
3445 return ret; 3446 return ret;
3446} 3447}
3447 3448
3448/* Maximum number of blocks we map for direct IO at once. */
3449
3450static int ext4_get_block_dio_write(struct inode *inode, sector_t iblock, 3449static int ext4_get_block_dio_write(struct inode *inode, sector_t iblock,
3451 struct buffer_head *bh_result, int create) 3450 struct buffer_head *bh_result, int create)
3452{ 3451{
@@ -3654,13 +3653,14 @@ static void ext4_end_io_dio(struct kiocb *iocb, loff_t offset,
3654 ext4_io_end_t *io_end = iocb->private; 3653 ext4_io_end_t *io_end = iocb->private;
3655 struct workqueue_struct *wq; 3654 struct workqueue_struct *wq;
3656 3655
3656 /* if not async direct IO or dio with 0 bytes write, just return */
3657 if (!io_end || !size)
3658 return;
3659
3657 ext_debug("ext4_end_io_dio(): io_end 0x%p" 3660 ext_debug("ext4_end_io_dio(): io_end 0x%p"
3658 "for inode %lu, iocb 0x%p, offset %llu, size %llu\n", 3661 "for inode %lu, iocb 0x%p, offset %llu, size %llu\n",
3659 iocb->private, io_end->inode->i_ino, iocb, offset, 3662 iocb->private, io_end->inode->i_ino, iocb, offset,
3660 size); 3663 size);
3661 /* if not async direct IO or dio with 0 bytes write, just return */
3662 if (!io_end || !size)
3663 return;
3664 3664
3665 /* if not aio dio with unwritten extents, just free io and return */ 3665 /* if not aio dio with unwritten extents, just free io and return */
3666 if (io_end->flag != DIO_AIO_UNWRITTEN){ 3666 if (io_end->flag != DIO_AIO_UNWRITTEN){
@@ -3771,13 +3771,19 @@ static ssize_t ext4_ext_direct_IO(int rw, struct kiocb *iocb,
3771 if (ret != -EIOCBQUEUED && ret <= 0 && iocb->private) { 3771 if (ret != -EIOCBQUEUED && ret <= 0 && iocb->private) {
3772 ext4_free_io_end(iocb->private); 3772 ext4_free_io_end(iocb->private);
3773 iocb->private = NULL; 3773 iocb->private = NULL;
3774 } else if (ret > 0) 3774 } else if (ret > 0 && (EXT4_I(inode)->i_state &
3775 EXT4_STATE_DIO_UNWRITTEN)) {
3776 int err;
3775 /* 3777 /*
3776 * for non AIO case, since the IO is already 3778 * for non AIO case, since the IO is already
3777 * completed, we could do the convertion right here 3779 * completed, we could do the convertion right here
3778 */ 3780 */
3779 ret = ext4_convert_unwritten_extents(inode, 3781 err = ext4_convert_unwritten_extents(inode,
3780 offset, ret); 3782 offset, ret);
3783 if (err < 0)
3784 ret = err;
3785 EXT4_I(inode)->i_state &= ~EXT4_STATE_DIO_UNWRITTEN;
3786 }
3781 return ret; 3787 return ret;
3782 } 3788 }
3783 3789
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index 7c8fe80bacdd..6d2c1b897fc7 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -1518,12 +1518,8 @@ static int ext4_add_entry(handle_t *handle, struct dentry *dentry,
1518 return retval; 1518 return retval;
1519 1519
1520 if (blocks == 1 && !dx_fallback && 1520 if (blocks == 1 && !dx_fallback &&
1521 EXT4_HAS_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_DIR_INDEX)) { 1521 EXT4_HAS_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_DIR_INDEX))
1522 retval = make_indexed_dir(handle, dentry, inode, bh); 1522 return make_indexed_dir(handle, dentry, inode, bh);
1523 if (retval == -ENOSPC)
1524 brelse(bh);
1525 return retval;
1526 }
1527 brelse(bh); 1523 brelse(bh);
1528 } 1524 }
1529 bh = ext4_append(handle, dir, &block, &retval); 1525 bh = ext4_append(handle, dir, &block, &retval);
@@ -1532,10 +1528,7 @@ static int ext4_add_entry(handle_t *handle, struct dentry *dentry,
1532 de = (struct ext4_dir_entry_2 *) bh->b_data; 1528 de = (struct ext4_dir_entry_2 *) bh->b_data;
1533 de->inode = 0; 1529 de->inode = 0;
1534 de->rec_len = ext4_rec_len_to_disk(blocksize, blocksize); 1530 de->rec_len = ext4_rec_len_to_disk(blocksize, blocksize);
1535 retval = add_dirent_to_buf(handle, dentry, inode, de, bh); 1531 return add_dirent_to_buf(handle, dentry, inode, de, bh);
1536 if (retval == -ENOSPC)
1537 brelse(bh);
1538 return retval;
1539} 1532}
1540 1533
1541/* 1534/*
@@ -1664,8 +1657,7 @@ static int ext4_dx_add_entry(handle_t *handle, struct dentry *dentry,
1664 if (!de) 1657 if (!de)
1665 goto cleanup; 1658 goto cleanup;
1666 err = add_dirent_to_buf(handle, dentry, inode, de, bh); 1659 err = add_dirent_to_buf(handle, dentry, inode, de, bh);
1667 if (err != -ENOSPC) 1660 bh = NULL;
1668 bh = NULL;
1669 goto cleanup; 1661 goto cleanup;
1670 1662
1671journal_error: 1663journal_error:
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 312211ee05af..d4ca92aab514 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -1300,9 +1300,11 @@ static int parse_options(char *options, struct super_block *sb,
1300 *journal_devnum = option; 1300 *journal_devnum = option;
1301 break; 1301 break;
1302 case Opt_journal_checksum: 1302 case Opt_journal_checksum:
1303 break; /* Kept for backwards compatibility */ 1303 set_opt(sbi->s_mount_opt, JOURNAL_CHECKSUM);
1304 break;
1304 case Opt_journal_async_commit: 1305 case Opt_journal_async_commit:
1305 set_opt(sbi->s_mount_opt, JOURNAL_ASYNC_COMMIT); 1306 set_opt(sbi->s_mount_opt, JOURNAL_ASYNC_COMMIT);
1307 set_opt(sbi->s_mount_opt, JOURNAL_CHECKSUM);
1306 break; 1308 break;
1307 case Opt_noload: 1309 case Opt_noload:
1308 set_opt(sbi->s_mount_opt, NOLOAD); 1310 set_opt(sbi->s_mount_opt, NOLOAD);
@@ -2759,14 +2761,20 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
2759 goto failed_mount4; 2761 goto failed_mount4;
2760 } 2762 }
2761 2763
2762 jbd2_journal_set_features(sbi->s_journal, 2764 if (test_opt(sb, JOURNAL_ASYNC_COMMIT)) {
2763 JBD2_FEATURE_COMPAT_CHECKSUM, 0, 0); 2765 jbd2_journal_set_features(sbi->s_journal,
2764 if (test_opt(sb, JOURNAL_ASYNC_COMMIT)) 2766 JBD2_FEATURE_COMPAT_CHECKSUM, 0,
2765 jbd2_journal_set_features(sbi->s_journal, 0, 0,
2766 JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT); 2767 JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT);
2767 else 2768 } else if (test_opt(sb, JOURNAL_CHECKSUM)) {
2769 jbd2_journal_set_features(sbi->s_journal,
2770 JBD2_FEATURE_COMPAT_CHECKSUM, 0, 0);
2768 jbd2_journal_clear_features(sbi->s_journal, 0, 0, 2771 jbd2_journal_clear_features(sbi->s_journal, 0, 0,
2769 JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT); 2772 JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT);
2773 } else {
2774 jbd2_journal_clear_features(sbi->s_journal,
2775 JBD2_FEATURE_COMPAT_CHECKSUM, 0,
2776 JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT);
2777 }
2770 2778
2771 /* We have now updated the journal if required, so we can 2779 /* We have now updated the journal if required, so we can
2772 * validate the data journaling mode. */ 2780 * validate the data journaling mode. */
diff --git a/fs/fcntl.c b/fs/fcntl.c
index fc089f2f7f56..2cf93ec40a67 100644
--- a/fs/fcntl.c
+++ b/fs/fcntl.c
@@ -284,7 +284,7 @@ static int f_setown_ex(struct file *filp, unsigned long arg)
284 type = PIDTYPE_PID; 284 type = PIDTYPE_PID;
285 break; 285 break;
286 286
287 case F_OWNER_GID: 287 case F_OWNER_PGRP:
288 type = PIDTYPE_PGID; 288 type = PIDTYPE_PGID;
289 break; 289 break;
290 290
@@ -321,7 +321,7 @@ static int f_getown_ex(struct file *filp, unsigned long arg)
321 break; 321 break;
322 322
323 case PIDTYPE_PGID: 323 case PIDTYPE_PGID:
324 owner.type = F_OWNER_GID; 324 owner.type = F_OWNER_PGRP;
325 break; 325 break;
326 326
327 default: 327 default:
diff --git a/fs/fscache/Kconfig b/fs/fscache/Kconfig
index 9bbb8ce7bea0..864dac20a242 100644
--- a/fs/fscache/Kconfig
+++ b/fs/fscache/Kconfig
@@ -54,3 +54,10 @@ config FSCACHE_DEBUG
54 enabled by setting bits in /sys/modules/fscache/parameter/debug. 54 enabled by setting bits in /sys/modules/fscache/parameter/debug.
55 55
56 See Documentation/filesystems/caching/fscache.txt for more information. 56 See Documentation/filesystems/caching/fscache.txt for more information.
57
58config FSCACHE_OBJECT_LIST
59 bool "Maintain global object list for debugging purposes"
60 depends on FSCACHE && PROC_FS
61 help
62 Maintain a global list of active fscache objects that can be
63 retrieved through /proc/fs/fscache/objects for debugging purposes
diff --git a/fs/fscache/Makefile b/fs/fscache/Makefile
index 91571b95aacc..6d561531cb36 100644
--- a/fs/fscache/Makefile
+++ b/fs/fscache/Makefile
@@ -15,5 +15,6 @@ fscache-y := \
15fscache-$(CONFIG_PROC_FS) += proc.o 15fscache-$(CONFIG_PROC_FS) += proc.o
16fscache-$(CONFIG_FSCACHE_STATS) += stats.o 16fscache-$(CONFIG_FSCACHE_STATS) += stats.o
17fscache-$(CONFIG_FSCACHE_HISTOGRAM) += histogram.o 17fscache-$(CONFIG_FSCACHE_HISTOGRAM) += histogram.o
18fscache-$(CONFIG_FSCACHE_OBJECT_LIST) += object-list.o
18 19
19obj-$(CONFIG_FSCACHE) := fscache.o 20obj-$(CONFIG_FSCACHE) := fscache.o
diff --git a/fs/fscache/cache.c b/fs/fscache/cache.c
index e21985bbb1fb..6a3c48abd677 100644
--- a/fs/fscache/cache.c
+++ b/fs/fscache/cache.c
@@ -263,6 +263,7 @@ int fscache_add_cache(struct fscache_cache *cache,
263 spin_lock(&cache->object_list_lock); 263 spin_lock(&cache->object_list_lock);
264 list_add_tail(&ifsdef->cache_link, &cache->object_list); 264 list_add_tail(&ifsdef->cache_link, &cache->object_list);
265 spin_unlock(&cache->object_list_lock); 265 spin_unlock(&cache->object_list_lock);
266 fscache_objlist_add(ifsdef);
266 267
267 /* add the cache's netfs definition index object to the top level index 268 /* add the cache's netfs definition index object to the top level index
268 * cookie as a known backing object */ 269 * cookie as a known backing object */
@@ -380,11 +381,15 @@ void fscache_withdraw_cache(struct fscache_cache *cache)
380 381
381 /* make sure all pages pinned by operations on behalf of the netfs are 382 /* make sure all pages pinned by operations on behalf of the netfs are
382 * written to disk */ 383 * written to disk */
384 fscache_stat(&fscache_n_cop_sync_cache);
383 cache->ops->sync_cache(cache); 385 cache->ops->sync_cache(cache);
386 fscache_stat_d(&fscache_n_cop_sync_cache);
384 387
385 /* dissociate all the netfs pages backed by this cache from the block 388 /* dissociate all the netfs pages backed by this cache from the block
386 * mappings in the cache */ 389 * mappings in the cache */
390 fscache_stat(&fscache_n_cop_dissociate_pages);
387 cache->ops->dissociate_pages(cache); 391 cache->ops->dissociate_pages(cache);
392 fscache_stat_d(&fscache_n_cop_dissociate_pages);
388 393
389 /* we now have to destroy all the active objects pertaining to this 394 /* we now have to destroy all the active objects pertaining to this
390 * cache - which we do by passing them off to thread pool to be 395 * cache - which we do by passing them off to thread pool to be
diff --git a/fs/fscache/cookie.c b/fs/fscache/cookie.c
index 72fd18f6c71f..990535071a8a 100644
--- a/fs/fscache/cookie.c
+++ b/fs/fscache/cookie.c
@@ -36,6 +36,7 @@ void fscache_cookie_init_once(void *_cookie)
36 36
37 memset(cookie, 0, sizeof(*cookie)); 37 memset(cookie, 0, sizeof(*cookie));
38 spin_lock_init(&cookie->lock); 38 spin_lock_init(&cookie->lock);
39 spin_lock_init(&cookie->stores_lock);
39 INIT_HLIST_HEAD(&cookie->backing_objects); 40 INIT_HLIST_HEAD(&cookie->backing_objects);
40} 41}
41 42
@@ -102,7 +103,9 @@ struct fscache_cookie *__fscache_acquire_cookie(
102 cookie->netfs_data = netfs_data; 103 cookie->netfs_data = netfs_data;
103 cookie->flags = 0; 104 cookie->flags = 0;
104 105
105 INIT_RADIX_TREE(&cookie->stores, GFP_NOFS); 106 /* radix tree insertion won't use the preallocation pool unless it's
107 * told it may not wait */
108 INIT_RADIX_TREE(&cookie->stores, GFP_NOFS & ~__GFP_WAIT);
106 109
107 switch (cookie->def->type) { 110 switch (cookie->def->type) {
108 case FSCACHE_COOKIE_TYPE_INDEX: 111 case FSCACHE_COOKIE_TYPE_INDEX:
@@ -249,7 +252,9 @@ static int fscache_alloc_object(struct fscache_cache *cache,
249 252
250 /* ask the cache to allocate an object (we may end up with duplicate 253 /* ask the cache to allocate an object (we may end up with duplicate
251 * objects at this stage, but we sort that out later) */ 254 * objects at this stage, but we sort that out later) */
255 fscache_stat(&fscache_n_cop_alloc_object);
252 object = cache->ops->alloc_object(cache, cookie); 256 object = cache->ops->alloc_object(cache, cookie);
257 fscache_stat_d(&fscache_n_cop_alloc_object);
253 if (IS_ERR(object)) { 258 if (IS_ERR(object)) {
254 fscache_stat(&fscache_n_object_no_alloc); 259 fscache_stat(&fscache_n_object_no_alloc);
255 ret = PTR_ERR(object); 260 ret = PTR_ERR(object);
@@ -270,8 +275,11 @@ static int fscache_alloc_object(struct fscache_cache *cache,
270 /* only attach if we managed to allocate all we needed, otherwise 275 /* only attach if we managed to allocate all we needed, otherwise
271 * discard the object we just allocated and instead use the one 276 * discard the object we just allocated and instead use the one
272 * attached to the cookie */ 277 * attached to the cookie */
273 if (fscache_attach_object(cookie, object) < 0) 278 if (fscache_attach_object(cookie, object) < 0) {
279 fscache_stat(&fscache_n_cop_put_object);
274 cache->ops->put_object(object); 280 cache->ops->put_object(object);
281 fscache_stat_d(&fscache_n_cop_put_object);
282 }
275 283
276 _leave(" = 0"); 284 _leave(" = 0");
277 return 0; 285 return 0;
@@ -287,7 +295,9 @@ object_already_extant:
287 return 0; 295 return 0;
288 296
289error_put: 297error_put:
298 fscache_stat(&fscache_n_cop_put_object);
290 cache->ops->put_object(object); 299 cache->ops->put_object(object);
300 fscache_stat_d(&fscache_n_cop_put_object);
291error: 301error:
292 _leave(" = %d", ret); 302 _leave(" = %d", ret);
293 return ret; 303 return ret;
@@ -349,6 +359,8 @@ static int fscache_attach_object(struct fscache_cookie *cookie,
349 object->cookie = cookie; 359 object->cookie = cookie;
350 atomic_inc(&cookie->usage); 360 atomic_inc(&cookie->usage);
351 hlist_add_head(&object->cookie_link, &cookie->backing_objects); 361 hlist_add_head(&object->cookie_link, &cookie->backing_objects);
362
363 fscache_objlist_add(object);
352 ret = 0; 364 ret = 0;
353 365
354cant_attach_object: 366cant_attach_object:
@@ -403,6 +415,8 @@ void __fscache_relinquish_cookie(struct fscache_cookie *cookie, int retire)
403 unsigned long event; 415 unsigned long event;
404 416
405 fscache_stat(&fscache_n_relinquishes); 417 fscache_stat(&fscache_n_relinquishes);
418 if (retire)
419 fscache_stat(&fscache_n_relinquishes_retire);
406 420
407 if (!cookie) { 421 if (!cookie) {
408 fscache_stat(&fscache_n_relinquishes_null); 422 fscache_stat(&fscache_n_relinquishes_null);
@@ -428,12 +442,8 @@ void __fscache_relinquish_cookie(struct fscache_cookie *cookie, int retire)
428 442
429 event = retire ? FSCACHE_OBJECT_EV_RETIRE : FSCACHE_OBJECT_EV_RELEASE; 443 event = retire ? FSCACHE_OBJECT_EV_RETIRE : FSCACHE_OBJECT_EV_RELEASE;
430 444
431 /* detach pointers back to the netfs */
432 spin_lock(&cookie->lock); 445 spin_lock(&cookie->lock);
433 446
434 cookie->netfs_data = NULL;
435 cookie->def = NULL;
436
437 /* break links with all the active objects */ 447 /* break links with all the active objects */
438 while (!hlist_empty(&cookie->backing_objects)) { 448 while (!hlist_empty(&cookie->backing_objects)) {
439 object = hlist_entry(cookie->backing_objects.first, 449 object = hlist_entry(cookie->backing_objects.first,
@@ -456,6 +466,10 @@ void __fscache_relinquish_cookie(struct fscache_cookie *cookie, int retire)
456 BUG(); 466 BUG();
457 } 467 }
458 468
469 /* detach pointers back to the netfs */
470 cookie->netfs_data = NULL;
471 cookie->def = NULL;
472
459 spin_unlock(&cookie->lock); 473 spin_unlock(&cookie->lock);
460 474
461 if (cookie->parent) { 475 if (cookie->parent) {
diff --git a/fs/fscache/internal.h b/fs/fscache/internal.h
index 1c341304621f..edd7434ab6e5 100644
--- a/fs/fscache/internal.h
+++ b/fs/fscache/internal.h
@@ -17,6 +17,7 @@
17 * - cache->object_list_lock 17 * - cache->object_list_lock
18 * - object->lock 18 * - object->lock
19 * - object->parent->lock 19 * - object->parent->lock
20 * - cookie->stores_lock
20 * - fscache_thread_lock 21 * - fscache_thread_lock
21 * 22 *
22 */ 23 */
@@ -88,17 +89,31 @@ extern int fscache_wait_bit_interruptible(void *);
88/* 89/*
89 * object.c 90 * object.c
90 */ 91 */
92extern const char fscache_object_states_short[FSCACHE_OBJECT__NSTATES][5];
93
91extern void fscache_withdrawing_object(struct fscache_cache *, 94extern void fscache_withdrawing_object(struct fscache_cache *,
92 struct fscache_object *); 95 struct fscache_object *);
93extern void fscache_enqueue_object(struct fscache_object *); 96extern void fscache_enqueue_object(struct fscache_object *);
94 97
95/* 98/*
99 * object-list.c
100 */
101#ifdef CONFIG_FSCACHE_OBJECT_LIST
102extern const struct file_operations fscache_objlist_fops;
103
104extern void fscache_objlist_add(struct fscache_object *);
105#else
106#define fscache_objlist_add(object) do {} while(0)
107#endif
108
109/*
96 * operation.c 110 * operation.c
97 */ 111 */
98extern int fscache_submit_exclusive_op(struct fscache_object *, 112extern int fscache_submit_exclusive_op(struct fscache_object *,
99 struct fscache_operation *); 113 struct fscache_operation *);
100extern int fscache_submit_op(struct fscache_object *, 114extern int fscache_submit_op(struct fscache_object *,
101 struct fscache_operation *); 115 struct fscache_operation *);
116extern int fscache_cancel_op(struct fscache_operation *);
102extern void fscache_abort_object(struct fscache_object *); 117extern void fscache_abort_object(struct fscache_object *);
103extern void fscache_start_operations(struct fscache_object *); 118extern void fscache_start_operations(struct fscache_object *);
104extern void fscache_operation_gc(struct work_struct *); 119extern void fscache_operation_gc(struct work_struct *);
@@ -127,6 +142,8 @@ extern atomic_t fscache_n_op_enqueue;
127extern atomic_t fscache_n_op_deferred_release; 142extern atomic_t fscache_n_op_deferred_release;
128extern atomic_t fscache_n_op_release; 143extern atomic_t fscache_n_op_release;
129extern atomic_t fscache_n_op_gc; 144extern atomic_t fscache_n_op_gc;
145extern atomic_t fscache_n_op_cancelled;
146extern atomic_t fscache_n_op_rejected;
130 147
131extern atomic_t fscache_n_attr_changed; 148extern atomic_t fscache_n_attr_changed;
132extern atomic_t fscache_n_attr_changed_ok; 149extern atomic_t fscache_n_attr_changed_ok;
@@ -138,6 +155,8 @@ extern atomic_t fscache_n_allocs;
138extern atomic_t fscache_n_allocs_ok; 155extern atomic_t fscache_n_allocs_ok;
139extern atomic_t fscache_n_allocs_wait; 156extern atomic_t fscache_n_allocs_wait;
140extern atomic_t fscache_n_allocs_nobufs; 157extern atomic_t fscache_n_allocs_nobufs;
158extern atomic_t fscache_n_allocs_intr;
159extern atomic_t fscache_n_allocs_object_dead;
141extern atomic_t fscache_n_alloc_ops; 160extern atomic_t fscache_n_alloc_ops;
142extern atomic_t fscache_n_alloc_op_waits; 161extern atomic_t fscache_n_alloc_op_waits;
143 162
@@ -148,6 +167,7 @@ extern atomic_t fscache_n_retrievals_nodata;
148extern atomic_t fscache_n_retrievals_nobufs; 167extern atomic_t fscache_n_retrievals_nobufs;
149extern atomic_t fscache_n_retrievals_intr; 168extern atomic_t fscache_n_retrievals_intr;
150extern atomic_t fscache_n_retrievals_nomem; 169extern atomic_t fscache_n_retrievals_nomem;
170extern atomic_t fscache_n_retrievals_object_dead;
151extern atomic_t fscache_n_retrieval_ops; 171extern atomic_t fscache_n_retrieval_ops;
152extern atomic_t fscache_n_retrieval_op_waits; 172extern atomic_t fscache_n_retrieval_op_waits;
153 173
@@ -158,6 +178,14 @@ extern atomic_t fscache_n_stores_nobufs;
158extern atomic_t fscache_n_stores_oom; 178extern atomic_t fscache_n_stores_oom;
159extern atomic_t fscache_n_store_ops; 179extern atomic_t fscache_n_store_ops;
160extern atomic_t fscache_n_store_calls; 180extern atomic_t fscache_n_store_calls;
181extern atomic_t fscache_n_store_pages;
182extern atomic_t fscache_n_store_radix_deletes;
183extern atomic_t fscache_n_store_pages_over_limit;
184
185extern atomic_t fscache_n_store_vmscan_not_storing;
186extern atomic_t fscache_n_store_vmscan_gone;
187extern atomic_t fscache_n_store_vmscan_busy;
188extern atomic_t fscache_n_store_vmscan_cancelled;
161 189
162extern atomic_t fscache_n_marks; 190extern atomic_t fscache_n_marks;
163extern atomic_t fscache_n_uncaches; 191extern atomic_t fscache_n_uncaches;
@@ -176,6 +204,7 @@ extern atomic_t fscache_n_updates_run;
176extern atomic_t fscache_n_relinquishes; 204extern atomic_t fscache_n_relinquishes;
177extern atomic_t fscache_n_relinquishes_null; 205extern atomic_t fscache_n_relinquishes_null;
178extern atomic_t fscache_n_relinquishes_waitcrt; 206extern atomic_t fscache_n_relinquishes_waitcrt;
207extern atomic_t fscache_n_relinquishes_retire;
179 208
180extern atomic_t fscache_n_cookie_index; 209extern atomic_t fscache_n_cookie_index;
181extern atomic_t fscache_n_cookie_data; 210extern atomic_t fscache_n_cookie_data;
@@ -186,6 +215,7 @@ extern atomic_t fscache_n_object_no_alloc;
186extern atomic_t fscache_n_object_lookups; 215extern atomic_t fscache_n_object_lookups;
187extern atomic_t fscache_n_object_lookups_negative; 216extern atomic_t fscache_n_object_lookups_negative;
188extern atomic_t fscache_n_object_lookups_positive; 217extern atomic_t fscache_n_object_lookups_positive;
218extern atomic_t fscache_n_object_lookups_timed_out;
189extern atomic_t fscache_n_object_created; 219extern atomic_t fscache_n_object_created;
190extern atomic_t fscache_n_object_avail; 220extern atomic_t fscache_n_object_avail;
191extern atomic_t fscache_n_object_dead; 221extern atomic_t fscache_n_object_dead;
@@ -195,15 +225,41 @@ extern atomic_t fscache_n_checkaux_okay;
195extern atomic_t fscache_n_checkaux_update; 225extern atomic_t fscache_n_checkaux_update;
196extern atomic_t fscache_n_checkaux_obsolete; 226extern atomic_t fscache_n_checkaux_obsolete;
197 227
228extern atomic_t fscache_n_cop_alloc_object;
229extern atomic_t fscache_n_cop_lookup_object;
230extern atomic_t fscache_n_cop_lookup_complete;
231extern atomic_t fscache_n_cop_grab_object;
232extern atomic_t fscache_n_cop_update_object;
233extern atomic_t fscache_n_cop_drop_object;
234extern atomic_t fscache_n_cop_put_object;
235extern atomic_t fscache_n_cop_sync_cache;
236extern atomic_t fscache_n_cop_attr_changed;
237extern atomic_t fscache_n_cop_read_or_alloc_page;
238extern atomic_t fscache_n_cop_read_or_alloc_pages;
239extern atomic_t fscache_n_cop_allocate_page;
240extern atomic_t fscache_n_cop_allocate_pages;
241extern atomic_t fscache_n_cop_write_page;
242extern atomic_t fscache_n_cop_uncache_page;
243extern atomic_t fscache_n_cop_dissociate_pages;
244
198static inline void fscache_stat(atomic_t *stat) 245static inline void fscache_stat(atomic_t *stat)
199{ 246{
200 atomic_inc(stat); 247 atomic_inc(stat);
201} 248}
202 249
250static inline void fscache_stat_d(atomic_t *stat)
251{
252 atomic_dec(stat);
253}
254
255#define __fscache_stat(stat) (stat)
256
203extern const struct file_operations fscache_stats_fops; 257extern const struct file_operations fscache_stats_fops;
204#else 258#else
205 259
260#define __fscache_stat(stat) (NULL)
206#define fscache_stat(stat) do {} while (0) 261#define fscache_stat(stat) do {} while (0)
262#define fscache_stat_d(stat) do {} while (0)
207#endif 263#endif
208 264
209/* 265/*
diff --git a/fs/fscache/main.c b/fs/fscache/main.c
index 4de41b597499..add6bdb53f04 100644
--- a/fs/fscache/main.c
+++ b/fs/fscache/main.c
@@ -48,7 +48,7 @@ static int __init fscache_init(void)
48{ 48{
49 int ret; 49 int ret;
50 50
51 ret = slow_work_register_user(); 51 ret = slow_work_register_user(THIS_MODULE);
52 if (ret < 0) 52 if (ret < 0)
53 goto error_slow_work; 53 goto error_slow_work;
54 54
@@ -80,7 +80,7 @@ error_kobj:
80error_cookie_jar: 80error_cookie_jar:
81 fscache_proc_cleanup(); 81 fscache_proc_cleanup();
82error_proc: 82error_proc:
83 slow_work_unregister_user(); 83 slow_work_unregister_user(THIS_MODULE);
84error_slow_work: 84error_slow_work:
85 return ret; 85 return ret;
86} 86}
@@ -97,7 +97,7 @@ static void __exit fscache_exit(void)
97 kobject_put(fscache_root); 97 kobject_put(fscache_root);
98 kmem_cache_destroy(fscache_cookie_jar); 98 kmem_cache_destroy(fscache_cookie_jar);
99 fscache_proc_cleanup(); 99 fscache_proc_cleanup();
100 slow_work_unregister_user(); 100 slow_work_unregister_user(THIS_MODULE);
101 printk(KERN_NOTICE "FS-Cache: Unloaded\n"); 101 printk(KERN_NOTICE "FS-Cache: Unloaded\n");
102} 102}
103 103
diff --git a/fs/fscache/object-list.c b/fs/fscache/object-list.c
new file mode 100644
index 000000000000..e590242fa41a
--- /dev/null
+++ b/fs/fscache/object-list.c
@@ -0,0 +1,432 @@
1/* Global fscache object list maintainer and viewer
2 *
3 * Copyright (C) 2009 Red Hat, Inc. All Rights Reserved.
4 * Written by David Howells (dhowells@redhat.com)
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public Licence
8 * as published by the Free Software Foundation; either version
9 * 2 of the Licence, or (at your option) any later version.
10 */
11
12#define FSCACHE_DEBUG_LEVEL COOKIE
13#include <linux/module.h>
14#include <linux/seq_file.h>
15#include <linux/key.h>
16#include <keys/user-type.h>
17#include "internal.h"
18
19static struct rb_root fscache_object_list;
20static DEFINE_RWLOCK(fscache_object_list_lock);
21
22struct fscache_objlist_data {
23 unsigned long config; /* display configuration */
24#define FSCACHE_OBJLIST_CONFIG_KEY 0x00000001 /* show object keys */
25#define FSCACHE_OBJLIST_CONFIG_AUX 0x00000002 /* show object auxdata */
26#define FSCACHE_OBJLIST_CONFIG_COOKIE 0x00000004 /* show objects with cookies */
27#define FSCACHE_OBJLIST_CONFIG_NOCOOKIE 0x00000008 /* show objects without cookies */
28#define FSCACHE_OBJLIST_CONFIG_BUSY 0x00000010 /* show busy objects */
29#define FSCACHE_OBJLIST_CONFIG_IDLE 0x00000020 /* show idle objects */
30#define FSCACHE_OBJLIST_CONFIG_PENDWR 0x00000040 /* show objects with pending writes */
31#define FSCACHE_OBJLIST_CONFIG_NOPENDWR 0x00000080 /* show objects without pending writes */
32#define FSCACHE_OBJLIST_CONFIG_READS 0x00000100 /* show objects with active reads */
33#define FSCACHE_OBJLIST_CONFIG_NOREADS 0x00000200 /* show objects without active reads */
34#define FSCACHE_OBJLIST_CONFIG_EVENTS 0x00000400 /* show objects with events */
35#define FSCACHE_OBJLIST_CONFIG_NOEVENTS 0x00000800 /* show objects without no events */
36#define FSCACHE_OBJLIST_CONFIG_WORK 0x00001000 /* show objects with slow work */
37#define FSCACHE_OBJLIST_CONFIG_NOWORK 0x00002000 /* show objects without slow work */
38
39 u8 buf[512]; /* key and aux data buffer */
40};
41
42/*
43 * Add an object to the object list
44 * - we use the address of the fscache_object structure as the key into the
45 * tree
46 */
47void fscache_objlist_add(struct fscache_object *obj)
48{
49 struct fscache_object *xobj;
50 struct rb_node **p = &fscache_object_list.rb_node, *parent = NULL;
51
52 write_lock(&fscache_object_list_lock);
53
54 while (*p) {
55 parent = *p;
56 xobj = rb_entry(parent, struct fscache_object, objlist_link);
57
58 if (obj < xobj)
59 p = &(*p)->rb_left;
60 else if (obj > xobj)
61 p = &(*p)->rb_right;
62 else
63 BUG();
64 }
65
66 rb_link_node(&obj->objlist_link, parent, p);
67 rb_insert_color(&obj->objlist_link, &fscache_object_list);
68
69 write_unlock(&fscache_object_list_lock);
70}
71
72/**
73 * fscache_object_destroy - Note that a cache object is about to be destroyed
74 * @object: The object to be destroyed
75 *
76 * Note the imminent destruction and deallocation of a cache object record.
77 */
78void fscache_object_destroy(struct fscache_object *obj)
79{
80 write_lock(&fscache_object_list_lock);
81
82 BUG_ON(RB_EMPTY_ROOT(&fscache_object_list));
83 rb_erase(&obj->objlist_link, &fscache_object_list);
84
85 write_unlock(&fscache_object_list_lock);
86}
87EXPORT_SYMBOL(fscache_object_destroy);
88
89/*
90 * find the object in the tree on or after the specified index
91 */
92static struct fscache_object *fscache_objlist_lookup(loff_t *_pos)
93{
94 struct fscache_object *pobj, *obj, *minobj = NULL;
95 struct rb_node *p;
96 unsigned long pos;
97
98 if (*_pos >= (unsigned long) ERR_PTR(-ENOENT))
99 return NULL;
100 pos = *_pos;
101
102 /* banners (can't represent line 0 by pos 0 as that would involve
103 * returning a NULL pointer) */
104 if (pos == 0)
105 return (struct fscache_object *) ++(*_pos);
106 if (pos < 3)
107 return (struct fscache_object *)pos;
108
109 pobj = (struct fscache_object *)pos;
110 p = fscache_object_list.rb_node;
111 while (p) {
112 obj = rb_entry(p, struct fscache_object, objlist_link);
113 if (pobj < obj) {
114 if (!minobj || minobj > obj)
115 minobj = obj;
116 p = p->rb_left;
117 } else if (pobj > obj) {
118 p = p->rb_right;
119 } else {
120 minobj = obj;
121 break;
122 }
123 obj = NULL;
124 }
125
126 if (!minobj)
127 *_pos = (unsigned long) ERR_PTR(-ENOENT);
128 else if (minobj != obj)
129 *_pos = (unsigned long) minobj;
130 return minobj;
131}
132
133/*
134 * set up the iterator to start reading from the first line
135 */
136static void *fscache_objlist_start(struct seq_file *m, loff_t *_pos)
137 __acquires(&fscache_object_list_lock)
138{
139 read_lock(&fscache_object_list_lock);
140 return fscache_objlist_lookup(_pos);
141}
142
143/*
144 * move to the next line
145 */
146static void *fscache_objlist_next(struct seq_file *m, void *v, loff_t *_pos)
147{
148 (*_pos)++;
149 return fscache_objlist_lookup(_pos);
150}
151
152/*
153 * clean up after reading
154 */
155static void fscache_objlist_stop(struct seq_file *m, void *v)
156 __releases(&fscache_object_list_lock)
157{
158 read_unlock(&fscache_object_list_lock);
159}
160
161/*
162 * display an object
163 */
164static int fscache_objlist_show(struct seq_file *m, void *v)
165{
166 struct fscache_objlist_data *data = m->private;
167 struct fscache_object *obj = v;
168 unsigned long config = data->config;
169 uint16_t keylen, auxlen;
170 char _type[3], *type;
171 bool no_cookie;
172 u8 *buf = data->buf, *p;
173
174 if ((unsigned long) v == 1) {
175 seq_puts(m, "OBJECT PARENT STAT CHLDN OPS OOP IPR EX READS"
176 " EM EV F S"
177 " | NETFS_COOKIE_DEF TY FL NETFS_DATA");
178 if (config & (FSCACHE_OBJLIST_CONFIG_KEY |
179 FSCACHE_OBJLIST_CONFIG_AUX))
180 seq_puts(m, " ");
181 if (config & FSCACHE_OBJLIST_CONFIG_KEY)
182 seq_puts(m, "OBJECT_KEY");
183 if ((config & (FSCACHE_OBJLIST_CONFIG_KEY |
184 FSCACHE_OBJLIST_CONFIG_AUX)) ==
185 (FSCACHE_OBJLIST_CONFIG_KEY | FSCACHE_OBJLIST_CONFIG_AUX))
186 seq_puts(m, ", ");
187 if (config & FSCACHE_OBJLIST_CONFIG_AUX)
188 seq_puts(m, "AUX_DATA");
189 seq_puts(m, "\n");
190 return 0;
191 }
192
193 if ((unsigned long) v == 2) {
194 seq_puts(m, "======== ======== ==== ===== === === === == ====="
195 " == == = ="
196 " | ================ == == ================");
197 if (config & (FSCACHE_OBJLIST_CONFIG_KEY |
198 FSCACHE_OBJLIST_CONFIG_AUX))
199 seq_puts(m, " ================");
200 seq_puts(m, "\n");
201 return 0;
202 }
203
204 /* filter out any unwanted objects */
205#define FILTER(criterion, _yes, _no) \
206 do { \
207 unsigned long yes = FSCACHE_OBJLIST_CONFIG_##_yes; \
208 unsigned long no = FSCACHE_OBJLIST_CONFIG_##_no; \
209 if (criterion) { \
210 if (!(config & yes)) \
211 return 0; \
212 } else { \
213 if (!(config & no)) \
214 return 0; \
215 } \
216 } while(0)
217
218 if (~config) {
219 FILTER(obj->cookie,
220 COOKIE, NOCOOKIE);
221 FILTER(obj->state != FSCACHE_OBJECT_ACTIVE ||
222 obj->n_ops != 0 ||
223 obj->n_obj_ops != 0 ||
224 obj->flags ||
225 !list_empty(&obj->dependents),
226 BUSY, IDLE);
227 FILTER(test_bit(FSCACHE_OBJECT_PENDING_WRITE, &obj->flags),
228 PENDWR, NOPENDWR);
229 FILTER(atomic_read(&obj->n_reads),
230 READS, NOREADS);
231 FILTER(obj->events & obj->event_mask,
232 EVENTS, NOEVENTS);
233 FILTER(obj->work.flags & ~(1UL << SLOW_WORK_VERY_SLOW),
234 WORK, NOWORK);
235 }
236
237 seq_printf(m,
238 "%8x %8x %s %5u %3u %3u %3u %2u %5u %2lx %2lx %1lx %1lx | ",
239 obj->debug_id,
240 obj->parent ? obj->parent->debug_id : -1,
241 fscache_object_states_short[obj->state],
242 obj->n_children,
243 obj->n_ops,
244 obj->n_obj_ops,
245 obj->n_in_progress,
246 obj->n_exclusive,
247 atomic_read(&obj->n_reads),
248 obj->event_mask & FSCACHE_OBJECT_EVENTS_MASK,
249 obj->events,
250 obj->flags,
251 obj->work.flags);
252
253 no_cookie = true;
254 keylen = auxlen = 0;
255 if (obj->cookie) {
256 spin_lock(&obj->lock);
257 if (obj->cookie) {
258 switch (obj->cookie->def->type) {
259 case 0:
260 type = "IX";
261 break;
262 case 1:
263 type = "DT";
264 break;
265 default:
266 sprintf(_type, "%02u",
267 obj->cookie->def->type);
268 type = _type;
269 break;
270 }
271
272 seq_printf(m, "%-16s %s %2lx %16p",
273 obj->cookie->def->name,
274 type,
275 obj->cookie->flags,
276 obj->cookie->netfs_data);
277
278 if (obj->cookie->def->get_key &&
279 config & FSCACHE_OBJLIST_CONFIG_KEY)
280 keylen = obj->cookie->def->get_key(
281 obj->cookie->netfs_data,
282 buf, 400);
283
284 if (obj->cookie->def->get_aux &&
285 config & FSCACHE_OBJLIST_CONFIG_AUX)
286 auxlen = obj->cookie->def->get_aux(
287 obj->cookie->netfs_data,
288 buf + keylen, 512 - keylen);
289
290 no_cookie = false;
291 }
292 spin_unlock(&obj->lock);
293
294 if (!no_cookie && (keylen > 0 || auxlen > 0)) {
295 seq_printf(m, " ");
296 for (p = buf; keylen > 0; keylen--)
297 seq_printf(m, "%02x", *p++);
298 if (auxlen > 0) {
299 if (config & FSCACHE_OBJLIST_CONFIG_KEY)
300 seq_printf(m, ", ");
301 for (; auxlen > 0; auxlen--)
302 seq_printf(m, "%02x", *p++);
303 }
304 }
305 }
306
307 if (no_cookie)
308 seq_printf(m, "<no_cookie>\n");
309 else
310 seq_printf(m, "\n");
311 return 0;
312}
313
314static const struct seq_operations fscache_objlist_ops = {
315 .start = fscache_objlist_start,
316 .stop = fscache_objlist_stop,
317 .next = fscache_objlist_next,
318 .show = fscache_objlist_show,
319};
320
321/*
322 * get the configuration for filtering the list
323 */
324static void fscache_objlist_config(struct fscache_objlist_data *data)
325{
326#ifdef CONFIG_KEYS
327 struct user_key_payload *confkey;
328 unsigned long config;
329 struct key *key;
330 const char *buf;
331 int len;
332
333 key = request_key(&key_type_user, "fscache:objlist", NULL);
334 if (IS_ERR(key))
335 goto no_config;
336
337 config = 0;
338 rcu_read_lock();
339
340 confkey = key->payload.data;
341 buf = confkey->data;
342
343 for (len = confkey->datalen - 1; len >= 0; len--) {
344 switch (buf[len]) {
345 case 'K': config |= FSCACHE_OBJLIST_CONFIG_KEY; break;
346 case 'A': config |= FSCACHE_OBJLIST_CONFIG_AUX; break;
347 case 'C': config |= FSCACHE_OBJLIST_CONFIG_COOKIE; break;
348 case 'c': config |= FSCACHE_OBJLIST_CONFIG_NOCOOKIE; break;
349 case 'B': config |= FSCACHE_OBJLIST_CONFIG_BUSY; break;
350 case 'b': config |= FSCACHE_OBJLIST_CONFIG_IDLE; break;
351 case 'W': config |= FSCACHE_OBJLIST_CONFIG_PENDWR; break;
352 case 'w': config |= FSCACHE_OBJLIST_CONFIG_NOPENDWR; break;
353 case 'R': config |= FSCACHE_OBJLIST_CONFIG_READS; break;
354 case 'r': config |= FSCACHE_OBJLIST_CONFIG_NOREADS; break;
355 case 'S': config |= FSCACHE_OBJLIST_CONFIG_WORK; break;
356 case 's': config |= FSCACHE_OBJLIST_CONFIG_NOWORK; break;
357 }
358 }
359
360 rcu_read_unlock();
361 key_put(key);
362
363 if (!(config & (FSCACHE_OBJLIST_CONFIG_COOKIE | FSCACHE_OBJLIST_CONFIG_NOCOOKIE)))
364 config |= FSCACHE_OBJLIST_CONFIG_COOKIE | FSCACHE_OBJLIST_CONFIG_NOCOOKIE;
365 if (!(config & (FSCACHE_OBJLIST_CONFIG_BUSY | FSCACHE_OBJLIST_CONFIG_IDLE)))
366 config |= FSCACHE_OBJLIST_CONFIG_BUSY | FSCACHE_OBJLIST_CONFIG_IDLE;
367 if (!(config & (FSCACHE_OBJLIST_CONFIG_PENDWR | FSCACHE_OBJLIST_CONFIG_NOPENDWR)))
368 config |= FSCACHE_OBJLIST_CONFIG_PENDWR | FSCACHE_OBJLIST_CONFIG_NOPENDWR;
369 if (!(config & (FSCACHE_OBJLIST_CONFIG_READS | FSCACHE_OBJLIST_CONFIG_NOREADS)))
370 config |= FSCACHE_OBJLIST_CONFIG_READS | FSCACHE_OBJLIST_CONFIG_NOREADS;
371 if (!(config & (FSCACHE_OBJLIST_CONFIG_EVENTS | FSCACHE_OBJLIST_CONFIG_NOEVENTS)))
372 config |= FSCACHE_OBJLIST_CONFIG_EVENTS | FSCACHE_OBJLIST_CONFIG_NOEVENTS;
373 if (!(config & (FSCACHE_OBJLIST_CONFIG_WORK | FSCACHE_OBJLIST_CONFIG_NOWORK)))
374 config |= FSCACHE_OBJLIST_CONFIG_WORK | FSCACHE_OBJLIST_CONFIG_NOWORK;
375
376 data->config = config;
377 return;
378
379no_config:
380#endif
381 data->config = ULONG_MAX;
382}
383
384/*
385 * open "/proc/fs/fscache/objects" to provide a list of active objects
386 * - can be configured by a user-defined key added to the caller's keyrings
387 */
388static int fscache_objlist_open(struct inode *inode, struct file *file)
389{
390 struct fscache_objlist_data *data;
391 struct seq_file *m;
392 int ret;
393
394 ret = seq_open(file, &fscache_objlist_ops);
395 if (ret < 0)
396 return ret;
397
398 m = file->private_data;
399
400 /* buffer for key extraction */
401 data = kmalloc(sizeof(struct fscache_objlist_data), GFP_KERNEL);
402 if (!data) {
403 seq_release(inode, file);
404 return -ENOMEM;
405 }
406
407 /* get the configuration key */
408 fscache_objlist_config(data);
409
410 m->private = data;
411 return 0;
412}
413
414/*
415 * clean up on close
416 */
417static int fscache_objlist_release(struct inode *inode, struct file *file)
418{
419 struct seq_file *m = file->private_data;
420
421 kfree(m->private);
422 m->private = NULL;
423 return seq_release(inode, file);
424}
425
426const struct file_operations fscache_objlist_fops = {
427 .owner = THIS_MODULE,
428 .open = fscache_objlist_open,
429 .read = seq_read,
430 .llseek = seq_lseek,
431 .release = fscache_objlist_release,
432};
diff --git a/fs/fscache/object.c b/fs/fscache/object.c
index 392a41b1b79d..e513ac599c8e 100644
--- a/fs/fscache/object.c
+++ b/fs/fscache/object.c
@@ -14,9 +14,10 @@
14 14
15#define FSCACHE_DEBUG_LEVEL COOKIE 15#define FSCACHE_DEBUG_LEVEL COOKIE
16#include <linux/module.h> 16#include <linux/module.h>
17#include <linux/seq_file.h>
17#include "internal.h" 18#include "internal.h"
18 19
19const char *fscache_object_states[] = { 20const char *fscache_object_states[FSCACHE_OBJECT__NSTATES] = {
20 [FSCACHE_OBJECT_INIT] = "OBJECT_INIT", 21 [FSCACHE_OBJECT_INIT] = "OBJECT_INIT",
21 [FSCACHE_OBJECT_LOOKING_UP] = "OBJECT_LOOKING_UP", 22 [FSCACHE_OBJECT_LOOKING_UP] = "OBJECT_LOOKING_UP",
22 [FSCACHE_OBJECT_CREATING] = "OBJECT_CREATING", 23 [FSCACHE_OBJECT_CREATING] = "OBJECT_CREATING",
@@ -33,9 +34,28 @@ const char *fscache_object_states[] = {
33}; 34};
34EXPORT_SYMBOL(fscache_object_states); 35EXPORT_SYMBOL(fscache_object_states);
35 36
37const char fscache_object_states_short[FSCACHE_OBJECT__NSTATES][5] = {
38 [FSCACHE_OBJECT_INIT] = "INIT",
39 [FSCACHE_OBJECT_LOOKING_UP] = "LOOK",
40 [FSCACHE_OBJECT_CREATING] = "CRTN",
41 [FSCACHE_OBJECT_AVAILABLE] = "AVBL",
42 [FSCACHE_OBJECT_ACTIVE] = "ACTV",
43 [FSCACHE_OBJECT_UPDATING] = "UPDT",
44 [FSCACHE_OBJECT_DYING] = "DYNG",
45 [FSCACHE_OBJECT_LC_DYING] = "LCDY",
46 [FSCACHE_OBJECT_ABORT_INIT] = "ABTI",
47 [FSCACHE_OBJECT_RELEASING] = "RELS",
48 [FSCACHE_OBJECT_RECYCLING] = "RCYC",
49 [FSCACHE_OBJECT_WITHDRAWING] = "WTHD",
50 [FSCACHE_OBJECT_DEAD] = "DEAD",
51};
52
36static void fscache_object_slow_work_put_ref(struct slow_work *); 53static void fscache_object_slow_work_put_ref(struct slow_work *);
37static int fscache_object_slow_work_get_ref(struct slow_work *); 54static int fscache_object_slow_work_get_ref(struct slow_work *);
38static void fscache_object_slow_work_execute(struct slow_work *); 55static void fscache_object_slow_work_execute(struct slow_work *);
56#ifdef CONFIG_SLOW_WORK_PROC
57static void fscache_object_slow_work_desc(struct slow_work *, struct seq_file *);
58#endif
39static void fscache_initialise_object(struct fscache_object *); 59static void fscache_initialise_object(struct fscache_object *);
40static void fscache_lookup_object(struct fscache_object *); 60static void fscache_lookup_object(struct fscache_object *);
41static void fscache_object_available(struct fscache_object *); 61static void fscache_object_available(struct fscache_object *);
@@ -45,9 +65,13 @@ static void fscache_enqueue_dependents(struct fscache_object *);
45static void fscache_dequeue_object(struct fscache_object *); 65static void fscache_dequeue_object(struct fscache_object *);
46 66
47const struct slow_work_ops fscache_object_slow_work_ops = { 67const struct slow_work_ops fscache_object_slow_work_ops = {
68 .owner = THIS_MODULE,
48 .get_ref = fscache_object_slow_work_get_ref, 69 .get_ref = fscache_object_slow_work_get_ref,
49 .put_ref = fscache_object_slow_work_put_ref, 70 .put_ref = fscache_object_slow_work_put_ref,
50 .execute = fscache_object_slow_work_execute, 71 .execute = fscache_object_slow_work_execute,
72#ifdef CONFIG_SLOW_WORK_PROC
73 .desc = fscache_object_slow_work_desc,
74#endif
51}; 75};
52EXPORT_SYMBOL(fscache_object_slow_work_ops); 76EXPORT_SYMBOL(fscache_object_slow_work_ops);
53 77
@@ -81,6 +105,7 @@ static inline void fscache_done_parent_op(struct fscache_object *object)
81static void fscache_object_state_machine(struct fscache_object *object) 105static void fscache_object_state_machine(struct fscache_object *object)
82{ 106{
83 enum fscache_object_state new_state; 107 enum fscache_object_state new_state;
108 struct fscache_cookie *cookie;
84 109
85 ASSERT(object != NULL); 110 ASSERT(object != NULL);
86 111
@@ -120,20 +145,31 @@ static void fscache_object_state_machine(struct fscache_object *object)
120 case FSCACHE_OBJECT_UPDATING: 145 case FSCACHE_OBJECT_UPDATING:
121 clear_bit(FSCACHE_OBJECT_EV_UPDATE, &object->events); 146 clear_bit(FSCACHE_OBJECT_EV_UPDATE, &object->events);
122 fscache_stat(&fscache_n_updates_run); 147 fscache_stat(&fscache_n_updates_run);
148 fscache_stat(&fscache_n_cop_update_object);
123 object->cache->ops->update_object(object); 149 object->cache->ops->update_object(object);
150 fscache_stat_d(&fscache_n_cop_update_object);
124 goto active_transit; 151 goto active_transit;
125 152
126 /* handle an object dying during lookup or creation */ 153 /* handle an object dying during lookup or creation */
127 case FSCACHE_OBJECT_LC_DYING: 154 case FSCACHE_OBJECT_LC_DYING:
128 object->event_mask &= ~(1 << FSCACHE_OBJECT_EV_UPDATE); 155 object->event_mask &= ~(1 << FSCACHE_OBJECT_EV_UPDATE);
156 fscache_stat(&fscache_n_cop_lookup_complete);
129 object->cache->ops->lookup_complete(object); 157 object->cache->ops->lookup_complete(object);
158 fscache_stat_d(&fscache_n_cop_lookup_complete);
130 159
131 spin_lock(&object->lock); 160 spin_lock(&object->lock);
132 object->state = FSCACHE_OBJECT_DYING; 161 object->state = FSCACHE_OBJECT_DYING;
133 if (test_and_clear_bit(FSCACHE_COOKIE_CREATING, 162 cookie = object->cookie;
134 &object->cookie->flags)) 163 if (cookie) {
135 wake_up_bit(&object->cookie->flags, 164 if (test_and_clear_bit(FSCACHE_COOKIE_LOOKING_UP,
136 FSCACHE_COOKIE_CREATING); 165 &cookie->flags))
166 wake_up_bit(&cookie->flags,
167 FSCACHE_COOKIE_LOOKING_UP);
168 if (test_and_clear_bit(FSCACHE_COOKIE_CREATING,
169 &cookie->flags))
170 wake_up_bit(&cookie->flags,
171 FSCACHE_COOKIE_CREATING);
172 }
137 spin_unlock(&object->lock); 173 spin_unlock(&object->lock);
138 174
139 fscache_done_parent_op(object); 175 fscache_done_parent_op(object);
@@ -165,6 +201,7 @@ static void fscache_object_state_machine(struct fscache_object *object)
165 } 201 }
166 spin_unlock(&object->lock); 202 spin_unlock(&object->lock);
167 fscache_enqueue_dependents(object); 203 fscache_enqueue_dependents(object);
204 fscache_start_operations(object);
168 goto terminal_transit; 205 goto terminal_transit;
169 206
170 /* handle an abort during initialisation */ 207 /* handle an abort during initialisation */
@@ -316,14 +353,29 @@ static void fscache_object_slow_work_execute(struct slow_work *work)
316 353
317 _enter("{OBJ%x}", object->debug_id); 354 _enter("{OBJ%x}", object->debug_id);
318 355
319 clear_bit(FSCACHE_OBJECT_EV_REQUEUE, &object->events);
320
321 start = jiffies; 356 start = jiffies;
322 fscache_object_state_machine(object); 357 fscache_object_state_machine(object);
323 fscache_hist(fscache_objs_histogram, start); 358 fscache_hist(fscache_objs_histogram, start);
324 if (object->events & object->event_mask) 359 if (object->events & object->event_mask)
325 fscache_enqueue_object(object); 360 fscache_enqueue_object(object);
361 clear_bit(FSCACHE_OBJECT_EV_REQUEUE, &object->events);
362}
363
364/*
365 * describe an object for slow-work debugging
366 */
367#ifdef CONFIG_SLOW_WORK_PROC
368static void fscache_object_slow_work_desc(struct slow_work *work,
369 struct seq_file *m)
370{
371 struct fscache_object *object =
372 container_of(work, struct fscache_object, work);
373
374 seq_printf(m, "FSC: OBJ%x: %s",
375 object->debug_id,
376 fscache_object_states_short[object->state]);
326} 377}
378#endif
327 379
328/* 380/*
329 * initialise an object 381 * initialise an object
@@ -376,7 +428,9 @@ static void fscache_initialise_object(struct fscache_object *object)
376 * binding on to us, so we need to make sure we don't 428 * binding on to us, so we need to make sure we don't
377 * add ourself to the list multiple times */ 429 * add ourself to the list multiple times */
378 if (list_empty(&object->dep_link)) { 430 if (list_empty(&object->dep_link)) {
431 fscache_stat(&fscache_n_cop_grab_object);
379 object->cache->ops->grab_object(object); 432 object->cache->ops->grab_object(object);
433 fscache_stat_d(&fscache_n_cop_grab_object);
380 list_add(&object->dep_link, 434 list_add(&object->dep_link,
381 &parent->dependents); 435 &parent->dependents);
382 436
@@ -414,6 +468,7 @@ static void fscache_lookup_object(struct fscache_object *object)
414{ 468{
415 struct fscache_cookie *cookie = object->cookie; 469 struct fscache_cookie *cookie = object->cookie;
416 struct fscache_object *parent; 470 struct fscache_object *parent;
471 int ret;
417 472
418 _enter(""); 473 _enter("");
419 474
@@ -438,11 +493,20 @@ static void fscache_lookup_object(struct fscache_object *object)
438 object->cache->tag->name); 493 object->cache->tag->name);
439 494
440 fscache_stat(&fscache_n_object_lookups); 495 fscache_stat(&fscache_n_object_lookups);
441 object->cache->ops->lookup_object(object); 496 fscache_stat(&fscache_n_cop_lookup_object);
497 ret = object->cache->ops->lookup_object(object);
498 fscache_stat_d(&fscache_n_cop_lookup_object);
442 499
443 if (test_bit(FSCACHE_OBJECT_EV_ERROR, &object->events)) 500 if (test_bit(FSCACHE_OBJECT_EV_ERROR, &object->events))
444 set_bit(FSCACHE_COOKIE_UNAVAILABLE, &cookie->flags); 501 set_bit(FSCACHE_COOKIE_UNAVAILABLE, &cookie->flags);
445 502
503 if (ret == -ETIMEDOUT) {
504 /* probably stuck behind another object, so move this one to
505 * the back of the queue */
506 fscache_stat(&fscache_n_object_lookups_timed_out);
507 set_bit(FSCACHE_OBJECT_EV_REQUEUE, &object->events);
508 }
509
446 _leave(""); 510 _leave("");
447} 511}
448 512
@@ -546,7 +610,8 @@ static void fscache_object_available(struct fscache_object *object)
546 610
547 spin_lock(&object->lock); 611 spin_lock(&object->lock);
548 612
549 if (test_and_clear_bit(FSCACHE_COOKIE_CREATING, &object->cookie->flags)) 613 if (object->cookie &&
614 test_and_clear_bit(FSCACHE_COOKIE_CREATING, &object->cookie->flags))
550 wake_up_bit(&object->cookie->flags, FSCACHE_COOKIE_CREATING); 615 wake_up_bit(&object->cookie->flags, FSCACHE_COOKIE_CREATING);
551 616
552 fscache_done_parent_op(object); 617 fscache_done_parent_op(object);
@@ -562,7 +627,9 @@ static void fscache_object_available(struct fscache_object *object)
562 } 627 }
563 spin_unlock(&object->lock); 628 spin_unlock(&object->lock);
564 629
630 fscache_stat(&fscache_n_cop_lookup_complete);
565 object->cache->ops->lookup_complete(object); 631 object->cache->ops->lookup_complete(object);
632 fscache_stat_d(&fscache_n_cop_lookup_complete);
566 fscache_enqueue_dependents(object); 633 fscache_enqueue_dependents(object);
567 634
568 fscache_hist(fscache_obj_instantiate_histogram, object->lookup_jif); 635 fscache_hist(fscache_obj_instantiate_histogram, object->lookup_jif);
@@ -581,11 +648,16 @@ static void fscache_drop_object(struct fscache_object *object)
581 648
582 _enter("{OBJ%x,%d}", object->debug_id, object->n_children); 649 _enter("{OBJ%x,%d}", object->debug_id, object->n_children);
583 650
651 ASSERTCMP(object->cookie, ==, NULL);
652 ASSERT(hlist_unhashed(&object->cookie_link));
653
584 spin_lock(&cache->object_list_lock); 654 spin_lock(&cache->object_list_lock);
585 list_del_init(&object->cache_link); 655 list_del_init(&object->cache_link);
586 spin_unlock(&cache->object_list_lock); 656 spin_unlock(&cache->object_list_lock);
587 657
658 fscache_stat(&fscache_n_cop_drop_object);
588 cache->ops->drop_object(object); 659 cache->ops->drop_object(object);
660 fscache_stat_d(&fscache_n_cop_drop_object);
589 661
590 if (parent) { 662 if (parent) {
591 _debug("release parent OBJ%x {%d}", 663 _debug("release parent OBJ%x {%d}",
@@ -600,7 +672,9 @@ static void fscache_drop_object(struct fscache_object *object)
600 } 672 }
601 673
602 /* this just shifts the object release to the slow work processor */ 674 /* this just shifts the object release to the slow work processor */
675 fscache_stat(&fscache_n_cop_put_object);
603 object->cache->ops->put_object(object); 676 object->cache->ops->put_object(object);
677 fscache_stat_d(&fscache_n_cop_put_object);
604 678
605 _leave(""); 679 _leave("");
606} 680}
@@ -690,8 +764,12 @@ static int fscache_object_slow_work_get_ref(struct slow_work *work)
690{ 764{
691 struct fscache_object *object = 765 struct fscache_object *object =
692 container_of(work, struct fscache_object, work); 766 container_of(work, struct fscache_object, work);
767 int ret;
693 768
694 return object->cache->ops->grab_object(object) ? 0 : -EAGAIN; 769 fscache_stat(&fscache_n_cop_grab_object);
770 ret = object->cache->ops->grab_object(object) ? 0 : -EAGAIN;
771 fscache_stat_d(&fscache_n_cop_grab_object);
772 return ret;
695} 773}
696 774
697/* 775/*
@@ -702,7 +780,9 @@ static void fscache_object_slow_work_put_ref(struct slow_work *work)
702 struct fscache_object *object = 780 struct fscache_object *object =
703 container_of(work, struct fscache_object, work); 781 container_of(work, struct fscache_object, work);
704 782
705 return object->cache->ops->put_object(object); 783 fscache_stat(&fscache_n_cop_put_object);
784 object->cache->ops->put_object(object);
785 fscache_stat_d(&fscache_n_cop_put_object);
706} 786}
707 787
708/* 788/*
@@ -739,7 +819,9 @@ static void fscache_enqueue_dependents(struct fscache_object *object)
739 819
740 /* sort onto appropriate lists */ 820 /* sort onto appropriate lists */
741 fscache_enqueue_object(dep); 821 fscache_enqueue_object(dep);
822 fscache_stat(&fscache_n_cop_put_object);
742 dep->cache->ops->put_object(dep); 823 dep->cache->ops->put_object(dep);
824 fscache_stat_d(&fscache_n_cop_put_object);
743 825
744 if (!list_empty(&object->dependents)) 826 if (!list_empty(&object->dependents))
745 cond_resched_lock(&object->lock); 827 cond_resched_lock(&object->lock);
diff --git a/fs/fscache/operation.c b/fs/fscache/operation.c
index e7f8d53b8b6b..313e79a14266 100644
--- a/fs/fscache/operation.c
+++ b/fs/fscache/operation.c
@@ -13,6 +13,7 @@
13 13
14#define FSCACHE_DEBUG_LEVEL OPERATION 14#define FSCACHE_DEBUG_LEVEL OPERATION
15#include <linux/module.h> 15#include <linux/module.h>
16#include <linux/seq_file.h>
16#include "internal.h" 17#include "internal.h"
17 18
18atomic_t fscache_op_debug_id; 19atomic_t fscache_op_debug_id;
@@ -31,32 +32,33 @@ void fscache_enqueue_operation(struct fscache_operation *op)
31 _enter("{OBJ%x OP%x,%u}", 32 _enter("{OBJ%x OP%x,%u}",
32 op->object->debug_id, op->debug_id, atomic_read(&op->usage)); 33 op->object->debug_id, op->debug_id, atomic_read(&op->usage));
33 34
35 fscache_set_op_state(op, "EnQ");
36
37 ASSERT(list_empty(&op->pend_link));
34 ASSERT(op->processor != NULL); 38 ASSERT(op->processor != NULL);
35 ASSERTCMP(op->object->state, >=, FSCACHE_OBJECT_AVAILABLE); 39 ASSERTCMP(op->object->state, >=, FSCACHE_OBJECT_AVAILABLE);
36 ASSERTCMP(atomic_read(&op->usage), >, 0); 40 ASSERTCMP(atomic_read(&op->usage), >, 0);
37 41
38 if (list_empty(&op->pend_link)) { 42 fscache_stat(&fscache_n_op_enqueue);
39 switch (op->flags & FSCACHE_OP_TYPE) { 43 switch (op->flags & FSCACHE_OP_TYPE) {
40 case FSCACHE_OP_FAST: 44 case FSCACHE_OP_FAST:
41 _debug("queue fast"); 45 _debug("queue fast");
42 atomic_inc(&op->usage); 46 atomic_inc(&op->usage);
43 if (!schedule_work(&op->fast_work)) 47 if (!schedule_work(&op->fast_work))
44 fscache_put_operation(op); 48 fscache_put_operation(op);
45 break; 49 break;
46 case FSCACHE_OP_SLOW: 50 case FSCACHE_OP_SLOW:
47 _debug("queue slow"); 51 _debug("queue slow");
48 slow_work_enqueue(&op->slow_work); 52 slow_work_enqueue(&op->slow_work);
49 break; 53 break;
50 case FSCACHE_OP_MYTHREAD: 54 case FSCACHE_OP_MYTHREAD:
51 _debug("queue for caller's attention"); 55 _debug("queue for caller's attention");
52 break; 56 break;
53 default: 57 default:
54 printk(KERN_ERR "FS-Cache: Unexpected op type %lx", 58 printk(KERN_ERR "FS-Cache: Unexpected op type %lx",
55 op->flags); 59 op->flags);
56 BUG(); 60 BUG();
57 break; 61 break;
58 }
59 fscache_stat(&fscache_n_op_enqueue);
60 } 62 }
61} 63}
62EXPORT_SYMBOL(fscache_enqueue_operation); 64EXPORT_SYMBOL(fscache_enqueue_operation);
@@ -67,6 +69,8 @@ EXPORT_SYMBOL(fscache_enqueue_operation);
67static void fscache_run_op(struct fscache_object *object, 69static void fscache_run_op(struct fscache_object *object,
68 struct fscache_operation *op) 70 struct fscache_operation *op)
69{ 71{
72 fscache_set_op_state(op, "Run");
73
70 object->n_in_progress++; 74 object->n_in_progress++;
71 if (test_and_clear_bit(FSCACHE_OP_WAITING, &op->flags)) 75 if (test_and_clear_bit(FSCACHE_OP_WAITING, &op->flags))
72 wake_up_bit(&op->flags, FSCACHE_OP_WAITING); 76 wake_up_bit(&op->flags, FSCACHE_OP_WAITING);
@@ -87,9 +91,12 @@ int fscache_submit_exclusive_op(struct fscache_object *object,
87 91
88 _enter("{OBJ%x OP%x},", object->debug_id, op->debug_id); 92 _enter("{OBJ%x OP%x},", object->debug_id, op->debug_id);
89 93
94 fscache_set_op_state(op, "SubmitX");
95
90 spin_lock(&object->lock); 96 spin_lock(&object->lock);
91 ASSERTCMP(object->n_ops, >=, object->n_in_progress); 97 ASSERTCMP(object->n_ops, >=, object->n_in_progress);
92 ASSERTCMP(object->n_ops, >=, object->n_exclusive); 98 ASSERTCMP(object->n_ops, >=, object->n_exclusive);
99 ASSERT(list_empty(&op->pend_link));
93 100
94 ret = -ENOBUFS; 101 ret = -ENOBUFS;
95 if (fscache_object_is_active(object)) { 102 if (fscache_object_is_active(object)) {
@@ -190,9 +197,12 @@ int fscache_submit_op(struct fscache_object *object,
190 197
191 ASSERTCMP(atomic_read(&op->usage), >, 0); 198 ASSERTCMP(atomic_read(&op->usage), >, 0);
192 199
200 fscache_set_op_state(op, "Submit");
201
193 spin_lock(&object->lock); 202 spin_lock(&object->lock);
194 ASSERTCMP(object->n_ops, >=, object->n_in_progress); 203 ASSERTCMP(object->n_ops, >=, object->n_in_progress);
195 ASSERTCMP(object->n_ops, >=, object->n_exclusive); 204 ASSERTCMP(object->n_ops, >=, object->n_exclusive);
205 ASSERT(list_empty(&op->pend_link));
196 206
197 ostate = object->state; 207 ostate = object->state;
198 smp_rmb(); 208 smp_rmb();
@@ -222,6 +232,11 @@ int fscache_submit_op(struct fscache_object *object,
222 list_add_tail(&op->pend_link, &object->pending_ops); 232 list_add_tail(&op->pend_link, &object->pending_ops);
223 fscache_stat(&fscache_n_op_pend); 233 fscache_stat(&fscache_n_op_pend);
224 ret = 0; 234 ret = 0;
235 } else if (object->state == FSCACHE_OBJECT_DYING ||
236 object->state == FSCACHE_OBJECT_LC_DYING ||
237 object->state == FSCACHE_OBJECT_WITHDRAWING) {
238 fscache_stat(&fscache_n_op_rejected);
239 ret = -ENOBUFS;
225 } else if (!test_bit(FSCACHE_IOERROR, &object->cache->flags)) { 240 } else if (!test_bit(FSCACHE_IOERROR, &object->cache->flags)) {
226 fscache_report_unexpected_submission(object, op, ostate); 241 fscache_report_unexpected_submission(object, op, ostate);
227 ASSERT(!fscache_object_is_active(object)); 242 ASSERT(!fscache_object_is_active(object));
@@ -264,12 +279,7 @@ void fscache_start_operations(struct fscache_object *object)
264 stop = true; 279 stop = true;
265 } 280 }
266 list_del_init(&op->pend_link); 281 list_del_init(&op->pend_link);
267 object->n_in_progress++; 282 fscache_run_op(object, op);
268
269 if (test_and_clear_bit(FSCACHE_OP_WAITING, &op->flags))
270 wake_up_bit(&op->flags, FSCACHE_OP_WAITING);
271 if (op->processor)
272 fscache_enqueue_operation(op);
273 283
274 /* the pending queue was holding a ref on the object */ 284 /* the pending queue was holding a ref on the object */
275 fscache_put_operation(op); 285 fscache_put_operation(op);
@@ -282,6 +292,36 @@ void fscache_start_operations(struct fscache_object *object)
282} 292}
283 293
284/* 294/*
295 * cancel an operation that's pending on an object
296 */
297int fscache_cancel_op(struct fscache_operation *op)
298{
299 struct fscache_object *object = op->object;
300 int ret;
301
302 _enter("OBJ%x OP%x}", op->object->debug_id, op->debug_id);
303
304 spin_lock(&object->lock);
305
306 ret = -EBUSY;
307 if (!list_empty(&op->pend_link)) {
308 fscache_stat(&fscache_n_op_cancelled);
309 list_del_init(&op->pend_link);
310 object->n_ops--;
311 if (test_bit(FSCACHE_OP_EXCLUSIVE, &op->flags))
312 object->n_exclusive--;
313 if (test_and_clear_bit(FSCACHE_OP_WAITING, &op->flags))
314 wake_up_bit(&op->flags, FSCACHE_OP_WAITING);
315 fscache_put_operation(op);
316 ret = 0;
317 }
318
319 spin_unlock(&object->lock);
320 _leave(" = %d", ret);
321 return ret;
322}
323
324/*
285 * release an operation 325 * release an operation
286 * - queues pending ops if this is the last in-progress op 326 * - queues pending ops if this is the last in-progress op
287 */ 327 */
@@ -298,6 +338,8 @@ void fscache_put_operation(struct fscache_operation *op)
298 if (!atomic_dec_and_test(&op->usage)) 338 if (!atomic_dec_and_test(&op->usage))
299 return; 339 return;
300 340
341 fscache_set_op_state(op, "Put");
342
301 _debug("PUT OP"); 343 _debug("PUT OP");
302 if (test_and_set_bit(FSCACHE_OP_DEAD, &op->flags)) 344 if (test_and_set_bit(FSCACHE_OP_DEAD, &op->flags))
303 BUG(); 345 BUG();
@@ -311,6 +353,9 @@ void fscache_put_operation(struct fscache_operation *op)
311 353
312 object = op->object; 354 object = op->object;
313 355
356 if (test_bit(FSCACHE_OP_DEC_READ_CNT, &op->flags))
357 atomic_dec(&object->n_reads);
358
314 /* now... we may get called with the object spinlock held, so we 359 /* now... we may get called with the object spinlock held, so we
315 * complete the cleanup here only if we can immediately acquire the 360 * complete the cleanup here only if we can immediately acquire the
316 * lock, and defer it otherwise */ 361 * lock, and defer it otherwise */
@@ -452,8 +497,27 @@ static void fscache_op_execute(struct slow_work *work)
452 _leave(""); 497 _leave("");
453} 498}
454 499
500/*
501 * describe an operation for slow-work debugging
502 */
503#ifdef CONFIG_SLOW_WORK_PROC
504static void fscache_op_desc(struct slow_work *work, struct seq_file *m)
505{
506 struct fscache_operation *op =
507 container_of(work, struct fscache_operation, slow_work);
508
509 seq_printf(m, "FSC: OBJ%x OP%x: %s/%s fl=%lx",
510 op->object->debug_id, op->debug_id,
511 op->name, op->state, op->flags);
512}
513#endif
514
455const struct slow_work_ops fscache_op_slow_work_ops = { 515const struct slow_work_ops fscache_op_slow_work_ops = {
516 .owner = THIS_MODULE,
456 .get_ref = fscache_op_get_ref, 517 .get_ref = fscache_op_get_ref,
457 .put_ref = fscache_op_put_ref, 518 .put_ref = fscache_op_put_ref,
458 .execute = fscache_op_execute, 519 .execute = fscache_op_execute,
520#ifdef CONFIG_SLOW_WORK_PROC
521 .desc = fscache_op_desc,
522#endif
459}; 523};
diff --git a/fs/fscache/page.c b/fs/fscache/page.c
index 2568e0eb644f..c598ea4c4e7d 100644
--- a/fs/fscache/page.c
+++ b/fs/fscache/page.c
@@ -43,18 +43,102 @@ void __fscache_wait_on_page_write(struct fscache_cookie *cookie, struct page *pa
43EXPORT_SYMBOL(__fscache_wait_on_page_write); 43EXPORT_SYMBOL(__fscache_wait_on_page_write);
44 44
45/* 45/*
46 * note that a page has finished being written to the cache 46 * decide whether a page can be released, possibly by cancelling a store to it
47 * - we're allowed to sleep if __GFP_WAIT is flagged
47 */ 48 */
48static void fscache_end_page_write(struct fscache_cookie *cookie, struct page *page) 49bool __fscache_maybe_release_page(struct fscache_cookie *cookie,
50 struct page *page,
51 gfp_t gfp)
49{ 52{
50 struct page *xpage; 53 struct page *xpage;
54 void *val;
55
56 _enter("%p,%p,%x", cookie, page, gfp);
57
58 rcu_read_lock();
59 val = radix_tree_lookup(&cookie->stores, page->index);
60 if (!val) {
61 rcu_read_unlock();
62 fscache_stat(&fscache_n_store_vmscan_not_storing);
63 __fscache_uncache_page(cookie, page);
64 return true;
65 }
66
67 /* see if the page is actually undergoing storage - if so we can't get
68 * rid of it till the cache has finished with it */
69 if (radix_tree_tag_get(&cookie->stores, page->index,
70 FSCACHE_COOKIE_STORING_TAG)) {
71 rcu_read_unlock();
72 goto page_busy;
73 }
74
75 /* the page is pending storage, so we attempt to cancel the store and
76 * discard the store request so that the page can be reclaimed */
77 spin_lock(&cookie->stores_lock);
78 rcu_read_unlock();
79
80 if (radix_tree_tag_get(&cookie->stores, page->index,
81 FSCACHE_COOKIE_STORING_TAG)) {
82 /* the page started to undergo storage whilst we were looking,
83 * so now we can only wait or return */
84 spin_unlock(&cookie->stores_lock);
85 goto page_busy;
86 }
51 87
52 spin_lock(&cookie->lock);
53 xpage = radix_tree_delete(&cookie->stores, page->index); 88 xpage = radix_tree_delete(&cookie->stores, page->index);
54 spin_unlock(&cookie->lock); 89 spin_unlock(&cookie->stores_lock);
55 ASSERT(xpage != NULL); 90
91 if (xpage) {
92 fscache_stat(&fscache_n_store_vmscan_cancelled);
93 fscache_stat(&fscache_n_store_radix_deletes);
94 ASSERTCMP(xpage, ==, page);
95 } else {
96 fscache_stat(&fscache_n_store_vmscan_gone);
97 }
56 98
57 wake_up_bit(&cookie->flags, 0); 99 wake_up_bit(&cookie->flags, 0);
100 if (xpage)
101 page_cache_release(xpage);
102 __fscache_uncache_page(cookie, page);
103 return true;
104
105page_busy:
106 /* we might want to wait here, but that could deadlock the allocator as
107 * the slow-work threads writing to the cache may all end up sleeping
108 * on memory allocation */
109 fscache_stat(&fscache_n_store_vmscan_busy);
110 return false;
111}
112EXPORT_SYMBOL(__fscache_maybe_release_page);
113
114/*
115 * note that a page has finished being written to the cache
116 */
117static void fscache_end_page_write(struct fscache_object *object,
118 struct page *page)
119{
120 struct fscache_cookie *cookie;
121 struct page *xpage = NULL;
122
123 spin_lock(&object->lock);
124 cookie = object->cookie;
125 if (cookie) {
126 /* delete the page from the tree if it is now no longer
127 * pending */
128 spin_lock(&cookie->stores_lock);
129 radix_tree_tag_clear(&cookie->stores, page->index,
130 FSCACHE_COOKIE_STORING_TAG);
131 if (!radix_tree_tag_get(&cookie->stores, page->index,
132 FSCACHE_COOKIE_PENDING_TAG)) {
133 fscache_stat(&fscache_n_store_radix_deletes);
134 xpage = radix_tree_delete(&cookie->stores, page->index);
135 }
136 spin_unlock(&cookie->stores_lock);
137 wake_up_bit(&cookie->flags, 0);
138 }
139 spin_unlock(&object->lock);
140 if (xpage)
141 page_cache_release(xpage);
58} 142}
59 143
60/* 144/*
@@ -63,14 +147,21 @@ static void fscache_end_page_write(struct fscache_cookie *cookie, struct page *p
63static void fscache_attr_changed_op(struct fscache_operation *op) 147static void fscache_attr_changed_op(struct fscache_operation *op)
64{ 148{
65 struct fscache_object *object = op->object; 149 struct fscache_object *object = op->object;
150 int ret;
66 151
67 _enter("{OBJ%x OP%x}", object->debug_id, op->debug_id); 152 _enter("{OBJ%x OP%x}", object->debug_id, op->debug_id);
68 153
69 fscache_stat(&fscache_n_attr_changed_calls); 154 fscache_stat(&fscache_n_attr_changed_calls);
70 155
71 if (fscache_object_is_active(object) && 156 if (fscache_object_is_active(object)) {
72 object->cache->ops->attr_changed(object) < 0) 157 fscache_set_op_state(op, "CallFS");
73 fscache_abort_object(object); 158 fscache_stat(&fscache_n_cop_attr_changed);
159 ret = object->cache->ops->attr_changed(object);
160 fscache_stat_d(&fscache_n_cop_attr_changed);
161 fscache_set_op_state(op, "Done");
162 if (ret < 0)
163 fscache_abort_object(object);
164 }
74 165
75 _leave(""); 166 _leave("");
76} 167}
@@ -99,6 +190,7 @@ int __fscache_attr_changed(struct fscache_cookie *cookie)
99 fscache_operation_init(op, NULL); 190 fscache_operation_init(op, NULL);
100 fscache_operation_init_slow(op, fscache_attr_changed_op); 191 fscache_operation_init_slow(op, fscache_attr_changed_op);
101 op->flags = FSCACHE_OP_SLOW | (1 << FSCACHE_OP_EXCLUSIVE); 192 op->flags = FSCACHE_OP_SLOW | (1 << FSCACHE_OP_EXCLUSIVE);
193 fscache_set_op_name(op, "Attr");
102 194
103 spin_lock(&cookie->lock); 195 spin_lock(&cookie->lock);
104 196
@@ -184,6 +276,7 @@ static struct fscache_retrieval *fscache_alloc_retrieval(
184 op->start_time = jiffies; 276 op->start_time = jiffies;
185 INIT_WORK(&op->op.fast_work, fscache_retrieval_work); 277 INIT_WORK(&op->op.fast_work, fscache_retrieval_work);
186 INIT_LIST_HEAD(&op->to_do); 278 INIT_LIST_HEAD(&op->to_do);
279 fscache_set_op_name(&op->op, "Retr");
187 return op; 280 return op;
188} 281}
189 282
@@ -221,6 +314,43 @@ static int fscache_wait_for_deferred_lookup(struct fscache_cookie *cookie)
221} 314}
222 315
223/* 316/*
317 * wait for an object to become active (or dead)
318 */
319static int fscache_wait_for_retrieval_activation(struct fscache_object *object,
320 struct fscache_retrieval *op,
321 atomic_t *stat_op_waits,
322 atomic_t *stat_object_dead)
323{
324 int ret;
325
326 if (!test_bit(FSCACHE_OP_WAITING, &op->op.flags))
327 goto check_if_dead;
328
329 _debug(">>> WT");
330 fscache_stat(stat_op_waits);
331 if (wait_on_bit(&op->op.flags, FSCACHE_OP_WAITING,
332 fscache_wait_bit_interruptible,
333 TASK_INTERRUPTIBLE) < 0) {
334 ret = fscache_cancel_op(&op->op);
335 if (ret == 0)
336 return -ERESTARTSYS;
337
338 /* it's been removed from the pending queue by another party,
339 * so we should get to run shortly */
340 wait_on_bit(&op->op.flags, FSCACHE_OP_WAITING,
341 fscache_wait_bit, TASK_UNINTERRUPTIBLE);
342 }
343 _debug("<<< GO");
344
345check_if_dead:
346 if (unlikely(fscache_object_is_dead(object))) {
347 fscache_stat(stat_object_dead);
348 return -ENOBUFS;
349 }
350 return 0;
351}
352
353/*
224 * read a page from the cache or allocate a block in which to store it 354 * read a page from the cache or allocate a block in which to store it
225 * - we return: 355 * - we return:
226 * -ENOMEM - out of memory, nothing done 356 * -ENOMEM - out of memory, nothing done
@@ -257,6 +387,7 @@ int __fscache_read_or_alloc_page(struct fscache_cookie *cookie,
257 _leave(" = -ENOMEM"); 387 _leave(" = -ENOMEM");
258 return -ENOMEM; 388 return -ENOMEM;
259 } 389 }
390 fscache_set_op_name(&op->op, "RetrRA1");
260 391
261 spin_lock(&cookie->lock); 392 spin_lock(&cookie->lock);
262 393
@@ -267,6 +398,9 @@ int __fscache_read_or_alloc_page(struct fscache_cookie *cookie,
267 398
268 ASSERTCMP(object->state, >, FSCACHE_OBJECT_LOOKING_UP); 399 ASSERTCMP(object->state, >, FSCACHE_OBJECT_LOOKING_UP);
269 400
401 atomic_inc(&object->n_reads);
402 set_bit(FSCACHE_OP_DEC_READ_CNT, &op->op.flags);
403
270 if (fscache_submit_op(object, &op->op) < 0) 404 if (fscache_submit_op(object, &op->op) < 0)
271 goto nobufs_unlock; 405 goto nobufs_unlock;
272 spin_unlock(&cookie->lock); 406 spin_unlock(&cookie->lock);
@@ -279,23 +413,27 @@ int __fscache_read_or_alloc_page(struct fscache_cookie *cookie,
279 413
280 /* we wait for the operation to become active, and then process it 414 /* we wait for the operation to become active, and then process it
281 * *here*, in this thread, and not in the thread pool */ 415 * *here*, in this thread, and not in the thread pool */
282 if (test_bit(FSCACHE_OP_WAITING, &op->op.flags)) { 416 ret = fscache_wait_for_retrieval_activation(
283 _debug(">>> WT"); 417 object, op,
284 fscache_stat(&fscache_n_retrieval_op_waits); 418 __fscache_stat(&fscache_n_retrieval_op_waits),
285 wait_on_bit(&op->op.flags, FSCACHE_OP_WAITING, 419 __fscache_stat(&fscache_n_retrievals_object_dead));
286 fscache_wait_bit, TASK_UNINTERRUPTIBLE); 420 if (ret < 0)
287 _debug("<<< GO"); 421 goto error;
288 }
289 422
290 /* ask the cache to honour the operation */ 423 /* ask the cache to honour the operation */
291 if (test_bit(FSCACHE_COOKIE_NO_DATA_YET, &object->cookie->flags)) { 424 if (test_bit(FSCACHE_COOKIE_NO_DATA_YET, &object->cookie->flags)) {
425 fscache_stat(&fscache_n_cop_allocate_page);
292 ret = object->cache->ops->allocate_page(op, page, gfp); 426 ret = object->cache->ops->allocate_page(op, page, gfp);
427 fscache_stat_d(&fscache_n_cop_allocate_page);
293 if (ret == 0) 428 if (ret == 0)
294 ret = -ENODATA; 429 ret = -ENODATA;
295 } else { 430 } else {
431 fscache_stat(&fscache_n_cop_read_or_alloc_page);
296 ret = object->cache->ops->read_or_alloc_page(op, page, gfp); 432 ret = object->cache->ops->read_or_alloc_page(op, page, gfp);
433 fscache_stat_d(&fscache_n_cop_read_or_alloc_page);
297 } 434 }
298 435
436error:
299 if (ret == -ENOMEM) 437 if (ret == -ENOMEM)
300 fscache_stat(&fscache_n_retrievals_nomem); 438 fscache_stat(&fscache_n_retrievals_nomem);
301 else if (ret == -ERESTARTSYS) 439 else if (ret == -ERESTARTSYS)
@@ -347,7 +485,6 @@ int __fscache_read_or_alloc_pages(struct fscache_cookie *cookie,
347 void *context, 485 void *context,
348 gfp_t gfp) 486 gfp_t gfp)
349{ 487{
350 fscache_pages_retrieval_func_t func;
351 struct fscache_retrieval *op; 488 struct fscache_retrieval *op;
352 struct fscache_object *object; 489 struct fscache_object *object;
353 int ret; 490 int ret;
@@ -369,6 +506,7 @@ int __fscache_read_or_alloc_pages(struct fscache_cookie *cookie,
369 op = fscache_alloc_retrieval(mapping, end_io_func, context); 506 op = fscache_alloc_retrieval(mapping, end_io_func, context);
370 if (!op) 507 if (!op)
371 return -ENOMEM; 508 return -ENOMEM;
509 fscache_set_op_name(&op->op, "RetrRAN");
372 510
373 spin_lock(&cookie->lock); 511 spin_lock(&cookie->lock);
374 512
@@ -377,6 +515,9 @@ int __fscache_read_or_alloc_pages(struct fscache_cookie *cookie,
377 object = hlist_entry(cookie->backing_objects.first, 515 object = hlist_entry(cookie->backing_objects.first,
378 struct fscache_object, cookie_link); 516 struct fscache_object, cookie_link);
379 517
518 atomic_inc(&object->n_reads);
519 set_bit(FSCACHE_OP_DEC_READ_CNT, &op->op.flags);
520
380 if (fscache_submit_op(object, &op->op) < 0) 521 if (fscache_submit_op(object, &op->op) < 0)
381 goto nobufs_unlock; 522 goto nobufs_unlock;
382 spin_unlock(&cookie->lock); 523 spin_unlock(&cookie->lock);
@@ -389,21 +530,27 @@ int __fscache_read_or_alloc_pages(struct fscache_cookie *cookie,
389 530
390 /* we wait for the operation to become active, and then process it 531 /* we wait for the operation to become active, and then process it
391 * *here*, in this thread, and not in the thread pool */ 532 * *here*, in this thread, and not in the thread pool */
392 if (test_bit(FSCACHE_OP_WAITING, &op->op.flags)) { 533 ret = fscache_wait_for_retrieval_activation(
393 _debug(">>> WT"); 534 object, op,
394 fscache_stat(&fscache_n_retrieval_op_waits); 535 __fscache_stat(&fscache_n_retrieval_op_waits),
395 wait_on_bit(&op->op.flags, FSCACHE_OP_WAITING, 536 __fscache_stat(&fscache_n_retrievals_object_dead));
396 fscache_wait_bit, TASK_UNINTERRUPTIBLE); 537 if (ret < 0)
397 _debug("<<< GO"); 538 goto error;
398 }
399 539
400 /* ask the cache to honour the operation */ 540 /* ask the cache to honour the operation */
401 if (test_bit(FSCACHE_COOKIE_NO_DATA_YET, &object->cookie->flags)) 541 if (test_bit(FSCACHE_COOKIE_NO_DATA_YET, &object->cookie->flags)) {
402 func = object->cache->ops->allocate_pages; 542 fscache_stat(&fscache_n_cop_allocate_pages);
403 else 543 ret = object->cache->ops->allocate_pages(
404 func = object->cache->ops->read_or_alloc_pages; 544 op, pages, nr_pages, gfp);
405 ret = func(op, pages, nr_pages, gfp); 545 fscache_stat_d(&fscache_n_cop_allocate_pages);
546 } else {
547 fscache_stat(&fscache_n_cop_read_or_alloc_pages);
548 ret = object->cache->ops->read_or_alloc_pages(
549 op, pages, nr_pages, gfp);
550 fscache_stat_d(&fscache_n_cop_read_or_alloc_pages);
551 }
406 552
553error:
407 if (ret == -ENOMEM) 554 if (ret == -ENOMEM)
408 fscache_stat(&fscache_n_retrievals_nomem); 555 fscache_stat(&fscache_n_retrievals_nomem);
409 else if (ret == -ERESTARTSYS) 556 else if (ret == -ERESTARTSYS)
@@ -461,6 +608,7 @@ int __fscache_alloc_page(struct fscache_cookie *cookie,
461 op = fscache_alloc_retrieval(page->mapping, NULL, NULL); 608 op = fscache_alloc_retrieval(page->mapping, NULL, NULL);
462 if (!op) 609 if (!op)
463 return -ENOMEM; 610 return -ENOMEM;
611 fscache_set_op_name(&op->op, "RetrAL1");
464 612
465 spin_lock(&cookie->lock); 613 spin_lock(&cookie->lock);
466 614
@@ -475,18 +623,22 @@ int __fscache_alloc_page(struct fscache_cookie *cookie,
475 623
476 fscache_stat(&fscache_n_alloc_ops); 624 fscache_stat(&fscache_n_alloc_ops);
477 625
478 if (test_bit(FSCACHE_OP_WAITING, &op->op.flags)) { 626 ret = fscache_wait_for_retrieval_activation(
479 _debug(">>> WT"); 627 object, op,
480 fscache_stat(&fscache_n_alloc_op_waits); 628 __fscache_stat(&fscache_n_alloc_op_waits),
481 wait_on_bit(&op->op.flags, FSCACHE_OP_WAITING, 629 __fscache_stat(&fscache_n_allocs_object_dead));
482 fscache_wait_bit, TASK_UNINTERRUPTIBLE); 630 if (ret < 0)
483 _debug("<<< GO"); 631 goto error;
484 }
485 632
486 /* ask the cache to honour the operation */ 633 /* ask the cache to honour the operation */
634 fscache_stat(&fscache_n_cop_allocate_page);
487 ret = object->cache->ops->allocate_page(op, page, gfp); 635 ret = object->cache->ops->allocate_page(op, page, gfp);
636 fscache_stat_d(&fscache_n_cop_allocate_page);
488 637
489 if (ret < 0) 638error:
639 if (ret == -ERESTARTSYS)
640 fscache_stat(&fscache_n_allocs_intr);
641 else if (ret < 0)
490 fscache_stat(&fscache_n_allocs_nobufs); 642 fscache_stat(&fscache_n_allocs_nobufs);
491 else 643 else
492 fscache_stat(&fscache_n_allocs_ok); 644 fscache_stat(&fscache_n_allocs_ok);
@@ -521,7 +673,7 @@ static void fscache_write_op(struct fscache_operation *_op)
521 struct fscache_storage *op = 673 struct fscache_storage *op =
522 container_of(_op, struct fscache_storage, op); 674 container_of(_op, struct fscache_storage, op);
523 struct fscache_object *object = op->op.object; 675 struct fscache_object *object = op->op.object;
524 struct fscache_cookie *cookie = object->cookie; 676 struct fscache_cookie *cookie;
525 struct page *page; 677 struct page *page;
526 unsigned n; 678 unsigned n;
527 void *results[1]; 679 void *results[1];
@@ -529,16 +681,19 @@ static void fscache_write_op(struct fscache_operation *_op)
529 681
530 _enter("{OP%x,%d}", op->op.debug_id, atomic_read(&op->op.usage)); 682 _enter("{OP%x,%d}", op->op.debug_id, atomic_read(&op->op.usage));
531 683
532 spin_lock(&cookie->lock); 684 fscache_set_op_state(&op->op, "GetPage");
685
533 spin_lock(&object->lock); 686 spin_lock(&object->lock);
687 cookie = object->cookie;
534 688
535 if (!fscache_object_is_active(object)) { 689 if (!fscache_object_is_active(object) || !cookie) {
536 spin_unlock(&object->lock); 690 spin_unlock(&object->lock);
537 spin_unlock(&cookie->lock);
538 _leave(""); 691 _leave("");
539 return; 692 return;
540 } 693 }
541 694
695 spin_lock(&cookie->stores_lock);
696
542 fscache_stat(&fscache_n_store_calls); 697 fscache_stat(&fscache_n_store_calls);
543 698
544 /* find a page to store */ 699 /* find a page to store */
@@ -549,23 +704,35 @@ static void fscache_write_op(struct fscache_operation *_op)
549 goto superseded; 704 goto superseded;
550 page = results[0]; 705 page = results[0];
551 _debug("gang %d [%lx]", n, page->index); 706 _debug("gang %d [%lx]", n, page->index);
552 if (page->index > op->store_limit) 707 if (page->index > op->store_limit) {
708 fscache_stat(&fscache_n_store_pages_over_limit);
553 goto superseded; 709 goto superseded;
710 }
554 711
555 radix_tree_tag_clear(&cookie->stores, page->index, 712 if (page) {
556 FSCACHE_COOKIE_PENDING_TAG); 713 radix_tree_tag_set(&cookie->stores, page->index,
714 FSCACHE_COOKIE_STORING_TAG);
715 radix_tree_tag_clear(&cookie->stores, page->index,
716 FSCACHE_COOKIE_PENDING_TAG);
717 }
557 718
719 spin_unlock(&cookie->stores_lock);
558 spin_unlock(&object->lock); 720 spin_unlock(&object->lock);
559 spin_unlock(&cookie->lock);
560 721
561 if (page) { 722 if (page) {
723 fscache_set_op_state(&op->op, "Store");
724 fscache_stat(&fscache_n_store_pages);
725 fscache_stat(&fscache_n_cop_write_page);
562 ret = object->cache->ops->write_page(op, page); 726 ret = object->cache->ops->write_page(op, page);
563 fscache_end_page_write(cookie, page); 727 fscache_stat_d(&fscache_n_cop_write_page);
564 page_cache_release(page); 728 fscache_set_op_state(&op->op, "EndWrite");
565 if (ret < 0) 729 fscache_end_page_write(object, page);
730 if (ret < 0) {
731 fscache_set_op_state(&op->op, "Abort");
566 fscache_abort_object(object); 732 fscache_abort_object(object);
567 else 733 } else {
568 fscache_enqueue_operation(&op->op); 734 fscache_enqueue_operation(&op->op);
735 }
569 } 736 }
570 737
571 _leave(""); 738 _leave("");
@@ -575,9 +742,9 @@ superseded:
575 /* this writer is going away and there aren't any more things to 742 /* this writer is going away and there aren't any more things to
576 * write */ 743 * write */
577 _debug("cease"); 744 _debug("cease");
745 spin_unlock(&cookie->stores_lock);
578 clear_bit(FSCACHE_OBJECT_PENDING_WRITE, &object->flags); 746 clear_bit(FSCACHE_OBJECT_PENDING_WRITE, &object->flags);
579 spin_unlock(&object->lock); 747 spin_unlock(&object->lock);
580 spin_unlock(&cookie->lock);
581 _leave(""); 748 _leave("");
582} 749}
583 750
@@ -634,6 +801,7 @@ int __fscache_write_page(struct fscache_cookie *cookie,
634 fscache_operation_init(&op->op, fscache_release_write_op); 801 fscache_operation_init(&op->op, fscache_release_write_op);
635 fscache_operation_init_slow(&op->op, fscache_write_op); 802 fscache_operation_init_slow(&op->op, fscache_write_op);
636 op->op.flags = FSCACHE_OP_SLOW | (1 << FSCACHE_OP_WAITING); 803 op->op.flags = FSCACHE_OP_SLOW | (1 << FSCACHE_OP_WAITING);
804 fscache_set_op_name(&op->op, "Write1");
637 805
638 ret = radix_tree_preload(gfp & ~__GFP_HIGHMEM); 806 ret = radix_tree_preload(gfp & ~__GFP_HIGHMEM);
639 if (ret < 0) 807 if (ret < 0)
@@ -652,6 +820,7 @@ int __fscache_write_page(struct fscache_cookie *cookie,
652 /* add the page to the pending-storage radix tree on the backing 820 /* add the page to the pending-storage radix tree on the backing
653 * object */ 821 * object */
654 spin_lock(&object->lock); 822 spin_lock(&object->lock);
823 spin_lock(&cookie->stores_lock);
655 824
656 _debug("store limit %llx", (unsigned long long) object->store_limit); 825 _debug("store limit %llx", (unsigned long long) object->store_limit);
657 826
@@ -672,6 +841,7 @@ int __fscache_write_page(struct fscache_cookie *cookie,
672 if (test_and_set_bit(FSCACHE_OBJECT_PENDING_WRITE, &object->flags)) 841 if (test_and_set_bit(FSCACHE_OBJECT_PENDING_WRITE, &object->flags))
673 goto already_pending; 842 goto already_pending;
674 843
844 spin_unlock(&cookie->stores_lock);
675 spin_unlock(&object->lock); 845 spin_unlock(&object->lock);
676 846
677 op->op.debug_id = atomic_inc_return(&fscache_op_debug_id); 847 op->op.debug_id = atomic_inc_return(&fscache_op_debug_id);
@@ -693,6 +863,7 @@ int __fscache_write_page(struct fscache_cookie *cookie,
693already_queued: 863already_queued:
694 fscache_stat(&fscache_n_stores_again); 864 fscache_stat(&fscache_n_stores_again);
695already_pending: 865already_pending:
866 spin_unlock(&cookie->stores_lock);
696 spin_unlock(&object->lock); 867 spin_unlock(&object->lock);
697 spin_unlock(&cookie->lock); 868 spin_unlock(&cookie->lock);
698 radix_tree_preload_end(); 869 radix_tree_preload_end();
@@ -702,7 +873,9 @@ already_pending:
702 return 0; 873 return 0;
703 874
704submit_failed: 875submit_failed:
876 spin_lock(&cookie->stores_lock);
705 radix_tree_delete(&cookie->stores, page->index); 877 radix_tree_delete(&cookie->stores, page->index);
878 spin_unlock(&cookie->stores_lock);
706 page_cache_release(page); 879 page_cache_release(page);
707 ret = -ENOBUFS; 880 ret = -ENOBUFS;
708 goto nobufs; 881 goto nobufs;
@@ -763,7 +936,9 @@ void __fscache_uncache_page(struct fscache_cookie *cookie, struct page *page)
763 if (TestClearPageFsCache(page) && 936 if (TestClearPageFsCache(page) &&
764 object->cache->ops->uncache_page) { 937 object->cache->ops->uncache_page) {
765 /* the cache backend releases the cookie lock */ 938 /* the cache backend releases the cookie lock */
939 fscache_stat(&fscache_n_cop_uncache_page);
766 object->cache->ops->uncache_page(object, page); 940 object->cache->ops->uncache_page(object, page);
941 fscache_stat_d(&fscache_n_cop_uncache_page);
767 goto done; 942 goto done;
768 } 943 }
769 944
diff --git a/fs/fscache/proc.c b/fs/fscache/proc.c
index beeab44bc31a..1d9e4951a597 100644
--- a/fs/fscache/proc.c
+++ b/fs/fscache/proc.c
@@ -37,10 +37,20 @@ int __init fscache_proc_init(void)
37 goto error_histogram; 37 goto error_histogram;
38#endif 38#endif
39 39
40#ifdef CONFIG_FSCACHE_OBJECT_LIST
41 if (!proc_create("fs/fscache/objects", S_IFREG | 0444, NULL,
42 &fscache_objlist_fops))
43 goto error_objects;
44#endif
45
40 _leave(" = 0"); 46 _leave(" = 0");
41 return 0; 47 return 0;
42 48
49#ifdef CONFIG_FSCACHE_OBJECT_LIST
50error_objects:
51#endif
43#ifdef CONFIG_FSCACHE_HISTOGRAM 52#ifdef CONFIG_FSCACHE_HISTOGRAM
53 remove_proc_entry("fs/fscache/histogram", NULL);
44error_histogram: 54error_histogram:
45#endif 55#endif
46#ifdef CONFIG_FSCACHE_STATS 56#ifdef CONFIG_FSCACHE_STATS
@@ -58,6 +68,9 @@ error_dir:
58 */ 68 */
59void fscache_proc_cleanup(void) 69void fscache_proc_cleanup(void)
60{ 70{
71#ifdef CONFIG_FSCACHE_OBJECT_LIST
72 remove_proc_entry("fs/fscache/objects", NULL);
73#endif
61#ifdef CONFIG_FSCACHE_HISTOGRAM 74#ifdef CONFIG_FSCACHE_HISTOGRAM
62 remove_proc_entry("fs/fscache/histogram", NULL); 75 remove_proc_entry("fs/fscache/histogram", NULL);
63#endif 76#endif
diff --git a/fs/fscache/stats.c b/fs/fscache/stats.c
index 65deb99e756b..46435f3aae68 100644
--- a/fs/fscache/stats.c
+++ b/fs/fscache/stats.c
@@ -25,6 +25,8 @@ atomic_t fscache_n_op_requeue;
25atomic_t fscache_n_op_deferred_release; 25atomic_t fscache_n_op_deferred_release;
26atomic_t fscache_n_op_release; 26atomic_t fscache_n_op_release;
27atomic_t fscache_n_op_gc; 27atomic_t fscache_n_op_gc;
28atomic_t fscache_n_op_cancelled;
29atomic_t fscache_n_op_rejected;
28 30
29atomic_t fscache_n_attr_changed; 31atomic_t fscache_n_attr_changed;
30atomic_t fscache_n_attr_changed_ok; 32atomic_t fscache_n_attr_changed_ok;
@@ -36,6 +38,8 @@ atomic_t fscache_n_allocs;
36atomic_t fscache_n_allocs_ok; 38atomic_t fscache_n_allocs_ok;
37atomic_t fscache_n_allocs_wait; 39atomic_t fscache_n_allocs_wait;
38atomic_t fscache_n_allocs_nobufs; 40atomic_t fscache_n_allocs_nobufs;
41atomic_t fscache_n_allocs_intr;
42atomic_t fscache_n_allocs_object_dead;
39atomic_t fscache_n_alloc_ops; 43atomic_t fscache_n_alloc_ops;
40atomic_t fscache_n_alloc_op_waits; 44atomic_t fscache_n_alloc_op_waits;
41 45
@@ -46,6 +50,7 @@ atomic_t fscache_n_retrievals_nodata;
46atomic_t fscache_n_retrievals_nobufs; 50atomic_t fscache_n_retrievals_nobufs;
47atomic_t fscache_n_retrievals_intr; 51atomic_t fscache_n_retrievals_intr;
48atomic_t fscache_n_retrievals_nomem; 52atomic_t fscache_n_retrievals_nomem;
53atomic_t fscache_n_retrievals_object_dead;
49atomic_t fscache_n_retrieval_ops; 54atomic_t fscache_n_retrieval_ops;
50atomic_t fscache_n_retrieval_op_waits; 55atomic_t fscache_n_retrieval_op_waits;
51 56
@@ -56,6 +61,14 @@ atomic_t fscache_n_stores_nobufs;
56atomic_t fscache_n_stores_oom; 61atomic_t fscache_n_stores_oom;
57atomic_t fscache_n_store_ops; 62atomic_t fscache_n_store_ops;
58atomic_t fscache_n_store_calls; 63atomic_t fscache_n_store_calls;
64atomic_t fscache_n_store_pages;
65atomic_t fscache_n_store_radix_deletes;
66atomic_t fscache_n_store_pages_over_limit;
67
68atomic_t fscache_n_store_vmscan_not_storing;
69atomic_t fscache_n_store_vmscan_gone;
70atomic_t fscache_n_store_vmscan_busy;
71atomic_t fscache_n_store_vmscan_cancelled;
59 72
60atomic_t fscache_n_marks; 73atomic_t fscache_n_marks;
61atomic_t fscache_n_uncaches; 74atomic_t fscache_n_uncaches;
@@ -74,6 +87,7 @@ atomic_t fscache_n_updates_run;
74atomic_t fscache_n_relinquishes; 87atomic_t fscache_n_relinquishes;
75atomic_t fscache_n_relinquishes_null; 88atomic_t fscache_n_relinquishes_null;
76atomic_t fscache_n_relinquishes_waitcrt; 89atomic_t fscache_n_relinquishes_waitcrt;
90atomic_t fscache_n_relinquishes_retire;
77 91
78atomic_t fscache_n_cookie_index; 92atomic_t fscache_n_cookie_index;
79atomic_t fscache_n_cookie_data; 93atomic_t fscache_n_cookie_data;
@@ -84,6 +98,7 @@ atomic_t fscache_n_object_no_alloc;
84atomic_t fscache_n_object_lookups; 98atomic_t fscache_n_object_lookups;
85atomic_t fscache_n_object_lookups_negative; 99atomic_t fscache_n_object_lookups_negative;
86atomic_t fscache_n_object_lookups_positive; 100atomic_t fscache_n_object_lookups_positive;
101atomic_t fscache_n_object_lookups_timed_out;
87atomic_t fscache_n_object_created; 102atomic_t fscache_n_object_created;
88atomic_t fscache_n_object_avail; 103atomic_t fscache_n_object_avail;
89atomic_t fscache_n_object_dead; 104atomic_t fscache_n_object_dead;
@@ -93,6 +108,23 @@ atomic_t fscache_n_checkaux_okay;
93atomic_t fscache_n_checkaux_update; 108atomic_t fscache_n_checkaux_update;
94atomic_t fscache_n_checkaux_obsolete; 109atomic_t fscache_n_checkaux_obsolete;
95 110
111atomic_t fscache_n_cop_alloc_object;
112atomic_t fscache_n_cop_lookup_object;
113atomic_t fscache_n_cop_lookup_complete;
114atomic_t fscache_n_cop_grab_object;
115atomic_t fscache_n_cop_update_object;
116atomic_t fscache_n_cop_drop_object;
117atomic_t fscache_n_cop_put_object;
118atomic_t fscache_n_cop_sync_cache;
119atomic_t fscache_n_cop_attr_changed;
120atomic_t fscache_n_cop_read_or_alloc_page;
121atomic_t fscache_n_cop_read_or_alloc_pages;
122atomic_t fscache_n_cop_allocate_page;
123atomic_t fscache_n_cop_allocate_pages;
124atomic_t fscache_n_cop_write_page;
125atomic_t fscache_n_cop_uncache_page;
126atomic_t fscache_n_cop_dissociate_pages;
127
96/* 128/*
97 * display the general statistics 129 * display the general statistics
98 */ 130 */
@@ -129,10 +161,11 @@ static int fscache_stats_show(struct seq_file *m, void *v)
129 atomic_read(&fscache_n_acquires_nobufs), 161 atomic_read(&fscache_n_acquires_nobufs),
130 atomic_read(&fscache_n_acquires_oom)); 162 atomic_read(&fscache_n_acquires_oom));
131 163
132 seq_printf(m, "Lookups: n=%u neg=%u pos=%u crt=%u\n", 164 seq_printf(m, "Lookups: n=%u neg=%u pos=%u crt=%u tmo=%u\n",
133 atomic_read(&fscache_n_object_lookups), 165 atomic_read(&fscache_n_object_lookups),
134 atomic_read(&fscache_n_object_lookups_negative), 166 atomic_read(&fscache_n_object_lookups_negative),
135 atomic_read(&fscache_n_object_lookups_positive), 167 atomic_read(&fscache_n_object_lookups_positive),
168 atomic_read(&fscache_n_object_lookups_timed_out),
136 atomic_read(&fscache_n_object_created)); 169 atomic_read(&fscache_n_object_created));
137 170
138 seq_printf(m, "Updates: n=%u nul=%u run=%u\n", 171 seq_printf(m, "Updates: n=%u nul=%u run=%u\n",
@@ -140,10 +173,11 @@ static int fscache_stats_show(struct seq_file *m, void *v)
140 atomic_read(&fscache_n_updates_null), 173 atomic_read(&fscache_n_updates_null),
141 atomic_read(&fscache_n_updates_run)); 174 atomic_read(&fscache_n_updates_run));
142 175
143 seq_printf(m, "Relinqs: n=%u nul=%u wcr=%u\n", 176 seq_printf(m, "Relinqs: n=%u nul=%u wcr=%u rtr=%u\n",
144 atomic_read(&fscache_n_relinquishes), 177 atomic_read(&fscache_n_relinquishes),
145 atomic_read(&fscache_n_relinquishes_null), 178 atomic_read(&fscache_n_relinquishes_null),
146 atomic_read(&fscache_n_relinquishes_waitcrt)); 179 atomic_read(&fscache_n_relinquishes_waitcrt),
180 atomic_read(&fscache_n_relinquishes_retire));
147 181
148 seq_printf(m, "AttrChg: n=%u ok=%u nbf=%u oom=%u run=%u\n", 182 seq_printf(m, "AttrChg: n=%u ok=%u nbf=%u oom=%u run=%u\n",
149 atomic_read(&fscache_n_attr_changed), 183 atomic_read(&fscache_n_attr_changed),
@@ -152,14 +186,16 @@ static int fscache_stats_show(struct seq_file *m, void *v)
152 atomic_read(&fscache_n_attr_changed_nomem), 186 atomic_read(&fscache_n_attr_changed_nomem),
153 atomic_read(&fscache_n_attr_changed_calls)); 187 atomic_read(&fscache_n_attr_changed_calls));
154 188
155 seq_printf(m, "Allocs : n=%u ok=%u wt=%u nbf=%u\n", 189 seq_printf(m, "Allocs : n=%u ok=%u wt=%u nbf=%u int=%u\n",
156 atomic_read(&fscache_n_allocs), 190 atomic_read(&fscache_n_allocs),
157 atomic_read(&fscache_n_allocs_ok), 191 atomic_read(&fscache_n_allocs_ok),
158 atomic_read(&fscache_n_allocs_wait), 192 atomic_read(&fscache_n_allocs_wait),
159 atomic_read(&fscache_n_allocs_nobufs)); 193 atomic_read(&fscache_n_allocs_nobufs),
160 seq_printf(m, "Allocs : ops=%u owt=%u\n", 194 atomic_read(&fscache_n_allocs_intr));
195 seq_printf(m, "Allocs : ops=%u owt=%u abt=%u\n",
161 atomic_read(&fscache_n_alloc_ops), 196 atomic_read(&fscache_n_alloc_ops),
162 atomic_read(&fscache_n_alloc_op_waits)); 197 atomic_read(&fscache_n_alloc_op_waits),
198 atomic_read(&fscache_n_allocs_object_dead));
163 199
164 seq_printf(m, "Retrvls: n=%u ok=%u wt=%u nod=%u nbf=%u" 200 seq_printf(m, "Retrvls: n=%u ok=%u wt=%u nod=%u nbf=%u"
165 " int=%u oom=%u\n", 201 " int=%u oom=%u\n",
@@ -170,9 +206,10 @@ static int fscache_stats_show(struct seq_file *m, void *v)
170 atomic_read(&fscache_n_retrievals_nobufs), 206 atomic_read(&fscache_n_retrievals_nobufs),
171 atomic_read(&fscache_n_retrievals_intr), 207 atomic_read(&fscache_n_retrievals_intr),
172 atomic_read(&fscache_n_retrievals_nomem)); 208 atomic_read(&fscache_n_retrievals_nomem));
173 seq_printf(m, "Retrvls: ops=%u owt=%u\n", 209 seq_printf(m, "Retrvls: ops=%u owt=%u abt=%u\n",
174 atomic_read(&fscache_n_retrieval_ops), 210 atomic_read(&fscache_n_retrieval_ops),
175 atomic_read(&fscache_n_retrieval_op_waits)); 211 atomic_read(&fscache_n_retrieval_op_waits),
212 atomic_read(&fscache_n_retrievals_object_dead));
176 213
177 seq_printf(m, "Stores : n=%u ok=%u agn=%u nbf=%u oom=%u\n", 214 seq_printf(m, "Stores : n=%u ok=%u agn=%u nbf=%u oom=%u\n",
178 atomic_read(&fscache_n_stores), 215 atomic_read(&fscache_n_stores),
@@ -180,18 +217,49 @@ static int fscache_stats_show(struct seq_file *m, void *v)
180 atomic_read(&fscache_n_stores_again), 217 atomic_read(&fscache_n_stores_again),
181 atomic_read(&fscache_n_stores_nobufs), 218 atomic_read(&fscache_n_stores_nobufs),
182 atomic_read(&fscache_n_stores_oom)); 219 atomic_read(&fscache_n_stores_oom));
183 seq_printf(m, "Stores : ops=%u run=%u\n", 220 seq_printf(m, "Stores : ops=%u run=%u pgs=%u rxd=%u olm=%u\n",
184 atomic_read(&fscache_n_store_ops), 221 atomic_read(&fscache_n_store_ops),
185 atomic_read(&fscache_n_store_calls)); 222 atomic_read(&fscache_n_store_calls),
223 atomic_read(&fscache_n_store_pages),
224 atomic_read(&fscache_n_store_radix_deletes),
225 atomic_read(&fscache_n_store_pages_over_limit));
186 226
187 seq_printf(m, "Ops : pend=%u run=%u enq=%u\n", 227 seq_printf(m, "VmScan : nos=%u gon=%u bsy=%u can=%u\n",
228 atomic_read(&fscache_n_store_vmscan_not_storing),
229 atomic_read(&fscache_n_store_vmscan_gone),
230 atomic_read(&fscache_n_store_vmscan_busy),
231 atomic_read(&fscache_n_store_vmscan_cancelled));
232
233 seq_printf(m, "Ops : pend=%u run=%u enq=%u can=%u rej=%u\n",
188 atomic_read(&fscache_n_op_pend), 234 atomic_read(&fscache_n_op_pend),
189 atomic_read(&fscache_n_op_run), 235 atomic_read(&fscache_n_op_run),
190 atomic_read(&fscache_n_op_enqueue)); 236 atomic_read(&fscache_n_op_enqueue),
237 atomic_read(&fscache_n_op_cancelled),
238 atomic_read(&fscache_n_op_rejected));
191 seq_printf(m, "Ops : dfr=%u rel=%u gc=%u\n", 239 seq_printf(m, "Ops : dfr=%u rel=%u gc=%u\n",
192 atomic_read(&fscache_n_op_deferred_release), 240 atomic_read(&fscache_n_op_deferred_release),
193 atomic_read(&fscache_n_op_release), 241 atomic_read(&fscache_n_op_release),
194 atomic_read(&fscache_n_op_gc)); 242 atomic_read(&fscache_n_op_gc));
243
244 seq_printf(m, "CacheOp: alo=%d luo=%d luc=%d gro=%d\n",
245 atomic_read(&fscache_n_cop_alloc_object),
246 atomic_read(&fscache_n_cop_lookup_object),
247 atomic_read(&fscache_n_cop_lookup_complete),
248 atomic_read(&fscache_n_cop_grab_object));
249 seq_printf(m, "CacheOp: upo=%d dro=%d pto=%d atc=%d syn=%d\n",
250 atomic_read(&fscache_n_cop_update_object),
251 atomic_read(&fscache_n_cop_drop_object),
252 atomic_read(&fscache_n_cop_put_object),
253 atomic_read(&fscache_n_cop_attr_changed),
254 atomic_read(&fscache_n_cop_sync_cache));
255 seq_printf(m, "CacheOp: rap=%d ras=%d alp=%d als=%d wrp=%d ucp=%d dsp=%d\n",
256 atomic_read(&fscache_n_cop_read_or_alloc_page),
257 atomic_read(&fscache_n_cop_read_or_alloc_pages),
258 atomic_read(&fscache_n_cop_allocate_page),
259 atomic_read(&fscache_n_cop_allocate_pages),
260 atomic_read(&fscache_n_cop_write_page),
261 atomic_read(&fscache_n_cop_uncache_page),
262 atomic_read(&fscache_n_cop_dissociate_pages));
195 return 0; 263 return 0;
196} 264}
197 265
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
index 992f6c9410bb..4787ae6c5c1c 100644
--- a/fs/fuse/dir.c
+++ b/fs/fuse/dir.c
@@ -385,6 +385,9 @@ static int fuse_create_open(struct inode *dir, struct dentry *entry, int mode,
385 if (fc->no_create) 385 if (fc->no_create)
386 return -ENOSYS; 386 return -ENOSYS;
387 387
388 if (flags & O_DIRECT)
389 return -EINVAL;
390
388 forget_req = fuse_get_req(fc); 391 forget_req = fuse_get_req(fc);
389 if (IS_ERR(forget_req)) 392 if (IS_ERR(forget_req))
390 return PTR_ERR(forget_req); 393 return PTR_ERR(forget_req);
@@ -712,8 +715,10 @@ static int fuse_rename(struct inode *olddir, struct dentry *oldent,
712 fuse_invalidate_attr(newdir); 715 fuse_invalidate_attr(newdir);
713 716
714 /* newent will end up negative */ 717 /* newent will end up negative */
715 if (newent->d_inode) 718 if (newent->d_inode) {
719 fuse_invalidate_attr(newent->d_inode);
716 fuse_invalidate_entry_cache(newent); 720 fuse_invalidate_entry_cache(newent);
721 }
717 } else if (err == -EINTR) { 722 } else if (err == -EINTR) {
718 /* If request was interrupted, DEITY only knows if the 723 /* If request was interrupted, DEITY only knows if the
719 rename actually took place. If the invalidation 724 rename actually took place. If the invalidation
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index a3492f7d207c..c18913a777ae 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -1063,7 +1063,8 @@ ssize_t fuse_direct_io(struct file *file, const char __user *buf,
1063 break; 1063 break;
1064 } 1064 }
1065 } 1065 }
1066 fuse_put_request(fc, req); 1066 if (!IS_ERR(req))
1067 fuse_put_request(fc, req);
1067 if (res > 0) 1068 if (res > 0)
1068 *ppos = pos; 1069 *ppos = pos;
1069 1070
@@ -1599,7 +1600,7 @@ static int fuse_ioctl_copy_user(struct page **pages, struct iovec *iov,
1599 kaddr += copy; 1600 kaddr += copy;
1600 } 1601 }
1601 1602
1602 kunmap(map); 1603 kunmap(page);
1603 } 1604 }
1604 1605
1605 return 0; 1606 return 0;
diff --git a/fs/gfs2/main.c b/fs/gfs2/main.c
index eacd78a5d082..5b31f7741a8f 100644
--- a/fs/gfs2/main.c
+++ b/fs/gfs2/main.c
@@ -114,7 +114,7 @@ static int __init init_gfs2_fs(void)
114 if (error) 114 if (error)
115 goto fail_unregister; 115 goto fail_unregister;
116 116
117 error = slow_work_register_user(); 117 error = slow_work_register_user(THIS_MODULE);
118 if (error) 118 if (error)
119 goto fail_slow; 119 goto fail_slow;
120 120
@@ -163,7 +163,7 @@ static void __exit exit_gfs2_fs(void)
163 gfs2_unregister_debugfs(); 163 gfs2_unregister_debugfs();
164 unregister_filesystem(&gfs2_fs_type); 164 unregister_filesystem(&gfs2_fs_type);
165 unregister_filesystem(&gfs2meta_fs_type); 165 unregister_filesystem(&gfs2meta_fs_type);
166 slow_work_unregister_user(); 166 slow_work_unregister_user(THIS_MODULE);
167 167
168 kmem_cache_destroy(gfs2_quotad_cachep); 168 kmem_cache_destroy(gfs2_quotad_cachep);
169 kmem_cache_destroy(gfs2_rgrpd_cachep); 169 kmem_cache_destroy(gfs2_rgrpd_cachep);
diff --git a/fs/gfs2/recovery.c b/fs/gfs2/recovery.c
index 59d2695509d3..09fa31965576 100644
--- a/fs/gfs2/recovery.c
+++ b/fs/gfs2/recovery.c
@@ -7,6 +7,7 @@
7 * of the GNU General Public License version 2. 7 * of the GNU General Public License version 2.
8 */ 8 */
9 9
10#include <linux/module.h>
10#include <linux/slab.h> 11#include <linux/slab.h>
11#include <linux/spinlock.h> 12#include <linux/spinlock.h>
12#include <linux/completion.h> 13#include <linux/completion.h>
@@ -593,6 +594,7 @@ fail:
593} 594}
594 595
595struct slow_work_ops gfs2_recover_ops = { 596struct slow_work_ops gfs2_recover_ops = {
597 .owner = THIS_MODULE,
596 .get_ref = gfs2_recover_get_ref, 598 .get_ref = gfs2_recover_get_ref,
597 .put_ref = gfs2_recover_put_ref, 599 .put_ref = gfs2_recover_put_ref,
598 .execute = gfs2_recover_work, 600 .execute = gfs2_recover_work,
diff --git a/fs/hfs/btree.c b/fs/hfs/btree.c
index 9b9d6395bad3..052f214ea6f0 100644
--- a/fs/hfs/btree.c
+++ b/fs/hfs/btree.c
@@ -58,6 +58,11 @@ struct hfs_btree *hfs_btree_open(struct super_block *sb, u32 id, btree_keycmp ke
58 } 58 }
59 unlock_new_inode(tree->inode); 59 unlock_new_inode(tree->inode);
60 60
61 if (!HFS_I(tree->inode)->first_blocks) {
62 printk(KERN_ERR "hfs: invalid btree extent records (0 size).\n");
63 goto free_inode;
64 }
65
61 mapping = tree->inode->i_mapping; 66 mapping = tree->inode->i_mapping;
62 page = read_mapping_page(mapping, 0, NULL); 67 page = read_mapping_page(mapping, 0, NULL);
63 if (IS_ERR(page)) 68 if (IS_ERR(page))
diff --git a/fs/hfsplus/wrapper.c b/fs/hfsplus/wrapper.c
index 175d08eacc86..bed78ac8f6d1 100644
--- a/fs/hfsplus/wrapper.c
+++ b/fs/hfsplus/wrapper.c
@@ -99,6 +99,10 @@ int hfsplus_read_wrapper(struct super_block *sb)
99 99
100 if (hfsplus_get_last_session(sb, &part_start, &part_size)) 100 if (hfsplus_get_last_session(sb, &part_start, &part_size))
101 return -EINVAL; 101 return -EINVAL;
102 if ((u64)part_start + part_size > 0x100000000ULL) {
103 pr_err("hfs: volumes larger than 2TB are not supported yet\n");
104 return -EINVAL;
105 }
102 while (1) { 106 while (1) {
103 bh = sb_bread512(sb, part_start + HFSPLUS_VOLHEAD_SECTOR, vhdr); 107 bh = sb_bread512(sb, part_start + HFSPLUS_VOLHEAD_SECTOR, vhdr);
104 if (!bh) 108 if (!bh)
diff --git a/fs/ioctl.c b/fs/ioctl.c
index 7b17a14396ff..6c751106c2e5 100644
--- a/fs/ioctl.c
+++ b/fs/ioctl.c
@@ -254,7 +254,7 @@ int __generic_block_fiemap(struct inode *inode,
254 u64 len, get_block_t *get_block) 254 u64 len, get_block_t *get_block)
255{ 255{
256 struct buffer_head tmp; 256 struct buffer_head tmp;
257 unsigned int start_blk; 257 unsigned long long start_blk;
258 long long length = 0, map_len = 0; 258 long long length = 0, map_len = 0;
259 u64 logical = 0, phys = 0, size = 0; 259 u64 logical = 0, phys = 0, size = 0;
260 u32 flags = FIEMAP_EXTENT_MERGED; 260 u32 flags = FIEMAP_EXTENT_MERGED;
diff --git a/fs/jbd/journal.c b/fs/jbd/journal.c
index bd3c073b485d..4160afad6d00 100644
--- a/fs/jbd/journal.c
+++ b/fs/jbd/journal.c
@@ -73,6 +73,7 @@ EXPORT_SYMBOL(journal_errno);
73EXPORT_SYMBOL(journal_ack_err); 73EXPORT_SYMBOL(journal_ack_err);
74EXPORT_SYMBOL(journal_clear_err); 74EXPORT_SYMBOL(journal_clear_err);
75EXPORT_SYMBOL(log_wait_commit); 75EXPORT_SYMBOL(log_wait_commit);
76EXPORT_SYMBOL(log_start_commit);
76EXPORT_SYMBOL(journal_start_commit); 77EXPORT_SYMBOL(journal_start_commit);
77EXPORT_SYMBOL(journal_force_commit_nested); 78EXPORT_SYMBOL(journal_force_commit_nested);
78EXPORT_SYMBOL(journal_wipe); 79EXPORT_SYMBOL(journal_wipe);
@@ -756,6 +757,7 @@ journal_t * journal_init_dev(struct block_device *bdev,
756 757
757 return journal; 758 return journal;
758out_err: 759out_err:
760 kfree(journal->j_wbuf);
759 kfree(journal); 761 kfree(journal);
760 return NULL; 762 return NULL;
761} 763}
@@ -820,6 +822,7 @@ journal_t * journal_init_inode (struct inode *inode)
820 822
821 return journal; 823 return journal;
822out_err: 824out_err:
825 kfree(journal->j_wbuf);
823 kfree(journal); 826 kfree(journal);
824 return NULL; 827 return NULL;
825} 828}
diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
index b0ab5219becb..fed85388ee86 100644
--- a/fs/jbd2/journal.c
+++ b/fs/jbd2/journal.c
@@ -913,6 +913,7 @@ journal_t * jbd2_journal_init_dev(struct block_device *bdev,
913 913
914 return journal; 914 return journal;
915out_err: 915out_err:
916 kfree(journal->j_wbuf);
916 jbd2_stats_proc_exit(journal); 917 jbd2_stats_proc_exit(journal);
917 kfree(journal); 918 kfree(journal);
918 return NULL; 919 return NULL;
@@ -986,6 +987,7 @@ journal_t * jbd2_journal_init_inode (struct inode *inode)
986 987
987 return journal; 988 return journal;
988out_err: 989out_err:
990 kfree(journal->j_wbuf);
989 jbd2_stats_proc_exit(journal); 991 jbd2_stats_proc_exit(journal);
990 kfree(journal); 992 kfree(journal);
991 return NULL; 993 return NULL;
diff --git a/fs/jffs2/read.c b/fs/jffs2/read.c
index cfe05c1966a5..3f39be1b0455 100644
--- a/fs/jffs2/read.c
+++ b/fs/jffs2/read.c
@@ -164,12 +164,15 @@ int jffs2_read_inode_range(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
164 164
165 /* XXX FIXME: Where a single physical node actually shows up in two 165 /* XXX FIXME: Where a single physical node actually shows up in two
166 frags, we read it twice. Don't do that. */ 166 frags, we read it twice. Don't do that. */
167 /* Now we're pointing at the first frag which overlaps our page */ 167 /* Now we're pointing at the first frag which overlaps our page
168 * (or perhaps is before it, if we've been asked to read off the
169 * end of the file). */
168 while(offset < end) { 170 while(offset < end) {
169 D2(printk(KERN_DEBUG "jffs2_read_inode_range: offset %d, end %d\n", offset, end)); 171 D2(printk(KERN_DEBUG "jffs2_read_inode_range: offset %d, end %d\n", offset, end));
170 if (unlikely(!frag || frag->ofs > offset)) { 172 if (unlikely(!frag || frag->ofs > offset ||
173 frag->ofs + frag->size <= offset)) {
171 uint32_t holesize = end - offset; 174 uint32_t holesize = end - offset;
172 if (frag) { 175 if (frag && frag->ofs > offset) {
173 D1(printk(KERN_NOTICE "Eep. Hole in ino #%u fraglist. frag->ofs = 0x%08x, offset = 0x%08x\n", f->inocache->ino, frag->ofs, offset)); 176 D1(printk(KERN_NOTICE "Eep. Hole in ino #%u fraglist. frag->ofs = 0x%08x, offset = 0x%08x\n", f->inocache->ino, frag->ofs, offset));
174 holesize = min(holesize, frag->ofs - offset); 177 holesize = min(holesize, frag->ofs - offset);
175 } 178 }
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 32062c33c859..7cb298525eef 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -1536,6 +1536,8 @@ nfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry)
1536 old_dentry->d_parent->d_name.name, old_dentry->d_name.name, 1536 old_dentry->d_parent->d_name.name, old_dentry->d_name.name,
1537 dentry->d_parent->d_name.name, dentry->d_name.name); 1537 dentry->d_parent->d_name.name, dentry->d_name.name);
1538 1538
1539 nfs_inode_return_delegation(inode);
1540
1539 d_drop(dentry); 1541 d_drop(dentry);
1540 error = NFS_PROTO(dir)->link(inode, dir, &dentry->d_name); 1542 error = NFS_PROTO(dir)->link(inode, dir, &dentry->d_name);
1541 if (error == 0) { 1543 if (error == 0) {
diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
index 6c3210099d51..e1d415e97849 100644
--- a/fs/nfs/direct.c
+++ b/fs/nfs/direct.c
@@ -457,6 +457,7 @@ static void nfs_direct_write_reschedule(struct nfs_direct_req *dreq)
457 }; 457 };
458 struct rpc_task_setup task_setup_data = { 458 struct rpc_task_setup task_setup_data = {
459 .rpc_client = NFS_CLIENT(inode), 459 .rpc_client = NFS_CLIENT(inode),
460 .rpc_message = &msg,
460 .callback_ops = &nfs_write_direct_ops, 461 .callback_ops = &nfs_write_direct_ops,
461 .workqueue = nfsiod_workqueue, 462 .workqueue = nfsiod_workqueue,
462 .flags = RPC_TASK_ASYNC, 463 .flags = RPC_TASK_ASYNC,
diff --git a/fs/nfs/fscache.c b/fs/nfs/fscache.c
index 70fad69eb959..fa588006588d 100644
--- a/fs/nfs/fscache.c
+++ b/fs/nfs/fscache.c
@@ -359,17 +359,13 @@ int nfs_fscache_release_page(struct page *page, gfp_t gfp)
359 359
360 BUG_ON(!cookie); 360 BUG_ON(!cookie);
361 361
362 if (fscache_check_page_write(cookie, page)) {
363 if (!(gfp & __GFP_WAIT))
364 return 0;
365 fscache_wait_on_page_write(cookie, page);
366 }
367
368 if (PageFsCache(page)) { 362 if (PageFsCache(page)) {
369 dfprintk(FSCACHE, "NFS: fscache releasepage (0x%p/0x%p/0x%p)\n", 363 dfprintk(FSCACHE, "NFS: fscache releasepage (0x%p/0x%p/0x%p)\n",
370 cookie, page, nfsi); 364 cookie, page, nfsi);
371 365
372 fscache_uncache_page(cookie, page); 366 if (!fscache_maybe_release_page(cookie, page, gfp))
367 return 0;
368
373 nfs_add_fscache_stats(page->mapping->host, 369 nfs_add_fscache_stats(page->mapping->host,
374 NFSIOS_FSCACHE_PAGES_UNCACHED, 1); 370 NFSIOS_FSCACHE_PAGES_UNCACHED, 1);
375 } 371 }
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index ed7c269e2514..741a562177fc 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -72,12 +72,17 @@ static int _nfs4_proc_getattr(struct nfs_server *server, struct nfs_fh *fhandle,
72/* Prevent leaks of NFSv4 errors into userland */ 72/* Prevent leaks of NFSv4 errors into userland */
73static int nfs4_map_errors(int err) 73static int nfs4_map_errors(int err)
74{ 74{
75 if (err < -1000) { 75 if (err >= -1000)
76 return err;
77 switch (err) {
78 case -NFS4ERR_RESOURCE:
79 return -EREMOTEIO;
80 default:
76 dprintk("%s could not handle NFSv4 error %d\n", 81 dprintk("%s could not handle NFSv4 error %d\n",
77 __func__, -err); 82 __func__, -err);
78 return -EIO; 83 break;
79 } 84 }
80 return err; 85 return -EIO;
81} 86}
82 87
83/* 88/*
@@ -2762,7 +2767,7 @@ static int _nfs4_proc_readdir(struct dentry *dentry, struct rpc_cred *cred,
2762 .pages = &page, 2767 .pages = &page,
2763 .pgbase = 0, 2768 .pgbase = 0,
2764 .count = count, 2769 .count = count,
2765 .bitmask = NFS_SERVER(dentry->d_inode)->cache_consistency_bitmask, 2770 .bitmask = NFS_SERVER(dentry->d_inode)->attr_bitmask,
2766 }; 2771 };
2767 struct nfs4_readdir_res res; 2772 struct nfs4_readdir_res res;
2768 struct rpc_message msg = { 2773 struct rpc_message msg = {
@@ -3060,9 +3065,6 @@ static void nfs4_renew_done(struct rpc_task *task, void *data)
3060 if (time_before(clp->cl_last_renewal,timestamp)) 3065 if (time_before(clp->cl_last_renewal,timestamp))
3061 clp->cl_last_renewal = timestamp; 3066 clp->cl_last_renewal = timestamp;
3062 spin_unlock(&clp->cl_lock); 3067 spin_unlock(&clp->cl_lock);
3063 dprintk("%s calling put_rpccred on rpc_cred %p\n", __func__,
3064 task->tk_msg.rpc_cred);
3065 put_rpccred(task->tk_msg.rpc_cred);
3066} 3068}
3067 3069
3068static const struct rpc_call_ops nfs4_renew_ops = { 3070static const struct rpc_call_ops nfs4_renew_ops = {
@@ -4877,7 +4879,6 @@ void nfs41_sequence_call_done(struct rpc_task *task, void *data)
4877 nfs41_sequence_free_slot(clp, task->tk_msg.rpc_resp); 4879 nfs41_sequence_free_slot(clp, task->tk_msg.rpc_resp);
4878 dprintk("%s rpc_cred %p\n", __func__, task->tk_msg.rpc_cred); 4880 dprintk("%s rpc_cred %p\n", __func__, task->tk_msg.rpc_cred);
4879 4881
4880 put_rpccred(task->tk_msg.rpc_cred);
4881 kfree(task->tk_msg.rpc_argp); 4882 kfree(task->tk_msg.rpc_argp);
4882 kfree(task->tk_msg.rpc_resp); 4883 kfree(task->tk_msg.rpc_resp);
4883 4884
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
index 83ad47cbdd8a..20b4e30e6c82 100644
--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -5681,7 +5681,6 @@ static struct {
5681 { NFS4ERR_SERVERFAULT, -ESERVERFAULT }, 5681 { NFS4ERR_SERVERFAULT, -ESERVERFAULT },
5682 { NFS4ERR_BADTYPE, -EBADTYPE }, 5682 { NFS4ERR_BADTYPE, -EBADTYPE },
5683 { NFS4ERR_LOCKED, -EAGAIN }, 5683 { NFS4ERR_LOCKED, -EAGAIN },
5684 { NFS4ERR_RESOURCE, -EREMOTEIO },
5685 { NFS4ERR_SYMLINK, -ELOOP }, 5684 { NFS4ERR_SYMLINK, -ELOOP },
5686 { NFS4ERR_OP_ILLEGAL, -EOPNOTSUPP }, 5685 { NFS4ERR_OP_ILLEGAL, -EOPNOTSUPP },
5687 { NFS4ERR_DEADLOCK, -EDEADLK }, 5686 { NFS4ERR_DEADLOCK, -EDEADLK },
diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c
index edf926e1062f..d0a2ce1b4324 100644
--- a/fs/nfsd/nfs3xdr.c
+++ b/fs/nfsd/nfs3xdr.c
@@ -958,7 +958,7 @@ encode_entry(struct readdir_cd *ccd, const char *name, int namlen,
958 p1 = encode_entry_baggage(cd, p1, name, namlen, ino); 958 p1 = encode_entry_baggage(cd, p1, name, namlen, ino);
959 959
960 if (plus) 960 if (plus)
961 p = encode_entryplus_baggage(cd, p1, name, namlen); 961 p1 = encode_entryplus_baggage(cd, p1, name, namlen);
962 962
963 /* determine entry word length and lengths to go in pages */ 963 /* determine entry word length and lengths to go in pages */
964 num_entry_words = p1 - tmp; 964 num_entry_words = p1 - tmp;
diff --git a/fs/nilfs2/btnode.c b/fs/nilfs2/btnode.c
index 5941958f1e47..84c25382f8e3 100644
--- a/fs/nilfs2/btnode.c
+++ b/fs/nilfs2/btnode.c
@@ -87,6 +87,7 @@ int nilfs_btnode_submit_block(struct address_space *btnc, __u64 blocknr,
87 brelse(bh); 87 brelse(bh);
88 BUG(); 88 BUG();
89 } 89 }
90 memset(bh->b_data, 0, 1 << inode->i_blkbits);
90 bh->b_bdev = NILFS_I_NILFS(inode)->ns_bdev; 91 bh->b_bdev = NILFS_I_NILFS(inode)->ns_bdev;
91 bh->b_blocknr = blocknr; 92 bh->b_blocknr = blocknr;
92 set_buffer_mapped(bh); 93 set_buffer_mapped(bh);
@@ -276,8 +277,7 @@ void nilfs_btnode_commit_change_key(struct address_space *btnc,
276 "invalid oldkey %lld (newkey=%lld)", 277 "invalid oldkey %lld (newkey=%lld)",
277 (unsigned long long)oldkey, 278 (unsigned long long)oldkey,
278 (unsigned long long)newkey); 279 (unsigned long long)newkey);
279 if (!test_set_buffer_dirty(obh) && TestSetPageDirty(opage)) 280 nilfs_btnode_mark_dirty(obh);
280 BUG();
281 281
282 spin_lock_irq(&btnc->tree_lock); 282 spin_lock_irq(&btnc->tree_lock);
283 radix_tree_delete(&btnc->page_tree, oldkey); 283 radix_tree_delete(&btnc->page_tree, oldkey);
diff --git a/fs/nilfs2/cpfile.c b/fs/nilfs2/cpfile.c
index 1c6cfb59128d..3f5d5d06f53c 100644
--- a/fs/nilfs2/cpfile.c
+++ b/fs/nilfs2/cpfile.c
@@ -871,7 +871,6 @@ int nilfs_cpfile_change_cpmode(struct inode *cpfile, __u64 cno, int mode)
871 * exclusive with a new mount job. Though it doesn't cover 871 * exclusive with a new mount job. Though it doesn't cover
872 * umount, it's enough for the purpose. 872 * umount, it's enough for the purpose.
873 */ 873 */
874 mutex_lock(&nilfs->ns_mount_mutex);
875 if (nilfs_checkpoint_is_mounted(nilfs, cno, 1)) { 874 if (nilfs_checkpoint_is_mounted(nilfs, cno, 1)) {
876 /* Current implementation does not have to protect 875 /* Current implementation does not have to protect
877 plain read-only mounts since they are exclusive 876 plain read-only mounts since they are exclusive
@@ -880,7 +879,6 @@ int nilfs_cpfile_change_cpmode(struct inode *cpfile, __u64 cno, int mode)
880 ret = -EBUSY; 879 ret = -EBUSY;
881 } else 880 } else
882 ret = nilfs_cpfile_clear_snapshot(cpfile, cno); 881 ret = nilfs_cpfile_clear_snapshot(cpfile, cno);
883 mutex_unlock(&nilfs->ns_mount_mutex);
884 return ret; 882 return ret;
885 case NILFS_SNAPSHOT: 883 case NILFS_SNAPSHOT:
886 return nilfs_cpfile_set_snapshot(cpfile, cno); 884 return nilfs_cpfile_set_snapshot(cpfile, cno);
diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c
index 5040220c3732..2a0a5a3ac134 100644
--- a/fs/nilfs2/inode.c
+++ b/fs/nilfs2/inode.c
@@ -664,7 +664,6 @@ int nilfs_load_inode_block(struct nilfs_sb_info *sbi, struct inode *inode,
664 int err; 664 int err;
665 665
666 spin_lock(&sbi->s_inode_lock); 666 spin_lock(&sbi->s_inode_lock);
667 /* Caller of this function MUST lock s_inode_lock */
668 if (ii->i_bh == NULL) { 667 if (ii->i_bh == NULL) {
669 spin_unlock(&sbi->s_inode_lock); 668 spin_unlock(&sbi->s_inode_lock);
670 err = nilfs_ifile_get_inode_block(sbi->s_ifile, inode->i_ino, 669 err = nilfs_ifile_get_inode_block(sbi->s_ifile, inode->i_ino,
diff --git a/fs/nilfs2/ioctl.c b/fs/nilfs2/ioctl.c
index 6572ea4bc4df..f6af76042d80 100644
--- a/fs/nilfs2/ioctl.c
+++ b/fs/nilfs2/ioctl.c
@@ -99,7 +99,8 @@ static int nilfs_ioctl_wrap_copy(struct the_nilfs *nilfs,
99static int nilfs_ioctl_change_cpmode(struct inode *inode, struct file *filp, 99static int nilfs_ioctl_change_cpmode(struct inode *inode, struct file *filp,
100 unsigned int cmd, void __user *argp) 100 unsigned int cmd, void __user *argp)
101{ 101{
102 struct inode *cpfile = NILFS_SB(inode->i_sb)->s_nilfs->ns_cpfile; 102 struct the_nilfs *nilfs = NILFS_SB(inode->i_sb)->s_nilfs;
103 struct inode *cpfile = nilfs->ns_cpfile;
103 struct nilfs_transaction_info ti; 104 struct nilfs_transaction_info ti;
104 struct nilfs_cpmode cpmode; 105 struct nilfs_cpmode cpmode;
105 int ret; 106 int ret;
@@ -109,14 +110,17 @@ static int nilfs_ioctl_change_cpmode(struct inode *inode, struct file *filp,
109 if (copy_from_user(&cpmode, argp, sizeof(cpmode))) 110 if (copy_from_user(&cpmode, argp, sizeof(cpmode)))
110 return -EFAULT; 111 return -EFAULT;
111 112
113 mutex_lock(&nilfs->ns_mount_mutex);
112 nilfs_transaction_begin(inode->i_sb, &ti, 0); 114 nilfs_transaction_begin(inode->i_sb, &ti, 0);
113 ret = nilfs_cpfile_change_cpmode( 115 ret = nilfs_cpfile_change_cpmode(
114 cpfile, cpmode.cm_cno, cpmode.cm_mode); 116 cpfile, cpmode.cm_cno, cpmode.cm_mode);
115 if (unlikely(ret < 0)) { 117 if (unlikely(ret < 0)) {
116 nilfs_transaction_abort(inode->i_sb); 118 nilfs_transaction_abort(inode->i_sb);
119 mutex_unlock(&nilfs->ns_mount_mutex);
117 return ret; 120 return ret;
118 } 121 }
119 nilfs_transaction_commit(inode->i_sb); /* never fails */ 122 nilfs_transaction_commit(inode->i_sb); /* never fails */
123 mutex_unlock(&nilfs->ns_mount_mutex);
120 return ret; 124 return ret;
121} 125}
122 126
@@ -297,7 +301,18 @@ static int nilfs_ioctl_move_inode_block(struct inode *inode,
297 (unsigned long long)vdesc->vd_vblocknr); 301 (unsigned long long)vdesc->vd_vblocknr);
298 return ret; 302 return ret;
299 } 303 }
300 bh->b_private = vdesc; 304 if (unlikely(!list_empty(&bh->b_assoc_buffers))) {
305 printk(KERN_CRIT "%s: conflicting %s buffer: ino=%llu, "
306 "cno=%llu, offset=%llu, blocknr=%llu, vblocknr=%llu\n",
307 __func__, vdesc->vd_flags ? "node" : "data",
308 (unsigned long long)vdesc->vd_ino,
309 (unsigned long long)vdesc->vd_cno,
310 (unsigned long long)vdesc->vd_offset,
311 (unsigned long long)vdesc->vd_blocknr,
312 (unsigned long long)vdesc->vd_vblocknr);
313 brelse(bh);
314 return -EEXIST;
315 }
301 list_add_tail(&bh->b_assoc_buffers, buffers); 316 list_add_tail(&bh->b_assoc_buffers, buffers);
302 return 0; 317 return 0;
303} 318}
@@ -335,24 +350,10 @@ static int nilfs_ioctl_move_blocks(struct the_nilfs *nilfs,
335 list_for_each_entry_safe(bh, n, &buffers, b_assoc_buffers) { 350 list_for_each_entry_safe(bh, n, &buffers, b_assoc_buffers) {
336 ret = nilfs_gccache_wait_and_mark_dirty(bh); 351 ret = nilfs_gccache_wait_and_mark_dirty(bh);
337 if (unlikely(ret < 0)) { 352 if (unlikely(ret < 0)) {
338 if (ret == -EEXIST) { 353 WARN_ON(ret == -EEXIST);
339 vdesc = bh->b_private;
340 printk(KERN_CRIT
341 "%s: conflicting %s buffer: "
342 "ino=%llu, cno=%llu, offset=%llu, "
343 "blocknr=%llu, vblocknr=%llu\n",
344 __func__,
345 vdesc->vd_flags ? "node" : "data",
346 (unsigned long long)vdesc->vd_ino,
347 (unsigned long long)vdesc->vd_cno,
348 (unsigned long long)vdesc->vd_offset,
349 (unsigned long long)vdesc->vd_blocknr,
350 (unsigned long long)vdesc->vd_vblocknr);
351 }
352 goto failed; 354 goto failed;
353 } 355 }
354 list_del_init(&bh->b_assoc_buffers); 356 list_del_init(&bh->b_assoc_buffers);
355 bh->b_private = NULL;
356 brelse(bh); 357 brelse(bh);
357 } 358 }
358 return nmembs; 359 return nmembs;
@@ -360,7 +361,6 @@ static int nilfs_ioctl_move_blocks(struct the_nilfs *nilfs,
360 failed: 361 failed:
361 list_for_each_entry_safe(bh, n, &buffers, b_assoc_buffers) { 362 list_for_each_entry_safe(bh, n, &buffers, b_assoc_buffers) {
362 list_del_init(&bh->b_assoc_buffers); 363 list_del_init(&bh->b_assoc_buffers);
363 bh->b_private = NULL;
364 brelse(bh); 364 brelse(bh);
365 } 365 }
366 return ret; 366 return ret;
@@ -471,7 +471,6 @@ int nilfs_ioctl_prepare_clean_segments(struct the_nilfs *nilfs,
471 return 0; 471 return 0;
472 472
473 failed: 473 failed:
474 nilfs_remove_all_gcinode(nilfs);
475 printk(KERN_ERR "NILFS: GC failed during preparation: %s: err=%d\n", 474 printk(KERN_ERR "NILFS: GC failed during preparation: %s: err=%d\n",
476 msg, ret); 475 msg, ret);
477 return ret; 476 return ret;
@@ -560,6 +559,8 @@ static int nilfs_ioctl_clean_segments(struct inode *inode, struct file *filp,
560 else 559 else
561 ret = nilfs_clean_segments(inode->i_sb, argv, kbufs); 560 ret = nilfs_clean_segments(inode->i_sb, argv, kbufs);
562 561
562 if (ret < 0)
563 nilfs_remove_all_gcinode(nilfs);
563 clear_nilfs_gc_running(nilfs); 564 clear_nilfs_gc_running(nilfs);
564 565
565 out_free: 566 out_free:
diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c
index 683df89dbae5..6eff66a070d5 100644
--- a/fs/nilfs2/segment.c
+++ b/fs/nilfs2/segment.c
@@ -2468,17 +2468,22 @@ static void nilfs_segctor_notify(struct nilfs_sc_info *sci,
2468 /* Clear requests (even when the construction failed) */ 2468 /* Clear requests (even when the construction failed) */
2469 spin_lock(&sci->sc_state_lock); 2469 spin_lock(&sci->sc_state_lock);
2470 2470
2471 sci->sc_state &= ~NILFS_SEGCTOR_COMMIT;
2472
2473 if (req->mode == SC_LSEG_SR) { 2471 if (req->mode == SC_LSEG_SR) {
2472 sci->sc_state &= ~NILFS_SEGCTOR_COMMIT;
2474 sci->sc_seq_done = req->seq_accepted; 2473 sci->sc_seq_done = req->seq_accepted;
2475 nilfs_segctor_wakeup(sci, req->sc_err ? : req->sb_err); 2474 nilfs_segctor_wakeup(sci, req->sc_err ? : req->sb_err);
2476 sci->sc_flush_request = 0; 2475 sci->sc_flush_request = 0;
2477 } else if (req->mode == SC_FLUSH_FILE) 2476 } else {
2478 sci->sc_flush_request &= ~FLUSH_FILE_BIT; 2477 if (req->mode == SC_FLUSH_FILE)
2479 else if (req->mode == SC_FLUSH_DAT) 2478 sci->sc_flush_request &= ~FLUSH_FILE_BIT;
2480 sci->sc_flush_request &= ~FLUSH_DAT_BIT; 2479 else if (req->mode == SC_FLUSH_DAT)
2480 sci->sc_flush_request &= ~FLUSH_DAT_BIT;
2481 2481
2482 /* re-enable timer if checkpoint creation was not done */
2483 if (sci->sc_timer && (sci->sc_state & NILFS_SEGCTOR_COMMIT) &&
2484 time_before(jiffies, sci->sc_timer->expires))
2485 add_timer(sci->sc_timer);
2486 }
2482 spin_unlock(&sci->sc_state_lock); 2487 spin_unlock(&sci->sc_state_lock);
2483} 2488}
2484 2489
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index 89fc8ee1f5a5..de059f490586 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -1712,7 +1712,8 @@ int ocfs2_check_range_for_refcount(struct inode *inode, loff_t pos,
1712 struct super_block *sb = inode->i_sb; 1712 struct super_block *sb = inode->i_sb;
1713 1713
1714 if (!ocfs2_refcount_tree(OCFS2_SB(inode->i_sb)) || 1714 if (!ocfs2_refcount_tree(OCFS2_SB(inode->i_sb)) ||
1715 !(OCFS2_I(inode)->ip_dyn_features & OCFS2_HAS_REFCOUNT_FL)) 1715 !(OCFS2_I(inode)->ip_dyn_features & OCFS2_HAS_REFCOUNT_FL) ||
1716 OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL)
1716 return 0; 1717 return 0;
1717 1718
1718 cpos = pos >> OCFS2_SB(sb)->s_clustersize_bits; 1719 cpos = pos >> OCFS2_SB(sb)->s_clustersize_bits;
diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
index eae404602424..d963d8638709 100644
--- a/fs/ocfs2/ocfs2.h
+++ b/fs/ocfs2/ocfs2.h
@@ -35,12 +35,7 @@
35#include <linux/kref.h> 35#include <linux/kref.h>
36#include <linux/mutex.h> 36#include <linux/mutex.h>
37#include <linux/lockdep.h> 37#include <linux/lockdep.h>
38#ifndef CONFIG_OCFS2_COMPAT_JBD 38#include <linux/jbd2.h>
39# include <linux/jbd2.h>
40#else
41# include <linux/jbd.h>
42# include "ocfs2_jbd_compat.h"
43#endif
44 39
45/* For union ocfs2_dlm_lksb */ 40/* For union ocfs2_dlm_lksb */
46#include "stackglue.h" 41#include "stackglue.h"
diff --git a/fs/ocfs2/refcounttree.c b/fs/ocfs2/refcounttree.c
index 60287fc56bcb..3a0df7a1b810 100644
--- a/fs/ocfs2/refcounttree.c
+++ b/fs/ocfs2/refcounttree.c
@@ -3743,6 +3743,9 @@ static int ocfs2_attach_refcount_tree(struct inode *inode,
3743 goto out; 3743 goto out;
3744 } 3744 }
3745 3745
3746 if (oi->ip_dyn_features & OCFS2_INLINE_DATA_FL)
3747 goto attach_xattr;
3748
3746 ocfs2_init_dinode_extent_tree(&di_et, INODE_CACHE(inode), di_bh); 3749 ocfs2_init_dinode_extent_tree(&di_et, INODE_CACHE(inode), di_bh);
3747 3750
3748 size = i_size_read(inode); 3751 size = i_size_read(inode);
@@ -3769,6 +3772,7 @@ static int ocfs2_attach_refcount_tree(struct inode *inode,
3769 cpos += num_clusters; 3772 cpos += num_clusters;
3770 } 3773 }
3771 3774
3775attach_xattr:
3772 if (oi->ip_dyn_features & OCFS2_HAS_XATTR_FL) { 3776 if (oi->ip_dyn_features & OCFS2_HAS_XATTR_FL) {
3773 ret = ocfs2_xattr_attach_refcount_tree(inode, di_bh, 3777 ret = ocfs2_xattr_attach_refcount_tree(inode, di_bh,
3774 &ref_tree->rf_ci, 3778 &ref_tree->rf_ci,
@@ -3858,6 +3862,49 @@ out:
3858 return ret; 3862 return ret;
3859} 3863}
3860 3864
3865static int ocfs2_duplicate_inline_data(struct inode *s_inode,
3866 struct buffer_head *s_bh,
3867 struct inode *t_inode,
3868 struct buffer_head *t_bh)
3869{
3870 int ret;
3871 handle_t *handle;
3872 struct ocfs2_super *osb = OCFS2_SB(s_inode->i_sb);
3873 struct ocfs2_dinode *s_di = (struct ocfs2_dinode *)s_bh->b_data;
3874 struct ocfs2_dinode *t_di = (struct ocfs2_dinode *)t_bh->b_data;
3875
3876 BUG_ON(!(OCFS2_I(s_inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL));
3877
3878 handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS);
3879 if (IS_ERR(handle)) {
3880 ret = PTR_ERR(handle);
3881 mlog_errno(ret);
3882 goto out;
3883 }
3884
3885 ret = ocfs2_journal_access_di(handle, INODE_CACHE(t_inode), t_bh,
3886 OCFS2_JOURNAL_ACCESS_WRITE);
3887 if (ret) {
3888 mlog_errno(ret);
3889 goto out_commit;
3890 }
3891
3892 t_di->id2.i_data.id_count = s_di->id2.i_data.id_count;
3893 memcpy(t_di->id2.i_data.id_data, s_di->id2.i_data.id_data,
3894 le16_to_cpu(s_di->id2.i_data.id_count));
3895 spin_lock(&OCFS2_I(t_inode)->ip_lock);
3896 OCFS2_I(t_inode)->ip_dyn_features |= OCFS2_INLINE_DATA_FL;
3897 t_di->i_dyn_features = cpu_to_le16(OCFS2_I(t_inode)->ip_dyn_features);
3898 spin_unlock(&OCFS2_I(t_inode)->ip_lock);
3899
3900 ocfs2_journal_dirty(handle, t_bh);
3901
3902out_commit:
3903 ocfs2_commit_trans(osb, handle);
3904out:
3905 return ret;
3906}
3907
3861static int ocfs2_duplicate_extent_list(struct inode *s_inode, 3908static int ocfs2_duplicate_extent_list(struct inode *s_inode,
3862 struct inode *t_inode, 3909 struct inode *t_inode,
3863 struct buffer_head *t_bh, 3910 struct buffer_head *t_bh,
@@ -3997,6 +4044,14 @@ static int ocfs2_create_reflink_node(struct inode *s_inode,
3997 goto out; 4044 goto out;
3998 } 4045 }
3999 4046
4047 if (OCFS2_I(s_inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) {
4048 ret = ocfs2_duplicate_inline_data(s_inode, s_bh,
4049 t_inode, t_bh);
4050 if (ret)
4051 mlog_errno(ret);
4052 goto out;
4053 }
4054
4000 ret = ocfs2_lock_refcount_tree(osb, le64_to_cpu(di->i_refcount_loc), 4055 ret = ocfs2_lock_refcount_tree(osb, le64_to_cpu(di->i_refcount_loc),
4001 1, &ref_tree, &ref_root_bh); 4056 1, &ref_tree, &ref_root_bh);
4002 if (ret) { 4057 if (ret) {
@@ -4013,10 +4068,6 @@ static int ocfs2_create_reflink_node(struct inode *s_inode,
4013 goto out_unlock_refcount; 4068 goto out_unlock_refcount;
4014 } 4069 }
4015 4070
4016 ret = ocfs2_complete_reflink(s_inode, s_bh, t_inode, t_bh, preserve);
4017 if (ret)
4018 mlog_errno(ret);
4019
4020out_unlock_refcount: 4071out_unlock_refcount:
4021 ocfs2_unlock_refcount_tree(osb, ref_tree, 1); 4072 ocfs2_unlock_refcount_tree(osb, ref_tree, 1);
4022 brelse(ref_root_bh); 4073 brelse(ref_root_bh);
@@ -4068,9 +4119,17 @@ static int __ocfs2_reflink(struct dentry *old_dentry,
4068 ret = ocfs2_reflink_xattrs(inode, old_bh, 4119 ret = ocfs2_reflink_xattrs(inode, old_bh,
4069 new_inode, new_bh, 4120 new_inode, new_bh,
4070 preserve); 4121 preserve);
4071 if (ret) 4122 if (ret) {
4072 mlog_errno(ret); 4123 mlog_errno(ret);
4124 goto inode_unlock;
4125 }
4073 } 4126 }
4127
4128 ret = ocfs2_complete_reflink(inode, old_bh,
4129 new_inode, new_bh, preserve);
4130 if (ret)
4131 mlog_errno(ret);
4132
4074inode_unlock: 4133inode_unlock:
4075 ocfs2_inode_unlock(new_inode, 1); 4134 ocfs2_inode_unlock(new_inode, 1);
4076 brelse(new_bh); 4135 brelse(new_bh);
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
index c0e48aeebb1c..14f47d2bfe02 100644
--- a/fs/ocfs2/super.c
+++ b/fs/ocfs2/super.c
@@ -773,18 +773,20 @@ static int ocfs2_sb_probe(struct super_block *sb,
773 if (tmpstat < 0) { 773 if (tmpstat < 0) {
774 status = tmpstat; 774 status = tmpstat;
775 mlog_errno(status); 775 mlog_errno(status);
776 goto bail; 776 break;
777 } 777 }
778 di = (struct ocfs2_dinode *) (*bh)->b_data; 778 di = (struct ocfs2_dinode *) (*bh)->b_data;
779 memset(stats, 0, sizeof(struct ocfs2_blockcheck_stats)); 779 memset(stats, 0, sizeof(struct ocfs2_blockcheck_stats));
780 spin_lock_init(&stats->b_lock); 780 spin_lock_init(&stats->b_lock);
781 status = ocfs2_verify_volume(di, *bh, blksize, stats); 781 tmpstat = ocfs2_verify_volume(di, *bh, blksize, stats);
782 if (status >= 0) 782 if (tmpstat < 0) {
783 goto bail; 783 brelse(*bh);
784 brelse(*bh); 784 *bh = NULL;
785 *bh = NULL; 785 }
786 if (status != -EAGAIN) 786 if (tmpstat != -EAGAIN) {
787 status = tmpstat;
787 break; 788 break;
789 }
788 } 790 }
789 791
790bail: 792bail:
@@ -1645,6 +1647,10 @@ static int ocfs2_statfs(struct dentry *dentry, struct kstatfs *buf)
1645 buf->f_bavail = buf->f_bfree; 1647 buf->f_bavail = buf->f_bfree;
1646 buf->f_files = numbits; 1648 buf->f_files = numbits;
1647 buf->f_ffree = freebits; 1649 buf->f_ffree = freebits;
1650 buf->f_fsid.val[0] = crc32_le(0, osb->uuid_str, OCFS2_VOL_UUID_LEN)
1651 & 0xFFFFFFFFUL;
1652 buf->f_fsid.val[1] = crc32_le(0, osb->uuid_str + OCFS2_VOL_UUID_LEN,
1653 OCFS2_VOL_UUID_LEN) & 0xFFFFFFFFUL;
1648 1654
1649 brelse(bh); 1655 brelse(bh);
1650 1656
diff --git a/fs/ocfs2/uptodate.c b/fs/ocfs2/uptodate.c
index b6284f235d2f..c61369342a27 100644
--- a/fs/ocfs2/uptodate.c
+++ b/fs/ocfs2/uptodate.c
@@ -53,11 +53,6 @@
53#include <linux/highmem.h> 53#include <linux/highmem.h>
54#include <linux/buffer_head.h> 54#include <linux/buffer_head.h>
55#include <linux/rbtree.h> 55#include <linux/rbtree.h>
56#ifndef CONFIG_OCFS2_COMPAT_JBD
57# include <linux/jbd2.h>
58#else
59# include <linux/jbd.h>
60#endif
61 56
62#define MLOG_MASK_PREFIX ML_UPTODATE 57#define MLOG_MASK_PREFIX ML_UPTODATE
63 58
diff --git a/fs/proc/array.c b/fs/proc/array.c
index 07f77a7945c3..822c2d506518 100644
--- a/fs/proc/array.c
+++ b/fs/proc/array.c
@@ -571,7 +571,7 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
571 rsslim, 571 rsslim,
572 mm ? mm->start_code : 0, 572 mm ? mm->start_code : 0,
573 mm ? mm->end_code : 0, 573 mm ? mm->end_code : 0,
574 (permitted) ? task->stack_start : 0, 574 (permitted && mm) ? task->stack_start : 0,
575 esp, 575 esp,
576 eip, 576 eip,
577 /* The signal information here is obsolete. 577 /* The signal information here is obsolete.
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 837469a96598..af643b5aefe8 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -2597,8 +2597,7 @@ static void proc_flush_task_mnt(struct vfsmount *mnt, pid_t pid, pid_t tgid)
2597 name.len = snprintf(buf, sizeof(buf), "%d", pid); 2597 name.len = snprintf(buf, sizeof(buf), "%d", pid);
2598 dentry = d_hash_and_lookup(mnt->mnt_root, &name); 2598 dentry = d_hash_and_lookup(mnt->mnt_root, &name);
2599 if (dentry) { 2599 if (dentry) {
2600 if (!(current->flags & PF_EXITING)) 2600 shrink_dcache_parent(dentry);
2601 shrink_dcache_parent(dentry);
2602 d_drop(dentry); 2601 d_drop(dentry);
2603 dput(dentry); 2602 dput(dentry);
2604 } 2603 }
diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
index c7bff4f603ff..a65239cfd97e 100644
--- a/fs/proc/meminfo.c
+++ b/fs/proc/meminfo.c
@@ -99,7 +99,7 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
99 "VmallocUsed: %8lu kB\n" 99 "VmallocUsed: %8lu kB\n"
100 "VmallocChunk: %8lu kB\n" 100 "VmallocChunk: %8lu kB\n"
101#ifdef CONFIG_MEMORY_FAILURE 101#ifdef CONFIG_MEMORY_FAILURE
102 "HardwareCorrupted: %8lu kB\n" 102 "HardwareCorrupted: %5lu kB\n"
103#endif 103#endif
104 , 104 ,
105 K(i.totalram), 105 K(i.totalram),
diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
index 5fad489ce5bc..e0201837d244 100644
--- a/fs/sysfs/dir.c
+++ b/fs/sysfs/dir.c
@@ -21,6 +21,7 @@
21#include <linux/completion.h> 21#include <linux/completion.h>
22#include <linux/mutex.h> 22#include <linux/mutex.h>
23#include <linux/slab.h> 23#include <linux/slab.h>
24#include <linux/security.h>
24#include "sysfs.h" 25#include "sysfs.h"
25 26
26DEFINE_MUTEX(sysfs_mutex); 27DEFINE_MUTEX(sysfs_mutex);
@@ -285,6 +286,9 @@ void release_sysfs_dirent(struct sysfs_dirent * sd)
285 sysfs_put(sd->s_symlink.target_sd); 286 sysfs_put(sd->s_symlink.target_sd);
286 if (sysfs_type(sd) & SYSFS_COPY_NAME) 287 if (sysfs_type(sd) & SYSFS_COPY_NAME)
287 kfree(sd->s_name); 288 kfree(sd->s_name);
289 if (sd->s_iattr && sd->s_iattr->ia_secdata)
290 security_release_secctx(sd->s_iattr->ia_secdata,
291 sd->s_iattr->ia_secdata_len);
288 kfree(sd->s_iattr); 292 kfree(sd->s_iattr);
289 sysfs_free_ino(sd->s_ino); 293 sysfs_free_ino(sd->s_ino);
290 kmem_cache_free(sysfs_dir_cachep, sd); 294 kmem_cache_free(sysfs_dir_cachep, sd);
diff --git a/fs/xfs/linux-2.6/xfs_quotaops.c b/fs/xfs/linux-2.6/xfs_quotaops.c
index 9e41f91aa269..3d4a0c84d634 100644
--- a/fs/xfs/linux-2.6/xfs_quotaops.c
+++ b/fs/xfs/linux-2.6/xfs_quotaops.c
@@ -80,7 +80,7 @@ xfs_fs_set_xstate(
80 80
81 if (sb->s_flags & MS_RDONLY) 81 if (sb->s_flags & MS_RDONLY)
82 return -EROFS; 82 return -EROFS;
83 if (!XFS_IS_QUOTA_RUNNING(mp)) 83 if (op != Q_XQUOTARM && !XFS_IS_QUOTA_RUNNING(mp))
84 return -ENOSYS; 84 return -ENOSYS;
85 if (!capable(CAP_SYS_ADMIN)) 85 if (!capable(CAP_SYS_ADMIN))
86 return -EPERM; 86 return -EPERM;
diff --git a/fs/xfs/quota/xfs_qm_syscalls.c b/fs/xfs/quota/xfs_qm_syscalls.c
index 4e4276b956e8..5d1a3b98a6e6 100644
--- a/fs/xfs/quota/xfs_qm_syscalls.c
+++ b/fs/xfs/quota/xfs_qm_syscalls.c
@@ -876,7 +876,6 @@ xfs_dqrele_inode(
876 ip->i_gdquot = NULL; 876 ip->i_gdquot = NULL;
877 } 877 }
878 xfs_iput(ip, XFS_ILOCK_EXCL); 878 xfs_iput(ip, XFS_ILOCK_EXCL);
879 IRELE(ip);
880 879
881 return 0; 880 return 0;
882} 881}
diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c
index ab64f3efb43b..0785797db828 100644
--- a/fs/xfs/xfs_ialloc.c
+++ b/fs/xfs/xfs_ialloc.c
@@ -880,6 +880,7 @@ nextag:
880 * Not in range - save last search 880 * Not in range - save last search
881 * location and allocate a new inode 881 * location and allocate a new inode
882 */ 882 */
883 xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR);
883 pag->pagl_leftrec = trec.ir_startino; 884 pag->pagl_leftrec = trec.ir_startino;
884 pag->pagl_rightrec = rec.ir_startino; 885 pag->pagl_rightrec = rec.ir_startino;
885 pag->pagl_pagino = pagino; 886 pag->pagl_pagino = pagino;
diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c
index 1099395d7d6c..fb17f8226b09 100644
--- a/fs/xfs/xfs_log_recover.c
+++ b/fs/xfs/xfs_log_recover.c
@@ -1980,7 +1980,7 @@ xlog_recover_do_reg_buffer(
1980 "XFS: NULL dquot in %s.", __func__); 1980 "XFS: NULL dquot in %s.", __func__);
1981 goto next; 1981 goto next;
1982 } 1982 }
1983 if (item->ri_buf[i].i_len < sizeof(xfs_dqblk_t)) { 1983 if (item->ri_buf[i].i_len < sizeof(xfs_disk_dquot_t)) {
1984 cmn_err(CE_ALERT, 1984 cmn_err(CE_ALERT,
1985 "XFS: dquot too small (%d) in %s.", 1985 "XFS: dquot too small (%d) in %s.",
1986 item->ri_buf[i].i_len, __func__); 1986 item->ri_buf[i].i_len, __func__);
@@ -2635,7 +2635,7 @@ xlog_recover_do_dquot_trans(
2635 "XFS: NULL dquot in %s.", __func__); 2635 "XFS: NULL dquot in %s.", __func__);
2636 return XFS_ERROR(EIO); 2636 return XFS_ERROR(EIO);
2637 } 2637 }
2638 if (item->ri_buf[1].i_len < sizeof(xfs_dqblk_t)) { 2638 if (item->ri_buf[1].i_len < sizeof(xfs_disk_dquot_t)) {
2639 cmn_err(CE_ALERT, 2639 cmn_err(CE_ALERT,
2640 "XFS: dquot too small (%d) in %s.", 2640 "XFS: dquot too small (%d) in %s.",
2641 item->ri_buf[1].i_len, __func__); 2641 item->ri_buf[1].i_len, __func__);
diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c
index f31271c30de9..2ffc570679be 100644
--- a/fs/xfs/xfs_trans_ail.c
+++ b/fs/xfs/xfs_trans_ail.c
@@ -467,6 +467,7 @@ xfs_trans_ail_update(
467{ 467{
468 xfs_log_item_t *dlip = NULL; 468 xfs_log_item_t *dlip = NULL;
469 xfs_log_item_t *mlip; /* ptr to minimum lip */ 469 xfs_log_item_t *mlip; /* ptr to minimum lip */
470 xfs_lsn_t tail_lsn;
470 471
471 mlip = xfs_ail_min(ailp); 472 mlip = xfs_ail_min(ailp);
472 473
@@ -483,8 +484,16 @@ xfs_trans_ail_update(
483 484
484 if (mlip == dlip) { 485 if (mlip == dlip) {
485 mlip = xfs_ail_min(ailp); 486 mlip = xfs_ail_min(ailp);
487 /*
488 * It is not safe to access mlip after the AIL lock is
489 * dropped, so we must get a copy of li_lsn before we do
490 * so. This is especially important on 32-bit platforms
491 * where accessing and updating 64-bit values like li_lsn
492 * is not atomic.
493 */
494 tail_lsn = mlip->li_lsn;
486 spin_unlock(&ailp->xa_lock); 495 spin_unlock(&ailp->xa_lock);
487 xfs_log_move_tail(ailp->xa_mount, mlip->li_lsn); 496 xfs_log_move_tail(ailp->xa_mount, tail_lsn);
488 } else { 497 } else {
489 spin_unlock(&ailp->xa_lock); 498 spin_unlock(&ailp->xa_lock);
490 } 499 }
@@ -514,6 +523,7 @@ xfs_trans_ail_delete(
514{ 523{
515 xfs_log_item_t *dlip; 524 xfs_log_item_t *dlip;
516 xfs_log_item_t *mlip; 525 xfs_log_item_t *mlip;
526 xfs_lsn_t tail_lsn;
517 527
518 if (lip->li_flags & XFS_LI_IN_AIL) { 528 if (lip->li_flags & XFS_LI_IN_AIL) {
519 mlip = xfs_ail_min(ailp); 529 mlip = xfs_ail_min(ailp);
@@ -527,9 +537,16 @@ xfs_trans_ail_delete(
527 537
528 if (mlip == dlip) { 538 if (mlip == dlip) {
529 mlip = xfs_ail_min(ailp); 539 mlip = xfs_ail_min(ailp);
540 /*
541 * It is not safe to access mlip after the AIL lock
542 * is dropped, so we must get a copy of li_lsn
543 * before we do so. This is especially important
544 * on 32-bit platforms where accessing and updating
545 * 64-bit values like li_lsn is not atomic.
546 */
547 tail_lsn = mlip ? mlip->li_lsn : 0;
530 spin_unlock(&ailp->xa_lock); 548 spin_unlock(&ailp->xa_lock);
531 xfs_log_move_tail(ailp->xa_mount, 549 xfs_log_move_tail(ailp->xa_mount, tail_lsn);
532 (mlip ? mlip->li_lsn : 0));
533 } else { 550 } else {
534 spin_unlock(&ailp->xa_lock); 551 spin_unlock(&ailp->xa_lock);
535 } 552 }
diff --git a/include/asm-generic/fcntl.h b/include/asm-generic/fcntl.h
index 0c3dd8603927..495dc8af4044 100644
--- a/include/asm-generic/fcntl.h
+++ b/include/asm-generic/fcntl.h
@@ -73,14 +73,23 @@
73#define F_SETSIG 10 /* for sockets. */ 73#define F_SETSIG 10 /* for sockets. */
74#define F_GETSIG 11 /* for sockets. */ 74#define F_GETSIG 11 /* for sockets. */
75#endif 75#endif
76
77#ifndef CONFIG_64BIT
78#ifndef F_GETLK64
79#define F_GETLK64 12 /* using 'struct flock64' */
80#define F_SETLK64 13
81#define F_SETLKW64 14
82#endif
83#endif
84
76#ifndef F_SETOWN_EX 85#ifndef F_SETOWN_EX
77#define F_SETOWN_EX 12 86#define F_SETOWN_EX 15
78#define F_GETOWN_EX 13 87#define F_GETOWN_EX 16
79#endif 88#endif
80 89
81#define F_OWNER_TID 0 90#define F_OWNER_TID 0
82#define F_OWNER_PID 1 91#define F_OWNER_PID 1
83#define F_OWNER_GID 2 92#define F_OWNER_PGRP 2
84 93
85struct f_owner_ex { 94struct f_owner_ex {
86 int type; 95 int type;
@@ -139,12 +148,6 @@ struct flock {
139 148
140#ifndef CONFIG_64BIT 149#ifndef CONFIG_64BIT
141 150
142#ifndef F_GETLK64
143#define F_GETLK64 12 /* using 'struct flock64' */
144#define F_SETLK64 13
145#define F_SETLKW64 14
146#endif
147
148#ifndef HAVE_ARCH_STRUCT_FLOCK64 151#ifndef HAVE_ARCH_STRUCT_FLOCK64
149#ifndef __ARCH_FLOCK64_PAD 152#ifndef __ARCH_FLOCK64_PAD
150#define __ARCH_FLOCK64_PAD 153#define __ARCH_FLOCK64_PAD
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h
index 44717eb47639..79a2340d83cd 100644
--- a/include/linux/cpufreq.h
+++ b/include/linux/cpufreq.h
@@ -291,8 +291,15 @@ struct global_attr {
291int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu); 291int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu);
292int cpufreq_update_policy(unsigned int cpu); 292int cpufreq_update_policy(unsigned int cpu);
293 293
294#ifdef CONFIG_CPU_FREQ
294/* query the current CPU frequency (in kHz). If zero, cpufreq couldn't detect it */ 295/* query the current CPU frequency (in kHz). If zero, cpufreq couldn't detect it */
295unsigned int cpufreq_get(unsigned int cpu); 296unsigned int cpufreq_get(unsigned int cpu);
297#else
298static inline unsigned int cpufreq_get(unsigned int cpu)
299{
300 return 0;
301}
302#endif
296 303
297/* query the last known CPU freq (in kHz). If zero, cpufreq couldn't detect it */ 304/* query the last known CPU freq (in kHz). If zero, cpufreq couldn't detect it */
298#ifdef CONFIG_CPU_FREQ 305#ifdef CONFIG_CPU_FREQ
diff --git a/include/linux/device.h b/include/linux/device.h
index aca31bf7d8ed..2ea3e4921812 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -124,7 +124,9 @@ struct device_driver {
124 struct bus_type *bus; 124 struct bus_type *bus;
125 125
126 struct module *owner; 126 struct module *owner;
127 const char *mod_name; /* used for built-in modules */ 127 const char *mod_name; /* used for built-in modules */
128
129 bool suppress_bind_attrs; /* disables bind/unbind via sysfs */
128 130
129 int (*probe) (struct device *dev); 131 int (*probe) (struct device *dev);
130 int (*remove) (struct device *dev); 132 int (*remove) (struct device *dev);
diff --git a/include/linux/ext3_fs_i.h b/include/linux/ext3_fs_i.h
index ca1bfe90004f..93e7428156ba 100644
--- a/include/linux/ext3_fs_i.h
+++ b/include/linux/ext3_fs_i.h
@@ -137,6 +137,14 @@ struct ext3_inode_info {
137 * by other means, so we have truncate_mutex. 137 * by other means, so we have truncate_mutex.
138 */ 138 */
139 struct mutex truncate_mutex; 139 struct mutex truncate_mutex;
140
141 /*
142 * Transactions that contain inode's metadata needed to complete
143 * fsync and fdatasync, respectively.
144 */
145 atomic_t i_sync_tid;
146 atomic_t i_datasync_tid;
147
140 struct inode vfs_inode; 148 struct inode vfs_inode;
141}; 149};
142 150
diff --git a/include/linux/fb.h b/include/linux/fb.h
index a34bdf5a9d23..de9c722e7b90 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -669,12 +669,6 @@ struct fb_ops {
669 /* perform fb specific mmap */ 669 /* perform fb specific mmap */
670 int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma); 670 int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma);
671 671
672 /* save current hardware state */
673 void (*fb_save_state)(struct fb_info *info);
674
675 /* restore saved state */
676 void (*fb_restore_state)(struct fb_info *info);
677
678 /* get capability given var */ 672 /* get capability given var */
679 void (*fb_get_caps)(struct fb_info *info, struct fb_blit_caps *caps, 673 void (*fb_get_caps)(struct fb_info *info, struct fb_blit_caps *caps,
680 struct fb_var_screeninfo *var); 674 struct fb_var_screeninfo *var);
diff --git a/include/linux/fscache-cache.h b/include/linux/fscache-cache.h
index 84d3532dd3ea..7be0c6fbe880 100644
--- a/include/linux/fscache-cache.h
+++ b/include/linux/fscache-cache.h
@@ -91,6 +91,8 @@ struct fscache_operation {
91#define FSCACHE_OP_WAITING 4 /* cleared when op is woken */ 91#define FSCACHE_OP_WAITING 4 /* cleared when op is woken */
92#define FSCACHE_OP_EXCLUSIVE 5 /* exclusive op, other ops must wait */ 92#define FSCACHE_OP_EXCLUSIVE 5 /* exclusive op, other ops must wait */
93#define FSCACHE_OP_DEAD 6 /* op is now dead */ 93#define FSCACHE_OP_DEAD 6 /* op is now dead */
94#define FSCACHE_OP_DEC_READ_CNT 7 /* decrement object->n_reads on destruction */
95#define FSCACHE_OP_KEEP_FLAGS 0xc0 /* flags to keep when repurposing an op */
94 96
95 atomic_t usage; 97 atomic_t usage;
96 unsigned debug_id; /* debugging ID */ 98 unsigned debug_id; /* debugging ID */
@@ -102,6 +104,16 @@ struct fscache_operation {
102 104
103 /* operation releaser */ 105 /* operation releaser */
104 fscache_operation_release_t release; 106 fscache_operation_release_t release;
107
108#ifdef CONFIG_SLOW_WORK_PROC
109 const char *name; /* operation name */
110 const char *state; /* operation state */
111#define fscache_set_op_name(OP, N) do { (OP)->name = (N); } while(0)
112#define fscache_set_op_state(OP, S) do { (OP)->state = (S); } while(0)
113#else
114#define fscache_set_op_name(OP, N) do { } while(0)
115#define fscache_set_op_state(OP, S) do { } while(0)
116#endif
105}; 117};
106 118
107extern atomic_t fscache_op_debug_id; 119extern atomic_t fscache_op_debug_id;
@@ -125,6 +137,7 @@ static inline void fscache_operation_init(struct fscache_operation *op,
125 op->debug_id = atomic_inc_return(&fscache_op_debug_id); 137 op->debug_id = atomic_inc_return(&fscache_op_debug_id);
126 op->release = release; 138 op->release = release;
127 INIT_LIST_HEAD(&op->pend_link); 139 INIT_LIST_HEAD(&op->pend_link);
140 fscache_set_op_state(op, "Init");
128} 141}
129 142
130/** 143/**
@@ -221,8 +234,10 @@ struct fscache_cache_ops {
221 struct fscache_object *(*alloc_object)(struct fscache_cache *cache, 234 struct fscache_object *(*alloc_object)(struct fscache_cache *cache,
222 struct fscache_cookie *cookie); 235 struct fscache_cookie *cookie);
223 236
224 /* look up the object for a cookie */ 237 /* look up the object for a cookie
225 void (*lookup_object)(struct fscache_object *object); 238 * - return -ETIMEDOUT to be requeued
239 */
240 int (*lookup_object)(struct fscache_object *object);
226 241
227 /* finished looking up */ 242 /* finished looking up */
228 void (*lookup_complete)(struct fscache_object *object); 243 void (*lookup_complete)(struct fscache_object *object);
@@ -297,12 +312,14 @@ struct fscache_cookie {
297 atomic_t usage; /* number of users of this cookie */ 312 atomic_t usage; /* number of users of this cookie */
298 atomic_t n_children; /* number of children of this cookie */ 313 atomic_t n_children; /* number of children of this cookie */
299 spinlock_t lock; 314 spinlock_t lock;
315 spinlock_t stores_lock; /* lock on page store tree */
300 struct hlist_head backing_objects; /* object(s) backing this file/index */ 316 struct hlist_head backing_objects; /* object(s) backing this file/index */
301 const struct fscache_cookie_def *def; /* definition */ 317 const struct fscache_cookie_def *def; /* definition */
302 struct fscache_cookie *parent; /* parent of this entry */ 318 struct fscache_cookie *parent; /* parent of this entry */
303 void *netfs_data; /* back pointer to netfs */ 319 void *netfs_data; /* back pointer to netfs */
304 struct radix_tree_root stores; /* pages to be stored on this cookie */ 320 struct radix_tree_root stores; /* pages to be stored on this cookie */
305#define FSCACHE_COOKIE_PENDING_TAG 0 /* pages tag: pending write to cache */ 321#define FSCACHE_COOKIE_PENDING_TAG 0 /* pages tag: pending write to cache */
322#define FSCACHE_COOKIE_STORING_TAG 1 /* pages tag: writing to cache */
306 323
307 unsigned long flags; 324 unsigned long flags;
308#define FSCACHE_COOKIE_LOOKING_UP 0 /* T if non-index cookie being looked up still */ 325#define FSCACHE_COOKIE_LOOKING_UP 0 /* T if non-index cookie being looked up still */
@@ -337,6 +354,7 @@ struct fscache_object {
337 FSCACHE_OBJECT_RECYCLING, /* retiring object */ 354 FSCACHE_OBJECT_RECYCLING, /* retiring object */
338 FSCACHE_OBJECT_WITHDRAWING, /* withdrawing object */ 355 FSCACHE_OBJECT_WITHDRAWING, /* withdrawing object */
339 FSCACHE_OBJECT_DEAD, /* object is now dead */ 356 FSCACHE_OBJECT_DEAD, /* object is now dead */
357 FSCACHE_OBJECT__NSTATES
340 } state; 358 } state;
341 359
342 int debug_id; /* debugging ID */ 360 int debug_id; /* debugging ID */
@@ -345,6 +363,7 @@ struct fscache_object {
345 int n_obj_ops; /* number of object ops outstanding on object */ 363 int n_obj_ops; /* number of object ops outstanding on object */
346 int n_in_progress; /* number of ops in progress */ 364 int n_in_progress; /* number of ops in progress */
347 int n_exclusive; /* number of exclusive ops queued */ 365 int n_exclusive; /* number of exclusive ops queued */
366 atomic_t n_reads; /* number of read ops in progress */
348 spinlock_t lock; /* state and operations lock */ 367 spinlock_t lock; /* state and operations lock */
349 368
350 unsigned long lookup_jif; /* time at which lookup started */ 369 unsigned long lookup_jif; /* time at which lookup started */
@@ -358,6 +377,7 @@ struct fscache_object {
358#define FSCACHE_OBJECT_EV_RELEASE 4 /* T if netfs requested object release */ 377#define FSCACHE_OBJECT_EV_RELEASE 4 /* T if netfs requested object release */
359#define FSCACHE_OBJECT_EV_RETIRE 5 /* T if netfs requested object retirement */ 378#define FSCACHE_OBJECT_EV_RETIRE 5 /* T if netfs requested object retirement */
360#define FSCACHE_OBJECT_EV_WITHDRAW 6 /* T if cache requested object withdrawal */ 379#define FSCACHE_OBJECT_EV_WITHDRAW 6 /* T if cache requested object withdrawal */
380#define FSCACHE_OBJECT_EVENTS_MASK 0x7f /* mask of all events*/
361 381
362 unsigned long flags; 382 unsigned long flags;
363#define FSCACHE_OBJECT_LOCK 0 /* T if object is busy being processed */ 383#define FSCACHE_OBJECT_LOCK 0 /* T if object is busy being processed */
@@ -373,7 +393,11 @@ struct fscache_object {
373 struct list_head dependents; /* FIFO of dependent objects */ 393 struct list_head dependents; /* FIFO of dependent objects */
374 struct list_head dep_link; /* link in parent's dependents list */ 394 struct list_head dep_link; /* link in parent's dependents list */
375 struct list_head pending_ops; /* unstarted operations on this object */ 395 struct list_head pending_ops; /* unstarted operations on this object */
396#ifdef CONFIG_FSCACHE_OBJECT_LIST
397 struct rb_node objlist_link; /* link in global object list */
398#endif
376 pgoff_t store_limit; /* current storage limit */ 399 pgoff_t store_limit; /* current storage limit */
400 loff_t store_limit_l; /* current storage limit */
377}; 401};
378 402
379extern const char *fscache_object_states[]; 403extern const char *fscache_object_states[];
@@ -383,6 +407,10 @@ extern const char *fscache_object_states[];
383 (obj)->state >= FSCACHE_OBJECT_AVAILABLE && \ 407 (obj)->state >= FSCACHE_OBJECT_AVAILABLE && \
384 (obj)->state < FSCACHE_OBJECT_DYING) 408 (obj)->state < FSCACHE_OBJECT_DYING)
385 409
410#define fscache_object_is_dead(obj) \
411 (test_bit(FSCACHE_IOERROR, &(obj)->cache->flags) && \
412 (obj)->state >= FSCACHE_OBJECT_DYING)
413
386extern const struct slow_work_ops fscache_object_slow_work_ops; 414extern const struct slow_work_ops fscache_object_slow_work_ops;
387 415
388/** 416/**
@@ -414,6 +442,7 @@ void fscache_object_init(struct fscache_object *object,
414 object->events = object->event_mask = 0; 442 object->events = object->event_mask = 0;
415 object->flags = 0; 443 object->flags = 0;
416 object->store_limit = 0; 444 object->store_limit = 0;
445 object->store_limit_l = 0;
417 object->cache = cache; 446 object->cache = cache;
418 object->cookie = cookie; 447 object->cookie = cookie;
419 object->parent = NULL; 448 object->parent = NULL;
@@ -422,6 +451,12 @@ void fscache_object_init(struct fscache_object *object,
422extern void fscache_object_lookup_negative(struct fscache_object *object); 451extern void fscache_object_lookup_negative(struct fscache_object *object);
423extern void fscache_obtained_object(struct fscache_object *object); 452extern void fscache_obtained_object(struct fscache_object *object);
424 453
454#ifdef CONFIG_FSCACHE_OBJECT_LIST
455extern void fscache_object_destroy(struct fscache_object *object);
456#else
457#define fscache_object_destroy(object) do {} while(0)
458#endif
459
425/** 460/**
426 * fscache_object_destroyed - Note destruction of an object in a cache 461 * fscache_object_destroyed - Note destruction of an object in a cache
427 * @cache: The cache from which the object came 462 * @cache: The cache from which the object came
@@ -460,6 +495,7 @@ static inline void fscache_object_lookup_error(struct fscache_object *object)
460static inline 495static inline
461void fscache_set_store_limit(struct fscache_object *object, loff_t i_size) 496void fscache_set_store_limit(struct fscache_object *object, loff_t i_size)
462{ 497{
498 object->store_limit_l = i_size;
463 object->store_limit = i_size >> PAGE_SHIFT; 499 object->store_limit = i_size >> PAGE_SHIFT;
464 if (i_size & ~PAGE_MASK) 500 if (i_size & ~PAGE_MASK)
465 object->store_limit++; 501 object->store_limit++;
diff --git a/include/linux/fscache.h b/include/linux/fscache.h
index 6d8ee466e0a0..595ce49288b7 100644
--- a/include/linux/fscache.h
+++ b/include/linux/fscache.h
@@ -202,6 +202,8 @@ extern int __fscache_write_page(struct fscache_cookie *, struct page *, gfp_t);
202extern void __fscache_uncache_page(struct fscache_cookie *, struct page *); 202extern void __fscache_uncache_page(struct fscache_cookie *, struct page *);
203extern bool __fscache_check_page_write(struct fscache_cookie *, struct page *); 203extern bool __fscache_check_page_write(struct fscache_cookie *, struct page *);
204extern void __fscache_wait_on_page_write(struct fscache_cookie *, struct page *); 204extern void __fscache_wait_on_page_write(struct fscache_cookie *, struct page *);
205extern bool __fscache_maybe_release_page(struct fscache_cookie *, struct page *,
206 gfp_t);
205 207
206/** 208/**
207 * fscache_register_netfs - Register a filesystem as desiring caching services 209 * fscache_register_netfs - Register a filesystem as desiring caching services
@@ -615,4 +617,29 @@ void fscache_wait_on_page_write(struct fscache_cookie *cookie,
615 __fscache_wait_on_page_write(cookie, page); 617 __fscache_wait_on_page_write(cookie, page);
616} 618}
617 619
620/**
621 * fscache_maybe_release_page - Consider releasing a page, cancelling a store
622 * @cookie: The cookie representing the cache object
623 * @page: The netfs page that is being cached.
624 * @gfp: The gfp flags passed to releasepage()
625 *
626 * Consider releasing a page for the vmscan algorithm, on behalf of the netfs's
627 * releasepage() call. A storage request on the page may cancelled if it is
628 * not currently being processed.
629 *
630 * The function returns true if the page no longer has a storage request on it,
631 * and false if a storage request is left in place. If true is returned, the
632 * page will have been passed to fscache_uncache_page(). If false is returned
633 * the page cannot be freed yet.
634 */
635static inline
636bool fscache_maybe_release_page(struct fscache_cookie *cookie,
637 struct page *page,
638 gfp_t gfp)
639{
640 if (fscache_cookie_valid(cookie) && PageFsCache(page))
641 return __fscache_maybe_release_page(cookie, page, gfp);
642 return false;
643}
644
618#endif /* _LINUX_FSCACHE_H */ 645#endif /* _LINUX_FSCACHE_H */
diff --git a/include/linux/i2c-pnx.h b/include/linux/i2c-pnx.h
index f13255e06406..9eb07bbc6522 100644
--- a/include/linux/i2c-pnx.h
+++ b/include/linux/i2c-pnx.h
@@ -21,7 +21,7 @@ struct i2c_pnx_mif {
21 int mode; /* Interface mode */ 21 int mode; /* Interface mode */
22 struct completion complete; /* I/O completion */ 22 struct completion complete; /* I/O completion */
23 struct timer_list timer; /* Timeout */ 23 struct timer_list timer; /* Timeout */
24 char * buf; /* Data buffer */ 24 u8 * buf; /* Data buffer */
25 int len; /* Length of data buffer */ 25 int len; /* Length of data buffer */
26}; 26};
27 27
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 57d41b0abce2..7b40cda57a70 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -361,6 +361,24 @@ static inline void i2c_set_adapdata(struct i2c_adapter *dev, void *data)
361 dev_set_drvdata(&dev->dev, data); 361 dev_set_drvdata(&dev->dev, data);
362} 362}
363 363
364/**
365 * i2c_lock_adapter - Prevent access to an I2C bus segment
366 * @adapter: Target I2C bus segment
367 */
368static inline void i2c_lock_adapter(struct i2c_adapter *adapter)
369{
370 mutex_lock(&adapter->bus_lock);
371}
372
373/**
374 * i2c_unlock_adapter - Reauthorize access to an I2C bus segment
375 * @adapter: Target I2C bus segment
376 */
377static inline void i2c_unlock_adapter(struct i2c_adapter *adapter)
378{
379 mutex_unlock(&adapter->bus_lock);
380}
381
364/*flags for the client struct: */ 382/*flags for the client struct: */
365#define I2C_CLIENT_PEC 0x04 /* Use Packet Error Checking */ 383#define I2C_CLIENT_PEC 0x04 /* Use Packet Error Checking */
366#define I2C_CLIENT_TEN 0x10 /* we have a ten bit chip address */ 384#define I2C_CLIENT_TEN 0x10 /* we have a ten bit chip address */
diff --git a/include/linux/input.h b/include/linux/input.h
index 0ccfc30cd40f..c2b1a7d244d9 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -1377,6 +1377,10 @@ extern struct class input_class;
1377 * methods; erase() is optional. set_gain() and set_autocenter() need 1377 * methods; erase() is optional. set_gain() and set_autocenter() need
1378 * only be implemented if driver sets up FF_GAIN and FF_AUTOCENTER 1378 * only be implemented if driver sets up FF_GAIN and FF_AUTOCENTER
1379 * bits. 1379 * bits.
1380 *
1381 * Note that playback(), set_gain() and set_autocenter() are called with
1382 * dev->event_lock spinlock held and interrupts off and thus may not
1383 * sleep.
1380 */ 1384 */
1381struct ff_device { 1385struct ff_device {
1382 int (*upload)(struct input_dev *dev, struct ff_effect *effect, 1386 int (*upload)(struct input_dev *dev, struct ff_effect *effect,
diff --git a/include/linux/isdn_ppp.h b/include/linux/isdn_ppp.h
index 4c218ee7587a..8687a7dc0632 100644
--- a/include/linux/isdn_ppp.h
+++ b/include/linux/isdn_ppp.h
@@ -157,7 +157,7 @@ typedef struct {
157 157
158typedef struct { 158typedef struct {
159 int mp_mrru; /* unused */ 159 int mp_mrru; /* unused */
160 struct sk_buff_head frags; /* fragments sl list */ 160 struct sk_buff * frags; /* fragments sl list -- use skb->next */
161 long frames; /* number of frames in the frame list */ 161 long frames; /* number of frames in the frame list */
162 unsigned int seq; /* last processed packet seq #: any packets 162 unsigned int seq; /* last processed packet seq #: any packets
163 * with smaller seq # will be dropped 163 * with smaller seq # will be dropped
diff --git a/include/linux/mfd/wm831x/regulator.h b/include/linux/mfd/wm831x/regulator.h
index f95466343fb2..955d30fc6a27 100644
--- a/include/linux/mfd/wm831x/regulator.h
+++ b/include/linux/mfd/wm831x/regulator.h
@@ -1212,7 +1212,7 @@
1212#define WM831X_LDO1_OK_SHIFT 0 /* LDO1_OK */ 1212#define WM831X_LDO1_OK_SHIFT 0 /* LDO1_OK */
1213#define WM831X_LDO1_OK_WIDTH 1 /* LDO1_OK */ 1213#define WM831X_LDO1_OK_WIDTH 1 /* LDO1_OK */
1214 1214
1215#define WM831X_ISINK_MAX_ISEL 56 1215#define WM831X_ISINK_MAX_ISEL 55
1216extern int wm831x_isinkv_values[WM831X_ISINK_MAX_ISEL]; 1216extern int wm831x_isinkv_values[WM831X_ISINK_MAX_ISEL + 1];
1217 1217
1218#endif 1218#endif
diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
index 6547c3cdbc4c..82a9124f7d75 100644
--- a/include/linux/moduleparam.h
+++ b/include/linux/moduleparam.h
@@ -37,7 +37,6 @@ typedef int (*param_set_fn)(const char *val, struct kernel_param *kp);
37typedef int (*param_get_fn)(char *buffer, struct kernel_param *kp); 37typedef int (*param_get_fn)(char *buffer, struct kernel_param *kp);
38 38
39/* Flag bits for kernel_param.flags */ 39/* Flag bits for kernel_param.flags */
40#define KPARAM_KMALLOCED 1
41#define KPARAM_ISBOOL 2 40#define KPARAM_ISBOOL 2
42 41
43struct kernel_param { 42struct kernel_param {
diff --git a/include/linux/nilfs2_fs.h b/include/linux/nilfs2_fs.h
index 79fec6af3f9f..ce520402e840 100644
--- a/include/linux/nilfs2_fs.h
+++ b/include/linux/nilfs2_fs.h
@@ -425,15 +425,6 @@ struct nilfs_dat_entry {
425}; 425};
426 426
427/** 427/**
428 * struct nilfs_dat_group_desc - block group descriptor
429 * @dg_nfrees: number of free virtual block numbers in block group
430 */
431struct nilfs_dat_group_desc {
432 __le32 dg_nfrees;
433};
434
435
436/**
437 * struct nilfs_snapshot_list - snapshot list 428 * struct nilfs_snapshot_list - snapshot list
438 * @ssl_next: next checkpoint number on snapshot list 429 * @ssl_next: next checkpoint number on snapshot list
439 * @ssl_prev: previous checkpoint number on snapshot list 430 * @ssl_prev: previous checkpoint number on snapshot list
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 86257a412732..84cf1f3b7838 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -482,6 +482,9 @@
482#define PCI_DEVICE_ID_IBM_ICOM_V2_ONE_PORT_RVX_ONE_PORT_MDM_PCIE 0x0361 482#define PCI_DEVICE_ID_IBM_ICOM_V2_ONE_PORT_RVX_ONE_PORT_MDM_PCIE 0x0361
483#define PCI_DEVICE_ID_IBM_ICOM_FOUR_PORT_MODEL 0x252 483#define PCI_DEVICE_ID_IBM_ICOM_FOUR_PORT_MODEL 0x252
484 484
485#define PCI_SUBVENDOR_ID_IBM 0x1014
486#define PCI_SUBDEVICE_ID_IBM_SATURN_SERIAL_ONE_PORT 0x03d4
487
485#define PCI_VENDOR_ID_UNISYS 0x1018 488#define PCI_VENDOR_ID_UNISYS 0x1018
486#define PCI_DEVICE_ID_UNISYS_DMA_DIRECTOR 0x001C 489#define PCI_DEVICE_ID_UNISYS_DMA_DIRECTOR 0x001C
487 490
@@ -540,7 +543,7 @@
540#define PCI_DEVICE_ID_AMD_8131_BRIDGE 0x7450 543#define PCI_DEVICE_ID_AMD_8131_BRIDGE 0x7450
541#define PCI_DEVICE_ID_AMD_8131_APIC 0x7451 544#define PCI_DEVICE_ID_AMD_8131_APIC 0x7451
542#define PCI_DEVICE_ID_AMD_8132_BRIDGE 0x7458 545#define PCI_DEVICE_ID_AMD_8132_BRIDGE 0x7458
543#define PCI_DEVICE_ID_AMD_SB900_SMBUS 0x780b 546#define PCI_DEVICE_ID_AMD_HUDSON2_SMBUS 0x780b
544#define PCI_DEVICE_ID_AMD_CS5535_IDE 0x208F 547#define PCI_DEVICE_ID_AMD_CS5535_IDE 0x208F
545#define PCI_DEVICE_ID_AMD_CS5536_ISA 0x2090 548#define PCI_DEVICE_ID_AMD_CS5536_ISA 0x2090
546#define PCI_DEVICE_ID_AMD_CS5536_FLASH 0x2091 549#define PCI_DEVICE_ID_AMD_CS5536_FLASH 0x2091
@@ -1953,6 +1956,8 @@
1953#define PCI_DEVICE_ID_LAVA_DSERIAL 0x0100 /* 2x 16550 */ 1956#define PCI_DEVICE_ID_LAVA_DSERIAL 0x0100 /* 2x 16550 */
1954#define PCI_DEVICE_ID_LAVA_QUATRO_A 0x0101 /* 2x 16550, half of 4 port */ 1957#define PCI_DEVICE_ID_LAVA_QUATRO_A 0x0101 /* 2x 16550, half of 4 port */
1955#define PCI_DEVICE_ID_LAVA_QUATRO_B 0x0102 /* 2x 16550, half of 4 port */ 1958#define PCI_DEVICE_ID_LAVA_QUATRO_B 0x0102 /* 2x 16550, half of 4 port */
1959#define PCI_DEVICE_ID_LAVA_QUATTRO_A 0x0120 /* 2x 16550A, half of 4 port */
1960#define PCI_DEVICE_ID_LAVA_QUATTRO_B 0x0121 /* 2x 16550A, half of 4 port */
1956#define PCI_DEVICE_ID_LAVA_OCTO_A 0x0180 /* 4x 16550A, half of 8 port */ 1961#define PCI_DEVICE_ID_LAVA_OCTO_A 0x0180 /* 4x 16550A, half of 8 port */
1957#define PCI_DEVICE_ID_LAVA_OCTO_B 0x0181 /* 4x 16550A, half of 8 port */ 1962#define PCI_DEVICE_ID_LAVA_OCTO_B 0x0181 /* 4x 16550A, half of 8 port */
1958#define PCI_DEVICE_ID_LAVA_PORT_PLUS 0x0200 /* 2x 16650 */ 1963#define PCI_DEVICE_ID_LAVA_PORT_PLUS 0x0200 /* 2x 16650 */
@@ -2160,6 +2165,10 @@
2160#define PCI_DEVICE_ID_ADDIDATA_APCI7420_3 0x700D 2165#define PCI_DEVICE_ID_ADDIDATA_APCI7420_3 0x700D
2161#define PCI_DEVICE_ID_ADDIDATA_APCI7300_3 0x700E 2166#define PCI_DEVICE_ID_ADDIDATA_APCI7300_3 0x700E
2162#define PCI_DEVICE_ID_ADDIDATA_APCI7800_3 0x700F 2167#define PCI_DEVICE_ID_ADDIDATA_APCI7800_3 0x700F
2168#define PCI_DEVICE_ID_ADDIDATA_APCIe7300 0x7010
2169#define PCI_DEVICE_ID_ADDIDATA_APCIe7420 0x7011
2170#define PCI_DEVICE_ID_ADDIDATA_APCIe7500 0x7012
2171#define PCI_DEVICE_ID_ADDIDATA_APCIe7800 0x7013
2163 2172
2164#define PCI_VENDOR_ID_PDC 0x15e9 2173#define PCI_VENDOR_ID_PDC 0x15e9
2165 2174
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 2e6d95f97419..9e7012689a84 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -471,8 +471,8 @@ struct hw_perf_event {
471 unsigned long event_base; 471 unsigned long event_base;
472 int idx; 472 int idx;
473 }; 473 };
474 union { /* software */ 474 struct { /* software */
475 atomic64_t count; 475 s64 remaining;
476 struct hrtimer hrtimer; 476 struct hrtimer hrtimer;
477 }; 477 };
478 }; 478 };
diff --git a/include/linux/prctl.h b/include/linux/prctl.h
index 931150566ade..a3baeb2c2161 100644
--- a/include/linux/prctl.h
+++ b/include/linux/prctl.h
@@ -88,6 +88,18 @@
88#define PR_TASK_PERF_EVENTS_DISABLE 31 88#define PR_TASK_PERF_EVENTS_DISABLE 31
89#define PR_TASK_PERF_EVENTS_ENABLE 32 89#define PR_TASK_PERF_EVENTS_ENABLE 32
90 90
91/*
92 * Set early/late kill mode for hwpoison memory corruption.
93 * This influences when the process gets killed on a memory corruption.
94 */
91#define PR_MCE_KILL 33 95#define PR_MCE_KILL 33
96# define PR_MCE_KILL_CLEAR 0
97# define PR_MCE_KILL_SET 1
98
99# define PR_MCE_KILL_LATE 0
100# define PR_MCE_KILL_EARLY 1
101# define PR_MCE_KILL_DEFAULT 2
102
103#define PR_MCE_KILL_GET 34
92 104
93#endif /* _LINUX_PRCTL_H */ 105#endif /* _LINUX_PRCTL_H */
diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h
index 46e9ab3ee6e1..9642c6bcb399 100644
--- a/include/linux/rcutree.h
+++ b/include/linux/rcutree.h
@@ -76,11 +76,7 @@ static inline void __rcu_read_unlock_bh(void)
76 76
77extern void call_rcu_sched(struct rcu_head *head, 77extern void call_rcu_sched(struct rcu_head *head,
78 void (*func)(struct rcu_head *rcu)); 78 void (*func)(struct rcu_head *rcu));
79 79extern void synchronize_rcu_expedited(void);
80static inline void synchronize_rcu_expedited(void)
81{
82 synchronize_sched_expedited();
83}
84 80
85static inline void synchronize_rcu_bh_expedited(void) 81static inline void synchronize_rcu_bh_expedited(void)
86{ 82{
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index df7b23ac66e6..bcdd6606f468 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -354,8 +354,8 @@ struct sk_buff {
354 ipvs_property:1, 354 ipvs_property:1,
355 peeked:1, 355 peeked:1,
356 nf_trace:1; 356 nf_trace:1;
357 __be16 protocol:16;
357 kmemcheck_bitfield_end(flags1); 358 kmemcheck_bitfield_end(flags1);
358 __be16 protocol;
359 359
360 void (*destructor)(struct sk_buff *skb); 360 void (*destructor)(struct sk_buff *skb);
361#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) 361#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
@@ -367,7 +367,6 @@ struct sk_buff {
367#endif 367#endif
368 368
369 int iif; 369 int iif;
370 __u16 queue_mapping;
371#ifdef CONFIG_NET_SCHED 370#ifdef CONFIG_NET_SCHED
372 __u16 tc_index; /* traffic control index */ 371 __u16 tc_index; /* traffic control index */
373#ifdef CONFIG_NET_CLS_ACT 372#ifdef CONFIG_NET_CLS_ACT
@@ -376,6 +375,7 @@ struct sk_buff {
376#endif 375#endif
377 376
378 kmemcheck_bitfield_begin(flags2); 377 kmemcheck_bitfield_begin(flags2);
378 __u16 queue_mapping:16;
379#ifdef CONFIG_IPV6_NDISC_NODETYPE 379#ifdef CONFIG_IPV6_NDISC_NODETYPE
380 __u8 ndisc_nodetype:2; 380 __u8 ndisc_nodetype:2;
381#endif 381#endif
@@ -1757,6 +1757,8 @@ extern int skb_copy_datagram_const_iovec(const struct sk_buff *from,
1757 int to_offset, 1757 int to_offset,
1758 int size); 1758 int size);
1759extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb); 1759extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb);
1760extern void skb_free_datagram_locked(struct sock *sk,
1761 struct sk_buff *skb);
1760extern int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, 1762extern int skb_kill_datagram(struct sock *sk, struct sk_buff *skb,
1761 unsigned int flags); 1763 unsigned int flags);
1762extern __wsum skb_checksum(const struct sk_buff *skb, int offset, 1764extern __wsum skb_checksum(const struct sk_buff *skb, int offset,
diff --git a/include/linux/slow-work.h b/include/linux/slow-work.h
index b65c8881f07a..13337bf6c3f5 100644
--- a/include/linux/slow-work.h
+++ b/include/linux/slow-work.h
@@ -17,13 +17,20 @@
17#ifdef CONFIG_SLOW_WORK 17#ifdef CONFIG_SLOW_WORK
18 18
19#include <linux/sysctl.h> 19#include <linux/sysctl.h>
20#include <linux/timer.h>
20 21
21struct slow_work; 22struct slow_work;
23#ifdef CONFIG_SLOW_WORK_DEBUG
24struct seq_file;
25#endif
22 26
23/* 27/*
24 * The operations used to support slow work items 28 * The operations used to support slow work items
25 */ 29 */
26struct slow_work_ops { 30struct slow_work_ops {
31 /* owner */
32 struct module *owner;
33
27 /* get a ref on a work item 34 /* get a ref on a work item
28 * - return 0 if successful, -ve if not 35 * - return 0 if successful, -ve if not
29 */ 36 */
@@ -34,6 +41,11 @@ struct slow_work_ops {
34 41
35 /* execute a work item */ 42 /* execute a work item */
36 void (*execute)(struct slow_work *work); 43 void (*execute)(struct slow_work *work);
44
45#ifdef CONFIG_SLOW_WORK_DEBUG
46 /* describe a work item for debugfs */
47 void (*desc)(struct slow_work *work, struct seq_file *m);
48#endif
37}; 49};
38 50
39/* 51/*
@@ -42,13 +54,24 @@ struct slow_work_ops {
42 * queued 54 * queued
43 */ 55 */
44struct slow_work { 56struct slow_work {
57 struct module *owner; /* the owning module */
45 unsigned long flags; 58 unsigned long flags;
46#define SLOW_WORK_PENDING 0 /* item pending (further) execution */ 59#define SLOW_WORK_PENDING 0 /* item pending (further) execution */
47#define SLOW_WORK_EXECUTING 1 /* item currently executing */ 60#define SLOW_WORK_EXECUTING 1 /* item currently executing */
48#define SLOW_WORK_ENQ_DEFERRED 2 /* item enqueue deferred */ 61#define SLOW_WORK_ENQ_DEFERRED 2 /* item enqueue deferred */
49#define SLOW_WORK_VERY_SLOW 3 /* item is very slow */ 62#define SLOW_WORK_VERY_SLOW 3 /* item is very slow */
63#define SLOW_WORK_CANCELLING 4 /* item is being cancelled, don't enqueue */
64#define SLOW_WORK_DELAYED 5 /* item is struct delayed_slow_work with active timer */
50 const struct slow_work_ops *ops; /* operations table for this item */ 65 const struct slow_work_ops *ops; /* operations table for this item */
51 struct list_head link; /* link in queue */ 66 struct list_head link; /* link in queue */
67#ifdef CONFIG_SLOW_WORK_DEBUG
68 struct timespec mark; /* jiffies at which queued or exec begun */
69#endif
70};
71
72struct delayed_slow_work {
73 struct slow_work work;
74 struct timer_list timer;
52}; 75};
53 76
54/** 77/**
@@ -67,6 +90,20 @@ static inline void slow_work_init(struct slow_work *work,
67} 90}
68 91
69/** 92/**
93 * slow_work_init - Initialise a delayed slow work item
94 * @work: The work item to initialise
95 * @ops: The operations to use to handle the slow work item
96 *
97 * Initialise a delayed slow work item.
98 */
99static inline void delayed_slow_work_init(struct delayed_slow_work *dwork,
100 const struct slow_work_ops *ops)
101{
102 init_timer(&dwork->timer);
103 slow_work_init(&dwork->work, ops);
104}
105
106/**
70 * vslow_work_init - Initialise a very slow work item 107 * vslow_work_init - Initialise a very slow work item
71 * @work: The work item to initialise 108 * @work: The work item to initialise
72 * @ops: The operations to use to handle the slow work item 109 * @ops: The operations to use to handle the slow work item
@@ -83,9 +120,40 @@ static inline void vslow_work_init(struct slow_work *work,
83 INIT_LIST_HEAD(&work->link); 120 INIT_LIST_HEAD(&work->link);
84} 121}
85 122
123/**
124 * slow_work_is_queued - Determine if a slow work item is on the work queue
125 * work: The work item to test
126 *
127 * Determine if the specified slow-work item is on the work queue. This
128 * returns true if it is actually on the queue.
129 *
130 * If the item is executing and has been marked for requeue when execution
131 * finishes, then false will be returned.
132 *
133 * Anyone wishing to wait for completion of execution can wait on the
134 * SLOW_WORK_EXECUTING bit.
135 */
136static inline bool slow_work_is_queued(struct slow_work *work)
137{
138 unsigned long flags = work->flags;
139 return flags & SLOW_WORK_PENDING && !(flags & SLOW_WORK_EXECUTING);
140}
141
86extern int slow_work_enqueue(struct slow_work *work); 142extern int slow_work_enqueue(struct slow_work *work);
87extern int slow_work_register_user(void); 143extern void slow_work_cancel(struct slow_work *work);
88extern void slow_work_unregister_user(void); 144extern int slow_work_register_user(struct module *owner);
145extern void slow_work_unregister_user(struct module *owner);
146
147extern int delayed_slow_work_enqueue(struct delayed_slow_work *dwork,
148 unsigned long delay);
149
150static inline void delayed_slow_work_cancel(struct delayed_slow_work *dwork)
151{
152 slow_work_cancel(&dwork->work);
153}
154
155extern bool slow_work_sleep_till_thread_needed(struct slow_work *work,
156 signed long *_timeout);
89 157
90#ifdef CONFIG_SYSCTL 158#ifdef CONFIG_SYSCTL
91extern ctl_table slow_work_sysctls[]; 159extern ctl_table slow_work_sysctls[];
diff --git a/include/linux/string.h b/include/linux/string.h
index 489019ef1694..b8508868d5ad 100644
--- a/include/linux/string.h
+++ b/include/linux/string.h
@@ -62,7 +62,7 @@ extern char * strnchr(const char *, size_t, int);
62#ifndef __HAVE_ARCH_STRRCHR 62#ifndef __HAVE_ARCH_STRRCHR
63extern char * strrchr(const char *,int); 63extern char * strrchr(const char *,int);
64#endif 64#endif
65extern char * strstrip(char *); 65extern char * __must_check strstrip(char *);
66#ifndef __HAVE_ARCH_STRSTR 66#ifndef __HAVE_ARCH_STRSTR
67extern char * strstr(const char *,const char *); 67extern char * strstr(const char *,const char *);
68#endif 68#endif
diff --git a/include/linux/suspend.h b/include/linux/suspend.h
index cd15df6c63cd..5e781d824e6d 100644
--- a/include/linux/suspend.h
+++ b/include/linux/suspend.h
@@ -301,6 +301,8 @@ static inline int unregister_pm_notifier(struct notifier_block *nb)
301#define pm_notifier(fn, pri) do { (void)(fn); } while (0) 301#define pm_notifier(fn, pri) do { (void)(fn); } while (0)
302#endif /* !CONFIG_PM_SLEEP */ 302#endif /* !CONFIG_PM_SLEEP */
303 303
304extern struct mutex pm_mutex;
305
304#ifndef CONFIG_HIBERNATION 306#ifndef CONFIG_HIBERNATION
305static inline void register_nosave_region(unsigned long b, unsigned long e) 307static inline void register_nosave_region(unsigned long b, unsigned long e)
306{ 308{
@@ -308,8 +310,23 @@ static inline void register_nosave_region(unsigned long b, unsigned long e)
308static inline void register_nosave_region_late(unsigned long b, unsigned long e) 310static inline void register_nosave_region_late(unsigned long b, unsigned long e)
309{ 311{
310} 312}
311#endif
312 313
313extern struct mutex pm_mutex; 314static inline void lock_system_sleep(void) {}
315static inline void unlock_system_sleep(void) {}
316
317#else
318
319/* Let some subsystems like memory hotadd exclude hibernation */
320
321static inline void lock_system_sleep(void)
322{
323 mutex_lock(&pm_mutex);
324}
325
326static inline void unlock_system_sleep(void)
327{
328 mutex_unlock(&pm_mutex);
329}
330#endif
314 331
315#endif /* _LINUX_SUSPEND_H */ 332#endif /* _LINUX_SUSPEND_H */
diff --git a/include/linux/topology.h b/include/linux/topology.h
index fc0bf3edeb67..57e63579bfdd 100644
--- a/include/linux/topology.h
+++ b/include/linux/topology.h
@@ -129,7 +129,7 @@ int arch_update_cpu_topology(void);
129 | 1*SD_BALANCE_FORK \ 129 | 1*SD_BALANCE_FORK \
130 | 0*SD_BALANCE_WAKE \ 130 | 0*SD_BALANCE_WAKE \
131 | 1*SD_WAKE_AFFINE \ 131 | 1*SD_WAKE_AFFINE \
132 | 1*SD_PREFER_LOCAL \ 132 | 0*SD_PREFER_LOCAL \
133 | 0*SD_SHARE_CPUPOWER \ 133 | 0*SD_SHARE_CPUPOWER \
134 | 1*SD_SHARE_PKG_RESOURCES \ 134 | 1*SD_SHARE_PKG_RESOURCES \
135 | 0*SD_SERIALIZE \ 135 | 0*SD_SERIALIZE \
@@ -162,7 +162,7 @@ int arch_update_cpu_topology(void);
162 | 1*SD_BALANCE_FORK \ 162 | 1*SD_BALANCE_FORK \
163 | 0*SD_BALANCE_WAKE \ 163 | 0*SD_BALANCE_WAKE \
164 | 1*SD_WAKE_AFFINE \ 164 | 1*SD_WAKE_AFFINE \
165 | 1*SD_PREFER_LOCAL \ 165 | 0*SD_PREFER_LOCAL \
166 | 0*SD_SHARE_CPUPOWER \ 166 | 0*SD_SHARE_CPUPOWER \
167 | 0*SD_SHARE_PKG_RESOURCES \ 167 | 0*SD_SHARE_PKG_RESOURCES \
168 | 0*SD_SERIALIZE \ 168 | 0*SD_SERIALIZE \
diff --git a/include/linux/trace_seq.h b/include/linux/trace_seq.h
index c134dd1fe6b6..09077f6ed128 100644
--- a/include/linux/trace_seq.h
+++ b/include/linux/trace_seq.h
@@ -7,7 +7,7 @@
7 7
8/* 8/*
9 * Trace sequences are used to allow a function to call several other functions 9 * Trace sequences are used to allow a function to call several other functions
10 * to create a string of data to use (up to a max of PAGE_SIZE. 10 * to create a string of data to use (up to a max of PAGE_SIZE).
11 */ 11 */
12 12
13struct trace_seq { 13struct trace_seq {
diff --git a/include/linux/vt.h b/include/linux/vt.h
index 7afca0d72139..7ffa11f06232 100644
--- a/include/linux/vt.h
+++ b/include/linux/vt.h
@@ -70,8 +70,8 @@ struct vt_event {
70#define VT_EVENT_UNBLANK 0x0004 /* Screen unblank */ 70#define VT_EVENT_UNBLANK 0x0004 /* Screen unblank */
71#define VT_EVENT_RESIZE 0x0008 /* Resize display */ 71#define VT_EVENT_RESIZE 0x0008 /* Resize display */
72#define VT_MAX_EVENT 0x000F 72#define VT_MAX_EVENT 0x000F
73 unsigned int old; /* Old console */ 73 unsigned int oldev; /* Old console */
74 unsigned int new; /* New console (if changing) */ 74 unsigned int newev; /* New console (if changing) */
75 unsigned int pad[4]; /* Padding for expansion */ 75 unsigned int pad[4]; /* Padding for expansion */
76}; 76};
77 77
diff --git a/include/net/9p/client.h b/include/net/9p/client.h
index e26812274b75..fb00b329f0d3 100644
--- a/include/net/9p/client.h
+++ b/include/net/9p/client.h
@@ -159,8 +159,7 @@ struct p9_client {
159 * @qid: the &p9_qid server identifier this handle points to 159 * @qid: the &p9_qid server identifier this handle points to
160 * @iounit: the server reported maximum transaction size for this file 160 * @iounit: the server reported maximum transaction size for this file
161 * @uid: the numeric uid of the local user who owns this handle 161 * @uid: the numeric uid of the local user who owns this handle
162 * @aux: transport specific information (unused?) 162 * @rdir: readdir accounting structure (allocated on demand)
163 * @rdir_fpos: tracks offset of file position when reading directory contents
164 * @flist: per-client-instance fid tracking 163 * @flist: per-client-instance fid tracking
165 * @dlist: per-dentry fid tracking 164 * @dlist: per-dentry fid tracking
166 * 165 *
@@ -174,9 +173,9 @@ struct p9_fid {
174 struct p9_qid qid; 173 struct p9_qid qid;
175 u32 iounit; 174 u32 iounit;
176 uid_t uid; 175 uid_t uid;
177 void *aux;
178 176
179 int rdir_fpos; 177 void *rdir;
178
180 struct list_head flist; 179 struct list_head flist;
181 struct list_head dlist; /* list of all fids attached to a dentry */ 180 struct list_head dlist; /* list of all fids attached to a dentry */
182}; 181};
diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h
index ef91fe924ba4..4d22fabc7719 100644
--- a/include/net/ip_fib.h
+++ b/include/net/ip_fib.h
@@ -210,7 +210,8 @@ extern struct fib_table *fib_get_table(struct net *net, u32 id);
210extern const struct nla_policy rtm_ipv4_policy[]; 210extern const struct nla_policy rtm_ipv4_policy[];
211extern void ip_fib_init(void); 211extern void ip_fib_init(void);
212extern int fib_validate_source(__be32 src, __be32 dst, u8 tos, int oif, 212extern int fib_validate_source(__be32 src, __be32 dst, u8 tos, int oif,
213 struct net_device *dev, __be32 *spec_dst, u32 *itag); 213 struct net_device *dev, __be32 *spec_dst,
214 u32 *itag, u32 mark);
214extern void fib_select_default(struct net *net, const struct flowi *flp, 215extern void fib_select_default(struct net *net, const struct flowi *flp,
215 struct fib_result *res); 216 struct fib_result *res);
216 217
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index c75b960c8ac8..998c30fc8981 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1283,6 +1283,12 @@ enum ieee80211_filter_flags {
1283 * 1283 *
1284 * These flags are used with the ampdu_action() callback in 1284 * These flags are used with the ampdu_action() callback in
1285 * &struct ieee80211_ops to indicate which action is needed. 1285 * &struct ieee80211_ops to indicate which action is needed.
1286 *
1287 * Note that drivers MUST be able to deal with a TX aggregation
1288 * session being stopped even before they OK'ed starting it by
1289 * calling ieee80211_start_tx_ba_cb(_irqsafe), because the peer
1290 * might receive the addBA frame and send a delBA right away!
1291 *
1286 * @IEEE80211_AMPDU_RX_START: start Rx aggregation 1292 * @IEEE80211_AMPDU_RX_START: start Rx aggregation
1287 * @IEEE80211_AMPDU_RX_STOP: stop Rx aggregation 1293 * @IEEE80211_AMPDU_RX_STOP: stop Rx aggregation
1288 * @IEEE80211_AMPDU_TX_START: start Tx aggregation 1294 * @IEEE80211_AMPDU_TX_START: start Tx aggregation
diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h
index cbdd6284996d..5cf7270e3ffc 100644
--- a/include/net/netfilter/nf_conntrack.h
+++ b/include/net/netfilter/nf_conntrack.h
@@ -255,11 +255,9 @@ static inline bool nf_ct_kill(struct nf_conn *ct)
255} 255}
256 256
257/* These are for NAT. Icky. */ 257/* These are for NAT. Icky. */
258/* Update TCP window tracking data when NAT mangles the packet */ 258extern s16 (*nf_ct_nat_offset)(const struct nf_conn *ct,
259extern void nf_conntrack_tcp_update(const struct sk_buff *skb, 259 enum ip_conntrack_dir dir,
260 unsigned int dataoff, 260 u32 seq);
261 struct nf_conn *ct, int dir,
262 s16 offset);
263 261
264/* Fake conntrack entry for untracked connections */ 262/* Fake conntrack entry for untracked connections */
265extern struct nf_conn nf_conntrack_untracked; 263extern struct nf_conn nf_conntrack_untracked;
diff --git a/include/net/netfilter/nf_nat_helper.h b/include/net/netfilter/nf_nat_helper.h
index 237a961f40e1..4222220920a5 100644
--- a/include/net/netfilter/nf_nat_helper.h
+++ b/include/net/netfilter/nf_nat_helper.h
@@ -32,4 +32,8 @@ extern int (*nf_nat_seq_adjust_hook)(struct sk_buff *skb,
32 * to port ct->master->saved_proto. */ 32 * to port ct->master->saved_proto. */
33extern void nf_nat_follow_master(struct nf_conn *ct, 33extern void nf_nat_follow_master(struct nf_conn *ct,
34 struct nf_conntrack_expect *this); 34 struct nf_conntrack_expect *this);
35
36extern s16 nf_nat_get_offset(const struct nf_conn *ct,
37 enum ip_conntrack_dir dir,
38 u32 seq);
35#endif 39#endif
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
index 6e5f0e0c7967..0a474568b003 100644
--- a/include/net/sctp/structs.h
+++ b/include/net/sctp/structs.h
@@ -893,7 +893,6 @@ struct sctp_transport {
893 */ 893 */
894 /* RTO : The current retransmission timeout value. */ 894 /* RTO : The current retransmission timeout value. */
895 unsigned long rto; 895 unsigned long rto;
896 unsigned long last_rto;
897 896
898 __u32 rtt; /* This is the most recent RTT. */ 897 __u32 rtt; /* This is the most recent RTT. */
899 898
@@ -1980,7 +1979,7 @@ void sctp_assoc_set_primary(struct sctp_association *,
1980void sctp_assoc_del_nonprimary_peers(struct sctp_association *, 1979void sctp_assoc_del_nonprimary_peers(struct sctp_association *,
1981 struct sctp_transport *); 1980 struct sctp_transport *);
1982int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *, 1981int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *,
1983 gfp_t); 1982 sctp_scope_t, gfp_t);
1984int sctp_assoc_set_bind_addr_from_cookie(struct sctp_association *, 1983int sctp_assoc_set_bind_addr_from_cookie(struct sctp_association *,
1985 struct sctp_cookie*, 1984 struct sctp_cookie*,
1986 gfp_t gfp); 1985 gfp_t gfp);
diff --git a/include/pcmcia/ss.h b/include/pcmcia/ss.h
index d696a692d94a..e0f6feb8588c 100644
--- a/include/pcmcia/ss.h
+++ b/include/pcmcia/ss.h
@@ -262,6 +262,8 @@ struct pcmcia_socket {
262 struct device dev; 262 struct device dev;
263 /* data internal to the socket driver */ 263 /* data internal to the socket driver */
264 void *driver_data; 264 void *driver_data;
265 /* status of the card during resume from a system sleep state */
266 int resume_status;
265}; 267};
266 268
267 269
@@ -280,6 +282,8 @@ extern struct pccard_resource_ops pccard_nonstatic_ops;
280 282
281/* socket drivers are expected to use these callbacks in their .drv struct */ 283/* socket drivers are expected to use these callbacks in their .drv struct */
282extern int pcmcia_socket_dev_suspend(struct device *dev); 284extern int pcmcia_socket_dev_suspend(struct device *dev);
285extern void pcmcia_socket_dev_early_resume(struct device *dev);
286extern void pcmcia_socket_dev_late_resume(struct device *dev);
283extern int pcmcia_socket_dev_resume(struct device *dev); 287extern int pcmcia_socket_dev_resume(struct device *dev);
284 288
285/* socket drivers use this callback in their IRQ handler */ 289/* socket drivers use this callback in their IRQ handler */
diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h
index 9af48cbf0036..f097ae340bc1 100644
--- a/include/scsi/scsi_device.h
+++ b/include/scsi/scsi_device.h
@@ -145,6 +145,7 @@ struct scsi_device {
145 unsigned retry_hwerror:1; /* Retry HARDWARE_ERROR */ 145 unsigned retry_hwerror:1; /* Retry HARDWARE_ERROR */
146 unsigned last_sector_bug:1; /* do not use multisector accesses on 146 unsigned last_sector_bug:1; /* do not use multisector accesses on
147 SD_LAST_BUGGY_SECTORS */ 147 SD_LAST_BUGGY_SECTORS */
148 unsigned is_visible:1; /* is the device visible in sysfs */
148 149
149 DECLARE_BITMAP(supported_events, SDEV_EVT_MAXBITS); /* supported events */ 150 DECLARE_BITMAP(supported_events, SDEV_EVT_MAXBITS); /* supported events */
150 struct list_head event_list; /* asserted events */ 151 struct list_head event_list; /* asserted events */
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h
index 6e728b176904..47941fc5aba7 100644
--- a/include/scsi/scsi_host.h
+++ b/include/scsi/scsi_host.h
@@ -797,30 +797,23 @@ static inline unsigned int scsi_host_get_prot(struct Scsi_Host *shost)
797 797
798static inline unsigned int scsi_host_dif_capable(struct Scsi_Host *shost, unsigned int target_type) 798static inline unsigned int scsi_host_dif_capable(struct Scsi_Host *shost, unsigned int target_type)
799{ 799{
800 switch (target_type) { 800 static unsigned char cap[] = { 0,
801 case 1: 801 SHOST_DIF_TYPE1_PROTECTION,
802 if (shost->prot_capabilities & SHOST_DIF_TYPE1_PROTECTION) 802 SHOST_DIF_TYPE2_PROTECTION,
803 return target_type; 803 SHOST_DIF_TYPE3_PROTECTION };
804 case 2:
805 if (shost->prot_capabilities & SHOST_DIF_TYPE2_PROTECTION)
806 return target_type;
807 case 3:
808 if (shost->prot_capabilities & SHOST_DIF_TYPE3_PROTECTION)
809 return target_type;
810 }
811 804
812 return 0; 805 return shost->prot_capabilities & cap[target_type] ? target_type : 0;
813} 806}
814 807
815static inline unsigned int scsi_host_dix_capable(struct Scsi_Host *shost, unsigned int target_type) 808static inline unsigned int scsi_host_dix_capable(struct Scsi_Host *shost, unsigned int target_type)
816{ 809{
817#if defined(CONFIG_BLK_DEV_INTEGRITY) 810#if defined(CONFIG_BLK_DEV_INTEGRITY)
818 switch (target_type) { 811 static unsigned char cap[] = { SHOST_DIX_TYPE0_PROTECTION,
819 case 0: return shost->prot_capabilities & SHOST_DIX_TYPE0_PROTECTION; 812 SHOST_DIX_TYPE1_PROTECTION,
820 case 1: return shost->prot_capabilities & SHOST_DIX_TYPE1_PROTECTION; 813 SHOST_DIX_TYPE2_PROTECTION,
821 case 2: return shost->prot_capabilities & SHOST_DIX_TYPE2_PROTECTION; 814 SHOST_DIX_TYPE3_PROTECTION };
822 case 3: return shost->prot_capabilities & SHOST_DIX_TYPE3_PROTECTION; 815
823 } 816 return shost->prot_capabilities & cap[target_type];
824#endif 817#endif
825 return 0; 818 return 0;
826} 819}
diff --git a/init/Kconfig b/init/Kconfig
index 09c5c6431f42..eb4b33725db1 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -297,7 +297,7 @@ config AUDIT
297 297
298config AUDITSYSCALL 298config AUDITSYSCALL
299 bool "Enable system-call auditing support" 299 bool "Enable system-call auditing support"
300 depends on AUDIT && (X86 || PPC || PPC64 || S390 || IA64 || UML || SPARC64|| SUPERH) 300 depends on AUDIT && (X86 || PPC || S390 || IA64 || UML || SPARC64 || SUPERH)
301 default y if SECURITY_SELINUX 301 default y if SECURITY_SELINUX
302 help 302 help
303 Enable low-overhead system-call auditing infrastructure that 303 Enable low-overhead system-call auditing infrastructure that
@@ -606,7 +606,7 @@ config SYSFS_DEPRECATED
606 bool 606 bool
607 607
608config SYSFS_DEPRECATED_V2 608config SYSFS_DEPRECATED_V2
609 bool "remove sysfs features which may confuse old userspace tools" 609 bool "enable deprecated sysfs features which may confuse old userspace tools"
610 depends on SYSFS 610 depends on SYSFS
611 default n 611 default n
612 select SYSFS_DEPRECATED 612 select SYSFS_DEPRECATED
@@ -937,7 +937,7 @@ config PERF_EVENTS
937 Enable kernel support for various performance events provided 937 Enable kernel support for various performance events provided
938 by software and hardware. 938 by software and hardware.
939 939
940 Software events are supported either build-in or via the 940 Software events are supported either built-in or via the
941 use of generic tracepoints. 941 use of generic tracepoints.
942 942
943 Most modern CPUs support performance events via performance 943 Most modern CPUs support performance events via performance
@@ -949,7 +949,7 @@ config PERF_EVENTS
949 used to profile the code that runs on that CPU. 949 used to profile the code that runs on that CPU.
950 950
951 The Linux Performance Event subsystem provides an abstraction of 951 The Linux Performance Event subsystem provides an abstraction of
952 these software and hardware cevent apabilities, available via a 952 these software and hardware event capabilities, available via a
953 system call and used by the "perf" utility in tools/perf/. It 953 system call and used by the "perf" utility in tools/perf/. It
954 provides per task and per CPU counters, and it provides event 954 provides per task and per CPU counters, and it provides event
955 capabilities on top of those. 955 capabilities on top of those.
@@ -1098,6 +1098,16 @@ config SLOW_WORK
1098 1098
1099 See Documentation/slow-work.txt. 1099 See Documentation/slow-work.txt.
1100 1100
1101config SLOW_WORK_DEBUG
1102 bool "Slow work debugging through debugfs"
1103 default n
1104 depends on SLOW_WORK && DEBUG_FS
1105 help
1106 Display the contents of the slow work run queue through debugfs,
1107 including items currently executing.
1108
1109 See Documentation/slow-work.txt.
1110
1101endmenu # General setup 1111endmenu # General setup
1102 1112
1103config HAVE_GENERIC_DMA_COHERENT 1113config HAVE_GENERIC_DMA_COHERENT
diff --git a/init/main.c b/init/main.c
index 5988debfc505..4051d75dd2d6 100644
--- a/init/main.c
+++ b/init/main.c
@@ -251,7 +251,7 @@ early_param("loglevel", loglevel);
251 251
252/* 252/*
253 * Unknown boot options get handed to init, unless they look like 253 * Unknown boot options get handed to init, unless they look like
254 * failed parameters 254 * unused parameters (modprobe will find them in /proc/cmdline).
255 */ 255 */
256static int __init unknown_bootoption(char *param, char *val) 256static int __init unknown_bootoption(char *param, char *val)
257{ 257{
@@ -272,14 +272,9 @@ static int __init unknown_bootoption(char *param, char *val)
272 if (obsolete_checksetup(param)) 272 if (obsolete_checksetup(param))
273 return 0; 273 return 0;
274 274
275 /* 275 /* Unused module parameter. */
276 * Preemptive maintenance for "why didn't my misspelled command 276 if (strchr(param, '.') && (!val || strchr(param, '.') < val))
277 * line work?"
278 */
279 if (strchr(param, '.') && (!val || strchr(param, '.') < val)) {
280 printk(KERN_ERR "Unknown boot option `%s': ignoring\n", param);
281 return 0; 277 return 0;
282 }
283 278
284 if (panic_later) 279 if (panic_later)
285 return 0; 280 return 0;
diff --git a/kernel/Makefile b/kernel/Makefile
index b8d4cd8ac0b9..d7c13d249b2d 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -94,6 +94,7 @@ obj-$(CONFIG_X86_DS) += trace/
94obj-$(CONFIG_RING_BUFFER) += trace/ 94obj-$(CONFIG_RING_BUFFER) += trace/
95obj-$(CONFIG_SMP) += sched_cpupri.o 95obj-$(CONFIG_SMP) += sched_cpupri.o
96obj-$(CONFIG_SLOW_WORK) += slow-work.o 96obj-$(CONFIG_SLOW_WORK) += slow-work.o
97obj-$(CONFIG_SLOW_WORK_DEBUG) += slow-work-debugfs.o
97obj-$(CONFIG_PERF_EVENTS) += perf_event.o 98obj-$(CONFIG_PERF_EVENTS) += perf_event.o
98 99
99ifneq ($(CONFIG_SCHED_OMIT_FRAME_POINTER),y) 100ifneq ($(CONFIG_SCHED_OMIT_FRAME_POINTER),y)
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index ca83b73fba19..0249f4be9b5c 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -1710,14 +1710,13 @@ static ssize_t cgroup_write_X64(struct cgroup *cgrp, struct cftype *cft,
1710 return -EFAULT; 1710 return -EFAULT;
1711 1711
1712 buffer[nbytes] = 0; /* nul-terminate */ 1712 buffer[nbytes] = 0; /* nul-terminate */
1713 strstrip(buffer);
1714 if (cft->write_u64) { 1713 if (cft->write_u64) {
1715 u64 val = simple_strtoull(buffer, &end, 0); 1714 u64 val = simple_strtoull(strstrip(buffer), &end, 0);
1716 if (*end) 1715 if (*end)
1717 return -EINVAL; 1716 return -EINVAL;
1718 retval = cft->write_u64(cgrp, cft, val); 1717 retval = cft->write_u64(cgrp, cft, val);
1719 } else { 1718 } else {
1720 s64 val = simple_strtoll(buffer, &end, 0); 1719 s64 val = simple_strtoll(strstrip(buffer), &end, 0);
1721 if (*end) 1720 if (*end)
1722 return -EINVAL; 1721 return -EINVAL;
1723 retval = cft->write_s64(cgrp, cft, val); 1722 retval = cft->write_s64(cgrp, cft, val);
@@ -1753,8 +1752,7 @@ static ssize_t cgroup_write_string(struct cgroup *cgrp, struct cftype *cft,
1753 } 1752 }
1754 1753
1755 buffer[nbytes] = 0; /* nul-terminate */ 1754 buffer[nbytes] = 0; /* nul-terminate */
1756 strstrip(buffer); 1755 retval = cft->write_string(cgrp, cft, strstrip(buffer));
1757 retval = cft->write_string(cgrp, cft, buffer);
1758 if (!retval) 1756 if (!retval)
1759 retval = nbytes; 1757 retval = nbytes;
1760out: 1758out:
diff --git a/kernel/exit.c b/kernel/exit.c
index e61891f80123..f7864ac2ecc1 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -359,10 +359,8 @@ void __set_special_pids(struct pid *pid)
359{ 359{
360 struct task_struct *curr = current->group_leader; 360 struct task_struct *curr = current->group_leader;
361 361
362 if (task_session(curr) != pid) { 362 if (task_session(curr) != pid)
363 change_pid(curr, PIDTYPE_SID, pid); 363 change_pid(curr, PIDTYPE_SID, pid);
364 proc_sid_connector(curr);
365 }
366 364
367 if (task_pgrp(curr) != pid) 365 if (task_pgrp(curr) != pid)
368 change_pid(curr, PIDTYPE_PGID, pid); 366 change_pid(curr, PIDTYPE_PGID, pid);
diff --git a/kernel/fork.c b/kernel/fork.c
index 4c20fff8c13a..166b8c49257c 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -91,7 +91,7 @@ int nr_processes(void)
91 int cpu; 91 int cpu;
92 int total = 0; 92 int total = 0;
93 93
94 for_each_online_cpu(cpu) 94 for_each_possible_cpu(cpu)
95 total += per_cpu(process_counts, cpu); 95 total += per_cpu(process_counts, cpu);
96 96
97 return total; 97 return total;
diff --git a/kernel/futex.c b/kernel/futex.c
index 4949d336d88d..fb65e822fc41 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -150,7 +150,8 @@ static struct futex_hash_bucket *hash_futex(union futex_key *key)
150 */ 150 */
151static inline int match_futex(union futex_key *key1, union futex_key *key2) 151static inline int match_futex(union futex_key *key1, union futex_key *key2)
152{ 152{
153 return (key1->both.word == key2->both.word 153 return (key1 && key2
154 && key1->both.word == key2->both.word
154 && key1->both.ptr == key2->both.ptr 155 && key1->both.ptr == key2->both.ptr
155 && key1->both.offset == key2->both.offset); 156 && key1->both.offset == key2->both.offset);
156} 157}
@@ -1028,7 +1029,6 @@ static inline
1028void requeue_pi_wake_futex(struct futex_q *q, union futex_key *key, 1029void requeue_pi_wake_futex(struct futex_q *q, union futex_key *key,
1029 struct futex_hash_bucket *hb) 1030 struct futex_hash_bucket *hb)
1030{ 1031{
1031 drop_futex_key_refs(&q->key);
1032 get_futex_key_refs(key); 1032 get_futex_key_refs(key);
1033 q->key = *key; 1033 q->key = *key;
1034 1034
@@ -1226,6 +1226,7 @@ retry_private:
1226 */ 1226 */
1227 if (ret == 1) { 1227 if (ret == 1) {
1228 WARN_ON(pi_state); 1228 WARN_ON(pi_state);
1229 drop_count++;
1229 task_count++; 1230 task_count++;
1230 ret = get_futex_value_locked(&curval2, uaddr2); 1231 ret = get_futex_value_locked(&curval2, uaddr2);
1231 if (!ret) 1232 if (!ret)
@@ -1304,6 +1305,7 @@ retry_private:
1304 if (ret == 1) { 1305 if (ret == 1) {
1305 /* We got the lock. */ 1306 /* We got the lock. */
1306 requeue_pi_wake_futex(this, &key2, hb2); 1307 requeue_pi_wake_futex(this, &key2, hb2);
1308 drop_count++;
1307 continue; 1309 continue;
1308 } else if (ret) { 1310 } else if (ret) {
1309 /* -EDEADLK */ 1311 /* -EDEADLK */
@@ -1791,6 +1793,7 @@ static int futex_wait(u32 __user *uaddr, int fshared,
1791 current->timer_slack_ns); 1793 current->timer_slack_ns);
1792 } 1794 }
1793 1795
1796retry:
1794 /* Prepare to wait on uaddr. */ 1797 /* Prepare to wait on uaddr. */
1795 ret = futex_wait_setup(uaddr, val, fshared, &q, &hb); 1798 ret = futex_wait_setup(uaddr, val, fshared, &q, &hb);
1796 if (ret) 1799 if (ret)
@@ -1808,9 +1811,14 @@ static int futex_wait(u32 __user *uaddr, int fshared,
1808 goto out_put_key; 1811 goto out_put_key;
1809 1812
1810 /* 1813 /*
1811 * We expect signal_pending(current), but another thread may 1814 * We expect signal_pending(current), but we might be the
1812 * have handled it for us already. 1815 * victim of a spurious wakeup as well.
1813 */ 1816 */
1817 if (!signal_pending(current)) {
1818 put_futex_key(fshared, &q.key);
1819 goto retry;
1820 }
1821
1814 ret = -ERESTARTSYS; 1822 ret = -ERESTARTSYS;
1815 if (!abs_time) 1823 if (!abs_time)
1816 goto out_put_key; 1824 goto out_put_key;
@@ -2118,9 +2126,11 @@ int handle_early_requeue_pi_wakeup(struct futex_hash_bucket *hb,
2118 */ 2126 */
2119 plist_del(&q->list, &q->list.plist); 2127 plist_del(&q->list, &q->list.plist);
2120 2128
2129 /* Handle spurious wakeups gracefully */
2130 ret = -EWOULDBLOCK;
2121 if (timeout && !timeout->task) 2131 if (timeout && !timeout->task)
2122 ret = -ETIMEDOUT; 2132 ret = -ETIMEDOUT;
2123 else 2133 else if (signal_pending(current))
2124 ret = -ERESTARTNOINTR; 2134 ret = -ERESTARTNOINTR;
2125 } 2135 }
2126 return ret; 2136 return ret;
diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c
index 114e704760fe..bd7273e6282e 100644
--- a/kernel/irq/spurious.c
+++ b/kernel/irq/spurious.c
@@ -121,7 +121,9 @@ static void poll_all_shared_irqs(void)
121 if (!(status & IRQ_SPURIOUS_DISABLED)) 121 if (!(status & IRQ_SPURIOUS_DISABLED))
122 continue; 122 continue;
123 123
124 local_irq_disable();
124 try_one_irq(i, desc); 125 try_one_irq(i, desc);
126 local_irq_enable();
125 } 127 }
126} 128}
127 129
diff --git a/kernel/kthread.c b/kernel/kthread.c
index 5fe709982caa..ab7ae57773e1 100644
--- a/kernel/kthread.c
+++ b/kernel/kthread.c
@@ -150,29 +150,6 @@ struct task_struct *kthread_create(int (*threadfn)(void *data),
150EXPORT_SYMBOL(kthread_create); 150EXPORT_SYMBOL(kthread_create);
151 151
152/** 152/**
153 * kthread_bind - bind a just-created kthread to a cpu.
154 * @k: thread created by kthread_create().
155 * @cpu: cpu (might not be online, must be possible) for @k to run on.
156 *
157 * Description: This function is equivalent to set_cpus_allowed(),
158 * except that @cpu doesn't need to be online, and the thread must be
159 * stopped (i.e., just returned from kthread_create()).
160 */
161void kthread_bind(struct task_struct *k, unsigned int cpu)
162{
163 /* Must have done schedule() in kthread() before we set_task_cpu */
164 if (!wait_task_inactive(k, TASK_UNINTERRUPTIBLE)) {
165 WARN_ON(1);
166 return;
167 }
168 set_task_cpu(k, cpu);
169 k->cpus_allowed = cpumask_of_cpu(cpu);
170 k->rt.nr_cpus_allowed = 1;
171 k->flags |= PF_THREAD_BOUND;
172}
173EXPORT_SYMBOL(kthread_bind);
174
175/**
176 * kthread_stop - stop a thread created by kthread_create(). 153 * kthread_stop - stop a thread created by kthread_create().
177 * @k: thread created by kthread_create(). 154 * @k: thread created by kthread_create().
178 * 155 *
diff --git a/kernel/module.c b/kernel/module.c
index 8b7d8805819d..5842a71cf052 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1187,7 +1187,8 @@ static void add_sect_attrs(struct module *mod, unsigned int nsect,
1187 1187
1188 /* Count loaded sections and allocate structures */ 1188 /* Count loaded sections and allocate structures */
1189 for (i = 0; i < nsect; i++) 1189 for (i = 0; i < nsect; i++)
1190 if (sechdrs[i].sh_flags & SHF_ALLOC) 1190 if (sechdrs[i].sh_flags & SHF_ALLOC
1191 && sechdrs[i].sh_size)
1191 nloaded++; 1192 nloaded++;
1192 size[0] = ALIGN(sizeof(*sect_attrs) 1193 size[0] = ALIGN(sizeof(*sect_attrs)
1193 + nloaded * sizeof(sect_attrs->attrs[0]), 1194 + nloaded * sizeof(sect_attrs->attrs[0]),
@@ -1207,6 +1208,8 @@ static void add_sect_attrs(struct module *mod, unsigned int nsect,
1207 for (i = 0; i < nsect; i++) { 1208 for (i = 0; i < nsect; i++) {
1208 if (! (sechdrs[i].sh_flags & SHF_ALLOC)) 1209 if (! (sechdrs[i].sh_flags & SHF_ALLOC))
1209 continue; 1210 continue;
1211 if (!sechdrs[i].sh_size)
1212 continue;
1210 sattr->address = sechdrs[i].sh_addr; 1213 sattr->address = sechdrs[i].sh_addr;
1211 sattr->name = kstrdup(secstrings + sechdrs[i].sh_name, 1214 sattr->name = kstrdup(secstrings + sechdrs[i].sh_name,
1212 GFP_KERNEL); 1215 GFP_KERNEL);
diff --git a/kernel/params.c b/kernel/params.c
index 9da58eabdcb2..d656c276508d 100644
--- a/kernel/params.c
+++ b/kernel/params.c
@@ -218,15 +218,11 @@ int param_set_charp(const char *val, struct kernel_param *kp)
218 return -ENOSPC; 218 return -ENOSPC;
219 } 219 }
220 220
221 if (kp->flags & KPARAM_KMALLOCED)
222 kfree(*(char **)kp->arg);
223
224 /* This is a hack. We can't need to strdup in early boot, and we 221 /* This is a hack. We can't need to strdup in early boot, and we
225 * don't need to; this mangled commandline is preserved. */ 222 * don't need to; this mangled commandline is preserved. */
226 if (slab_is_available()) { 223 if (slab_is_available()) {
227 kp->flags |= KPARAM_KMALLOCED;
228 *(char **)kp->arg = kstrdup(val, GFP_KERNEL); 224 *(char **)kp->arg = kstrdup(val, GFP_KERNEL);
229 if (!kp->arg) 225 if (!*(char **)kp->arg)
230 return -ENOMEM; 226 return -ENOMEM;
231 } else 227 } else
232 *(const char **)kp->arg = val; 228 *(const char **)kp->arg = val;
@@ -304,6 +300,7 @@ static int param_array(const char *name,
304 unsigned int min, unsigned int max, 300 unsigned int min, unsigned int max,
305 void *elem, int elemsize, 301 void *elem, int elemsize,
306 int (*set)(const char *, struct kernel_param *kp), 302 int (*set)(const char *, struct kernel_param *kp),
303 u16 flags,
307 unsigned int *num) 304 unsigned int *num)
308{ 305{
309 int ret; 306 int ret;
@@ -313,6 +310,7 @@ static int param_array(const char *name,
313 /* Get the name right for errors. */ 310 /* Get the name right for errors. */
314 kp.name = name; 311 kp.name = name;
315 kp.arg = elem; 312 kp.arg = elem;
313 kp.flags = flags;
316 314
317 /* No equals sign? */ 315 /* No equals sign? */
318 if (!val) { 316 if (!val) {
@@ -358,7 +356,8 @@ int param_array_set(const char *val, struct kernel_param *kp)
358 unsigned int temp_num; 356 unsigned int temp_num;
359 357
360 return param_array(kp->name, val, 1, arr->max, arr->elem, 358 return param_array(kp->name, val, 1, arr->max, arr->elem,
361 arr->elemsize, arr->set, arr->num ?: &temp_num); 359 arr->elemsize, arr->set, kp->flags,
360 arr->num ?: &temp_num);
362} 361}
363 362
364int param_array_get(char *buffer, struct kernel_param *kp) 363int param_array_get(char *buffer, struct kernel_param *kp)
@@ -605,11 +604,7 @@ void module_param_sysfs_remove(struct module *mod)
605 604
606void destroy_params(const struct kernel_param *params, unsigned num) 605void destroy_params(const struct kernel_param *params, unsigned num)
607{ 606{
608 unsigned int i; 607 /* FIXME: This should free kmalloced charp parameters. It doesn't. */
609
610 for (i = 0; i < num; i++)
611 if (params[i].flags & KPARAM_KMALLOCED)
612 kfree(*(char **)params[i].arg);
613} 608}
614 609
615static void __init kernel_add_sysfs_param(const char *name, 610static void __init kernel_add_sysfs_param(const char *name,
diff --git a/kernel/perf_event.c b/kernel/perf_event.c
index 9d0b5c665883..7f29643c8985 100644
--- a/kernel/perf_event.c
+++ b/kernel/perf_event.c
@@ -1355,7 +1355,7 @@ static void perf_ctx_adjust_freq(struct perf_event_context *ctx)
1355 u64 interrupts, freq; 1355 u64 interrupts, freq;
1356 1356
1357 spin_lock(&ctx->lock); 1357 spin_lock(&ctx->lock);
1358 list_for_each_entry(event, &ctx->group_list, group_entry) { 1358 list_for_each_entry_rcu(event, &ctx->event_list, event_entry) {
1359 if (event->state != PERF_EVENT_STATE_ACTIVE) 1359 if (event->state != PERF_EVENT_STATE_ACTIVE)
1360 continue; 1360 continue;
1361 1361
@@ -3959,8 +3959,9 @@ static enum hrtimer_restart perf_swevent_hrtimer(struct hrtimer *hrtimer)
3959 regs = task_pt_regs(current); 3959 regs = task_pt_regs(current);
3960 3960
3961 if (regs) { 3961 if (regs) {
3962 if (perf_event_overflow(event, 0, &data, regs)) 3962 if (!(event->attr.exclude_idle && current->pid == 0))
3963 ret = HRTIMER_NORESTART; 3963 if (perf_event_overflow(event, 0, &data, regs))
3964 ret = HRTIMER_NORESTART;
3964 } 3965 }
3965 3966
3966 period = max_t(u64, 10000, event->hw.sample_period); 3967 period = max_t(u64, 10000, event->hw.sample_period);
@@ -3969,6 +3970,42 @@ static enum hrtimer_restart perf_swevent_hrtimer(struct hrtimer *hrtimer)
3969 return ret; 3970 return ret;
3970} 3971}
3971 3972
3973static void perf_swevent_start_hrtimer(struct perf_event *event)
3974{
3975 struct hw_perf_event *hwc = &event->hw;
3976
3977 hrtimer_init(&hwc->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
3978 hwc->hrtimer.function = perf_swevent_hrtimer;
3979 if (hwc->sample_period) {
3980 u64 period;
3981
3982 if (hwc->remaining) {
3983 if (hwc->remaining < 0)
3984 period = 10000;
3985 else
3986 period = hwc->remaining;
3987 hwc->remaining = 0;
3988 } else {
3989 period = max_t(u64, 10000, hwc->sample_period);
3990 }
3991 __hrtimer_start_range_ns(&hwc->hrtimer,
3992 ns_to_ktime(period), 0,
3993 HRTIMER_MODE_REL, 0);
3994 }
3995}
3996
3997static void perf_swevent_cancel_hrtimer(struct perf_event *event)
3998{
3999 struct hw_perf_event *hwc = &event->hw;
4000
4001 if (hwc->sample_period) {
4002 ktime_t remaining = hrtimer_get_remaining(&hwc->hrtimer);
4003 hwc->remaining = ktime_to_ns(remaining);
4004
4005 hrtimer_cancel(&hwc->hrtimer);
4006 }
4007}
4008
3972/* 4009/*
3973 * Software event: cpu wall time clock 4010 * Software event: cpu wall time clock
3974 */ 4011 */
@@ -3991,22 +4028,14 @@ static int cpu_clock_perf_event_enable(struct perf_event *event)
3991 int cpu = raw_smp_processor_id(); 4028 int cpu = raw_smp_processor_id();
3992 4029
3993 atomic64_set(&hwc->prev_count, cpu_clock(cpu)); 4030 atomic64_set(&hwc->prev_count, cpu_clock(cpu));
3994 hrtimer_init(&hwc->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); 4031 perf_swevent_start_hrtimer(event);
3995 hwc->hrtimer.function = perf_swevent_hrtimer;
3996 if (hwc->sample_period) {
3997 u64 period = max_t(u64, 10000, hwc->sample_period);
3998 __hrtimer_start_range_ns(&hwc->hrtimer,
3999 ns_to_ktime(period), 0,
4000 HRTIMER_MODE_REL, 0);
4001 }
4002 4032
4003 return 0; 4033 return 0;
4004} 4034}
4005 4035
4006static void cpu_clock_perf_event_disable(struct perf_event *event) 4036static void cpu_clock_perf_event_disable(struct perf_event *event)
4007{ 4037{
4008 if (event->hw.sample_period) 4038 perf_swevent_cancel_hrtimer(event);
4009 hrtimer_cancel(&event->hw.hrtimer);
4010 cpu_clock_perf_event_update(event); 4039 cpu_clock_perf_event_update(event);
4011} 4040}
4012 4041
@@ -4043,22 +4072,15 @@ static int task_clock_perf_event_enable(struct perf_event *event)
4043 now = event->ctx->time; 4072 now = event->ctx->time;
4044 4073
4045 atomic64_set(&hwc->prev_count, now); 4074 atomic64_set(&hwc->prev_count, now);
4046 hrtimer_init(&hwc->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); 4075
4047 hwc->hrtimer.function = perf_swevent_hrtimer; 4076 perf_swevent_start_hrtimer(event);
4048 if (hwc->sample_period) {
4049 u64 period = max_t(u64, 10000, hwc->sample_period);
4050 __hrtimer_start_range_ns(&hwc->hrtimer,
4051 ns_to_ktime(period), 0,
4052 HRTIMER_MODE_REL, 0);
4053 }
4054 4077
4055 return 0; 4078 return 0;
4056} 4079}
4057 4080
4058static void task_clock_perf_event_disable(struct perf_event *event) 4081static void task_clock_perf_event_disable(struct perf_event *event)
4059{ 4082{
4060 if (event->hw.sample_period) 4083 perf_swevent_cancel_hrtimer(event);
4061 hrtimer_cancel(&event->hw.hrtimer);
4062 task_clock_perf_event_update(event, event->ctx->time); 4084 task_clock_perf_event_update(event, event->ctx->time);
4063 4085
4064} 4086}
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
index 04b3a83d686f..04a9e90d248f 100644
--- a/kernel/power/hibernate.c
+++ b/kernel/power/hibernate.c
@@ -693,21 +693,22 @@ static int software_resume(void)
693 /* The snapshot device should not be opened while we're running */ 693 /* The snapshot device should not be opened while we're running */
694 if (!atomic_add_unless(&snapshot_device_available, -1, 0)) { 694 if (!atomic_add_unless(&snapshot_device_available, -1, 0)) {
695 error = -EBUSY; 695 error = -EBUSY;
696 swsusp_close(FMODE_READ);
696 goto Unlock; 697 goto Unlock;
697 } 698 }
698 699
699 pm_prepare_console(); 700 pm_prepare_console();
700 error = pm_notifier_call_chain(PM_RESTORE_PREPARE); 701 error = pm_notifier_call_chain(PM_RESTORE_PREPARE);
701 if (error) 702 if (error)
702 goto Finish; 703 goto close_finish;
703 704
704 error = usermodehelper_disable(); 705 error = usermodehelper_disable();
705 if (error) 706 if (error)
706 goto Finish; 707 goto close_finish;
707 708
708 error = create_basic_memory_bitmaps(); 709 error = create_basic_memory_bitmaps();
709 if (error) 710 if (error)
710 goto Finish; 711 goto close_finish;
711 712
712 pr_debug("PM: Preparing processes for restore.\n"); 713 pr_debug("PM: Preparing processes for restore.\n");
713 error = prepare_processes(); 714 error = prepare_processes();
@@ -719,6 +720,7 @@ static int software_resume(void)
719 pr_debug("PM: Reading hibernation image.\n"); 720 pr_debug("PM: Reading hibernation image.\n");
720 721
721 error = swsusp_read(&flags); 722 error = swsusp_read(&flags);
723 swsusp_close(FMODE_READ);
722 if (!error) 724 if (!error)
723 hibernation_restore(flags & SF_PLATFORM_MODE); 725 hibernation_restore(flags & SF_PLATFORM_MODE);
724 726
@@ -737,6 +739,9 @@ static int software_resume(void)
737 mutex_unlock(&pm_mutex); 739 mutex_unlock(&pm_mutex);
738 pr_debug("PM: Resume from disk failed.\n"); 740 pr_debug("PM: Resume from disk failed.\n");
739 return error; 741 return error;
742close_finish:
743 swsusp_close(FMODE_READ);
744 goto Finish;
740} 745}
741 746
742late_initcall(software_resume); 747late_initcall(software_resume);
diff --git a/kernel/power/swap.c b/kernel/power/swap.c
index b101cdc4df3f..890f6b11b1d3 100644
--- a/kernel/power/swap.c
+++ b/kernel/power/swap.c
@@ -314,7 +314,6 @@ static int save_image(struct swap_map_handle *handle,
314{ 314{
315 unsigned int m; 315 unsigned int m;
316 int ret; 316 int ret;
317 int error = 0;
318 int nr_pages; 317 int nr_pages;
319 int err2; 318 int err2;
320 struct bio *bio; 319 struct bio *bio;
@@ -329,26 +328,27 @@ static int save_image(struct swap_map_handle *handle,
329 nr_pages = 0; 328 nr_pages = 0;
330 bio = NULL; 329 bio = NULL;
331 do_gettimeofday(&start); 330 do_gettimeofday(&start);
332 do { 331 while (1) {
333 ret = snapshot_read_next(snapshot, PAGE_SIZE); 332 ret = snapshot_read_next(snapshot, PAGE_SIZE);
334 if (ret > 0) { 333 if (ret <= 0)
335 error = swap_write_page(handle, data_of(*snapshot), 334 break;
336 &bio); 335 ret = swap_write_page(handle, data_of(*snapshot), &bio);
337 if (error) 336 if (ret)
338 break; 337 break;
339 if (!(nr_pages % m)) 338 if (!(nr_pages % m))
340 printk("\b\b\b\b%3d%%", nr_pages / m); 339 printk("\b\b\b\b%3d%%", nr_pages / m);
341 nr_pages++; 340 nr_pages++;
342 } 341 }
343 } while (ret > 0);
344 err2 = wait_on_bio_chain(&bio); 342 err2 = wait_on_bio_chain(&bio);
345 do_gettimeofday(&stop); 343 do_gettimeofday(&stop);
346 if (!error) 344 if (!ret)
347 error = err2; 345 ret = err2;
348 if (!error) 346 if (!ret)
349 printk("\b\b\b\bdone\n"); 347 printk("\b\b\b\bdone\n");
348 else
349 printk("\n");
350 swsusp_show_speed(&start, &stop, nr_to_write, "Wrote"); 350 swsusp_show_speed(&start, &stop, nr_to_write, "Wrote");
351 return error; 351 return ret;
352} 352}
353 353
354/** 354/**
@@ -536,7 +536,8 @@ static int load_image(struct swap_map_handle *handle,
536 snapshot_write_finalize(snapshot); 536 snapshot_write_finalize(snapshot);
537 if (!snapshot_image_loaded(snapshot)) 537 if (!snapshot_image_loaded(snapshot))
538 error = -ENODATA; 538 error = -ENODATA;
539 } 539 } else
540 printk("\n");
540 swsusp_show_speed(&start, &stop, nr_to_read, "Read"); 541 swsusp_show_speed(&start, &stop, nr_to_read, "Read");
541 return error; 542 return error;
542} 543}
@@ -572,8 +573,6 @@ int swsusp_read(unsigned int *flags_p)
572 error = load_image(&handle, &snapshot, header->pages - 1); 573 error = load_image(&handle, &snapshot, header->pages - 1);
573 release_swap_reader(&handle); 574 release_swap_reader(&handle);
574 575
575 blkdev_put(resume_bdev, FMODE_READ);
576
577 if (!error) 576 if (!error)
578 pr_debug("PM: Image successfully loaded\n"); 577 pr_debug("PM: Image successfully loaded\n");
579 else 578 else
@@ -596,7 +595,7 @@ int swsusp_check(void)
596 error = bio_read_page(swsusp_resume_block, 595 error = bio_read_page(swsusp_resume_block,
597 swsusp_header, NULL); 596 swsusp_header, NULL);
598 if (error) 597 if (error)
599 return error; 598 goto put;
600 599
601 if (!memcmp(SWSUSP_SIG, swsusp_header->sig, 10)) { 600 if (!memcmp(SWSUSP_SIG, swsusp_header->sig, 10)) {
602 memcpy(swsusp_header->sig, swsusp_header->orig_sig, 10); 601 memcpy(swsusp_header->sig, swsusp_header->orig_sig, 10);
@@ -604,8 +603,10 @@ int swsusp_check(void)
604 error = bio_write_page(swsusp_resume_block, 603 error = bio_write_page(swsusp_resume_block,
605 swsusp_header, NULL); 604 swsusp_header, NULL);
606 } else { 605 } else {
607 return -EINVAL; 606 error = -EINVAL;
608 } 607 }
608
609put:
609 if (error) 610 if (error)
610 blkdev_put(resume_bdev, FMODE_READ); 611 blkdev_put(resume_bdev, FMODE_READ);
611 else 612 else
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 705f02ac7433..f3077c0ab181 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -59,7 +59,7 @@
59 NUM_RCU_LVL_2, \ 59 NUM_RCU_LVL_2, \
60 NUM_RCU_LVL_3, /* == MAX_RCU_LVLS */ \ 60 NUM_RCU_LVL_3, /* == MAX_RCU_LVLS */ \
61 }, \ 61 }, \
62 .signaled = RCU_SIGNAL_INIT, \ 62 .signaled = RCU_GP_IDLE, \
63 .gpnum = -300, \ 63 .gpnum = -300, \
64 .completed = -300, \ 64 .completed = -300, \
65 .onofflock = __SPIN_LOCK_UNLOCKED(&name.onofflock), \ 65 .onofflock = __SPIN_LOCK_UNLOCKED(&name.onofflock), \
@@ -657,14 +657,17 @@ rcu_start_gp(struct rcu_state *rsp, unsigned long flags)
657 * irqs disabled. 657 * irqs disabled.
658 */ 658 */
659 rcu_for_each_node_breadth_first(rsp, rnp) { 659 rcu_for_each_node_breadth_first(rsp, rnp) {
660 spin_lock(&rnp->lock); /* irqs already disabled. */ 660 spin_lock(&rnp->lock); /* irqs already disabled. */
661 rcu_preempt_check_blocked_tasks(rnp); 661 rcu_preempt_check_blocked_tasks(rnp);
662 rnp->qsmask = rnp->qsmaskinit; 662 rnp->qsmask = rnp->qsmaskinit;
663 rnp->gpnum = rsp->gpnum; 663 rnp->gpnum = rsp->gpnum;
664 spin_unlock(&rnp->lock); /* irqs already disabled. */ 664 spin_unlock(&rnp->lock); /* irqs remain disabled. */
665 } 665 }
666 666
667 rnp = rcu_get_root(rsp);
668 spin_lock(&rnp->lock); /* irqs already disabled. */
667 rsp->signaled = RCU_SIGNAL_INIT; /* force_quiescent_state now OK. */ 669 rsp->signaled = RCU_SIGNAL_INIT; /* force_quiescent_state now OK. */
670 spin_unlock(&rnp->lock); /* irqs remain disabled. */
668 spin_unlock_irqrestore(&rsp->onofflock, flags); 671 spin_unlock_irqrestore(&rsp->onofflock, flags);
669} 672}
670 673
@@ -706,6 +709,7 @@ static void cpu_quiet_msk_finish(struct rcu_state *rsp, unsigned long flags)
706{ 709{
707 WARN_ON_ONCE(!rcu_gp_in_progress(rsp)); 710 WARN_ON_ONCE(!rcu_gp_in_progress(rsp));
708 rsp->completed = rsp->gpnum; 711 rsp->completed = rsp->gpnum;
712 rsp->signaled = RCU_GP_IDLE;
709 rcu_process_gp_end(rsp, rsp->rda[smp_processor_id()]); 713 rcu_process_gp_end(rsp, rsp->rda[smp_processor_id()]);
710 rcu_start_gp(rsp, flags); /* releases root node's rnp->lock. */ 714 rcu_start_gp(rsp, flags); /* releases root node's rnp->lock. */
711} 715}
@@ -913,7 +917,20 @@ static void __rcu_offline_cpu(int cpu, struct rcu_state *rsp)
913 spin_unlock(&rnp->lock); /* irqs remain disabled. */ 917 spin_unlock(&rnp->lock); /* irqs remain disabled. */
914 break; 918 break;
915 } 919 }
916 rcu_preempt_offline_tasks(rsp, rnp, rdp); 920
921 /*
922 * If there was a task blocking the current grace period,
923 * and if all CPUs have checked in, we need to propagate
924 * the quiescent state up the rcu_node hierarchy. But that
925 * is inconvenient at the moment due to deadlock issues if
926 * this should end the current grace period. So set the
927 * offlined CPU's bit in ->qsmask in order to force the
928 * next force_quiescent_state() invocation to clean up this
929 * mess in a deadlock-free manner.
930 */
931 if (rcu_preempt_offline_tasks(rsp, rnp, rdp) && !rnp->qsmask)
932 rnp->qsmask |= mask;
933
917 mask = rnp->grpmask; 934 mask = rnp->grpmask;
918 spin_unlock(&rnp->lock); /* irqs remain disabled. */ 935 spin_unlock(&rnp->lock); /* irqs remain disabled. */
919 rnp = rnp->parent; 936 rnp = rnp->parent;
@@ -958,7 +975,7 @@ static void rcu_offline_cpu(int cpu)
958 * Invoke any RCU callbacks that have made it to the end of their grace 975 * Invoke any RCU callbacks that have made it to the end of their grace
959 * period. Thottle as specified by rdp->blimit. 976 * period. Thottle as specified by rdp->blimit.
960 */ 977 */
961static void rcu_do_batch(struct rcu_data *rdp) 978static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp)
962{ 979{
963 unsigned long flags; 980 unsigned long flags;
964 struct rcu_head *next, *list, **tail; 981 struct rcu_head *next, *list, **tail;
@@ -1011,6 +1028,13 @@ static void rcu_do_batch(struct rcu_data *rdp)
1011 if (rdp->blimit == LONG_MAX && rdp->qlen <= qlowmark) 1028 if (rdp->blimit == LONG_MAX && rdp->qlen <= qlowmark)
1012 rdp->blimit = blimit; 1029 rdp->blimit = blimit;
1013 1030
1031 /* Reset ->qlen_last_fqs_check trigger if enough CBs have drained. */
1032 if (rdp->qlen == 0 && rdp->qlen_last_fqs_check != 0) {
1033 rdp->qlen_last_fqs_check = 0;
1034 rdp->n_force_qs_snap = rsp->n_force_qs;
1035 } else if (rdp->qlen < rdp->qlen_last_fqs_check - qhimark)
1036 rdp->qlen_last_fqs_check = rdp->qlen;
1037
1014 local_irq_restore(flags); 1038 local_irq_restore(flags);
1015 1039
1016 /* Re-raise the RCU softirq if there are callbacks remaining. */ 1040 /* Re-raise the RCU softirq if there are callbacks remaining. */
@@ -1142,9 +1166,10 @@ static void force_quiescent_state(struct rcu_state *rsp, int relaxed)
1142 } 1166 }
1143 spin_unlock(&rnp->lock); 1167 spin_unlock(&rnp->lock);
1144 switch (signaled) { 1168 switch (signaled) {
1169 case RCU_GP_IDLE:
1145 case RCU_GP_INIT: 1170 case RCU_GP_INIT:
1146 1171
1147 break; /* grace period still initializing, ignore. */ 1172 break; /* grace period idle or initializing, ignore. */
1148 1173
1149 case RCU_SAVE_DYNTICK: 1174 case RCU_SAVE_DYNTICK:
1150 1175
@@ -1158,7 +1183,8 @@ static void force_quiescent_state(struct rcu_state *rsp, int relaxed)
1158 1183
1159 /* Update state, record completion counter. */ 1184 /* Update state, record completion counter. */
1160 spin_lock(&rnp->lock); 1185 spin_lock(&rnp->lock);
1161 if (lastcomp == rsp->completed) { 1186 if (lastcomp == rsp->completed &&
1187 rsp->signaled == RCU_SAVE_DYNTICK) {
1162 rsp->signaled = RCU_FORCE_QS; 1188 rsp->signaled = RCU_FORCE_QS;
1163 dyntick_record_completed(rsp, lastcomp); 1189 dyntick_record_completed(rsp, lastcomp);
1164 } 1190 }
@@ -1224,7 +1250,7 @@ __rcu_process_callbacks(struct rcu_state *rsp, struct rcu_data *rdp)
1224 } 1250 }
1225 1251
1226 /* If there are callbacks ready, invoke them. */ 1252 /* If there are callbacks ready, invoke them. */
1227 rcu_do_batch(rdp); 1253 rcu_do_batch(rsp, rdp);
1228} 1254}
1229 1255
1230/* 1256/*
@@ -1288,10 +1314,20 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu),
1288 rcu_start_gp(rsp, nestflag); /* releases rnp_root->lock. */ 1314 rcu_start_gp(rsp, nestflag); /* releases rnp_root->lock. */
1289 } 1315 }
1290 1316
1291 /* Force the grace period if too many callbacks or too long waiting. */ 1317 /*
1292 if (unlikely(++rdp->qlen > qhimark)) { 1318 * Force the grace period if too many callbacks or too long waiting.
1319 * Enforce hysteresis, and don't invoke force_quiescent_state()
1320 * if some other CPU has recently done so. Also, don't bother
1321 * invoking force_quiescent_state() if the newly enqueued callback
1322 * is the only one waiting for a grace period to complete.
1323 */
1324 if (unlikely(++rdp->qlen > rdp->qlen_last_fqs_check + qhimark)) {
1293 rdp->blimit = LONG_MAX; 1325 rdp->blimit = LONG_MAX;
1294 force_quiescent_state(rsp, 0); 1326 if (rsp->n_force_qs == rdp->n_force_qs_snap &&
1327 *rdp->nxttail[RCU_DONE_TAIL] != head)
1328 force_quiescent_state(rsp, 0);
1329 rdp->n_force_qs_snap = rsp->n_force_qs;
1330 rdp->qlen_last_fqs_check = rdp->qlen;
1295 } else if ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0) 1331 } else if ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0)
1296 force_quiescent_state(rsp, 1); 1332 force_quiescent_state(rsp, 1);
1297 local_irq_restore(flags); 1333 local_irq_restore(flags);
@@ -1523,6 +1559,8 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptable)
1523 rdp->beenonline = 1; /* We have now been online. */ 1559 rdp->beenonline = 1; /* We have now been online. */
1524 rdp->preemptable = preemptable; 1560 rdp->preemptable = preemptable;
1525 rdp->passed_quiesc_completed = lastcomp - 1; 1561 rdp->passed_quiesc_completed = lastcomp - 1;
1562 rdp->qlen_last_fqs_check = 0;
1563 rdp->n_force_qs_snap = rsp->n_force_qs;
1526 rdp->blimit = blimit; 1564 rdp->blimit = blimit;
1527 spin_unlock(&rnp->lock); /* irqs remain disabled. */ 1565 spin_unlock(&rnp->lock); /* irqs remain disabled. */
1528 1566
diff --git a/kernel/rcutree.h b/kernel/rcutree.h
index b40ac5706040..1899023b0962 100644
--- a/kernel/rcutree.h
+++ b/kernel/rcutree.h
@@ -167,6 +167,10 @@ struct rcu_data {
167 struct rcu_head *nxtlist; 167 struct rcu_head *nxtlist;
168 struct rcu_head **nxttail[RCU_NEXT_SIZE]; 168 struct rcu_head **nxttail[RCU_NEXT_SIZE];
169 long qlen; /* # of queued callbacks */ 169 long qlen; /* # of queued callbacks */
170 long qlen_last_fqs_check;
171 /* qlen at last check for QS forcing */
172 unsigned long n_force_qs_snap;
173 /* did other CPU force QS recently? */
170 long blimit; /* Upper limit on a processed batch */ 174 long blimit; /* Upper limit on a processed batch */
171 175
172#ifdef CONFIG_NO_HZ 176#ifdef CONFIG_NO_HZ
@@ -197,9 +201,10 @@ struct rcu_data {
197}; 201};
198 202
199/* Values for signaled field in struct rcu_state. */ 203/* Values for signaled field in struct rcu_state. */
200#define RCU_GP_INIT 0 /* Grace period being initialized. */ 204#define RCU_GP_IDLE 0 /* No grace period in progress. */
201#define RCU_SAVE_DYNTICK 1 /* Need to scan dyntick state. */ 205#define RCU_GP_INIT 1 /* Grace period being initialized. */
202#define RCU_FORCE_QS 2 /* Need to force quiescent state. */ 206#define RCU_SAVE_DYNTICK 2 /* Need to scan dyntick state. */
207#define RCU_FORCE_QS 3 /* Need to force quiescent state. */
203#ifdef CONFIG_NO_HZ 208#ifdef CONFIG_NO_HZ
204#define RCU_SIGNAL_INIT RCU_SAVE_DYNTICK 209#define RCU_SIGNAL_INIT RCU_SAVE_DYNTICK
205#else /* #ifdef CONFIG_NO_HZ */ 210#else /* #ifdef CONFIG_NO_HZ */
@@ -302,9 +307,9 @@ static void rcu_print_task_stall(struct rcu_node *rnp);
302#endif /* #ifdef CONFIG_RCU_CPU_STALL_DETECTOR */ 307#endif /* #ifdef CONFIG_RCU_CPU_STALL_DETECTOR */
303static void rcu_preempt_check_blocked_tasks(struct rcu_node *rnp); 308static void rcu_preempt_check_blocked_tasks(struct rcu_node *rnp);
304#ifdef CONFIG_HOTPLUG_CPU 309#ifdef CONFIG_HOTPLUG_CPU
305static void rcu_preempt_offline_tasks(struct rcu_state *rsp, 310static int rcu_preempt_offline_tasks(struct rcu_state *rsp,
306 struct rcu_node *rnp, 311 struct rcu_node *rnp,
307 struct rcu_data *rdp); 312 struct rcu_data *rdp);
308static void rcu_preempt_offline_cpu(int cpu); 313static void rcu_preempt_offline_cpu(int cpu);
309#endif /* #ifdef CONFIG_HOTPLUG_CPU */ 314#endif /* #ifdef CONFIG_HOTPLUG_CPU */
310static void rcu_preempt_check_callbacks(int cpu); 315static void rcu_preempt_check_callbacks(int cpu);
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
index c0cb783aa16a..ef2a58c2b9d5 100644
--- a/kernel/rcutree_plugin.h
+++ b/kernel/rcutree_plugin.h
@@ -304,21 +304,25 @@ static void rcu_preempt_check_blocked_tasks(struct rcu_node *rnp)
304 * parent is to remove the need for rcu_read_unlock_special() to 304 * parent is to remove the need for rcu_read_unlock_special() to
305 * make more than two attempts to acquire the target rcu_node's lock. 305 * make more than two attempts to acquire the target rcu_node's lock.
306 * 306 *
307 * Returns 1 if there was previously a task blocking the current grace
308 * period on the specified rcu_node structure.
309 *
307 * The caller must hold rnp->lock with irqs disabled. 310 * The caller must hold rnp->lock with irqs disabled.
308 */ 311 */
309static void rcu_preempt_offline_tasks(struct rcu_state *rsp, 312static int rcu_preempt_offline_tasks(struct rcu_state *rsp,
310 struct rcu_node *rnp, 313 struct rcu_node *rnp,
311 struct rcu_data *rdp) 314 struct rcu_data *rdp)
312{ 315{
313 int i; 316 int i;
314 struct list_head *lp; 317 struct list_head *lp;
315 struct list_head *lp_root; 318 struct list_head *lp_root;
319 int retval = rcu_preempted_readers(rnp);
316 struct rcu_node *rnp_root = rcu_get_root(rsp); 320 struct rcu_node *rnp_root = rcu_get_root(rsp);
317 struct task_struct *tp; 321 struct task_struct *tp;
318 322
319 if (rnp == rnp_root) { 323 if (rnp == rnp_root) {
320 WARN_ONCE(1, "Last CPU thought to be offlined?"); 324 WARN_ONCE(1, "Last CPU thought to be offlined?");
321 return; /* Shouldn't happen: at least one CPU online. */ 325 return 0; /* Shouldn't happen: at least one CPU online. */
322 } 326 }
323 WARN_ON_ONCE(rnp != rdp->mynode && 327 WARN_ON_ONCE(rnp != rdp->mynode &&
324 (!list_empty(&rnp->blocked_tasks[0]) || 328 (!list_empty(&rnp->blocked_tasks[0]) ||
@@ -342,6 +346,8 @@ static void rcu_preempt_offline_tasks(struct rcu_state *rsp,
342 spin_unlock(&rnp_root->lock); /* irqs remain disabled */ 346 spin_unlock(&rnp_root->lock); /* irqs remain disabled */
343 } 347 }
344 } 348 }
349
350 return retval;
345} 351}
346 352
347/* 353/*
@@ -393,6 +399,17 @@ void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu))
393EXPORT_SYMBOL_GPL(call_rcu); 399EXPORT_SYMBOL_GPL(call_rcu);
394 400
395/* 401/*
402 * Wait for an rcu-preempt grace period. We are supposed to expedite the
403 * grace period, but this is the crude slow compatability hack, so just
404 * invoke synchronize_rcu().
405 */
406void synchronize_rcu_expedited(void)
407{
408 synchronize_rcu();
409}
410EXPORT_SYMBOL_GPL(synchronize_rcu_expedited);
411
412/*
396 * Check to see if there is any immediate preemptable-RCU-related work 413 * Check to see if there is any immediate preemptable-RCU-related work
397 * to be done. 414 * to be done.
398 */ 415 */
@@ -521,12 +538,15 @@ static void rcu_preempt_check_blocked_tasks(struct rcu_node *rnp)
521 538
522/* 539/*
523 * Because preemptable RCU does not exist, it never needs to migrate 540 * Because preemptable RCU does not exist, it never needs to migrate
524 * tasks that were blocked within RCU read-side critical sections. 541 * tasks that were blocked within RCU read-side critical sections, and
542 * such non-existent tasks cannot possibly have been blocking the current
543 * grace period.
525 */ 544 */
526static void rcu_preempt_offline_tasks(struct rcu_state *rsp, 545static int rcu_preempt_offline_tasks(struct rcu_state *rsp,
527 struct rcu_node *rnp, 546 struct rcu_node *rnp,
528 struct rcu_data *rdp) 547 struct rcu_data *rdp)
529{ 548{
549 return 0;
530} 550}
531 551
532/* 552/*
@@ -565,6 +585,16 @@ void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu))
565EXPORT_SYMBOL_GPL(call_rcu); 585EXPORT_SYMBOL_GPL(call_rcu);
566 586
567/* 587/*
588 * Wait for an rcu-preempt grace period, but make it happen quickly.
589 * But because preemptable RCU does not exist, map to rcu-sched.
590 */
591void synchronize_rcu_expedited(void)
592{
593 synchronize_sched_expedited();
594}
595EXPORT_SYMBOL_GPL(synchronize_rcu_expedited);
596
597/*
568 * Because preemptable RCU does not exist, it never has any work to do. 598 * Because preemptable RCU does not exist, it never has any work to do.
569 */ 599 */
570static int rcu_preempt_pending(int cpu) 600static int rcu_preempt_pending(int cpu)
diff --git a/kernel/sched.c b/kernel/sched.c
index e88689522e66..3c11ae0a948d 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -309,6 +309,8 @@ static DEFINE_PER_CPU_SHARED_ALIGNED(struct rt_rq, init_rt_rq);
309 */ 309 */
310static DEFINE_SPINLOCK(task_group_lock); 310static DEFINE_SPINLOCK(task_group_lock);
311 311
312#ifdef CONFIG_FAIR_GROUP_SCHED
313
312#ifdef CONFIG_SMP 314#ifdef CONFIG_SMP
313static int root_task_group_empty(void) 315static int root_task_group_empty(void)
314{ 316{
@@ -316,7 +318,6 @@ static int root_task_group_empty(void)
316} 318}
317#endif 319#endif
318 320
319#ifdef CONFIG_FAIR_GROUP_SCHED
320#ifdef CONFIG_USER_SCHED 321#ifdef CONFIG_USER_SCHED
321# define INIT_TASK_GROUP_LOAD (2*NICE_0_LOAD) 322# define INIT_TASK_GROUP_LOAD (2*NICE_0_LOAD)
322#else /* !CONFIG_USER_SCHED */ 323#else /* !CONFIG_USER_SCHED */
@@ -1564,11 +1565,7 @@ static unsigned long cpu_avg_load_per_task(int cpu)
1564 1565
1565#ifdef CONFIG_FAIR_GROUP_SCHED 1566#ifdef CONFIG_FAIR_GROUP_SCHED
1566 1567
1567struct update_shares_data { 1568static __read_mostly unsigned long *update_shares_data;
1568 unsigned long rq_weight[NR_CPUS];
1569};
1570
1571static DEFINE_PER_CPU(struct update_shares_data, update_shares_data);
1572 1569
1573static void __set_se_shares(struct sched_entity *se, unsigned long shares); 1570static void __set_se_shares(struct sched_entity *se, unsigned long shares);
1574 1571
@@ -1578,12 +1575,12 @@ static void __set_se_shares(struct sched_entity *se, unsigned long shares);
1578static void update_group_shares_cpu(struct task_group *tg, int cpu, 1575static void update_group_shares_cpu(struct task_group *tg, int cpu,
1579 unsigned long sd_shares, 1576 unsigned long sd_shares,
1580 unsigned long sd_rq_weight, 1577 unsigned long sd_rq_weight,
1581 struct update_shares_data *usd) 1578 unsigned long *usd_rq_weight)
1582{ 1579{
1583 unsigned long shares, rq_weight; 1580 unsigned long shares, rq_weight;
1584 int boost = 0; 1581 int boost = 0;
1585 1582
1586 rq_weight = usd->rq_weight[cpu]; 1583 rq_weight = usd_rq_weight[cpu];
1587 if (!rq_weight) { 1584 if (!rq_weight) {
1588 boost = 1; 1585 boost = 1;
1589 rq_weight = NICE_0_LOAD; 1586 rq_weight = NICE_0_LOAD;
@@ -1618,7 +1615,7 @@ static void update_group_shares_cpu(struct task_group *tg, int cpu,
1618static int tg_shares_up(struct task_group *tg, void *data) 1615static int tg_shares_up(struct task_group *tg, void *data)
1619{ 1616{
1620 unsigned long weight, rq_weight = 0, shares = 0; 1617 unsigned long weight, rq_weight = 0, shares = 0;
1621 struct update_shares_data *usd; 1618 unsigned long *usd_rq_weight;
1622 struct sched_domain *sd = data; 1619 struct sched_domain *sd = data;
1623 unsigned long flags; 1620 unsigned long flags;
1624 int i; 1621 int i;
@@ -1627,11 +1624,11 @@ static int tg_shares_up(struct task_group *tg, void *data)
1627 return 0; 1624 return 0;
1628 1625
1629 local_irq_save(flags); 1626 local_irq_save(flags);
1630 usd = &__get_cpu_var(update_shares_data); 1627 usd_rq_weight = per_cpu_ptr(update_shares_data, smp_processor_id());
1631 1628
1632 for_each_cpu(i, sched_domain_span(sd)) { 1629 for_each_cpu(i, sched_domain_span(sd)) {
1633 weight = tg->cfs_rq[i]->load.weight; 1630 weight = tg->cfs_rq[i]->load.weight;
1634 usd->rq_weight[i] = weight; 1631 usd_rq_weight[i] = weight;
1635 1632
1636 /* 1633 /*
1637 * If there are currently no tasks on the cpu pretend there 1634 * If there are currently no tasks on the cpu pretend there
@@ -1652,7 +1649,7 @@ static int tg_shares_up(struct task_group *tg, void *data)
1652 shares = tg->shares; 1649 shares = tg->shares;
1653 1650
1654 for_each_cpu(i, sched_domain_span(sd)) 1651 for_each_cpu(i, sched_domain_span(sd))
1655 update_group_shares_cpu(tg, i, shares, rq_weight, usd); 1652 update_group_shares_cpu(tg, i, shares, rq_weight, usd_rq_weight);
1656 1653
1657 local_irq_restore(flags); 1654 local_irq_restore(flags);
1658 1655
@@ -1996,6 +1993,38 @@ static inline void check_class_changed(struct rq *rq, struct task_struct *p,
1996 p->sched_class->prio_changed(rq, p, oldprio, running); 1993 p->sched_class->prio_changed(rq, p, oldprio, running);
1997} 1994}
1998 1995
1996/**
1997 * kthread_bind - bind a just-created kthread to a cpu.
1998 * @p: thread created by kthread_create().
1999 * @cpu: cpu (might not be online, must be possible) for @k to run on.
2000 *
2001 * Description: This function is equivalent to set_cpus_allowed(),
2002 * except that @cpu doesn't need to be online, and the thread must be
2003 * stopped (i.e., just returned from kthread_create()).
2004 *
2005 * Function lives here instead of kthread.c because it messes with
2006 * scheduler internals which require locking.
2007 */
2008void kthread_bind(struct task_struct *p, unsigned int cpu)
2009{
2010 struct rq *rq = cpu_rq(cpu);
2011 unsigned long flags;
2012
2013 /* Must have done schedule() in kthread() before we set_task_cpu */
2014 if (!wait_task_inactive(p, TASK_UNINTERRUPTIBLE)) {
2015 WARN_ON(1);
2016 return;
2017 }
2018
2019 spin_lock_irqsave(&rq->lock, flags);
2020 set_task_cpu(p, cpu);
2021 p->cpus_allowed = cpumask_of_cpu(cpu);
2022 p->rt.nr_cpus_allowed = 1;
2023 p->flags |= PF_THREAD_BOUND;
2024 spin_unlock_irqrestore(&rq->lock, flags);
2025}
2026EXPORT_SYMBOL(kthread_bind);
2027
1999#ifdef CONFIG_SMP 2028#ifdef CONFIG_SMP
2000/* 2029/*
2001 * Is this task likely cache-hot: 2030 * Is this task likely cache-hot:
@@ -2008,7 +2037,7 @@ task_hot(struct task_struct *p, u64 now, struct sched_domain *sd)
2008 /* 2037 /*
2009 * Buddy candidates are cache hot: 2038 * Buddy candidates are cache hot:
2010 */ 2039 */
2011 if (sched_feat(CACHE_HOT_BUDDY) && 2040 if (sched_feat(CACHE_HOT_BUDDY) && this_rq()->nr_running &&
2012 (&p->se == cfs_rq_of(&p->se)->next || 2041 (&p->se == cfs_rq_of(&p->se)->next ||
2013 &p->se == cfs_rq_of(&p->se)->last)) 2042 &p->se == cfs_rq_of(&p->se)->last))
2014 return 1; 2043 return 1;
@@ -9407,6 +9436,10 @@ void __init sched_init(void)
9407#endif /* CONFIG_USER_SCHED */ 9436#endif /* CONFIG_USER_SCHED */
9408#endif /* CONFIG_GROUP_SCHED */ 9437#endif /* CONFIG_GROUP_SCHED */
9409 9438
9439#if defined CONFIG_FAIR_GROUP_SCHED && defined CONFIG_SMP
9440 update_shares_data = __alloc_percpu(nr_cpu_ids * sizeof(unsigned long),
9441 __alignof__(unsigned long));
9442#endif
9410 for_each_possible_cpu(i) { 9443 for_each_possible_cpu(i) {
9411 struct rq *rq; 9444 struct rq *rq;
9412 9445
@@ -9532,13 +9565,13 @@ void __init sched_init(void)
9532 current->sched_class = &fair_sched_class; 9565 current->sched_class = &fair_sched_class;
9533 9566
9534 /* Allocate the nohz_cpu_mask if CONFIG_CPUMASK_OFFSTACK */ 9567 /* Allocate the nohz_cpu_mask if CONFIG_CPUMASK_OFFSTACK */
9535 alloc_cpumask_var(&nohz_cpu_mask, GFP_NOWAIT); 9568 zalloc_cpumask_var(&nohz_cpu_mask, GFP_NOWAIT);
9536#ifdef CONFIG_SMP 9569#ifdef CONFIG_SMP
9537#ifdef CONFIG_NO_HZ 9570#ifdef CONFIG_NO_HZ
9538 alloc_cpumask_var(&nohz.cpu_mask, GFP_NOWAIT); 9571 zalloc_cpumask_var(&nohz.cpu_mask, GFP_NOWAIT);
9539 alloc_cpumask_var(&nohz.ilb_grp_nohz_mask, GFP_NOWAIT); 9572 alloc_cpumask_var(&nohz.ilb_grp_nohz_mask, GFP_NOWAIT);
9540#endif 9573#endif
9541 alloc_cpumask_var(&cpu_isolated_map, GFP_NOWAIT); 9574 zalloc_cpumask_var(&cpu_isolated_map, GFP_NOWAIT);
9542#endif /* SMP */ 9575#endif /* SMP */
9543 9576
9544 perf_event_init(); 9577 perf_event_init();
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
index 4e777b47eeda..37087a7fac22 100644
--- a/kernel/sched_fair.c
+++ b/kernel/sched_fair.c
@@ -822,6 +822,26 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr)
822 * re-elected due to buddy favours. 822 * re-elected due to buddy favours.
823 */ 823 */
824 clear_buddies(cfs_rq, curr); 824 clear_buddies(cfs_rq, curr);
825 return;
826 }
827
828 /*
829 * Ensure that a task that missed wakeup preemption by a
830 * narrow margin doesn't have to wait for a full slice.
831 * This also mitigates buddy induced latencies under load.
832 */
833 if (!sched_feat(WAKEUP_PREEMPT))
834 return;
835
836 if (delta_exec < sysctl_sched_min_granularity)
837 return;
838
839 if (cfs_rq->nr_running > 1) {
840 struct sched_entity *se = __pick_next_entity(cfs_rq);
841 s64 delta = curr->vruntime - se->vruntime;
842
843 if (delta > ideal_runtime)
844 resched_task(rq_of(cfs_rq)->curr);
825 } 845 }
826} 846}
827 847
@@ -861,12 +881,18 @@ wakeup_preempt_entity(struct sched_entity *curr, struct sched_entity *se);
861static struct sched_entity *pick_next_entity(struct cfs_rq *cfs_rq) 881static struct sched_entity *pick_next_entity(struct cfs_rq *cfs_rq)
862{ 882{
863 struct sched_entity *se = __pick_next_entity(cfs_rq); 883 struct sched_entity *se = __pick_next_entity(cfs_rq);
884 struct sched_entity *left = se;
864 885
865 if (cfs_rq->next && wakeup_preempt_entity(cfs_rq->next, se) < 1) 886 if (cfs_rq->next && wakeup_preempt_entity(cfs_rq->next, left) < 1)
866 return cfs_rq->next; 887 se = cfs_rq->next;
867 888
868 if (cfs_rq->last && wakeup_preempt_entity(cfs_rq->last, se) < 1) 889 /*
869 return cfs_rq->last; 890 * Prefer last buddy, try to return the CPU to a preempted task.
891 */
892 if (cfs_rq->last && wakeup_preempt_entity(cfs_rq->last, left) < 1)
893 se = cfs_rq->last;
894
895 clear_buddies(cfs_rq, se);
870 896
871 return se; 897 return se;
872} 898}
@@ -1568,6 +1594,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_
1568 struct sched_entity *se = &curr->se, *pse = &p->se; 1594 struct sched_entity *se = &curr->se, *pse = &p->se;
1569 struct cfs_rq *cfs_rq = task_cfs_rq(curr); 1595 struct cfs_rq *cfs_rq = task_cfs_rq(curr);
1570 int sync = wake_flags & WF_SYNC; 1596 int sync = wake_flags & WF_SYNC;
1597 int scale = cfs_rq->nr_running >= sched_nr_latency;
1571 1598
1572 update_curr(cfs_rq); 1599 update_curr(cfs_rq);
1573 1600
@@ -1582,18 +1609,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_
1582 if (unlikely(se == pse)) 1609 if (unlikely(se == pse))
1583 return; 1610 return;
1584 1611
1585 /* 1612 if (sched_feat(NEXT_BUDDY) && scale && !(wake_flags & WF_FORK))
1586 * Only set the backward buddy when the current task is still on the
1587 * rq. This can happen when a wakeup gets interleaved with schedule on
1588 * the ->pre_schedule() or idle_balance() point, either of which can
1589 * drop the rq lock.
1590 *
1591 * Also, during early boot the idle thread is in the fair class, for
1592 * obvious reasons its a bad idea to schedule back to the idle thread.
1593 */
1594 if (sched_feat(LAST_BUDDY) && likely(se->on_rq && curr != rq->idle))
1595 set_last_buddy(se);
1596 if (sched_feat(NEXT_BUDDY) && !(wake_flags & WF_FORK))
1597 set_next_buddy(pse); 1613 set_next_buddy(pse);
1598 1614
1599 /* 1615 /*
@@ -1639,8 +1655,22 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_
1639 1655
1640 BUG_ON(!pse); 1656 BUG_ON(!pse);
1641 1657
1642 if (wakeup_preempt_entity(se, pse) == 1) 1658 if (wakeup_preempt_entity(se, pse) == 1) {
1643 resched_task(curr); 1659 resched_task(curr);
1660 /*
1661 * Only set the backward buddy when the current task is still
1662 * on the rq. This can happen when a wakeup gets interleaved
1663 * with schedule on the ->pre_schedule() or idle_balance()
1664 * point, either of which can * drop the rq lock.
1665 *
1666 * Also, during early boot the idle thread is in the fair class,
1667 * for obvious reasons its a bad idea to schedule back to it.
1668 */
1669 if (unlikely(!se->on_rq || curr == rq->idle))
1670 return;
1671 if (sched_feat(LAST_BUDDY) && scale && entity_is_task(se))
1672 set_last_buddy(se);
1673 }
1644} 1674}
1645 1675
1646static struct task_struct *pick_next_task_fair(struct rq *rq) 1676static struct task_struct *pick_next_task_fair(struct rq *rq)
@@ -1654,16 +1684,6 @@ static struct task_struct *pick_next_task_fair(struct rq *rq)
1654 1684
1655 do { 1685 do {
1656 se = pick_next_entity(cfs_rq); 1686 se = pick_next_entity(cfs_rq);
1657 /*
1658 * If se was a buddy, clear it so that it will have to earn
1659 * the favour again.
1660 *
1661 * If se was not a buddy, clear the buddies because neither
1662 * was elegible to run, let them earn it again.
1663 *
1664 * IOW. unconditionally clear buddies.
1665 */
1666 __clear_buddies(cfs_rq, NULL);
1667 set_next_entity(cfs_rq, se); 1687 set_next_entity(cfs_rq, se);
1668 cfs_rq = group_cfs_rq(se); 1688 cfs_rq = group_cfs_rq(se);
1669 } while (cfs_rq); 1689 } while (cfs_rq);
diff --git a/kernel/slow-work-debugfs.c b/kernel/slow-work-debugfs.c
new file mode 100644
index 000000000000..e45c43645298
--- /dev/null
+++ b/kernel/slow-work-debugfs.c
@@ -0,0 +1,227 @@
1/* Slow work debugging
2 *
3 * Copyright (C) 2009 Red Hat, Inc. All Rights Reserved.
4 * Written by David Howells (dhowells@redhat.com)
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public Licence
8 * as published by the Free Software Foundation; either version
9 * 2 of the Licence, or (at your option) any later version.
10 */
11
12#include <linux/module.h>
13#include <linux/slow-work.h>
14#include <linux/fs.h>
15#include <linux/time.h>
16#include <linux/seq_file.h>
17#include "slow-work.h"
18
19#define ITERATOR_SHIFT (BITS_PER_LONG - 4)
20#define ITERATOR_SELECTOR (0xfUL << ITERATOR_SHIFT)
21#define ITERATOR_COUNTER (~ITERATOR_SELECTOR)
22
23void slow_work_new_thread_desc(struct slow_work *work, struct seq_file *m)
24{
25 seq_puts(m, "Slow-work: New thread");
26}
27
28/*
29 * Render the time mark field on a work item into a 5-char time with units plus
30 * a space
31 */
32static void slow_work_print_mark(struct seq_file *m, struct slow_work *work)
33{
34 struct timespec now, diff;
35
36 now = CURRENT_TIME;
37 diff = timespec_sub(now, work->mark);
38
39 if (diff.tv_sec < 0)
40 seq_puts(m, " -ve ");
41 else if (diff.tv_sec == 0 && diff.tv_nsec < 1000)
42 seq_printf(m, "%3luns ", diff.tv_nsec);
43 else if (diff.tv_sec == 0 && diff.tv_nsec < 1000000)
44 seq_printf(m, "%3luus ", diff.tv_nsec / 1000);
45 else if (diff.tv_sec == 0 && diff.tv_nsec < 1000000000)
46 seq_printf(m, "%3lums ", diff.tv_nsec / 1000000);
47 else if (diff.tv_sec <= 1)
48 seq_puts(m, " 1s ");
49 else if (diff.tv_sec < 60)
50 seq_printf(m, "%4lus ", diff.tv_sec);
51 else if (diff.tv_sec < 60 * 60)
52 seq_printf(m, "%4lum ", diff.tv_sec / 60);
53 else if (diff.tv_sec < 60 * 60 * 24)
54 seq_printf(m, "%4luh ", diff.tv_sec / 3600);
55 else
56 seq_puts(m, "exces ");
57}
58
59/*
60 * Describe a slow work item for debugfs
61 */
62static int slow_work_runqueue_show(struct seq_file *m, void *v)
63{
64 struct slow_work *work;
65 struct list_head *p = v;
66 unsigned long id;
67
68 switch ((unsigned long) v) {
69 case 1:
70 seq_puts(m, "THR PID ITEM ADDR FL MARK DESC\n");
71 return 0;
72 case 2:
73 seq_puts(m, "=== ===== ================ == ===== ==========\n");
74 return 0;
75
76 case 3 ... 3 + SLOW_WORK_THREAD_LIMIT - 1:
77 id = (unsigned long) v - 3;
78
79 read_lock(&slow_work_execs_lock);
80 work = slow_work_execs[id];
81 if (work) {
82 smp_read_barrier_depends();
83
84 seq_printf(m, "%3lu %5d %16p %2lx ",
85 id, slow_work_pids[id], work, work->flags);
86 slow_work_print_mark(m, work);
87
88 if (work->ops->desc)
89 work->ops->desc(work, m);
90 seq_putc(m, '\n');
91 }
92 read_unlock(&slow_work_execs_lock);
93 return 0;
94
95 default:
96 work = list_entry(p, struct slow_work, link);
97 seq_printf(m, "%3s - %16p %2lx ",
98 work->flags & SLOW_WORK_VERY_SLOW ? "vsq" : "sq",
99 work, work->flags);
100 slow_work_print_mark(m, work);
101
102 if (work->ops->desc)
103 work->ops->desc(work, m);
104 seq_putc(m, '\n');
105 return 0;
106 }
107}
108
109/*
110 * map the iterator to a work item
111 */
112static void *slow_work_runqueue_index(struct seq_file *m, loff_t *_pos)
113{
114 struct list_head *p;
115 unsigned long count, id;
116
117 switch (*_pos >> ITERATOR_SHIFT) {
118 case 0x0:
119 if (*_pos == 0)
120 *_pos = 1;
121 if (*_pos < 3)
122 return (void *)(unsigned long) *_pos;
123 if (*_pos < 3 + SLOW_WORK_THREAD_LIMIT)
124 for (id = *_pos - 3;
125 id < SLOW_WORK_THREAD_LIMIT;
126 id++, (*_pos)++)
127 if (slow_work_execs[id])
128 return (void *)(unsigned long) *_pos;
129 *_pos = 0x1UL << ITERATOR_SHIFT;
130
131 case 0x1:
132 count = *_pos & ITERATOR_COUNTER;
133 list_for_each(p, &slow_work_queue) {
134 if (count == 0)
135 return p;
136 count--;
137 }
138 *_pos = 0x2UL << ITERATOR_SHIFT;
139
140 case 0x2:
141 count = *_pos & ITERATOR_COUNTER;
142 list_for_each(p, &vslow_work_queue) {
143 if (count == 0)
144 return p;
145 count--;
146 }
147 *_pos = 0x3UL << ITERATOR_SHIFT;
148
149 default:
150 return NULL;
151 }
152}
153
154/*
155 * set up the iterator to start reading from the first line
156 */
157static void *slow_work_runqueue_start(struct seq_file *m, loff_t *_pos)
158{
159 spin_lock_irq(&slow_work_queue_lock);
160 return slow_work_runqueue_index(m, _pos);
161}
162
163/*
164 * move to the next line
165 */
166static void *slow_work_runqueue_next(struct seq_file *m, void *v, loff_t *_pos)
167{
168 struct list_head *p = v;
169 unsigned long selector = *_pos >> ITERATOR_SHIFT;
170
171 (*_pos)++;
172 switch (selector) {
173 case 0x0:
174 return slow_work_runqueue_index(m, _pos);
175
176 case 0x1:
177 if (*_pos >> ITERATOR_SHIFT == 0x1) {
178 p = p->next;
179 if (p != &slow_work_queue)
180 return p;
181 }
182 *_pos = 0x2UL << ITERATOR_SHIFT;
183 p = &vslow_work_queue;
184
185 case 0x2:
186 if (*_pos >> ITERATOR_SHIFT == 0x2) {
187 p = p->next;
188 if (p != &vslow_work_queue)
189 return p;
190 }
191 *_pos = 0x3UL << ITERATOR_SHIFT;
192
193 default:
194 return NULL;
195 }
196}
197
198/*
199 * clean up after reading
200 */
201static void slow_work_runqueue_stop(struct seq_file *m, void *v)
202{
203 spin_unlock_irq(&slow_work_queue_lock);
204}
205
206static const struct seq_operations slow_work_runqueue_ops = {
207 .start = slow_work_runqueue_start,
208 .stop = slow_work_runqueue_stop,
209 .next = slow_work_runqueue_next,
210 .show = slow_work_runqueue_show,
211};
212
213/*
214 * open "/sys/kernel/debug/slow_work/runqueue" to list queue contents
215 */
216static int slow_work_runqueue_open(struct inode *inode, struct file *file)
217{
218 return seq_open(file, &slow_work_runqueue_ops);
219}
220
221const struct file_operations slow_work_runqueue_fops = {
222 .owner = THIS_MODULE,
223 .open = slow_work_runqueue_open,
224 .read = seq_read,
225 .llseek = seq_lseek,
226 .release = seq_release,
227};
diff --git a/kernel/slow-work.c b/kernel/slow-work.c
index 0d31135efbf4..00889bd3c590 100644
--- a/kernel/slow-work.c
+++ b/kernel/slow-work.c
@@ -16,11 +16,8 @@
16#include <linux/kthread.h> 16#include <linux/kthread.h>
17#include <linux/freezer.h> 17#include <linux/freezer.h>
18#include <linux/wait.h> 18#include <linux/wait.h>
19 19#include <linux/debugfs.h>
20#define SLOW_WORK_CULL_TIMEOUT (5 * HZ) /* cull threads 5s after running out of 20#include "slow-work.h"
21 * things to do */
22#define SLOW_WORK_OOM_TIMEOUT (5 * HZ) /* can't start new threads for 5s after
23 * OOM */
24 21
25static void slow_work_cull_timeout(unsigned long); 22static void slow_work_cull_timeout(unsigned long);
26static void slow_work_oom_timeout(unsigned long); 23static void slow_work_oom_timeout(unsigned long);
@@ -46,7 +43,7 @@ static unsigned vslow_work_proportion = 50; /* % of threads that may process
46 43
47#ifdef CONFIG_SYSCTL 44#ifdef CONFIG_SYSCTL
48static const int slow_work_min_min_threads = 2; 45static const int slow_work_min_min_threads = 2;
49static int slow_work_max_max_threads = 255; 46static int slow_work_max_max_threads = SLOW_WORK_THREAD_LIMIT;
50static const int slow_work_min_vslow = 1; 47static const int slow_work_min_vslow = 1;
51static const int slow_work_max_vslow = 99; 48static const int slow_work_max_vslow = 99;
52 49
@@ -98,6 +95,56 @@ static DEFINE_TIMER(slow_work_oom_timer, slow_work_oom_timeout, 0, 0);
98static struct slow_work slow_work_new_thread; /* new thread starter */ 95static struct slow_work slow_work_new_thread; /* new thread starter */
99 96
100/* 97/*
98 * slow work ID allocation (use slow_work_queue_lock)
99 */
100static DECLARE_BITMAP(slow_work_ids, SLOW_WORK_THREAD_LIMIT);
101
102/*
103 * Unregistration tracking to prevent put_ref() from disappearing during module
104 * unload
105 */
106#ifdef CONFIG_MODULES
107static struct module *slow_work_thread_processing[SLOW_WORK_THREAD_LIMIT];
108static struct module *slow_work_unreg_module;
109static struct slow_work *slow_work_unreg_work_item;
110static DECLARE_WAIT_QUEUE_HEAD(slow_work_unreg_wq);
111static DEFINE_MUTEX(slow_work_unreg_sync_lock);
112
113static void slow_work_set_thread_processing(int id, struct slow_work *work)
114{
115 if (work)
116 slow_work_thread_processing[id] = work->owner;
117}
118static void slow_work_done_thread_processing(int id, struct slow_work *work)
119{
120 struct module *module = slow_work_thread_processing[id];
121
122 slow_work_thread_processing[id] = NULL;
123 smp_mb();
124 if (slow_work_unreg_work_item == work ||
125 slow_work_unreg_module == module)
126 wake_up_all(&slow_work_unreg_wq);
127}
128static void slow_work_clear_thread_processing(int id)
129{
130 slow_work_thread_processing[id] = NULL;
131}
132#else
133static void slow_work_set_thread_processing(int id, struct slow_work *work) {}
134static void slow_work_done_thread_processing(int id, struct slow_work *work) {}
135static void slow_work_clear_thread_processing(int id) {}
136#endif
137
138/*
139 * Data for tracking currently executing items for indication through /proc
140 */
141#ifdef CONFIG_SLOW_WORK_DEBUG
142struct slow_work *slow_work_execs[SLOW_WORK_THREAD_LIMIT];
143pid_t slow_work_pids[SLOW_WORK_THREAD_LIMIT];
144DEFINE_RWLOCK(slow_work_execs_lock);
145#endif
146
147/*
101 * The queues of work items and the lock governing access to them. These are 148 * The queues of work items and the lock governing access to them. These are
102 * shared between all the CPUs. It doesn't make sense to have per-CPU queues 149 * shared between all the CPUs. It doesn't make sense to have per-CPU queues
103 * as the number of threads bears no relation to the number of CPUs. 150 * as the number of threads bears no relation to the number of CPUs.
@@ -105,9 +152,18 @@ static struct slow_work slow_work_new_thread; /* new thread starter */
105 * There are two queues of work items: one for slow work items, and one for 152 * There are two queues of work items: one for slow work items, and one for
106 * very slow work items. 153 * very slow work items.
107 */ 154 */
108static LIST_HEAD(slow_work_queue); 155LIST_HEAD(slow_work_queue);
109static LIST_HEAD(vslow_work_queue); 156LIST_HEAD(vslow_work_queue);
110static DEFINE_SPINLOCK(slow_work_queue_lock); 157DEFINE_SPINLOCK(slow_work_queue_lock);
158
159/*
160 * The following are two wait queues that get pinged when a work item is placed
161 * on an empty queue. These allow work items that are hogging a thread by
162 * sleeping in a way that could be deferred to yield their thread and enqueue
163 * themselves.
164 */
165static DECLARE_WAIT_QUEUE_HEAD(slow_work_queue_waits_for_occupation);
166static DECLARE_WAIT_QUEUE_HEAD(vslow_work_queue_waits_for_occupation);
111 167
112/* 168/*
113 * The thread controls. A variable used to signal to the threads that they 169 * The thread controls. A variable used to signal to the threads that they
@@ -126,6 +182,20 @@ static DECLARE_COMPLETION(slow_work_last_thread_exited);
126static int slow_work_user_count; 182static int slow_work_user_count;
127static DEFINE_MUTEX(slow_work_user_lock); 183static DEFINE_MUTEX(slow_work_user_lock);
128 184
185static inline int slow_work_get_ref(struct slow_work *work)
186{
187 if (work->ops->get_ref)
188 return work->ops->get_ref(work);
189
190 return 0;
191}
192
193static inline void slow_work_put_ref(struct slow_work *work)
194{
195 if (work->ops->put_ref)
196 work->ops->put_ref(work);
197}
198
129/* 199/*
130 * Calculate the maximum number of active threads in the pool that are 200 * Calculate the maximum number of active threads in the pool that are
131 * permitted to process very slow work items. 201 * permitted to process very slow work items.
@@ -149,7 +219,7 @@ static unsigned slow_work_calc_vsmax(void)
149 * Attempt to execute stuff queued on a slow thread. Return true if we managed 219 * Attempt to execute stuff queued on a slow thread. Return true if we managed
150 * it, false if there was nothing to do. 220 * it, false if there was nothing to do.
151 */ 221 */
152static bool slow_work_execute(void) 222static noinline bool slow_work_execute(int id)
153{ 223{
154 struct slow_work *work = NULL; 224 struct slow_work *work = NULL;
155 unsigned vsmax; 225 unsigned vsmax;
@@ -186,6 +256,13 @@ static bool slow_work_execute(void)
186 } else { 256 } else {
187 very_slow = false; /* avoid the compiler warning */ 257 very_slow = false; /* avoid the compiler warning */
188 } 258 }
259
260 slow_work_set_thread_processing(id, work);
261 if (work) {
262 slow_work_mark_time(work);
263 slow_work_begin_exec(id, work);
264 }
265
189 spin_unlock_irq(&slow_work_queue_lock); 266 spin_unlock_irq(&slow_work_queue_lock);
190 267
191 if (!work) 268 if (!work)
@@ -194,12 +271,19 @@ static bool slow_work_execute(void)
194 if (!test_and_clear_bit(SLOW_WORK_PENDING, &work->flags)) 271 if (!test_and_clear_bit(SLOW_WORK_PENDING, &work->flags))
195 BUG(); 272 BUG();
196 273
197 work->ops->execute(work); 274 /* don't execute if the work is in the process of being cancelled */
275 if (!test_bit(SLOW_WORK_CANCELLING, &work->flags))
276 work->ops->execute(work);
198 277
199 if (very_slow) 278 if (very_slow)
200 atomic_dec(&vslow_work_executing_count); 279 atomic_dec(&vslow_work_executing_count);
201 clear_bit_unlock(SLOW_WORK_EXECUTING, &work->flags); 280 clear_bit_unlock(SLOW_WORK_EXECUTING, &work->flags);
202 281
282 /* wake up anyone waiting for this work to be complete */
283 wake_up_bit(&work->flags, SLOW_WORK_EXECUTING);
284
285 slow_work_end_exec(id, work);
286
203 /* if someone tried to enqueue the item whilst we were executing it, 287 /* if someone tried to enqueue the item whilst we were executing it,
204 * then it'll be left unenqueued to avoid multiple threads trying to 288 * then it'll be left unenqueued to avoid multiple threads trying to
205 * execute it simultaneously 289 * execute it simultaneously
@@ -219,7 +303,10 @@ static bool slow_work_execute(void)
219 spin_unlock_irq(&slow_work_queue_lock); 303 spin_unlock_irq(&slow_work_queue_lock);
220 } 304 }
221 305
222 work->ops->put_ref(work); 306 /* sort out the race between module unloading and put_ref() */
307 slow_work_put_ref(work);
308 slow_work_done_thread_processing(id, work);
309
223 return true; 310 return true;
224 311
225auto_requeue: 312auto_requeue:
@@ -227,15 +314,61 @@ auto_requeue:
227 * - we transfer our ref on the item back to the appropriate queue 314 * - we transfer our ref on the item back to the appropriate queue
228 * - don't wake another thread up as we're awake already 315 * - don't wake another thread up as we're awake already
229 */ 316 */
317 slow_work_mark_time(work);
230 if (test_bit(SLOW_WORK_VERY_SLOW, &work->flags)) 318 if (test_bit(SLOW_WORK_VERY_SLOW, &work->flags))
231 list_add_tail(&work->link, &vslow_work_queue); 319 list_add_tail(&work->link, &vslow_work_queue);
232 else 320 else
233 list_add_tail(&work->link, &slow_work_queue); 321 list_add_tail(&work->link, &slow_work_queue);
234 spin_unlock_irq(&slow_work_queue_lock); 322 spin_unlock_irq(&slow_work_queue_lock);
323 slow_work_clear_thread_processing(id);
235 return true; 324 return true;
236} 325}
237 326
238/** 327/**
328 * slow_work_sleep_till_thread_needed - Sleep till thread needed by other work
329 * work: The work item under execution that wants to sleep
330 * _timeout: Scheduler sleep timeout
331 *
332 * Allow a requeueable work item to sleep on a slow-work processor thread until
333 * that thread is needed to do some other work or the sleep is interrupted by
334 * some other event.
335 *
336 * The caller must set up a wake up event before calling this and must have set
337 * the appropriate sleep mode (such as TASK_UNINTERRUPTIBLE) and tested its own
338 * condition before calling this function as no test is made here.
339 *
340 * False is returned if there is nothing on the queue; true is returned if the
341 * work item should be requeued
342 */
343bool slow_work_sleep_till_thread_needed(struct slow_work *work,
344 signed long *_timeout)
345{
346 wait_queue_head_t *wfo_wq;
347 struct list_head *queue;
348
349 DEFINE_WAIT(wait);
350
351 if (test_bit(SLOW_WORK_VERY_SLOW, &work->flags)) {
352 wfo_wq = &vslow_work_queue_waits_for_occupation;
353 queue = &vslow_work_queue;
354 } else {
355 wfo_wq = &slow_work_queue_waits_for_occupation;
356 queue = &slow_work_queue;
357 }
358
359 if (!list_empty(queue))
360 return true;
361
362 add_wait_queue_exclusive(wfo_wq, &wait);
363 if (list_empty(queue))
364 *_timeout = schedule_timeout(*_timeout);
365 finish_wait(wfo_wq, &wait);
366
367 return !list_empty(queue);
368}
369EXPORT_SYMBOL(slow_work_sleep_till_thread_needed);
370
371/**
239 * slow_work_enqueue - Schedule a slow work item for processing 372 * slow_work_enqueue - Schedule a slow work item for processing
240 * @work: The work item to queue 373 * @work: The work item to queue
241 * 374 *
@@ -260,16 +393,22 @@ auto_requeue:
260 * allowed to pick items to execute. This ensures that very slow items won't 393 * allowed to pick items to execute. This ensures that very slow items won't
261 * overly block ones that are just ordinarily slow. 394 * overly block ones that are just ordinarily slow.
262 * 395 *
263 * Returns 0 if successful, -EAGAIN if not. 396 * Returns 0 if successful, -EAGAIN if not (or -ECANCELED if cancelled work is
397 * attempted queued)
264 */ 398 */
265int slow_work_enqueue(struct slow_work *work) 399int slow_work_enqueue(struct slow_work *work)
266{ 400{
401 wait_queue_head_t *wfo_wq;
402 struct list_head *queue;
267 unsigned long flags; 403 unsigned long flags;
404 int ret;
405
406 if (test_bit(SLOW_WORK_CANCELLING, &work->flags))
407 return -ECANCELED;
268 408
269 BUG_ON(slow_work_user_count <= 0); 409 BUG_ON(slow_work_user_count <= 0);
270 BUG_ON(!work); 410 BUG_ON(!work);
271 BUG_ON(!work->ops); 411 BUG_ON(!work->ops);
272 BUG_ON(!work->ops->get_ref);
273 412
274 /* when honouring an enqueue request, we only promise that we will run 413 /* when honouring an enqueue request, we only promise that we will run
275 * the work function in the future; we do not promise to run it once 414 * the work function in the future; we do not promise to run it once
@@ -280,8 +419,19 @@ int slow_work_enqueue(struct slow_work *work)
280 * maintaining our promise 419 * maintaining our promise
281 */ 420 */
282 if (!test_and_set_bit_lock(SLOW_WORK_PENDING, &work->flags)) { 421 if (!test_and_set_bit_lock(SLOW_WORK_PENDING, &work->flags)) {
422 if (test_bit(SLOW_WORK_VERY_SLOW, &work->flags)) {
423 wfo_wq = &vslow_work_queue_waits_for_occupation;
424 queue = &vslow_work_queue;
425 } else {
426 wfo_wq = &slow_work_queue_waits_for_occupation;
427 queue = &slow_work_queue;
428 }
429
283 spin_lock_irqsave(&slow_work_queue_lock, flags); 430 spin_lock_irqsave(&slow_work_queue_lock, flags);
284 431
432 if (unlikely(test_bit(SLOW_WORK_CANCELLING, &work->flags)))
433 goto cancelled;
434
285 /* we promise that we will not attempt to execute the work 435 /* we promise that we will not attempt to execute the work
286 * function in more than one thread simultaneously 436 * function in more than one thread simultaneously
287 * 437 *
@@ -299,25 +449,221 @@ int slow_work_enqueue(struct slow_work *work)
299 if (test_bit(SLOW_WORK_EXECUTING, &work->flags)) { 449 if (test_bit(SLOW_WORK_EXECUTING, &work->flags)) {
300 set_bit(SLOW_WORK_ENQ_DEFERRED, &work->flags); 450 set_bit(SLOW_WORK_ENQ_DEFERRED, &work->flags);
301 } else { 451 } else {
302 if (work->ops->get_ref(work) < 0) 452 ret = slow_work_get_ref(work);
303 goto cant_get_ref; 453 if (ret < 0)
304 if (test_bit(SLOW_WORK_VERY_SLOW, &work->flags)) 454 goto failed;
305 list_add_tail(&work->link, &vslow_work_queue); 455 slow_work_mark_time(work);
306 else 456 list_add_tail(&work->link, queue);
307 list_add_tail(&work->link, &slow_work_queue);
308 wake_up(&slow_work_thread_wq); 457 wake_up(&slow_work_thread_wq);
458
459 /* if someone who could be requeued is sleeping on a
460 * thread, then ask them to yield their thread */
461 if (work->link.prev == queue)
462 wake_up(wfo_wq);
309 } 463 }
310 464
311 spin_unlock_irqrestore(&slow_work_queue_lock, flags); 465 spin_unlock_irqrestore(&slow_work_queue_lock, flags);
312 } 466 }
313 return 0; 467 return 0;
314 468
315cant_get_ref: 469cancelled:
470 ret = -ECANCELED;
471failed:
316 spin_unlock_irqrestore(&slow_work_queue_lock, flags); 472 spin_unlock_irqrestore(&slow_work_queue_lock, flags);
317 return -EAGAIN; 473 return ret;
318} 474}
319EXPORT_SYMBOL(slow_work_enqueue); 475EXPORT_SYMBOL(slow_work_enqueue);
320 476
477static int slow_work_wait(void *word)
478{
479 schedule();
480 return 0;
481}
482
483/**
484 * slow_work_cancel - Cancel a slow work item
485 * @work: The work item to cancel
486 *
487 * This function will cancel a previously enqueued work item. If we cannot
488 * cancel the work item, it is guarenteed to have run when this function
489 * returns.
490 */
491void slow_work_cancel(struct slow_work *work)
492{
493 bool wait = true, put = false;
494
495 set_bit(SLOW_WORK_CANCELLING, &work->flags);
496 smp_mb();
497
498 /* if the work item is a delayed work item with an active timer, we
499 * need to wait for the timer to finish _before_ getting the spinlock,
500 * lest we deadlock against the timer routine
501 *
502 * the timer routine will leave DELAYED set if it notices the
503 * CANCELLING flag in time
504 */
505 if (test_bit(SLOW_WORK_DELAYED, &work->flags)) {
506 struct delayed_slow_work *dwork =
507 container_of(work, struct delayed_slow_work, work);
508 del_timer_sync(&dwork->timer);
509 }
510
511 spin_lock_irq(&slow_work_queue_lock);
512
513 if (test_bit(SLOW_WORK_DELAYED, &work->flags)) {
514 /* the timer routine aborted or never happened, so we are left
515 * holding the timer's reference on the item and should just
516 * drop the pending flag and wait for any ongoing execution to
517 * finish */
518 struct delayed_slow_work *dwork =
519 container_of(work, struct delayed_slow_work, work);
520
521 BUG_ON(timer_pending(&dwork->timer));
522 BUG_ON(!list_empty(&work->link));
523
524 clear_bit(SLOW_WORK_DELAYED, &work->flags);
525 put = true;
526 clear_bit(SLOW_WORK_PENDING, &work->flags);
527
528 } else if (test_bit(SLOW_WORK_PENDING, &work->flags) &&
529 !list_empty(&work->link)) {
530 /* the link in the pending queue holds a reference on the item
531 * that we will need to release */
532 list_del_init(&work->link);
533 wait = false;
534 put = true;
535 clear_bit(SLOW_WORK_PENDING, &work->flags);
536
537 } else if (test_and_clear_bit(SLOW_WORK_ENQ_DEFERRED, &work->flags)) {
538 /* the executor is holding our only reference on the item, so
539 * we merely need to wait for it to finish executing */
540 clear_bit(SLOW_WORK_PENDING, &work->flags);
541 }
542
543 spin_unlock_irq(&slow_work_queue_lock);
544
545 /* the EXECUTING flag is set by the executor whilst the spinlock is set
546 * and before the item is dequeued - so assuming the above doesn't
547 * actually dequeue it, simply waiting for the EXECUTING flag to be
548 * released here should be sufficient */
549 if (wait)
550 wait_on_bit(&work->flags, SLOW_WORK_EXECUTING, slow_work_wait,
551 TASK_UNINTERRUPTIBLE);
552
553 clear_bit(SLOW_WORK_CANCELLING, &work->flags);
554 if (put)
555 slow_work_put_ref(work);
556}
557EXPORT_SYMBOL(slow_work_cancel);
558
559/*
560 * Handle expiry of the delay timer, indicating that a delayed slow work item
561 * should now be queued if not cancelled
562 */
563static void delayed_slow_work_timer(unsigned long data)
564{
565 wait_queue_head_t *wfo_wq;
566 struct list_head *queue;
567 struct slow_work *work = (struct slow_work *) data;
568 unsigned long flags;
569 bool queued = false, put = false, first = false;
570
571 if (test_bit(SLOW_WORK_VERY_SLOW, &work->flags)) {
572 wfo_wq = &vslow_work_queue_waits_for_occupation;
573 queue = &vslow_work_queue;
574 } else {
575 wfo_wq = &slow_work_queue_waits_for_occupation;
576 queue = &slow_work_queue;
577 }
578
579 spin_lock_irqsave(&slow_work_queue_lock, flags);
580 if (likely(!test_bit(SLOW_WORK_CANCELLING, &work->flags))) {
581 clear_bit(SLOW_WORK_DELAYED, &work->flags);
582
583 if (test_bit(SLOW_WORK_EXECUTING, &work->flags)) {
584 /* we discard the reference the timer was holding in
585 * favour of the one the executor holds */
586 set_bit(SLOW_WORK_ENQ_DEFERRED, &work->flags);
587 put = true;
588 } else {
589 slow_work_mark_time(work);
590 list_add_tail(&work->link, queue);
591 queued = true;
592 if (work->link.prev == queue)
593 first = true;
594 }
595 }
596
597 spin_unlock_irqrestore(&slow_work_queue_lock, flags);
598 if (put)
599 slow_work_put_ref(work);
600 if (first)
601 wake_up(wfo_wq);
602 if (queued)
603 wake_up(&slow_work_thread_wq);
604}
605
606/**
607 * delayed_slow_work_enqueue - Schedule a delayed slow work item for processing
608 * @dwork: The delayed work item to queue
609 * @delay: When to start executing the work, in jiffies from now
610 *
611 * This is similar to slow_work_enqueue(), but it adds a delay before the work
612 * is actually queued for processing.
613 *
614 * The item can have delayed processing requested on it whilst it is being
615 * executed. The delay will begin immediately, and if it expires before the
616 * item finishes executing, the item will be placed back on the queue when it
617 * has done executing.
618 */
619int delayed_slow_work_enqueue(struct delayed_slow_work *dwork,
620 unsigned long delay)
621{
622 struct slow_work *work = &dwork->work;
623 unsigned long flags;
624 int ret;
625
626 if (delay == 0)
627 return slow_work_enqueue(&dwork->work);
628
629 BUG_ON(slow_work_user_count <= 0);
630 BUG_ON(!work);
631 BUG_ON(!work->ops);
632
633 if (test_bit(SLOW_WORK_CANCELLING, &work->flags))
634 return -ECANCELED;
635
636 if (!test_and_set_bit_lock(SLOW_WORK_PENDING, &work->flags)) {
637 spin_lock_irqsave(&slow_work_queue_lock, flags);
638
639 if (test_bit(SLOW_WORK_CANCELLING, &work->flags))
640 goto cancelled;
641
642 /* the timer holds a reference whilst it is pending */
643 ret = work->ops->get_ref(work);
644 if (ret < 0)
645 goto cant_get_ref;
646
647 if (test_and_set_bit(SLOW_WORK_DELAYED, &work->flags))
648 BUG();
649 dwork->timer.expires = jiffies + delay;
650 dwork->timer.data = (unsigned long) work;
651 dwork->timer.function = delayed_slow_work_timer;
652 add_timer(&dwork->timer);
653
654 spin_unlock_irqrestore(&slow_work_queue_lock, flags);
655 }
656
657 return 0;
658
659cancelled:
660 ret = -ECANCELED;
661cant_get_ref:
662 spin_unlock_irqrestore(&slow_work_queue_lock, flags);
663 return ret;
664}
665EXPORT_SYMBOL(delayed_slow_work_enqueue);
666
321/* 667/*
322 * Schedule a cull of the thread pool at some time in the near future 668 * Schedule a cull of the thread pool at some time in the near future
323 */ 669 */
@@ -368,13 +714,23 @@ static inline bool slow_work_available(int vsmax)
368 */ 714 */
369static int slow_work_thread(void *_data) 715static int slow_work_thread(void *_data)
370{ 716{
371 int vsmax; 717 int vsmax, id;
372 718
373 DEFINE_WAIT(wait); 719 DEFINE_WAIT(wait);
374 720
375 set_freezable(); 721 set_freezable();
376 set_user_nice(current, -5); 722 set_user_nice(current, -5);
377 723
724 /* allocate ourselves an ID */
725 spin_lock_irq(&slow_work_queue_lock);
726 id = find_first_zero_bit(slow_work_ids, SLOW_WORK_THREAD_LIMIT);
727 BUG_ON(id < 0 || id >= SLOW_WORK_THREAD_LIMIT);
728 __set_bit(id, slow_work_ids);
729 slow_work_set_thread_pid(id, current->pid);
730 spin_unlock_irq(&slow_work_queue_lock);
731
732 sprintf(current->comm, "kslowd%03u", id);
733
378 for (;;) { 734 for (;;) {
379 vsmax = vslow_work_proportion; 735 vsmax = vslow_work_proportion;
380 vsmax *= atomic_read(&slow_work_thread_count); 736 vsmax *= atomic_read(&slow_work_thread_count);
@@ -395,7 +751,7 @@ static int slow_work_thread(void *_data)
395 vsmax *= atomic_read(&slow_work_thread_count); 751 vsmax *= atomic_read(&slow_work_thread_count);
396 vsmax /= 100; 752 vsmax /= 100;
397 753
398 if (slow_work_available(vsmax) && slow_work_execute()) { 754 if (slow_work_available(vsmax) && slow_work_execute(id)) {
399 cond_resched(); 755 cond_resched();
400 if (list_empty(&slow_work_queue) && 756 if (list_empty(&slow_work_queue) &&
401 list_empty(&vslow_work_queue) && 757 list_empty(&vslow_work_queue) &&
@@ -412,6 +768,11 @@ static int slow_work_thread(void *_data)
412 break; 768 break;
413 } 769 }
414 770
771 spin_lock_irq(&slow_work_queue_lock);
772 slow_work_set_thread_pid(id, 0);
773 __clear_bit(id, slow_work_ids);
774 spin_unlock_irq(&slow_work_queue_lock);
775
415 if (atomic_dec_and_test(&slow_work_thread_count)) 776 if (atomic_dec_and_test(&slow_work_thread_count))
416 complete_and_exit(&slow_work_last_thread_exited, 0); 777 complete_and_exit(&slow_work_last_thread_exited, 0);
417 return 0; 778 return 0;
@@ -427,21 +788,6 @@ static void slow_work_cull_timeout(unsigned long data)
427} 788}
428 789
429/* 790/*
430 * Get a reference on slow work thread starter
431 */
432static int slow_work_new_thread_get_ref(struct slow_work *work)
433{
434 return 0;
435}
436
437/*
438 * Drop a reference on slow work thread starter
439 */
440static void slow_work_new_thread_put_ref(struct slow_work *work)
441{
442}
443
444/*
445 * Start a new slow work thread 791 * Start a new slow work thread
446 */ 792 */
447static void slow_work_new_thread_execute(struct slow_work *work) 793static void slow_work_new_thread_execute(struct slow_work *work)
@@ -475,9 +821,11 @@ static void slow_work_new_thread_execute(struct slow_work *work)
475} 821}
476 822
477static const struct slow_work_ops slow_work_new_thread_ops = { 823static const struct slow_work_ops slow_work_new_thread_ops = {
478 .get_ref = slow_work_new_thread_get_ref, 824 .owner = THIS_MODULE,
479 .put_ref = slow_work_new_thread_put_ref,
480 .execute = slow_work_new_thread_execute, 825 .execute = slow_work_new_thread_execute,
826#ifdef CONFIG_SLOW_WORK_DEBUG
827 .desc = slow_work_new_thread_desc,
828#endif
481}; 829};
482 830
483/* 831/*
@@ -546,12 +894,13 @@ static int slow_work_max_threads_sysctl(struct ctl_table *table, int write,
546 894
547/** 895/**
548 * slow_work_register_user - Register a user of the facility 896 * slow_work_register_user - Register a user of the facility
897 * @module: The module about to make use of the facility
549 * 898 *
550 * Register a user of the facility, starting up the initial threads if there 899 * Register a user of the facility, starting up the initial threads if there
551 * aren't any other users at this point. This will return 0 if successful, or 900 * aren't any other users at this point. This will return 0 if successful, or
552 * an error if not. 901 * an error if not.
553 */ 902 */
554int slow_work_register_user(void) 903int slow_work_register_user(struct module *module)
555{ 904{
556 struct task_struct *p; 905 struct task_struct *p;
557 int loop; 906 int loop;
@@ -598,14 +947,81 @@ error:
598} 947}
599EXPORT_SYMBOL(slow_work_register_user); 948EXPORT_SYMBOL(slow_work_register_user);
600 949
950/*
951 * wait for all outstanding items from the calling module to complete
952 * - note that more items may be queued whilst we're waiting
953 */
954static void slow_work_wait_for_items(struct module *module)
955{
956#ifdef CONFIG_MODULES
957 DECLARE_WAITQUEUE(myself, current);
958 struct slow_work *work;
959 int loop;
960
961 mutex_lock(&slow_work_unreg_sync_lock);
962 add_wait_queue(&slow_work_unreg_wq, &myself);
963
964 for (;;) {
965 spin_lock_irq(&slow_work_queue_lock);
966
967 /* first of all, we wait for the last queued item in each list
968 * to be processed */
969 list_for_each_entry_reverse(work, &vslow_work_queue, link) {
970 if (work->owner == module) {
971 set_current_state(TASK_UNINTERRUPTIBLE);
972 slow_work_unreg_work_item = work;
973 goto do_wait;
974 }
975 }
976 list_for_each_entry_reverse(work, &slow_work_queue, link) {
977 if (work->owner == module) {
978 set_current_state(TASK_UNINTERRUPTIBLE);
979 slow_work_unreg_work_item = work;
980 goto do_wait;
981 }
982 }
983
984 /* then we wait for the items being processed to finish */
985 slow_work_unreg_module = module;
986 smp_mb();
987 for (loop = 0; loop < SLOW_WORK_THREAD_LIMIT; loop++) {
988 if (slow_work_thread_processing[loop] == module)
989 goto do_wait;
990 }
991 spin_unlock_irq(&slow_work_queue_lock);
992 break; /* okay, we're done */
993
994 do_wait:
995 spin_unlock_irq(&slow_work_queue_lock);
996 schedule();
997 slow_work_unreg_work_item = NULL;
998 slow_work_unreg_module = NULL;
999 }
1000
1001 remove_wait_queue(&slow_work_unreg_wq, &myself);
1002 mutex_unlock(&slow_work_unreg_sync_lock);
1003#endif /* CONFIG_MODULES */
1004}
1005
601/** 1006/**
602 * slow_work_unregister_user - Unregister a user of the facility 1007 * slow_work_unregister_user - Unregister a user of the facility
1008 * @module: The module whose items should be cleared
603 * 1009 *
604 * Unregister a user of the facility, killing all the threads if this was the 1010 * Unregister a user of the facility, killing all the threads if this was the
605 * last one. 1011 * last one.
1012 *
1013 * This waits for all the work items belonging to the nominated module to go
1014 * away before proceeding.
606 */ 1015 */
607void slow_work_unregister_user(void) 1016void slow_work_unregister_user(struct module *module)
608{ 1017{
1018 /* first of all, wait for all outstanding items from the calling module
1019 * to complete */
1020 if (module)
1021 slow_work_wait_for_items(module);
1022
1023 /* then we can actually go about shutting down the facility if need
1024 * be */
609 mutex_lock(&slow_work_user_lock); 1025 mutex_lock(&slow_work_user_lock);
610 1026
611 BUG_ON(slow_work_user_count <= 0); 1027 BUG_ON(slow_work_user_count <= 0);
@@ -639,6 +1055,16 @@ static int __init init_slow_work(void)
639 if (slow_work_max_max_threads < nr_cpus * 2) 1055 if (slow_work_max_max_threads < nr_cpus * 2)
640 slow_work_max_max_threads = nr_cpus * 2; 1056 slow_work_max_max_threads = nr_cpus * 2;
641#endif 1057#endif
1058#ifdef CONFIG_SLOW_WORK_DEBUG
1059 {
1060 struct dentry *dbdir;
1061
1062 dbdir = debugfs_create_dir("slow_work", NULL);
1063 if (dbdir && !IS_ERR(dbdir))
1064 debugfs_create_file("runqueue", S_IFREG | 0400, dbdir,
1065 NULL, &slow_work_runqueue_fops);
1066 }
1067#endif
642 return 0; 1068 return 0;
643} 1069}
644 1070
diff --git a/kernel/slow-work.h b/kernel/slow-work.h
new file mode 100644
index 000000000000..321f3c59d732
--- /dev/null
+++ b/kernel/slow-work.h
@@ -0,0 +1,72 @@
1/* Slow work private definitions
2 *
3 * Copyright (C) 2009 Red Hat, Inc. All Rights Reserved.
4 * Written by David Howells (dhowells@redhat.com)
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public Licence
8 * as published by the Free Software Foundation; either version
9 * 2 of the Licence, or (at your option) any later version.
10 */
11
12#define SLOW_WORK_CULL_TIMEOUT (5 * HZ) /* cull threads 5s after running out of
13 * things to do */
14#define SLOW_WORK_OOM_TIMEOUT (5 * HZ) /* can't start new threads for 5s after
15 * OOM */
16
17#define SLOW_WORK_THREAD_LIMIT 255 /* abs maximum number of slow-work threads */
18
19/*
20 * slow-work.c
21 */
22#ifdef CONFIG_SLOW_WORK_DEBUG
23extern struct slow_work *slow_work_execs[];
24extern pid_t slow_work_pids[];
25extern rwlock_t slow_work_execs_lock;
26#endif
27
28extern struct list_head slow_work_queue;
29extern struct list_head vslow_work_queue;
30extern spinlock_t slow_work_queue_lock;
31
32/*
33 * slow-work-debugfs.c
34 */
35#ifdef CONFIG_SLOW_WORK_DEBUG
36extern const struct file_operations slow_work_runqueue_fops;
37
38extern void slow_work_new_thread_desc(struct slow_work *, struct seq_file *);
39#endif
40
41/*
42 * Helper functions
43 */
44static inline void slow_work_set_thread_pid(int id, pid_t pid)
45{
46#ifdef CONFIG_SLOW_WORK_PROC
47 slow_work_pids[id] = pid;
48#endif
49}
50
51static inline void slow_work_mark_time(struct slow_work *work)
52{
53#ifdef CONFIG_SLOW_WORK_PROC
54 work->mark = CURRENT_TIME;
55#endif
56}
57
58static inline void slow_work_begin_exec(int id, struct slow_work *work)
59{
60#ifdef CONFIG_SLOW_WORK_PROC
61 slow_work_execs[id] = work;
62#endif
63}
64
65static inline void slow_work_end_exec(int id, struct slow_work *work)
66{
67#ifdef CONFIG_SLOW_WORK_PROC
68 write_lock(&slow_work_execs_lock);
69 slow_work_execs[id] = NULL;
70 write_unlock(&slow_work_execs_lock);
71#endif
72}
diff --git a/kernel/sys.c b/kernel/sys.c
index 255475d163e0..ce17760d9c51 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -1110,6 +1110,8 @@ SYSCALL_DEFINE0(setsid)
1110 err = session; 1110 err = session;
1111out: 1111out:
1112 write_unlock_irq(&tasklist_lock); 1112 write_unlock_irq(&tasklist_lock);
1113 if (err > 0)
1114 proc_sid_connector(group_leader);
1113 return err; 1115 return err;
1114} 1116}
1115 1117
@@ -1546,24 +1548,37 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
1546 if (arg4 | arg5) 1548 if (arg4 | arg5)
1547 return -EINVAL; 1549 return -EINVAL;
1548 switch (arg2) { 1550 switch (arg2) {
1549 case 0: 1551 case PR_MCE_KILL_CLEAR:
1550 if (arg3 != 0) 1552 if (arg3 != 0)
1551 return -EINVAL; 1553 return -EINVAL;
1552 current->flags &= ~PF_MCE_PROCESS; 1554 current->flags &= ~PF_MCE_PROCESS;
1553 break; 1555 break;
1554 case 1: 1556 case PR_MCE_KILL_SET:
1555 current->flags |= PF_MCE_PROCESS; 1557 current->flags |= PF_MCE_PROCESS;
1556 if (arg3 != 0) 1558 if (arg3 == PR_MCE_KILL_EARLY)
1557 current->flags |= PF_MCE_EARLY; 1559 current->flags |= PF_MCE_EARLY;
1558 else 1560 else if (arg3 == PR_MCE_KILL_LATE)
1559 current->flags &= ~PF_MCE_EARLY; 1561 current->flags &= ~PF_MCE_EARLY;
1562 else if (arg3 == PR_MCE_KILL_DEFAULT)
1563 current->flags &=
1564 ~(PF_MCE_EARLY|PF_MCE_PROCESS);
1565 else
1566 return -EINVAL;
1560 break; 1567 break;
1561 default: 1568 default:
1562 return -EINVAL; 1569 return -EINVAL;
1563 } 1570 }
1564 error = 0; 1571 error = 0;
1565 break; 1572 break;
1566 1573 case PR_MCE_KILL_GET:
1574 if (arg2 | arg3 | arg4 | arg5)
1575 return -EINVAL;
1576 if (current->flags & PF_MCE_PROCESS)
1577 error = (current->flags & PF_MCE_EARLY) ?
1578 PR_MCE_KILL_EARLY : PR_MCE_KILL_LATE;
1579 else
1580 error = PR_MCE_KILL_DEFAULT;
1581 break;
1567 default: 1582 default:
1568 error = -EINVAL; 1583 error = -EINVAL;
1569 break; 1584 break;
diff --git a/kernel/sysctl_check.c b/kernel/sysctl_check.c
index b38423ca711a..b6e7aaea4604 100644
--- a/kernel/sysctl_check.c
+++ b/kernel/sysctl_check.c
@@ -1521,7 +1521,7 @@ int sysctl_check_table(struct nsproxy *namespaces, struct ctl_table *table)
1521 if (!table->ctl_name && table->strategy) 1521 if (!table->ctl_name && table->strategy)
1522 set_fail(&fail, table, "Strategy without ctl_name"); 1522 set_fail(&fail, table, "Strategy without ctl_name");
1523#endif 1523#endif
1524#ifdef CONFIG_PROC_FS 1524#ifdef CONFIG_PROC_SYSCTL
1525 if (table->procname && !table->proc_handler) 1525 if (table->procname && !table->proc_handler)
1526 set_fail(&fail, table, "No proc_handler"); 1526 set_fail(&fail, table, "No proc_handler");
1527#endif 1527#endif
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 37ba67e33265..6dc4e5ef7a01 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -740,7 +740,7 @@ ftrace_profile_write(struct file *filp, const char __user *ubuf,
740 out: 740 out:
741 mutex_unlock(&ftrace_profile_lock); 741 mutex_unlock(&ftrace_profile_lock);
742 742
743 filp->f_pos += cnt; 743 *ppos += cnt;
744 744
745 return cnt; 745 return cnt;
746} 746}
@@ -2222,15 +2222,15 @@ ftrace_regex_write(struct file *file, const char __user *ubuf,
2222 ret = ftrace_process_regex(parser->buffer, 2222 ret = ftrace_process_regex(parser->buffer,
2223 parser->idx, enable); 2223 parser->idx, enable);
2224 if (ret) 2224 if (ret)
2225 goto out; 2225 goto out_unlock;
2226 2226
2227 trace_parser_clear(parser); 2227 trace_parser_clear(parser);
2228 } 2228 }
2229 2229
2230 ret = read; 2230 ret = read;
2231 2231out_unlock:
2232 mutex_unlock(&ftrace_regex_lock); 2232 mutex_unlock(&ftrace_regex_lock);
2233out: 2233
2234 return ret; 2234 return ret;
2235} 2235}
2236 2236
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index d4ff01970547..5dd017fea6f5 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -483,7 +483,7 @@ struct ring_buffer_iter {
483/* Up this if you want to test the TIME_EXTENTS and normalization */ 483/* Up this if you want to test the TIME_EXTENTS and normalization */
484#define DEBUG_SHIFT 0 484#define DEBUG_SHIFT 0
485 485
486static inline u64 rb_time_stamp(struct ring_buffer *buffer, int cpu) 486static inline u64 rb_time_stamp(struct ring_buffer *buffer)
487{ 487{
488 /* shift to debug/test normalization and TIME_EXTENTS */ 488 /* shift to debug/test normalization and TIME_EXTENTS */
489 return buffer->clock() << DEBUG_SHIFT; 489 return buffer->clock() << DEBUG_SHIFT;
@@ -494,7 +494,7 @@ u64 ring_buffer_time_stamp(struct ring_buffer *buffer, int cpu)
494 u64 time; 494 u64 time;
495 495
496 preempt_disable_notrace(); 496 preempt_disable_notrace();
497 time = rb_time_stamp(buffer, cpu); 497 time = rb_time_stamp(buffer);
498 preempt_enable_no_resched_notrace(); 498 preempt_enable_no_resched_notrace();
499 499
500 return time; 500 return time;
@@ -599,7 +599,7 @@ static struct list_head *rb_list_head(struct list_head *list)
599} 599}
600 600
601/* 601/*
602 * rb_is_head_page - test if the give page is the head page 602 * rb_is_head_page - test if the given page is the head page
603 * 603 *
604 * Because the reader may move the head_page pointer, we can 604 * Because the reader may move the head_page pointer, we can
605 * not trust what the head page is (it may be pointing to 605 * not trust what the head page is (it may be pointing to
@@ -1193,6 +1193,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages)
1193 atomic_inc(&cpu_buffer->record_disabled); 1193 atomic_inc(&cpu_buffer->record_disabled);
1194 synchronize_sched(); 1194 synchronize_sched();
1195 1195
1196 spin_lock_irq(&cpu_buffer->reader_lock);
1196 rb_head_page_deactivate(cpu_buffer); 1197 rb_head_page_deactivate(cpu_buffer);
1197 1198
1198 for (i = 0; i < nr_pages; i++) { 1199 for (i = 0; i < nr_pages; i++) {
@@ -1207,6 +1208,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages)
1207 return; 1208 return;
1208 1209
1209 rb_reset_cpu(cpu_buffer); 1210 rb_reset_cpu(cpu_buffer);
1211 spin_unlock_irq(&cpu_buffer->reader_lock);
1210 1212
1211 rb_check_pages(cpu_buffer); 1213 rb_check_pages(cpu_buffer);
1212 1214
@@ -1868,7 +1870,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer,
1868 * Nested commits always have zero deltas, so 1870 * Nested commits always have zero deltas, so
1869 * just reread the time stamp 1871 * just reread the time stamp
1870 */ 1872 */
1871 *ts = rb_time_stamp(buffer, cpu_buffer->cpu); 1873 *ts = rb_time_stamp(buffer);
1872 next_page->page->time_stamp = *ts; 1874 next_page->page->time_stamp = *ts;
1873 } 1875 }
1874 1876
@@ -2111,7 +2113,7 @@ rb_reserve_next_event(struct ring_buffer *buffer,
2111 if (RB_WARN_ON(cpu_buffer, ++nr_loops > 1000)) 2113 if (RB_WARN_ON(cpu_buffer, ++nr_loops > 1000))
2112 goto out_fail; 2114 goto out_fail;
2113 2115
2114 ts = rb_time_stamp(cpu_buffer->buffer, cpu_buffer->cpu); 2116 ts = rb_time_stamp(cpu_buffer->buffer);
2115 2117
2116 /* 2118 /*
2117 * Only the first commit can update the timestamp. 2119 * Only the first commit can update the timestamp.
@@ -2681,7 +2683,7 @@ unsigned long ring_buffer_entries(struct ring_buffer *buffer)
2681EXPORT_SYMBOL_GPL(ring_buffer_entries); 2683EXPORT_SYMBOL_GPL(ring_buffer_entries);
2682 2684
2683/** 2685/**
2684 * ring_buffer_overrun_cpu - get the number of overruns in buffer 2686 * ring_buffer_overruns - get the number of overruns in buffer
2685 * @buffer: The ring buffer 2687 * @buffer: The ring buffer
2686 * 2688 *
2687 * Returns the total number of overruns in the ring buffer 2689 * Returns the total number of overruns in the ring buffer
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index c820b0310a12..b20d3ec75de9 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -2440,7 +2440,7 @@ tracing_trace_options_write(struct file *filp, const char __user *ubuf,
2440 return ret; 2440 return ret;
2441 } 2441 }
2442 2442
2443 filp->f_pos += cnt; 2443 *ppos += cnt;
2444 2444
2445 return cnt; 2445 return cnt;
2446} 2446}
@@ -2582,7 +2582,7 @@ tracing_ctrl_write(struct file *filp, const char __user *ubuf,
2582 } 2582 }
2583 mutex_unlock(&trace_types_lock); 2583 mutex_unlock(&trace_types_lock);
2584 2584
2585 filp->f_pos += cnt; 2585 *ppos += cnt;
2586 2586
2587 return cnt; 2587 return cnt;
2588} 2588}
@@ -2764,7 +2764,7 @@ tracing_set_trace_write(struct file *filp, const char __user *ubuf,
2764 if (err) 2764 if (err)
2765 return err; 2765 return err;
2766 2766
2767 filp->f_pos += ret; 2767 *ppos += ret;
2768 2768
2769 return ret; 2769 return ret;
2770} 2770}
@@ -3299,7 +3299,7 @@ tracing_entries_write(struct file *filp, const char __user *ubuf,
3299 } 3299 }
3300 } 3300 }
3301 3301
3302 filp->f_pos += cnt; 3302 *ppos += cnt;
3303 3303
3304 /* If check pages failed, return ENOMEM */ 3304 /* If check pages failed, return ENOMEM */
3305 if (tracing_disabled) 3305 if (tracing_disabled)
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
index ed17565826b0..b6c12c6a1bcd 100644
--- a/kernel/trace/trace_output.c
+++ b/kernel/trace/trace_output.c
@@ -69,6 +69,9 @@ enum print_line_t trace_print_printk_msg_only(struct trace_iterator *iter)
69 * @s: trace sequence descriptor 69 * @s: trace sequence descriptor
70 * @fmt: printf format string 70 * @fmt: printf format string
71 * 71 *
72 * It returns 0 if the trace oversizes the buffer's free
73 * space, 1 otherwise.
74 *
72 * The tracer may use either sequence operations or its own 75 * The tracer may use either sequence operations or its own
73 * copy to user routines. To simplify formating of a trace 76 * copy to user routines. To simplify formating of a trace
74 * trace_seq_printf is used to store strings into a special 77 * trace_seq_printf is used to store strings into a special
@@ -95,7 +98,7 @@ trace_seq_printf(struct trace_seq *s, const char *fmt, ...)
95 98
96 s->len += ret; 99 s->len += ret;
97 100
98 return len; 101 return 1;
99} 102}
100EXPORT_SYMBOL_GPL(trace_seq_printf); 103EXPORT_SYMBOL_GPL(trace_seq_printf);
101 104
diff --git a/kernel/user.c b/kernel/user.c
index 2c000e7132ac..46d0165ca70c 100644
--- a/kernel/user.c
+++ b/kernel/user.c
@@ -330,9 +330,9 @@ done:
330 */ 330 */
331static void free_user(struct user_struct *up, unsigned long flags) 331static void free_user(struct user_struct *up, unsigned long flags)
332{ 332{
333 spin_unlock_irqrestore(&uidhash_lock, flags);
334 INIT_DELAYED_WORK(&up->work, cleanup_user_struct); 333 INIT_DELAYED_WORK(&up->work, cleanup_user_struct);
335 schedule_delayed_work(&up->work, msecs_to_jiffies(1000)); 334 schedule_delayed_work(&up->work, msecs_to_jiffies(1000));
335 spin_unlock_irqrestore(&uidhash_lock, flags);
336} 336}
337 337
338#else /* CONFIG_USER_SCHED && CONFIG_SYSFS */ 338#else /* CONFIG_USER_SCHED && CONFIG_SYSFS */
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 47cdd7e76f2b..67e526b6ae81 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -685,6 +685,7 @@ EXPORT_SYMBOL(schedule_delayed_work_on);
685int schedule_on_each_cpu(work_func_t func) 685int schedule_on_each_cpu(work_func_t func)
686{ 686{
687 int cpu; 687 int cpu;
688 int orig = -1;
688 struct work_struct *works; 689 struct work_struct *works;
689 690
690 works = alloc_percpu(struct work_struct); 691 works = alloc_percpu(struct work_struct);
@@ -692,14 +693,28 @@ int schedule_on_each_cpu(work_func_t func)
692 return -ENOMEM; 693 return -ENOMEM;
693 694
694 get_online_cpus(); 695 get_online_cpus();
696
697 /*
698 * When running in keventd don't schedule a work item on
699 * itself. Can just call directly because the work queue is
700 * already bound. This also is faster.
701 */
702 if (current_is_keventd())
703 orig = raw_smp_processor_id();
704
695 for_each_online_cpu(cpu) { 705 for_each_online_cpu(cpu) {
696 struct work_struct *work = per_cpu_ptr(works, cpu); 706 struct work_struct *work = per_cpu_ptr(works, cpu);
697 707
698 INIT_WORK(work, func); 708 INIT_WORK(work, func);
699 schedule_work_on(cpu, work); 709 if (cpu != orig)
710 schedule_work_on(cpu, work);
700 } 711 }
712 if (orig >= 0)
713 func(per_cpu_ptr(works, orig));
714
701 for_each_online_cpu(cpu) 715 for_each_online_cpu(cpu)
702 flush_work(per_cpu_ptr(works, cpu)); 716 flush_work(per_cpu_ptr(works, cpu));
717
703 put_online_cpus(); 718 put_online_cpus();
704 free_percpu(works); 719 free_percpu(works);
705 return 0; 720 return 0;
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 30df5865ecbe..234ceb10861f 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -392,7 +392,7 @@ config DEBUG_KMEMLEAK_TEST
392 392
393config DEBUG_PREEMPT 393config DEBUG_PREEMPT
394 bool "Debug preemptible kernel" 394 bool "Debug preemptible kernel"
395 depends on DEBUG_KERNEL && PREEMPT && (TRACE_IRQFLAGS_SUPPORT || PPC64) 395 depends on DEBUG_KERNEL && PREEMPT && TRACE_IRQFLAGS_SUPPORT
396 default y 396 default y
397 help 397 help
398 If you say Y here then the kernel will use a debug variant of the 398 If you say Y here then the kernel will use a debug variant of the
diff --git a/lib/dma-debug.c b/lib/dma-debug.c
index 58a9f9fc609a..ce6b7eabf674 100644
--- a/lib/dma-debug.c
+++ b/lib/dma-debug.c
@@ -819,9 +819,11 @@ static void check_unmap(struct dma_debug_entry *ref)
819 err_printk(ref->dev, entry, "DMA-API: device driver frees " 819 err_printk(ref->dev, entry, "DMA-API: device driver frees "
820 "DMA memory with different CPU address " 820 "DMA memory with different CPU address "
821 "[device address=0x%016llx] [size=%llu bytes] " 821 "[device address=0x%016llx] [size=%llu bytes] "
822 "[cpu alloc address=%p] [cpu free address=%p]", 822 "[cpu alloc address=0x%016llx] "
823 "[cpu free address=0x%016llx]",
823 ref->dev_addr, ref->size, 824 ref->dev_addr, ref->size,
824 (void *)entry->paddr, (void *)ref->paddr); 825 (unsigned long long)entry->paddr,
826 (unsigned long long)ref->paddr);
825 } 827 }
826 828
827 if (ref->sg_call_ents && ref->type == dma_debug_sg && 829 if (ref->sg_call_ents && ref->type == dma_debug_sg &&
diff --git a/lib/radix-tree.c b/lib/radix-tree.c
index 23abbd93cae1..92cdd9936e3d 100644
--- a/lib/radix-tree.c
+++ b/lib/radix-tree.c
@@ -200,6 +200,9 @@ radix_tree_node_free(struct radix_tree_node *node)
200 * ensure that the addition of a single element in the tree cannot fail. On 200 * ensure that the addition of a single element in the tree cannot fail. On
201 * success, return zero, with preemption disabled. On error, return -ENOMEM 201 * success, return zero, with preemption disabled. On error, return -ENOMEM
202 * with preemption not disabled. 202 * with preemption not disabled.
203 *
204 * To make use of this facility, the radix tree must be initialised without
205 * __GFP_WAIT being passed to INIT_RADIX_TREE().
203 */ 206 */
204int radix_tree_preload(gfp_t gfp_mask) 207int radix_tree_preload(gfp_t gfp_mask)
205{ 208{
@@ -543,7 +546,6 @@ out:
543} 546}
544EXPORT_SYMBOL(radix_tree_tag_clear); 547EXPORT_SYMBOL(radix_tree_tag_clear);
545 548
546#ifndef __KERNEL__ /* Only the test harness uses this at present */
547/** 549/**
548 * radix_tree_tag_get - get a tag on a radix tree node 550 * radix_tree_tag_get - get a tag on a radix tree node
549 * @root: radix tree root 551 * @root: radix tree root
@@ -606,7 +608,6 @@ int radix_tree_tag_get(struct radix_tree_root *root,
606 } 608 }
607} 609}
608EXPORT_SYMBOL(radix_tree_tag_get); 610EXPORT_SYMBOL(radix_tree_tag_get);
609#endif
610 611
611/** 612/**
612 * radix_tree_next_hole - find the next hole (not-present entry) 613 * radix_tree_next_hole - find the next hole (not-present entry)
diff --git a/lib/string.c b/lib/string.c
index b19b87af65a3..e96421ab9a9a 100644
--- a/lib/string.c
+++ b/lib/string.c
@@ -246,13 +246,17 @@ EXPORT_SYMBOL(strlcat);
246#undef strcmp 246#undef strcmp
247int strcmp(const char *cs, const char *ct) 247int strcmp(const char *cs, const char *ct)
248{ 248{
249 signed char __res; 249 unsigned char c1, c2;
250 250
251 while (1) { 251 while (1) {
252 if ((__res = *cs - *ct++) != 0 || !*cs++) 252 c1 = *cs++;
253 c2 = *ct++;
254 if (c1 != c2)
255 return c1 < c2 ? -1 : 1;
256 if (!c1)
253 break; 257 break;
254 } 258 }
255 return __res; 259 return 0;
256} 260}
257EXPORT_SYMBOL(strcmp); 261EXPORT_SYMBOL(strcmp);
258#endif 262#endif
@@ -266,14 +270,18 @@ EXPORT_SYMBOL(strcmp);
266 */ 270 */
267int strncmp(const char *cs, const char *ct, size_t count) 271int strncmp(const char *cs, const char *ct, size_t count)
268{ 272{
269 signed char __res = 0; 273 unsigned char c1, c2;
270 274
271 while (count) { 275 while (count) {
272 if ((__res = *cs - *ct++) != 0 || !*cs++) 276 c1 = *cs++;
277 c2 = *ct++;
278 if (c1 != c2)
279 return c1 < c2 ? -1 : 1;
280 if (!c1)
273 break; 281 break;
274 count--; 282 count--;
275 } 283 }
276 return __res; 284 return 0;
277} 285}
278EXPORT_SYMBOL(strncmp); 286EXPORT_SYMBOL(strncmp);
279#endif 287#endif
diff --git a/mm/Kconfig b/mm/Kconfig
index 57963c6063d1..44cf6f0a3a6d 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -67,7 +67,7 @@ config DISCONTIGMEM
67 67
68config SPARSEMEM 68config SPARSEMEM
69 def_bool y 69 def_bool y
70 depends on SPARSEMEM_MANUAL 70 depends on (!SELECT_MEMORY_MODEL && ARCH_SPARSEMEM_ENABLE) || SPARSEMEM_MANUAL
71 71
72config FLATMEM 72config FLATMEM
73 def_bool y 73 def_bool y
@@ -128,11 +128,8 @@ config SPARSEMEM_VMEMMAP
128config MEMORY_HOTPLUG 128config MEMORY_HOTPLUG
129 bool "Allow for memory hot-add" 129 bool "Allow for memory hot-add"
130 depends on SPARSEMEM || X86_64_ACPI_NUMA 130 depends on SPARSEMEM || X86_64_ACPI_NUMA
131 depends on HOTPLUG && !(HIBERNATION && !S390) && ARCH_ENABLE_MEMORY_HOTPLUG 131 depends on HOTPLUG && ARCH_ENABLE_MEMORY_HOTPLUG
132 depends on (IA64 || X86 || PPC64 || SUPERH || S390) 132 depends on (IA64 || X86 || PPC_BOOK3S_64 || SUPERH || S390)
133
134comment "Memory hotplug is currently incompatible with Software Suspend"
135 depends on SPARSEMEM && HOTPLUG && HIBERNATION && !S390
136 133
137config MEMORY_HOTPLUG_SPARSE 134config MEMORY_HOTPLUG_SPARSE
138 def_bool y 135 def_bool y
diff --git a/mm/backing-dev.c b/mm/backing-dev.c
index 5a37e2055717..67a33a5a1a93 100644
--- a/mm/backing-dev.c
+++ b/mm/backing-dev.c
@@ -604,15 +604,36 @@ static void bdi_wb_shutdown(struct backing_dev_info *bdi)
604 604
605 /* 605 /*
606 * Finally, kill the kernel threads. We don't need to be RCU 606 * Finally, kill the kernel threads. We don't need to be RCU
607 * safe anymore, since the bdi is gone from visibility. 607 * safe anymore, since the bdi is gone from visibility. Force
608 * unfreeze of the thread before calling kthread_stop(), otherwise
609 * it would never exet if it is currently stuck in the refrigerator.
608 */ 610 */
609 list_for_each_entry(wb, &bdi->wb_list, list) 611 list_for_each_entry(wb, &bdi->wb_list, list) {
612 wb->task->flags &= ~PF_FROZEN;
610 kthread_stop(wb->task); 613 kthread_stop(wb->task);
614 }
615}
616
617/*
618 * This bdi is going away now, make sure that no super_blocks point to it
619 */
620static void bdi_prune_sb(struct backing_dev_info *bdi)
621{
622 struct super_block *sb;
623
624 spin_lock(&sb_lock);
625 list_for_each_entry(sb, &super_blocks, s_list) {
626 if (sb->s_bdi == bdi)
627 sb->s_bdi = NULL;
628 }
629 spin_unlock(&sb_lock);
611} 630}
612 631
613void bdi_unregister(struct backing_dev_info *bdi) 632void bdi_unregister(struct backing_dev_info *bdi)
614{ 633{
615 if (bdi->dev) { 634 if (bdi->dev) {
635 bdi_prune_sb(bdi);
636
616 if (!bdi_cap_flush_forker(bdi)) 637 if (!bdi_cap_flush_forker(bdi))
617 bdi_wb_shutdown(bdi); 638 bdi_wb_shutdown(bdi);
618 bdi_debug_unregister(bdi); 639 bdi_debug_unregister(bdi);
diff --git a/mm/highmem.c b/mm/highmem.c
index 25878cc49daa..9c1e627f282e 100644
--- a/mm/highmem.c
+++ b/mm/highmem.c
@@ -426,16 +426,21 @@ void __init page_address_init(void)
426 426
427void debug_kmap_atomic(enum km_type type) 427void debug_kmap_atomic(enum km_type type)
428{ 428{
429 static unsigned warn_count = 10; 429 static int warn_count = 10;
430 430
431 if (unlikely(warn_count == 0)) 431 if (unlikely(warn_count < 0))
432 return; 432 return;
433 433
434 if (unlikely(in_interrupt())) { 434 if (unlikely(in_interrupt())) {
435 if (in_irq()) { 435 if (in_nmi()) {
436 if (type != KM_NMI && type != KM_NMI_PTE) {
437 WARN_ON(1);
438 warn_count--;
439 }
440 } else if (in_irq()) {
436 if (type != KM_IRQ0 && type != KM_IRQ1 && 441 if (type != KM_IRQ0 && type != KM_IRQ1 &&
437 type != KM_BIO_SRC_IRQ && type != KM_BIO_DST_IRQ && 442 type != KM_BIO_SRC_IRQ && type != KM_BIO_DST_IRQ &&
438 type != KM_BOUNCE_READ) { 443 type != KM_BOUNCE_READ && type != KM_IRQ_PTE) {
439 WARN_ON(1); 444 WARN_ON(1);
440 warn_count--; 445 warn_count--;
441 } 446 }
@@ -452,7 +457,9 @@ void debug_kmap_atomic(enum km_type type)
452 } 457 }
453 458
454 if (type == KM_IRQ0 || type == KM_IRQ1 || type == KM_BOUNCE_READ || 459 if (type == KM_IRQ0 || type == KM_IRQ1 || type == KM_BOUNCE_READ ||
455 type == KM_BIO_SRC_IRQ || type == KM_BIO_DST_IRQ) { 460 type == KM_BIO_SRC_IRQ || type == KM_BIO_DST_IRQ ||
461 type == KM_IRQ_PTE || type == KM_NMI ||
462 type == KM_NMI_PTE ) {
456 if (!irqs_disabled()) { 463 if (!irqs_disabled()) {
457 WARN_ON(1); 464 WARN_ON(1);
458 warn_count--; 465 warn_count--;
diff --git a/mm/ksm.c b/mm/ksm.c
index bef1af4f77e3..5575f8628fef 100644
--- a/mm/ksm.c
+++ b/mm/ksm.c
@@ -1012,6 +1012,7 @@ static struct rmap_item *unstable_tree_search_insert(struct page *page,
1012 struct rmap_item *tree_rmap_item; 1012 struct rmap_item *tree_rmap_item;
1013 int ret; 1013 int ret;
1014 1014
1015 cond_resched();
1015 tree_rmap_item = rb_entry(*new, struct rmap_item, node); 1016 tree_rmap_item = rb_entry(*new, struct rmap_item, node);
1016 page2[0] = get_mergeable_page(tree_rmap_item); 1017 page2[0] = get_mergeable_page(tree_rmap_item);
1017 if (!page2[0]) 1018 if (!page2[0])
diff --git a/mm/memory-failure.c b/mm/memory-failure.c
index 729d4b15b645..dacc64183874 100644
--- a/mm/memory-failure.c
+++ b/mm/memory-failure.c
@@ -35,6 +35,7 @@
35#include <linux/mm.h> 35#include <linux/mm.h>
36#include <linux/page-flags.h> 36#include <linux/page-flags.h>
37#include <linux/sched.h> 37#include <linux/sched.h>
38#include <linux/ksm.h>
38#include <linux/rmap.h> 39#include <linux/rmap.h>
39#include <linux/pagemap.h> 40#include <linux/pagemap.h>
40#include <linux/swap.h> 41#include <linux/swap.h>
@@ -370,9 +371,6 @@ static int me_pagecache_clean(struct page *p, unsigned long pfn)
370 int ret = FAILED; 371 int ret = FAILED;
371 struct address_space *mapping; 372 struct address_space *mapping;
372 373
373 if (!isolate_lru_page(p))
374 page_cache_release(p);
375
376 /* 374 /*
377 * For anonymous pages we're done the only reference left 375 * For anonymous pages we're done the only reference left
378 * should be the one m_f() holds. 376 * should be the one m_f() holds.
@@ -498,30 +496,18 @@ static int me_pagecache_dirty(struct page *p, unsigned long pfn)
498 */ 496 */
499static int me_swapcache_dirty(struct page *p, unsigned long pfn) 497static int me_swapcache_dirty(struct page *p, unsigned long pfn)
500{ 498{
501 int ret = FAILED;
502
503 ClearPageDirty(p); 499 ClearPageDirty(p);
504 /* Trigger EIO in shmem: */ 500 /* Trigger EIO in shmem: */
505 ClearPageUptodate(p); 501 ClearPageUptodate(p);
506 502
507 if (!isolate_lru_page(p)) { 503 return DELAYED;
508 page_cache_release(p);
509 ret = DELAYED;
510 }
511
512 return ret;
513} 504}
514 505
515static int me_swapcache_clean(struct page *p, unsigned long pfn) 506static int me_swapcache_clean(struct page *p, unsigned long pfn)
516{ 507{
517 int ret = FAILED;
518
519 if (!isolate_lru_page(p)) {
520 page_cache_release(p);
521 ret = RECOVERED;
522 }
523 delete_from_swap_cache(p); 508 delete_from_swap_cache(p);
524 return ret; 509
510 return RECOVERED;
525} 511}
526 512
527/* 513/*
@@ -611,8 +597,6 @@ static struct page_state {
611 { 0, 0, "unknown page state", me_unknown }, 597 { 0, 0, "unknown page state", me_unknown },
612}; 598};
613 599
614#undef lru
615
616static void action_result(unsigned long pfn, char *msg, int result) 600static void action_result(unsigned long pfn, char *msg, int result)
617{ 601{
618 struct page *page = NULL; 602 struct page *page = NULL;
@@ -629,13 +613,16 @@ static int page_action(struct page_state *ps, struct page *p,
629 unsigned long pfn, int ref) 613 unsigned long pfn, int ref)
630{ 614{
631 int result; 615 int result;
616 int count;
632 617
633 result = ps->action(p, pfn); 618 result = ps->action(p, pfn);
634 action_result(pfn, ps->msg, result); 619 action_result(pfn, ps->msg, result);
635 if (page_count(p) != 1 + ref) 620
621 count = page_count(p) - 1 - ref;
622 if (count != 0)
636 printk(KERN_ERR 623 printk(KERN_ERR
637 "MCE %#lx: %s page still referenced by %d users\n", 624 "MCE %#lx: %s page still referenced by %d users\n",
638 pfn, ps->msg, page_count(p) - 1); 625 pfn, ps->msg, count);
639 626
640 /* Could do more checks here if page looks ok */ 627 /* Could do more checks here if page looks ok */
641 /* 628 /*
@@ -661,12 +648,9 @@ static void hwpoison_user_mappings(struct page *p, unsigned long pfn,
661 int i; 648 int i;
662 int kill = 1; 649 int kill = 1;
663 650
664 if (PageReserved(p) || PageCompound(p) || PageSlab(p)) 651 if (PageReserved(p) || PageCompound(p) || PageSlab(p) || PageKsm(p))
665 return; 652 return;
666 653
667 if (!PageLRU(p))
668 lru_add_drain_all();
669
670 /* 654 /*
671 * This check implies we don't kill processes if their pages 655 * This check implies we don't kill processes if their pages
672 * are in the swap cache early. Those are always late kills. 656 * are in the swap cache early. Those are always late kills.
@@ -738,6 +722,7 @@ static void hwpoison_user_mappings(struct page *p, unsigned long pfn,
738 722
739int __memory_failure(unsigned long pfn, int trapno, int ref) 723int __memory_failure(unsigned long pfn, int trapno, int ref)
740{ 724{
725 unsigned long lru_flag;
741 struct page_state *ps; 726 struct page_state *ps;
742 struct page *p; 727 struct page *p;
743 int res; 728 int res;
@@ -775,6 +760,24 @@ int __memory_failure(unsigned long pfn, int trapno, int ref)
775 } 760 }
776 761
777 /* 762 /*
763 * We ignore non-LRU pages for good reasons.
764 * - PG_locked is only well defined for LRU pages and a few others
765 * - to avoid races with __set_page_locked()
766 * - to avoid races with __SetPageSlab*() (and more non-atomic ops)
767 * The check (unnecessarily) ignores LRU pages being isolated and
768 * walked by the page reclaim code, however that's not a big loss.
769 */
770 if (!PageLRU(p))
771 lru_add_drain_all();
772 lru_flag = p->flags & lru;
773 if (isolate_lru_page(p)) {
774 action_result(pfn, "non LRU", IGNORED);
775 put_page(p);
776 return -EBUSY;
777 }
778 page_cache_release(p);
779
780 /*
778 * Lock the page and wait for writeback to finish. 781 * Lock the page and wait for writeback to finish.
779 * It's very difficult to mess with pages currently under IO 782 * It's very difficult to mess with pages currently under IO
780 * and in many cases impossible, so we just avoid it here. 783 * and in many cases impossible, so we just avoid it here.
@@ -790,7 +793,7 @@ int __memory_failure(unsigned long pfn, int trapno, int ref)
790 /* 793 /*
791 * Torn down by someone else? 794 * Torn down by someone else?
792 */ 795 */
793 if (PageLRU(p) && !PageSwapCache(p) && p->mapping == NULL) { 796 if ((lru_flag & lru) && !PageSwapCache(p) && p->mapping == NULL) {
794 action_result(pfn, "already truncated LRU", IGNORED); 797 action_result(pfn, "already truncated LRU", IGNORED);
795 res = 0; 798 res = 0;
796 goto out; 799 goto out;
@@ -798,7 +801,7 @@ int __memory_failure(unsigned long pfn, int trapno, int ref)
798 801
799 res = -EBUSY; 802 res = -EBUSY;
800 for (ps = error_states;; ps++) { 803 for (ps = error_states;; ps++) {
801 if ((p->flags & ps->mask) == ps->res) { 804 if (((p->flags | lru_flag)& ps->mask) == ps->res) {
802 res = page_action(ps, p, pfn, ref); 805 res = page_action(ps, p, pfn, ref);
803 break; 806 break;
804 } 807 }
diff --git a/mm/memory.c b/mm/memory.c
index 7e91b5f9f690..6ab19dd4a199 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -641,6 +641,7 @@ static int copy_pte_range(struct mm_struct *dst_mm, struct mm_struct *src_mm,
641 pmd_t *dst_pmd, pmd_t *src_pmd, struct vm_area_struct *vma, 641 pmd_t *dst_pmd, pmd_t *src_pmd, struct vm_area_struct *vma,
642 unsigned long addr, unsigned long end) 642 unsigned long addr, unsigned long end)
643{ 643{
644 pte_t *orig_src_pte, *orig_dst_pte;
644 pte_t *src_pte, *dst_pte; 645 pte_t *src_pte, *dst_pte;
645 spinlock_t *src_ptl, *dst_ptl; 646 spinlock_t *src_ptl, *dst_ptl;
646 int progress = 0; 647 int progress = 0;
@@ -654,6 +655,8 @@ again:
654 src_pte = pte_offset_map_nested(src_pmd, addr); 655 src_pte = pte_offset_map_nested(src_pmd, addr);
655 src_ptl = pte_lockptr(src_mm, src_pmd); 656 src_ptl = pte_lockptr(src_mm, src_pmd);
656 spin_lock_nested(src_ptl, SINGLE_DEPTH_NESTING); 657 spin_lock_nested(src_ptl, SINGLE_DEPTH_NESTING);
658 orig_src_pte = src_pte;
659 orig_dst_pte = dst_pte;
657 arch_enter_lazy_mmu_mode(); 660 arch_enter_lazy_mmu_mode();
658 661
659 do { 662 do {
@@ -677,9 +680,9 @@ again:
677 680
678 arch_leave_lazy_mmu_mode(); 681 arch_leave_lazy_mmu_mode();
679 spin_unlock(src_ptl); 682 spin_unlock(src_ptl);
680 pte_unmap_nested(src_pte - 1); 683 pte_unmap_nested(orig_src_pte);
681 add_mm_rss(dst_mm, rss[0], rss[1]); 684 add_mm_rss(dst_mm, rss[0], rss[1]);
682 pte_unmap_unlock(dst_pte - 1, dst_ptl); 685 pte_unmap_unlock(orig_dst_pte, dst_ptl);
683 cond_resched(); 686 cond_resched();
684 if (addr != end) 687 if (addr != end)
685 goto again; 688 goto again;
@@ -1820,10 +1823,10 @@ static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd,
1820 token = pmd_pgtable(*pmd); 1823 token = pmd_pgtable(*pmd);
1821 1824
1822 do { 1825 do {
1823 err = fn(pte, token, addr, data); 1826 err = fn(pte++, token, addr, data);
1824 if (err) 1827 if (err)
1825 break; 1828 break;
1826 } while (pte++, addr += PAGE_SIZE, addr != end); 1829 } while (addr += PAGE_SIZE, addr != end);
1827 1830
1828 arch_leave_lazy_mmu_mode(); 1831 arch_leave_lazy_mmu_mode();
1829 1832
@@ -2539,7 +2542,7 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
2539 } else if (PageHWPoison(page)) { 2542 } else if (PageHWPoison(page)) {
2540 ret = VM_FAULT_HWPOISON; 2543 ret = VM_FAULT_HWPOISON;
2541 delayacct_clear_flag(DELAYACCT_PF_SWAPIN); 2544 delayacct_clear_flag(DELAYACCT_PF_SWAPIN);
2542 goto out; 2545 goto out_release;
2543 } 2546 }
2544 2547
2545 lock_page(page); 2548 lock_page(page);
@@ -2611,6 +2614,7 @@ out_nomap:
2611 pte_unmap_unlock(page_table, ptl); 2614 pte_unmap_unlock(page_table, ptl);
2612out_page: 2615out_page:
2613 unlock_page(page); 2616 unlock_page(page);
2617out_release:
2614 page_cache_release(page); 2618 page_cache_release(page);
2615 return ret; 2619 return ret;
2616} 2620}
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 821dee596377..2047465cd27c 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -26,6 +26,7 @@
26#include <linux/migrate.h> 26#include <linux/migrate.h>
27#include <linux/page-isolation.h> 27#include <linux/page-isolation.h>
28#include <linux/pfn.h> 28#include <linux/pfn.h>
29#include <linux/suspend.h>
29 30
30#include <asm/tlbflush.h> 31#include <asm/tlbflush.h>
31 32
@@ -447,7 +448,8 @@ int online_pages(unsigned long pfn, unsigned long nr_pages)
447} 448}
448#endif /* CONFIG_MEMORY_HOTPLUG_SPARSE */ 449#endif /* CONFIG_MEMORY_HOTPLUG_SPARSE */
449 450
450static pg_data_t *hotadd_new_pgdat(int nid, u64 start) 451/* we are OK calling __meminit stuff here - we have CONFIG_MEMORY_HOTPLUG */
452static pg_data_t __ref *hotadd_new_pgdat(int nid, u64 start)
451{ 453{
452 struct pglist_data *pgdat; 454 struct pglist_data *pgdat;
453 unsigned long zones_size[MAX_NR_ZONES] = {0}; 455 unsigned long zones_size[MAX_NR_ZONES] = {0};
@@ -484,14 +486,18 @@ int __ref add_memory(int nid, u64 start, u64 size)
484 struct resource *res; 486 struct resource *res;
485 int ret; 487 int ret;
486 488
489 lock_system_sleep();
490
487 res = register_memory_resource(start, size); 491 res = register_memory_resource(start, size);
492 ret = -EEXIST;
488 if (!res) 493 if (!res)
489 return -EEXIST; 494 goto out;
490 495
491 if (!node_online(nid)) { 496 if (!node_online(nid)) {
492 pgdat = hotadd_new_pgdat(nid, start); 497 pgdat = hotadd_new_pgdat(nid, start);
498 ret = -ENOMEM;
493 if (!pgdat) 499 if (!pgdat)
494 return -ENOMEM; 500 goto out;
495 new_pgdat = 1; 501 new_pgdat = 1;
496 } 502 }
497 503
@@ -514,7 +520,8 @@ int __ref add_memory(int nid, u64 start, u64 size)
514 BUG_ON(ret); 520 BUG_ON(ret);
515 } 521 }
516 522
517 return ret; 523 goto out;
524
518error: 525error:
519 /* rollback pgdat allocation and others */ 526 /* rollback pgdat allocation and others */
520 if (new_pgdat) 527 if (new_pgdat)
@@ -522,6 +529,8 @@ error:
522 if (res) 529 if (res)
523 release_memory_resource(res); 530 release_memory_resource(res);
524 531
532out:
533 unlock_system_sleep();
525 return ret; 534 return ret;
526} 535}
527EXPORT_SYMBOL_GPL(add_memory); 536EXPORT_SYMBOL_GPL(add_memory);
@@ -758,6 +767,8 @@ int offline_pages(unsigned long start_pfn,
758 if (!test_pages_in_a_zone(start_pfn, end_pfn)) 767 if (!test_pages_in_a_zone(start_pfn, end_pfn))
759 return -EINVAL; 768 return -EINVAL;
760 769
770 lock_system_sleep();
771
761 zone = page_zone(pfn_to_page(start_pfn)); 772 zone = page_zone(pfn_to_page(start_pfn));
762 node = zone_to_nid(zone); 773 node = zone_to_nid(zone);
763 nr_pages = end_pfn - start_pfn; 774 nr_pages = end_pfn - start_pfn;
@@ -765,7 +776,7 @@ int offline_pages(unsigned long start_pfn,
765 /* set above range as isolated */ 776 /* set above range as isolated */
766 ret = start_isolate_page_range(start_pfn, end_pfn); 777 ret = start_isolate_page_range(start_pfn, end_pfn);
767 if (ret) 778 if (ret)
768 return ret; 779 goto out;
769 780
770 arg.start_pfn = start_pfn; 781 arg.start_pfn = start_pfn;
771 arg.nr_pages = nr_pages; 782 arg.nr_pages = nr_pages;
@@ -843,6 +854,7 @@ repeat:
843 writeback_set_ratelimit(); 854 writeback_set_ratelimit();
844 855
845 memory_notify(MEM_OFFLINE, &arg); 856 memory_notify(MEM_OFFLINE, &arg);
857 unlock_system_sleep();
846 return 0; 858 return 0;
847 859
848failed_removal: 860failed_removal:
@@ -852,6 +864,8 @@ failed_removal:
852 /* pushback to free area */ 864 /* pushback to free area */
853 undo_isolate_page_range(start_pfn, end_pfn); 865 undo_isolate_page_range(start_pfn, end_pfn);
854 866
867out:
868 unlock_system_sleep();
855 return ret; 869 return ret;
856} 870}
857 871
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index 7dd9d9f80694..4545d5944243 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -1024,7 +1024,7 @@ static long do_mbind(unsigned long start, unsigned long len,
1024 1024
1025 err = migrate_prep(); 1025 err = migrate_prep();
1026 if (err) 1026 if (err)
1027 return err; 1027 goto mpol_out;
1028 } 1028 }
1029 { 1029 {
1030 NODEMASK_SCRATCH(scratch); 1030 NODEMASK_SCRATCH(scratch);
@@ -1039,10 +1039,9 @@ static long do_mbind(unsigned long start, unsigned long len,
1039 err = -ENOMEM; 1039 err = -ENOMEM;
1040 NODEMASK_SCRATCH_FREE(scratch); 1040 NODEMASK_SCRATCH_FREE(scratch);
1041 } 1041 }
1042 if (err) { 1042 if (err)
1043 mpol_put(new); 1043 goto mpol_out;
1044 return err; 1044
1045 }
1046 vma = check_range(mm, start, end, nmask, 1045 vma = check_range(mm, start, end, nmask,
1047 flags | MPOL_MF_INVERT, &pagelist); 1046 flags | MPOL_MF_INVERT, &pagelist);
1048 1047
@@ -1058,9 +1057,11 @@ static long do_mbind(unsigned long start, unsigned long len,
1058 1057
1059 if (!err && nr_failed && (flags & MPOL_MF_STRICT)) 1058 if (!err && nr_failed && (flags & MPOL_MF_STRICT))
1060 err = -EIO; 1059 err = -EIO;
1061 } 1060 } else
1061 putback_lru_pages(&pagelist);
1062 1062
1063 up_write(&mm->mmap_sem); 1063 up_write(&mm->mmap_sem);
1064 mpol_out:
1064 mpol_put(new); 1065 mpol_put(new);
1065 return err; 1066 return err;
1066} 1067}
diff --git a/mm/migrate.c b/mm/migrate.c
index 1a4bf4813780..7dbcb22316d2 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -602,7 +602,7 @@ static int unmap_and_move(new_page_t get_new_page, unsigned long private,
602 struct page *newpage = get_new_page(page, private, &result); 602 struct page *newpage = get_new_page(page, private, &result);
603 int rcu_locked = 0; 603 int rcu_locked = 0;
604 int charge = 0; 604 int charge = 0;
605 struct mem_cgroup *mem; 605 struct mem_cgroup *mem = NULL;
606 606
607 if (!newpage) 607 if (!newpage)
608 return -ENOMEM; 608 return -ENOMEM;
diff --git a/mm/nommu.c b/mm/nommu.c
index 5189b5aed8c0..9876fa0c3ad3 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -1362,9 +1362,11 @@ share:
1362error_just_free: 1362error_just_free:
1363 up_write(&nommu_region_sem); 1363 up_write(&nommu_region_sem);
1364error: 1364error:
1365 fput(region->vm_file); 1365 if (region->vm_file)
1366 fput(region->vm_file);
1366 kmem_cache_free(vm_region_jar, region); 1367 kmem_cache_free(vm_region_jar, region);
1367 fput(vma->vm_file); 1368 if (vma->vm_file)
1369 fput(vma->vm_file);
1368 if (vma->vm_flags & VM_EXECUTABLE) 1370 if (vma->vm_flags & VM_EXECUTABLE)
1369 removed_exe_file_vma(vma->vm_mm); 1371 removed_exe_file_vma(vma->vm_mm);
1370 kmem_cache_free(vm_area_cachep, vma); 1372 kmem_cache_free(vm_area_cachep, vma);
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index bf720550b44d..2bc2ac63f41e 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1769,7 +1769,7 @@ gfp_to_alloc_flags(gfp_t gfp_mask)
1769 * See also cpuset_zone_allowed() comment in kernel/cpuset.c. 1769 * See also cpuset_zone_allowed() comment in kernel/cpuset.c.
1770 */ 1770 */
1771 alloc_flags &= ~ALLOC_CPUSET; 1771 alloc_flags &= ~ALLOC_CPUSET;
1772 } else if (unlikely(rt_task(p))) 1772 } else if (unlikely(rt_task(p)) && !in_interrupt())
1773 alloc_flags |= ALLOC_HARDER; 1773 alloc_flags |= ALLOC_HARDER;
1774 1774
1775 if (likely(!(gfp_mask & __GFP_NOMEMALLOC))) { 1775 if (likely(!(gfp_mask & __GFP_NOMEMALLOC))) {
@@ -1817,9 +1817,9 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
1817 if (NUMA_BUILD && (gfp_mask & GFP_THISNODE) == GFP_THISNODE) 1817 if (NUMA_BUILD && (gfp_mask & GFP_THISNODE) == GFP_THISNODE)
1818 goto nopage; 1818 goto nopage;
1819 1819
1820restart:
1820 wake_all_kswapd(order, zonelist, high_zoneidx); 1821 wake_all_kswapd(order, zonelist, high_zoneidx);
1821 1822
1822restart:
1823 /* 1823 /*
1824 * OK, we're below the kswapd watermark and have kicked background 1824 * OK, we're below the kswapd watermark and have kicked background
1825 * reclaim. Now things get more complex, so set up alloc_flags according 1825 * reclaim. Now things get more complex, so set up alloc_flags according
@@ -2183,7 +2183,7 @@ void show_free_areas(void)
2183 printk("active_anon:%lu inactive_anon:%lu isolated_anon:%lu\n" 2183 printk("active_anon:%lu inactive_anon:%lu isolated_anon:%lu\n"
2184 " active_file:%lu inactive_file:%lu isolated_file:%lu\n" 2184 " active_file:%lu inactive_file:%lu isolated_file:%lu\n"
2185 " unevictable:%lu" 2185 " unevictable:%lu"
2186 " dirty:%lu writeback:%lu unstable:%lu buffer:%lu\n" 2186 " dirty:%lu writeback:%lu unstable:%lu\n"
2187 " free:%lu slab_reclaimable:%lu slab_unreclaimable:%lu\n" 2187 " free:%lu slab_reclaimable:%lu slab_unreclaimable:%lu\n"
2188 " mapped:%lu shmem:%lu pagetables:%lu bounce:%lu\n", 2188 " mapped:%lu shmem:%lu pagetables:%lu bounce:%lu\n",
2189 global_page_state(NR_ACTIVE_ANON), 2189 global_page_state(NR_ACTIVE_ANON),
@@ -2196,7 +2196,6 @@ void show_free_areas(void)
2196 global_page_state(NR_FILE_DIRTY), 2196 global_page_state(NR_FILE_DIRTY),
2197 global_page_state(NR_WRITEBACK), 2197 global_page_state(NR_WRITEBACK),
2198 global_page_state(NR_UNSTABLE_NFS), 2198 global_page_state(NR_UNSTABLE_NFS),
2199 nr_blockdev_pages(),
2200 global_page_state(NR_FREE_PAGES), 2199 global_page_state(NR_FREE_PAGES),
2201 global_page_state(NR_SLAB_RECLAIMABLE), 2200 global_page_state(NR_SLAB_RECLAIMABLE),
2202 global_page_state(NR_SLAB_UNRECLAIMABLE), 2201 global_page_state(NR_SLAB_UNRECLAIMABLE),
diff --git a/mm/percpu.c b/mm/percpu.c
index 6af78c1ee704..5adfc268b408 100644
--- a/mm/percpu.c
+++ b/mm/percpu.c
@@ -153,7 +153,10 @@ static int pcpu_reserved_chunk_limit;
153 * 153 *
154 * During allocation, pcpu_alloc_mutex is kept locked all the time and 154 * During allocation, pcpu_alloc_mutex is kept locked all the time and
155 * pcpu_lock is grabbed and released as necessary. All actual memory 155 * pcpu_lock is grabbed and released as necessary. All actual memory
156 * allocations are done using GFP_KERNEL with pcpu_lock released. 156 * allocations are done using GFP_KERNEL with pcpu_lock released. In
157 * general, percpu memory can't be allocated with irq off but
158 * irqsave/restore are still used in alloc path so that it can be used
159 * from early init path - sched_init() specifically.
157 * 160 *
158 * Free path accesses and alters only the index data structures, so it 161 * Free path accesses and alters only the index data structures, so it
159 * can be safely called from atomic context. When memory needs to be 162 * can be safely called from atomic context. When memory needs to be
@@ -352,62 +355,86 @@ static struct pcpu_chunk *pcpu_chunk_addr_search(void *addr)
352} 355}
353 356
354/** 357/**
355 * pcpu_extend_area_map - extend area map for allocation 358 * pcpu_need_to_extend - determine whether chunk area map needs to be extended
356 * @chunk: target chunk 359 * @chunk: chunk of interest
357 * 360 *
358 * Extend area map of @chunk so that it can accomodate an allocation. 361 * Determine whether area map of @chunk needs to be extended to
359 * A single allocation can split an area into three areas, so this 362 * accomodate a new allocation.
360 * function makes sure that @chunk->map has at least two extra slots.
361 * 363 *
362 * CONTEXT: 364 * CONTEXT:
363 * pcpu_alloc_mutex, pcpu_lock. pcpu_lock is released and reacquired 365 * pcpu_lock.
364 * if area map is extended.
365 * 366 *
366 * RETURNS: 367 * RETURNS:
367 * 0 if noop, 1 if successfully extended, -errno on failure. 368 * New target map allocation length if extension is necessary, 0
369 * otherwise.
368 */ 370 */
369static int pcpu_extend_area_map(struct pcpu_chunk *chunk) 371static int pcpu_need_to_extend(struct pcpu_chunk *chunk)
370{ 372{
371 int new_alloc; 373 int new_alloc;
372 int *new;
373 size_t size;
374 374
375 /* has enough? */
376 if (chunk->map_alloc >= chunk->map_used + 2) 375 if (chunk->map_alloc >= chunk->map_used + 2)
377 return 0; 376 return 0;
378 377
379 spin_unlock_irq(&pcpu_lock);
380
381 new_alloc = PCPU_DFL_MAP_ALLOC; 378 new_alloc = PCPU_DFL_MAP_ALLOC;
382 while (new_alloc < chunk->map_used + 2) 379 while (new_alloc < chunk->map_used + 2)
383 new_alloc *= 2; 380 new_alloc *= 2;
384 381
385 new = pcpu_mem_alloc(new_alloc * sizeof(new[0])); 382 return new_alloc;
386 if (!new) { 383}
387 spin_lock_irq(&pcpu_lock); 384
385/**
386 * pcpu_extend_area_map - extend area map of a chunk
387 * @chunk: chunk of interest
388 * @new_alloc: new target allocation length of the area map
389 *
390 * Extend area map of @chunk to have @new_alloc entries.
391 *
392 * CONTEXT:
393 * Does GFP_KERNEL allocation. Grabs and releases pcpu_lock.
394 *
395 * RETURNS:
396 * 0 on success, -errno on failure.
397 */
398static int pcpu_extend_area_map(struct pcpu_chunk *chunk, int new_alloc)
399{
400 int *old = NULL, *new = NULL;
401 size_t old_size = 0, new_size = new_alloc * sizeof(new[0]);
402 unsigned long flags;
403
404 new = pcpu_mem_alloc(new_size);
405 if (!new)
388 return -ENOMEM; 406 return -ENOMEM;
389 }
390 407
391 /* 408 /* acquire pcpu_lock and switch to new area map */
392 * Acquire pcpu_lock and switch to new area map. Only free 409 spin_lock_irqsave(&pcpu_lock, flags);
393 * could have happened inbetween, so map_used couldn't have 410
394 * grown. 411 if (new_alloc <= chunk->map_alloc)
395 */ 412 goto out_unlock;
396 spin_lock_irq(&pcpu_lock);
397 BUG_ON(new_alloc < chunk->map_used + 2);
398 413
399 size = chunk->map_alloc * sizeof(chunk->map[0]); 414 old_size = chunk->map_alloc * sizeof(chunk->map[0]);
400 memcpy(new, chunk->map, size); 415 memcpy(new, chunk->map, old_size);
401 416
402 /* 417 /*
403 * map_alloc < PCPU_DFL_MAP_ALLOC indicates that the chunk is 418 * map_alloc < PCPU_DFL_MAP_ALLOC indicates that the chunk is
404 * one of the first chunks and still using static map. 419 * one of the first chunks and still using static map.
405 */ 420 */
406 if (chunk->map_alloc >= PCPU_DFL_MAP_ALLOC) 421 if (chunk->map_alloc >= PCPU_DFL_MAP_ALLOC)
407 pcpu_mem_free(chunk->map, size); 422 old = chunk->map;
408 423
409 chunk->map_alloc = new_alloc; 424 chunk->map_alloc = new_alloc;
410 chunk->map = new; 425 chunk->map = new;
426 new = NULL;
427
428out_unlock:
429 spin_unlock_irqrestore(&pcpu_lock, flags);
430
431 /*
432 * pcpu_mem_free() might end up calling vfree() which uses
433 * IRQ-unsafe lock and thus can't be called under pcpu_lock.
434 */
435 pcpu_mem_free(old, old_size);
436 pcpu_mem_free(new, new_size);
437
411 return 0; 438 return 0;
412} 439}
413 440
@@ -1046,7 +1073,8 @@ static void *pcpu_alloc(size_t size, size_t align, bool reserved)
1046 static int warn_limit = 10; 1073 static int warn_limit = 10;
1047 struct pcpu_chunk *chunk; 1074 struct pcpu_chunk *chunk;
1048 const char *err; 1075 const char *err;
1049 int slot, off; 1076 int slot, off, new_alloc;
1077 unsigned long flags;
1050 1078
1051 if (unlikely(!size || size > PCPU_MIN_UNIT_SIZE || align > PAGE_SIZE)) { 1079 if (unlikely(!size || size > PCPU_MIN_UNIT_SIZE || align > PAGE_SIZE)) {
1052 WARN(true, "illegal size (%zu) or align (%zu) for " 1080 WARN(true, "illegal size (%zu) or align (%zu) for "
@@ -1055,19 +1083,30 @@ static void *pcpu_alloc(size_t size, size_t align, bool reserved)
1055 } 1083 }
1056 1084
1057 mutex_lock(&pcpu_alloc_mutex); 1085 mutex_lock(&pcpu_alloc_mutex);
1058 spin_lock_irq(&pcpu_lock); 1086 spin_lock_irqsave(&pcpu_lock, flags);
1059 1087
1060 /* serve reserved allocations from the reserved chunk if available */ 1088 /* serve reserved allocations from the reserved chunk if available */
1061 if (reserved && pcpu_reserved_chunk) { 1089 if (reserved && pcpu_reserved_chunk) {
1062 chunk = pcpu_reserved_chunk; 1090 chunk = pcpu_reserved_chunk;
1063 if (size > chunk->contig_hint || 1091
1064 pcpu_extend_area_map(chunk) < 0) { 1092 if (size > chunk->contig_hint) {
1065 err = "failed to extend area map of reserved chunk"; 1093 err = "alloc from reserved chunk failed";
1066 goto fail_unlock; 1094 goto fail_unlock;
1067 } 1095 }
1096
1097 while ((new_alloc = pcpu_need_to_extend(chunk))) {
1098 spin_unlock_irqrestore(&pcpu_lock, flags);
1099 if (pcpu_extend_area_map(chunk, new_alloc) < 0) {
1100 err = "failed to extend area map of reserved chunk";
1101 goto fail_unlock_mutex;
1102 }
1103 spin_lock_irqsave(&pcpu_lock, flags);
1104 }
1105
1068 off = pcpu_alloc_area(chunk, size, align); 1106 off = pcpu_alloc_area(chunk, size, align);
1069 if (off >= 0) 1107 if (off >= 0)
1070 goto area_found; 1108 goto area_found;
1109
1071 err = "alloc from reserved chunk failed"; 1110 err = "alloc from reserved chunk failed";
1072 goto fail_unlock; 1111 goto fail_unlock;
1073 } 1112 }
@@ -1079,14 +1118,20 @@ restart:
1079 if (size > chunk->contig_hint) 1118 if (size > chunk->contig_hint)
1080 continue; 1119 continue;
1081 1120
1082 switch (pcpu_extend_area_map(chunk)) { 1121 new_alloc = pcpu_need_to_extend(chunk);
1083 case 0: 1122 if (new_alloc) {
1084 break; 1123 spin_unlock_irqrestore(&pcpu_lock, flags);
1085 case 1: 1124 if (pcpu_extend_area_map(chunk,
1086 goto restart; /* pcpu_lock dropped, restart */ 1125 new_alloc) < 0) {
1087 default: 1126 err = "failed to extend area map";
1088 err = "failed to extend area map"; 1127 goto fail_unlock_mutex;
1089 goto fail_unlock; 1128 }
1129 spin_lock_irqsave(&pcpu_lock, flags);
1130 /*
1131 * pcpu_lock has been dropped, need to
1132 * restart cpu_slot list walking.
1133 */
1134 goto restart;
1090 } 1135 }
1091 1136
1092 off = pcpu_alloc_area(chunk, size, align); 1137 off = pcpu_alloc_area(chunk, size, align);
@@ -1096,7 +1141,7 @@ restart:
1096 } 1141 }
1097 1142
1098 /* hmmm... no space left, create a new chunk */ 1143 /* hmmm... no space left, create a new chunk */
1099 spin_unlock_irq(&pcpu_lock); 1144 spin_unlock_irqrestore(&pcpu_lock, flags);
1100 1145
1101 chunk = alloc_pcpu_chunk(); 1146 chunk = alloc_pcpu_chunk();
1102 if (!chunk) { 1147 if (!chunk) {
@@ -1104,16 +1149,16 @@ restart:
1104 goto fail_unlock_mutex; 1149 goto fail_unlock_mutex;
1105 } 1150 }
1106 1151
1107 spin_lock_irq(&pcpu_lock); 1152 spin_lock_irqsave(&pcpu_lock, flags);
1108 pcpu_chunk_relocate(chunk, -1); 1153 pcpu_chunk_relocate(chunk, -1);
1109 goto restart; 1154 goto restart;
1110 1155
1111area_found: 1156area_found:
1112 spin_unlock_irq(&pcpu_lock); 1157 spin_unlock_irqrestore(&pcpu_lock, flags);
1113 1158
1114 /* populate, map and clear the area */ 1159 /* populate, map and clear the area */
1115 if (pcpu_populate_chunk(chunk, off, size)) { 1160 if (pcpu_populate_chunk(chunk, off, size)) {
1116 spin_lock_irq(&pcpu_lock); 1161 spin_lock_irqsave(&pcpu_lock, flags);
1117 pcpu_free_area(chunk, off); 1162 pcpu_free_area(chunk, off);
1118 err = "failed to populate"; 1163 err = "failed to populate";
1119 goto fail_unlock; 1164 goto fail_unlock;
@@ -1125,7 +1170,7 @@ area_found:
1125 return __addr_to_pcpu_ptr(chunk->base_addr + off); 1170 return __addr_to_pcpu_ptr(chunk->base_addr + off);
1126 1171
1127fail_unlock: 1172fail_unlock:
1128 spin_unlock_irq(&pcpu_lock); 1173 spin_unlock_irqrestore(&pcpu_lock, flags);
1129fail_unlock_mutex: 1174fail_unlock_mutex:
1130 mutex_unlock(&pcpu_alloc_mutex); 1175 mutex_unlock(&pcpu_alloc_mutex);
1131 if (warn_limit) { 1176 if (warn_limit) {
diff --git a/mm/swapfile.c b/mm/swapfile.c
index a1bc6b9af9a2..9c590eef7912 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -1151,8 +1151,7 @@ static int try_to_unuse(unsigned int type)
1151 } else 1151 } else
1152 retval = unuse_mm(mm, entry, page); 1152 retval = unuse_mm(mm, entry, page);
1153 1153
1154 if (set_start_mm && 1154 if (set_start_mm && *swap_map < swcount) {
1155 swap_count(*swap_map) < swcount) {
1156 mmput(new_start_mm); 1155 mmput(new_start_mm);
1157 atomic_inc(&mm->mm_users); 1156 atomic_inc(&mm->mm_users);
1158 new_start_mm = mm; 1157 new_start_mm = mm;
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 64e438898832..777af57fd8c8 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -544,6 +544,16 @@ redo:
544 */ 544 */
545 lru = LRU_UNEVICTABLE; 545 lru = LRU_UNEVICTABLE;
546 add_page_to_unevictable_list(page); 546 add_page_to_unevictable_list(page);
547 /*
548 * When racing with an mlock clearing (page is
549 * unlocked), make sure that if the other thread does
550 * not observe our setting of PG_lru and fails
551 * isolation, we see PG_mlocked cleared below and move
552 * the page back to the evictable list.
553 *
554 * The other side is TestClearPageMlocked().
555 */
556 smp_mb();
547 } 557 }
548 558
549 /* 559 /*
@@ -1088,7 +1098,7 @@ static unsigned long shrink_inactive_list(unsigned long max_scan,
1088 int lumpy_reclaim = 0; 1098 int lumpy_reclaim = 0;
1089 1099
1090 while (unlikely(too_many_isolated(zone, file, sc))) { 1100 while (unlikely(too_many_isolated(zone, file, sc))) {
1091 congestion_wait(WRITE, HZ/10); 1101 congestion_wait(BLK_RW_ASYNC, HZ/10);
1092 1102
1093 /* We are about to die and free our memory. Return now. */ 1103 /* We are about to die and free our memory. Return now. */
1094 if (fatal_signal_pending(current)) 1104 if (fatal_signal_pending(current))
@@ -1356,7 +1366,7 @@ static void shrink_active_list(unsigned long nr_pages, struct zone *zone,
1356 * IO, plus JVM can create lots of anon VM_EXEC pages, 1366 * IO, plus JVM can create lots of anon VM_EXEC pages,
1357 * so we ignore them here. 1367 * so we ignore them here.
1358 */ 1368 */
1359 if ((vm_flags & VM_EXEC) && !PageAnon(page)) { 1369 if ((vm_flags & VM_EXEC) && page_is_file_cache(page)) {
1360 list_add(&page->lru, &l_active); 1370 list_add(&page->lru, &l_active);
1361 continue; 1371 continue;
1362 } 1372 }
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
index 8836575f9d79..a29c5ab5815c 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -281,8 +281,11 @@ out_uninit_applicant:
281 if (ngrp) 281 if (ngrp)
282 vlan_gvrp_uninit_applicant(real_dev); 282 vlan_gvrp_uninit_applicant(real_dev);
283out_free_group: 283out_free_group:
284 if (ngrp) 284 if (ngrp) {
285 vlan_group_free(ngrp); 285 hlist_del_rcu(&ngrp->hlist);
286 /* Free the group, after all cpu's are done. */
287 call_rcu(&ngrp->rcu, vlan_rcu_free);
288 }
286 return err; 289 return err;
287} 290}
288 291
diff --git a/net/9p/client.c b/net/9p/client.c
index 5bf5f227dbe0..8af95b2dddd6 100644
--- a/net/9p/client.c
+++ b/net/9p/client.c
@@ -582,11 +582,9 @@ static struct p9_fid *p9_fid_create(struct p9_client *clnt)
582 582
583 memset(&fid->qid, 0, sizeof(struct p9_qid)); 583 memset(&fid->qid, 0, sizeof(struct p9_qid));
584 fid->mode = -1; 584 fid->mode = -1;
585 fid->rdir_fpos = 0;
586 fid->uid = current_fsuid(); 585 fid->uid = current_fsuid();
587 fid->clnt = clnt; 586 fid->clnt = clnt;
588 fid->aux = NULL; 587 fid->rdir = NULL;
589
590 spin_lock_irqsave(&clnt->lock, flags); 588 spin_lock_irqsave(&clnt->lock, flags);
591 list_add(&fid->flist, &clnt->fidlist); 589 list_add(&fid->flist, &clnt->fidlist);
592 spin_unlock_irqrestore(&clnt->lock, flags); 590 spin_unlock_irqrestore(&clnt->lock, flags);
@@ -609,6 +607,7 @@ static void p9_fid_destroy(struct p9_fid *fid)
609 spin_lock_irqsave(&clnt->lock, flags); 607 spin_lock_irqsave(&clnt->lock, flags);
610 list_del(&fid->flist); 608 list_del(&fid->flist);
611 spin_unlock_irqrestore(&clnt->lock, flags); 609 spin_unlock_irqrestore(&clnt->lock, flags);
610 kfree(fid->rdir);
612 kfree(fid); 611 kfree(fid);
613} 612}
614 613
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index a9750984f772..b7c4224f4e7d 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -211,6 +211,7 @@ struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst)
211 conn->type = type; 211 conn->type = type;
212 conn->mode = HCI_CM_ACTIVE; 212 conn->mode = HCI_CM_ACTIVE;
213 conn->state = BT_OPEN; 213 conn->state = BT_OPEN;
214 conn->auth_type = HCI_AT_GENERAL_BONDING;
214 215
215 conn->power_save = 1; 216 conn->power_save = 1;
216 conn->disc_timeout = HCI_DISCONN_TIMEOUT; 217 conn->disc_timeout = HCI_DISCONN_TIMEOUT;
diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c
index 77e9fb130adb..947f8bbb4bb3 100644
--- a/net/bluetooth/l2cap.c
+++ b/net/bluetooth/l2cap.c
@@ -2205,7 +2205,7 @@ static int l2cap_build_conf_req(struct sock *sk, void *data)
2205{ 2205{
2206 struct l2cap_pinfo *pi = l2cap_pi(sk); 2206 struct l2cap_pinfo *pi = l2cap_pi(sk);
2207 struct l2cap_conf_req *req = data; 2207 struct l2cap_conf_req *req = data;
2208 struct l2cap_conf_rfc rfc = { .mode = L2CAP_MODE_ERTM }; 2208 struct l2cap_conf_rfc rfc = { .mode = L2CAP_MODE_BASIC };
2209 void *ptr = req->data; 2209 void *ptr = req->data;
2210 2210
2211 BT_DBG("sk %p", sk); 2211 BT_DBG("sk %p", sk);
@@ -2394,6 +2394,10 @@ done:
2394 rfc.monitor_timeout = L2CAP_DEFAULT_MONITOR_TO; 2394 rfc.monitor_timeout = L2CAP_DEFAULT_MONITOR_TO;
2395 2395
2396 pi->conf_state |= L2CAP_CONF_MODE_DONE; 2396 pi->conf_state |= L2CAP_CONF_MODE_DONE;
2397
2398 l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC,
2399 sizeof(rfc), (unsigned long) &rfc);
2400
2397 break; 2401 break;
2398 2402
2399 case L2CAP_MODE_STREAMING: 2403 case L2CAP_MODE_STREAMING:
@@ -2401,6 +2405,10 @@ done:
2401 pi->max_pdu_size = rfc.max_pdu_size; 2405 pi->max_pdu_size = rfc.max_pdu_size;
2402 2406
2403 pi->conf_state |= L2CAP_CONF_MODE_DONE; 2407 pi->conf_state |= L2CAP_CONF_MODE_DONE;
2408
2409 l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC,
2410 sizeof(rfc), (unsigned long) &rfc);
2411
2404 break; 2412 break;
2405 2413
2406 default: 2414 default:
@@ -2410,9 +2418,6 @@ done:
2410 rfc.mode = pi->mode; 2418 rfc.mode = pi->mode;
2411 } 2419 }
2412 2420
2413 l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC,
2414 sizeof(rfc), (unsigned long) &rfc);
2415
2416 if (result == L2CAP_CONF_SUCCESS) 2421 if (result == L2CAP_CONF_SUCCESS)
2417 pi->conf_state |= L2CAP_CONF_OUTPUT_DONE; 2422 pi->conf_state |= L2CAP_CONF_OUTPUT_DONE;
2418 } 2423 }
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
index b1b3b0fbf41c..4a9f52732655 100644
--- a/net/bridge/br_if.c
+++ b/net/bridge/br_if.c
@@ -377,12 +377,16 @@ int br_add_if(struct net_bridge *br, struct net_device *dev)
377 struct net_bridge_port *p; 377 struct net_bridge_port *p;
378 int err = 0; 378 int err = 0;
379 379
380 if (dev->flags & IFF_LOOPBACK || dev->type != ARPHRD_ETHER) 380 /* Don't allow bridging non-ethernet like devices */
381 if ((dev->flags & IFF_LOOPBACK) ||
382 dev->type != ARPHRD_ETHER || dev->addr_len != ETH_ALEN)
381 return -EINVAL; 383 return -EINVAL;
382 384
385 /* No bridging of bridges */
383 if (dev->netdev_ops->ndo_start_xmit == br_dev_xmit) 386 if (dev->netdev_ops->ndo_start_xmit == br_dev_xmit)
384 return -ELOOP; 387 return -ELOOP;
385 388
389 /* Device is already being bridged */
386 if (dev->br_port != NULL) 390 if (dev->br_port != NULL)
387 return -EBUSY; 391 return -EBUSY;
388 392
diff --git a/net/can/bcm.c b/net/can/bcm.c
index 597da4f8f888..e8d58f33fe09 100644
--- a/net/can/bcm.c
+++ b/net/can/bcm.c
@@ -132,23 +132,27 @@ static inline struct bcm_sock *bcm_sk(const struct sock *sk)
132/* 132/*
133 * procfs functions 133 * procfs functions
134 */ 134 */
135static char *bcm_proc_getifname(int ifindex) 135static char *bcm_proc_getifname(char *result, int ifindex)
136{ 136{
137 struct net_device *dev; 137 struct net_device *dev;
138 138
139 if (!ifindex) 139 if (!ifindex)
140 return "any"; 140 return "any";
141 141
142 /* no usage counting */ 142 read_lock(&dev_base_lock);
143 dev = __dev_get_by_index(&init_net, ifindex); 143 dev = __dev_get_by_index(&init_net, ifindex);
144 if (dev) 144 if (dev)
145 return dev->name; 145 strcpy(result, dev->name);
146 else
147 strcpy(result, "???");
148 read_unlock(&dev_base_lock);
146 149
147 return "???"; 150 return result;
148} 151}
149 152
150static int bcm_proc_show(struct seq_file *m, void *v) 153static int bcm_proc_show(struct seq_file *m, void *v)
151{ 154{
155 char ifname[IFNAMSIZ];
152 struct sock *sk = (struct sock *)m->private; 156 struct sock *sk = (struct sock *)m->private;
153 struct bcm_sock *bo = bcm_sk(sk); 157 struct bcm_sock *bo = bcm_sk(sk);
154 struct bcm_op *op; 158 struct bcm_op *op;
@@ -157,7 +161,7 @@ static int bcm_proc_show(struct seq_file *m, void *v)
157 seq_printf(m, " / sk %p", sk); 161 seq_printf(m, " / sk %p", sk);
158 seq_printf(m, " / bo %p", bo); 162 seq_printf(m, " / bo %p", bo);
159 seq_printf(m, " / dropped %lu", bo->dropped_usr_msgs); 163 seq_printf(m, " / dropped %lu", bo->dropped_usr_msgs);
160 seq_printf(m, " / bound %s", bcm_proc_getifname(bo->ifindex)); 164 seq_printf(m, " / bound %s", bcm_proc_getifname(ifname, bo->ifindex));
161 seq_printf(m, " <<<\n"); 165 seq_printf(m, " <<<\n");
162 166
163 list_for_each_entry(op, &bo->rx_ops, list) { 167 list_for_each_entry(op, &bo->rx_ops, list) {
@@ -169,7 +173,7 @@ static int bcm_proc_show(struct seq_file *m, void *v)
169 continue; 173 continue;
170 174
171 seq_printf(m, "rx_op: %03X %-5s ", 175 seq_printf(m, "rx_op: %03X %-5s ",
172 op->can_id, bcm_proc_getifname(op->ifindex)); 176 op->can_id, bcm_proc_getifname(ifname, op->ifindex));
173 seq_printf(m, "[%d]%c ", op->nframes, 177 seq_printf(m, "[%d]%c ", op->nframes,
174 (op->flags & RX_CHECK_DLC)?'d':' '); 178 (op->flags & RX_CHECK_DLC)?'d':' ');
175 if (op->kt_ival1.tv64) 179 if (op->kt_ival1.tv64)
@@ -194,7 +198,8 @@ static int bcm_proc_show(struct seq_file *m, void *v)
194 list_for_each_entry(op, &bo->tx_ops, list) { 198 list_for_each_entry(op, &bo->tx_ops, list) {
195 199
196 seq_printf(m, "tx_op: %03X %s [%d] ", 200 seq_printf(m, "tx_op: %03X %s [%d] ",
197 op->can_id, bcm_proc_getifname(op->ifindex), 201 op->can_id,
202 bcm_proc_getifname(ifname, op->ifindex),
198 op->nframes); 203 op->nframes);
199 204
200 if (op->kt_ival1.tv64) 205 if (op->kt_ival1.tv64)
diff --git a/net/core/datagram.c b/net/core/datagram.c
index 1c6cf3a1a4f6..4ade3011bb3c 100644
--- a/net/core/datagram.c
+++ b/net/core/datagram.c
@@ -224,6 +224,15 @@ void skb_free_datagram(struct sock *sk, struct sk_buff *skb)
224 consume_skb(skb); 224 consume_skb(skb);
225 sk_mem_reclaim_partial(sk); 225 sk_mem_reclaim_partial(sk);
226} 226}
227EXPORT_SYMBOL(skb_free_datagram);
228
229void skb_free_datagram_locked(struct sock *sk, struct sk_buff *skb)
230{
231 lock_sock(sk);
232 skb_free_datagram(sk, skb);
233 release_sock(sk);
234}
235EXPORT_SYMBOL(skb_free_datagram_locked);
227 236
228/** 237/**
229 * skb_kill_datagram - Free a datagram skbuff forcibly 238 * skb_kill_datagram - Free a datagram skbuff forcibly
@@ -752,5 +761,4 @@ unsigned int datagram_poll(struct file *file, struct socket *sock,
752EXPORT_SYMBOL(datagram_poll); 761EXPORT_SYMBOL(datagram_poll);
753EXPORT_SYMBOL(skb_copy_and_csum_datagram_iovec); 762EXPORT_SYMBOL(skb_copy_and_csum_datagram_iovec);
754EXPORT_SYMBOL(skb_copy_datagram_iovec); 763EXPORT_SYMBOL(skb_copy_datagram_iovec);
755EXPORT_SYMBOL(skb_free_datagram);
756EXPORT_SYMBOL(skb_recv_datagram); 764EXPORT_SYMBOL(skb_recv_datagram);
diff --git a/net/core/dev.c b/net/core/dev.c
index b8f74cfb1bfd..fe10551d3671 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -942,14 +942,15 @@ rollback:
942 ret = notifier_to_errno(ret); 942 ret = notifier_to_errno(ret);
943 943
944 if (ret) { 944 if (ret) {
945 if (err) { 945 /* err >= 0 after dev_alloc_name() or stores the first errno */
946 printk(KERN_ERR 946 if (err >= 0) {
947 "%s: name change rollback failed: %d.\n",
948 dev->name, ret);
949 } else {
950 err = ret; 947 err = ret;
951 memcpy(dev->name, oldname, IFNAMSIZ); 948 memcpy(dev->name, oldname, IFNAMSIZ);
952 goto rollback; 949 goto rollback;
950 } else {
951 printk(KERN_ERR
952 "%s: name change rollback failed: %d.\n",
953 dev->name, ret);
953 } 954 }
954 } 955 }
955 956
diff --git a/net/core/pktgen.c b/net/core/pktgen.c
index 86acdba0a97d..6e79e96cb4f2 100644
--- a/net/core/pktgen.c
+++ b/net/core/pktgen.c
@@ -335,6 +335,7 @@ struct pktgen_dev {
335 __u32 cur_src_mac_offset; 335 __u32 cur_src_mac_offset;
336 __be32 cur_saddr; 336 __be32 cur_saddr;
337 __be32 cur_daddr; 337 __be32 cur_daddr;
338 __u16 ip_id;
338 __u16 cur_udp_dst; 339 __u16 cur_udp_dst;
339 __u16 cur_udp_src; 340 __u16 cur_udp_src;
340 __u16 cur_queue_map; 341 __u16 cur_queue_map;
@@ -362,6 +363,7 @@ struct pktgen_dev {
362 * device name (not when the inject is 363 * device name (not when the inject is
363 * started as it used to do.) 364 * started as it used to do.)
364 */ 365 */
366 char odevname[32];
365 struct flow_state *flows; 367 struct flow_state *flows;
366 unsigned cflows; /* Concurrent flows (config) */ 368 unsigned cflows; /* Concurrent flows (config) */
367 unsigned lflow; /* Flow length (config) */ 369 unsigned lflow; /* Flow length (config) */
@@ -425,7 +427,7 @@ static const char version[] =
425static int pktgen_remove_device(struct pktgen_thread *t, struct pktgen_dev *i); 427static int pktgen_remove_device(struct pktgen_thread *t, struct pktgen_dev *i);
426static int pktgen_add_device(struct pktgen_thread *t, const char *ifname); 428static int pktgen_add_device(struct pktgen_thread *t, const char *ifname);
427static struct pktgen_dev *pktgen_find_dev(struct pktgen_thread *t, 429static struct pktgen_dev *pktgen_find_dev(struct pktgen_thread *t,
428 const char *ifname); 430 const char *ifname, bool exact);
429static int pktgen_device_event(struct notifier_block *, unsigned long, void *); 431static int pktgen_device_event(struct notifier_block *, unsigned long, void *);
430static void pktgen_run_all_threads(void); 432static void pktgen_run_all_threads(void);
431static void pktgen_reset_all_threads(void); 433static void pktgen_reset_all_threads(void);
@@ -527,7 +529,7 @@ static int pktgen_if_show(struct seq_file *seq, void *v)
527 seq_printf(seq, 529 seq_printf(seq,
528 " frags: %d delay: %llu clone_skb: %d ifname: %s\n", 530 " frags: %d delay: %llu clone_skb: %d ifname: %s\n",
529 pkt_dev->nfrags, (unsigned long long) pkt_dev->delay, 531 pkt_dev->nfrags, (unsigned long long) pkt_dev->delay,
530 pkt_dev->clone_skb, pkt_dev->odev->name); 532 pkt_dev->clone_skb, pkt_dev->odevname);
531 533
532 seq_printf(seq, " flows: %u flowlen: %u\n", pkt_dev->cflows, 534 seq_printf(seq, " flows: %u flowlen: %u\n", pkt_dev->cflows,
533 pkt_dev->lflow); 535 pkt_dev->lflow);
@@ -1687,13 +1689,13 @@ static int pktgen_thread_show(struct seq_file *seq, void *v)
1687 if_lock(t); 1689 if_lock(t);
1688 list_for_each_entry(pkt_dev, &t->if_list, list) 1690 list_for_each_entry(pkt_dev, &t->if_list, list)
1689 if (pkt_dev->running) 1691 if (pkt_dev->running)
1690 seq_printf(seq, "%s ", pkt_dev->odev->name); 1692 seq_printf(seq, "%s ", pkt_dev->odevname);
1691 1693
1692 seq_printf(seq, "\nStopped: "); 1694 seq_printf(seq, "\nStopped: ");
1693 1695
1694 list_for_each_entry(pkt_dev, &t->if_list, list) 1696 list_for_each_entry(pkt_dev, &t->if_list, list)
1695 if (!pkt_dev->running) 1697 if (!pkt_dev->running)
1696 seq_printf(seq, "%s ", pkt_dev->odev->name); 1698 seq_printf(seq, "%s ", pkt_dev->odevname);
1697 1699
1698 if (t->result[0]) 1700 if (t->result[0])
1699 seq_printf(seq, "\nResult: %s\n", t->result); 1701 seq_printf(seq, "\nResult: %s\n", t->result);
@@ -1816,9 +1818,10 @@ static struct pktgen_dev *__pktgen_NN_threads(const char *ifname, int remove)
1816{ 1818{
1817 struct pktgen_thread *t; 1819 struct pktgen_thread *t;
1818 struct pktgen_dev *pkt_dev = NULL; 1820 struct pktgen_dev *pkt_dev = NULL;
1821 bool exact = (remove == FIND);
1819 1822
1820 list_for_each_entry(t, &pktgen_threads, th_list) { 1823 list_for_each_entry(t, &pktgen_threads, th_list) {
1821 pkt_dev = pktgen_find_dev(t, ifname); 1824 pkt_dev = pktgen_find_dev(t, ifname, exact);
1822 if (pkt_dev) { 1825 if (pkt_dev) {
1823 if (remove) { 1826 if (remove) {
1824 if_lock(t); 1827 if_lock(t);
@@ -1993,7 +1996,7 @@ static void pktgen_setup_inject(struct pktgen_dev *pkt_dev)
1993 "queue_map_min (zero-based) (%d) exceeds valid range " 1996 "queue_map_min (zero-based) (%d) exceeds valid range "
1994 "[0 - %d] for (%d) queues on %s, resetting\n", 1997 "[0 - %d] for (%d) queues on %s, resetting\n",
1995 pkt_dev->queue_map_min, (ntxq ?: 1) - 1, ntxq, 1998 pkt_dev->queue_map_min, (ntxq ?: 1) - 1, ntxq,
1996 pkt_dev->odev->name); 1999 pkt_dev->odevname);
1997 pkt_dev->queue_map_min = ntxq - 1; 2000 pkt_dev->queue_map_min = ntxq - 1;
1998 } 2001 }
1999 if (pkt_dev->queue_map_max >= ntxq) { 2002 if (pkt_dev->queue_map_max >= ntxq) {
@@ -2001,7 +2004,7 @@ static void pktgen_setup_inject(struct pktgen_dev *pkt_dev)
2001 "queue_map_max (zero-based) (%d) exceeds valid range " 2004 "queue_map_max (zero-based) (%d) exceeds valid range "
2002 "[0 - %d] for (%d) queues on %s, resetting\n", 2005 "[0 - %d] for (%d) queues on %s, resetting\n",
2003 pkt_dev->queue_map_max, (ntxq ?: 1) - 1, ntxq, 2006 pkt_dev->queue_map_max, (ntxq ?: 1) - 1, ntxq,
2004 pkt_dev->odev->name); 2007 pkt_dev->odevname);
2005 pkt_dev->queue_map_max = ntxq - 1; 2008 pkt_dev->queue_map_max = ntxq - 1;
2006 } 2009 }
2007 2010
@@ -2630,6 +2633,8 @@ static struct sk_buff *fill_packet_ipv4(struct net_device *odev,
2630 iph->protocol = IPPROTO_UDP; /* UDP */ 2633 iph->protocol = IPPROTO_UDP; /* UDP */
2631 iph->saddr = pkt_dev->cur_saddr; 2634 iph->saddr = pkt_dev->cur_saddr;
2632 iph->daddr = pkt_dev->cur_daddr; 2635 iph->daddr = pkt_dev->cur_daddr;
2636 iph->id = htons(pkt_dev->ip_id);
2637 pkt_dev->ip_id++;
2633 iph->frag_off = 0; 2638 iph->frag_off = 0;
2634 iplen = 20 + 8 + datalen; 2639 iplen = 20 + 8 + datalen;
2635 iph->tot_len = htons(iplen); 2640 iph->tot_len = htons(iplen);
@@ -2641,24 +2646,26 @@ static struct sk_buff *fill_packet_ipv4(struct net_device *odev,
2641 skb->dev = odev; 2646 skb->dev = odev;
2642 skb->pkt_type = PACKET_HOST; 2647 skb->pkt_type = PACKET_HOST;
2643 2648
2644 if (pkt_dev->nfrags <= 0) 2649 if (pkt_dev->nfrags <= 0) {
2645 pgh = (struct pktgen_hdr *)skb_put(skb, datalen); 2650 pgh = (struct pktgen_hdr *)skb_put(skb, datalen);
2646 else { 2651 memset(pgh + 1, 0, datalen - sizeof(struct pktgen_hdr));
2652 } else {
2647 int frags = pkt_dev->nfrags; 2653 int frags = pkt_dev->nfrags;
2648 int i; 2654 int i, len;
2649 2655
2650 pgh = (struct pktgen_hdr *)(((char *)(udph)) + 8); 2656 pgh = (struct pktgen_hdr *)(((char *)(udph)) + 8);
2651 2657
2652 if (frags > MAX_SKB_FRAGS) 2658 if (frags > MAX_SKB_FRAGS)
2653 frags = MAX_SKB_FRAGS; 2659 frags = MAX_SKB_FRAGS;
2654 if (datalen > frags * PAGE_SIZE) { 2660 if (datalen > frags * PAGE_SIZE) {
2655 skb_put(skb, datalen - frags * PAGE_SIZE); 2661 len = datalen - frags * PAGE_SIZE;
2662 memset(skb_put(skb, len), 0, len);
2656 datalen = frags * PAGE_SIZE; 2663 datalen = frags * PAGE_SIZE;
2657 } 2664 }
2658 2665
2659 i = 0; 2666 i = 0;
2660 while (datalen > 0) { 2667 while (datalen > 0) {
2661 struct page *page = alloc_pages(GFP_KERNEL, 0); 2668 struct page *page = alloc_pages(GFP_KERNEL | __GFP_ZERO, 0);
2662 skb_shinfo(skb)->frags[i].page = page; 2669 skb_shinfo(skb)->frags[i].page = page;
2663 skb_shinfo(skb)->frags[i].page_offset = 0; 2670 skb_shinfo(skb)->frags[i].page_offset = 0;
2664 skb_shinfo(skb)->frags[i].size = 2671 skb_shinfo(skb)->frags[i].size =
@@ -3257,7 +3264,7 @@ static int pktgen_stop_device(struct pktgen_dev *pkt_dev)
3257 3264
3258 if (!pkt_dev->running) { 3265 if (!pkt_dev->running) {
3259 printk(KERN_WARNING "pktgen: interface: %s is already " 3266 printk(KERN_WARNING "pktgen: interface: %s is already "
3260 "stopped\n", pkt_dev->odev->name); 3267 "stopped\n", pkt_dev->odevname);
3261 return -EINVAL; 3268 return -EINVAL;
3262 } 3269 }
3263 3270
@@ -3459,7 +3466,7 @@ static void pktgen_xmit(struct pktgen_dev *pkt_dev)
3459 default: /* Drivers are not supposed to return other values! */ 3466 default: /* Drivers are not supposed to return other values! */
3460 if (net_ratelimit()) 3467 if (net_ratelimit())
3461 pr_info("pktgen: %s xmit error: %d\n", 3468 pr_info("pktgen: %s xmit error: %d\n",
3462 odev->name, ret); 3469 pkt_dev->odevname, ret);
3463 pkt_dev->errors++; 3470 pkt_dev->errors++;
3464 /* fallthru */ 3471 /* fallthru */
3465 case NETDEV_TX_LOCKED: 3472 case NETDEV_TX_LOCKED:
@@ -3561,13 +3568,18 @@ static int pktgen_thread_worker(void *arg)
3561} 3568}
3562 3569
3563static struct pktgen_dev *pktgen_find_dev(struct pktgen_thread *t, 3570static struct pktgen_dev *pktgen_find_dev(struct pktgen_thread *t,
3564 const char *ifname) 3571 const char *ifname, bool exact)
3565{ 3572{
3566 struct pktgen_dev *p, *pkt_dev = NULL; 3573 struct pktgen_dev *p, *pkt_dev = NULL;
3567 if_lock(t); 3574 size_t len = strlen(ifname);
3568 3575
3576 if_lock(t);
3569 list_for_each_entry(p, &t->if_list, list) 3577 list_for_each_entry(p, &t->if_list, list)
3570 if (strncmp(p->odev->name, ifname, IFNAMSIZ) == 0) { 3578 if (strncmp(p->odevname, ifname, len) == 0) {
3579 if (p->odevname[len]) {
3580 if (exact || p->odevname[len] != '@')
3581 continue;
3582 }
3571 pkt_dev = p; 3583 pkt_dev = p;
3572 break; 3584 break;
3573 } 3585 }
@@ -3623,6 +3635,7 @@ static int pktgen_add_device(struct pktgen_thread *t, const char *ifname)
3623 if (!pkt_dev) 3635 if (!pkt_dev)
3624 return -ENOMEM; 3636 return -ENOMEM;
3625 3637
3638 strcpy(pkt_dev->odevname, ifname);
3626 pkt_dev->flows = vmalloc(MAX_CFLOWS * sizeof(struct flow_state)); 3639 pkt_dev->flows = vmalloc(MAX_CFLOWS * sizeof(struct flow_state));
3627 if (pkt_dev->flows == NULL) { 3640 if (pkt_dev->flows == NULL) {
3628 kfree(pkt_dev); 3641 kfree(pkt_dev);
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 80a96166df39..ec85681a7dd8 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -2701,7 +2701,8 @@ int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb)
2701 2701
2702 NAPI_GRO_CB(skb)->free = 1; 2702 NAPI_GRO_CB(skb)->free = 1;
2703 goto done; 2703 goto done;
2704 } 2704 } else if (skb_gro_len(p) != pinfo->gso_size)
2705 return -E2BIG;
2705 2706
2706 headroom = skb_headroom(p); 2707 headroom = skb_headroom(p);
2707 nskb = netdev_alloc_skb(p->dev, headroom + skb_gro_offset(p)); 2708 nskb = netdev_alloc_skb(p->dev, headroom + skb_gro_offset(p));
diff --git a/net/decnet/sysctl_net_decnet.c b/net/decnet/sysctl_net_decnet.c
index 26b0ab1e9f56..2036568beea9 100644
--- a/net/decnet/sysctl_net_decnet.c
+++ b/net/decnet/sysctl_net_decnet.c
@@ -263,11 +263,10 @@ static int dn_def_dev_strategy(ctl_table *table,
263 return -ENODEV; 263 return -ENODEV;
264 264
265 rv = -ENODEV; 265 rv = -ENODEV;
266 if (dev->dn_ptr != NULL) { 266 if (dev->dn_ptr != NULL)
267 rv = dn_dev_set_default(dev, 1); 267 rv = dn_dev_set_default(dev, 1);
268 if (rv) 268 if (rv)
269 dev_put(dev); 269 dev_put(dev);
270 }
271 } 270 }
272 271
273 return rv; 272 return rv;
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
index e2f950592566..aa00398be80e 100644
--- a/net/ipv4/fib_frontend.c
+++ b/net/ipv4/fib_frontend.c
@@ -229,14 +229,17 @@ unsigned int inet_dev_addr_type(struct net *net, const struct net_device *dev,
229 */ 229 */
230 230
231int fib_validate_source(__be32 src, __be32 dst, u8 tos, int oif, 231int fib_validate_source(__be32 src, __be32 dst, u8 tos, int oif,
232 struct net_device *dev, __be32 *spec_dst, u32 *itag) 232 struct net_device *dev, __be32 *spec_dst,
233 u32 *itag, u32 mark)
233{ 234{
234 struct in_device *in_dev; 235 struct in_device *in_dev;
235 struct flowi fl = { .nl_u = { .ip4_u = 236 struct flowi fl = { .nl_u = { .ip4_u =
236 { .daddr = src, 237 { .daddr = src,
237 .saddr = dst, 238 .saddr = dst,
238 .tos = tos } }, 239 .tos = tos } },
240 .mark = mark,
239 .iif = oif }; 241 .iif = oif };
242
240 struct fib_result res; 243 struct fib_result res;
241 int no_addr, rpf; 244 int no_addr, rpf;
242 int ret; 245 int ret;
diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c
index 575f9bd51ccd..d3fe10be7219 100644
--- a/net/ipv4/ip_fragment.c
+++ b/net/ipv4/ip_fragment.c
@@ -563,7 +563,7 @@ out_oversize:
563 printk(KERN_INFO "Oversized IP packet from %pI4.\n", 563 printk(KERN_INFO "Oversized IP packet from %pI4.\n",
564 &qp->saddr); 564 &qp->saddr);
565out_fail: 565out_fail:
566 IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_REASMFAILS); 566 IP_INC_STATS_BH(net, IPSTATS_MIB_REASMFAILS);
567 return err; 567 return err;
568} 568}
569 569
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
index 41ada9904d31..143333852624 100644
--- a/net/ipv4/ip_gre.c
+++ b/net/ipv4/ip_gre.c
@@ -1464,7 +1464,7 @@ static void ipgre_tap_setup(struct net_device *dev)
1464 1464
1465 ether_setup(dev); 1465 ether_setup(dev);
1466 1466
1467 dev->netdev_ops = &ipgre_netdev_ops; 1467 dev->netdev_ops = &ipgre_tap_netdev_ops;
1468 dev->destructor = free_netdev; 1468 dev->destructor = free_netdev;
1469 1469
1470 dev->iflink = 0; 1470 dev->iflink = 0;
@@ -1525,25 +1525,29 @@ static int ipgre_changelink(struct net_device *dev, struct nlattr *tb[],
1525 if (t->dev != dev) 1525 if (t->dev != dev)
1526 return -EEXIST; 1526 return -EEXIST;
1527 } else { 1527 } else {
1528 unsigned nflags = 0;
1529
1530 t = nt; 1528 t = nt;
1531 1529
1532 if (ipv4_is_multicast(p.iph.daddr)) 1530 if (dev->type != ARPHRD_ETHER) {
1533 nflags = IFF_BROADCAST; 1531 unsigned nflags = 0;
1534 else if (p.iph.daddr)
1535 nflags = IFF_POINTOPOINT;
1536 1532
1537 if ((dev->flags ^ nflags) & 1533 if (ipv4_is_multicast(p.iph.daddr))
1538 (IFF_POINTOPOINT | IFF_BROADCAST)) 1534 nflags = IFF_BROADCAST;
1539 return -EINVAL; 1535 else if (p.iph.daddr)
1536 nflags = IFF_POINTOPOINT;
1537
1538 if ((dev->flags ^ nflags) &
1539 (IFF_POINTOPOINT | IFF_BROADCAST))
1540 return -EINVAL;
1541 }
1540 1542
1541 ipgre_tunnel_unlink(ign, t); 1543 ipgre_tunnel_unlink(ign, t);
1542 t->parms.iph.saddr = p.iph.saddr; 1544 t->parms.iph.saddr = p.iph.saddr;
1543 t->parms.iph.daddr = p.iph.daddr; 1545 t->parms.iph.daddr = p.iph.daddr;
1544 t->parms.i_key = p.i_key; 1546 t->parms.i_key = p.i_key;
1545 memcpy(dev->dev_addr, &p.iph.saddr, 4); 1547 if (dev->type != ARPHRD_ETHER) {
1546 memcpy(dev->broadcast, &p.iph.daddr, 4); 1548 memcpy(dev->dev_addr, &p.iph.saddr, 4);
1549 memcpy(dev->broadcast, &p.iph.daddr, 4);
1550 }
1547 ipgre_tunnel_link(ign, t); 1551 ipgre_tunnel_link(ign, t);
1548 netdev_state_change(dev); 1552 netdev_state_change(dev);
1549 } 1553 }
diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c
index 08ccd344de7a..ae40ed1ba560 100644
--- a/net/ipv4/ipip.c
+++ b/net/ipv4/ipip.c
@@ -438,25 +438,27 @@ static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev)
438 goto tx_error; 438 goto tx_error;
439 } 439 }
440 440
441 if (tiph->frag_off) 441 df |= old_iph->frag_off & htons(IP_DF);
442
443 if (df) {
442 mtu = dst_mtu(&rt->u.dst) - sizeof(struct iphdr); 444 mtu = dst_mtu(&rt->u.dst) - sizeof(struct iphdr);
443 else
444 mtu = skb_dst(skb) ? dst_mtu(skb_dst(skb)) : dev->mtu;
445 445
446 if (mtu < 68) { 446 if (mtu < 68) {
447 stats->collisions++; 447 stats->collisions++;
448 ip_rt_put(rt); 448 ip_rt_put(rt);
449 goto tx_error; 449 goto tx_error;
450 } 450 }
451 if (skb_dst(skb))
452 skb_dst(skb)->ops->update_pmtu(skb_dst(skb), mtu);
453 451
454 df |= (old_iph->frag_off&htons(IP_DF)); 452 if (skb_dst(skb))
453 skb_dst(skb)->ops->update_pmtu(skb_dst(skb), mtu);
455 454
456 if ((old_iph->frag_off&htons(IP_DF)) && mtu < ntohs(old_iph->tot_len)) { 455 if ((old_iph->frag_off & htons(IP_DF)) &&
457 icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, htonl(mtu)); 456 mtu < ntohs(old_iph->tot_len)) {
458 ip_rt_put(rt); 457 icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED,
459 goto tx_error; 458 htonl(mtu));
459 ip_rt_put(rt);
460 goto tx_error;
461 }
460 } 462 }
461 463
462 if (tunnel->err_count > 0) { 464 if (tunnel->err_count > 0) {
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c
index 630a56df7b47..99508d66a642 100644
--- a/net/ipv4/ipmr.c
+++ b/net/ipv4/ipmr.c
@@ -483,8 +483,10 @@ static int vif_add(struct net *net, struct vifctl *vifc, int mrtsock)
483 return -EINVAL; 483 return -EINVAL;
484 } 484 }
485 485
486 if ((in_dev = __in_dev_get_rtnl(dev)) == NULL) 486 if ((in_dev = __in_dev_get_rtnl(dev)) == NULL) {
487 dev_put(dev);
487 return -EADDRNOTAVAIL; 488 return -EADDRNOTAVAIL;
489 }
488 IPV4_DEVCONF(in_dev->cnf, MC_FORWARDING)++; 490 IPV4_DEVCONF(in_dev->cnf, MC_FORWARDING)++;
489 ip_rt_multicast_event(in_dev); 491 ip_rt_multicast_event(in_dev);
490 492
diff --git a/net/ipv4/netfilter/nf_nat_core.c b/net/ipv4/netfilter/nf_nat_core.c
index 68afc6ecd343..fe1a64479dd0 100644
--- a/net/ipv4/netfilter/nf_nat_core.c
+++ b/net/ipv4/netfilter/nf_nat_core.c
@@ -750,6 +750,8 @@ static int __init nf_nat_init(void)
750 BUG_ON(nfnetlink_parse_nat_setup_hook != NULL); 750 BUG_ON(nfnetlink_parse_nat_setup_hook != NULL);
751 rcu_assign_pointer(nfnetlink_parse_nat_setup_hook, 751 rcu_assign_pointer(nfnetlink_parse_nat_setup_hook,
752 nfnetlink_parse_nat_setup); 752 nfnetlink_parse_nat_setup);
753 BUG_ON(nf_ct_nat_offset != NULL);
754 rcu_assign_pointer(nf_ct_nat_offset, nf_nat_get_offset);
753 return 0; 755 return 0;
754 756
755 cleanup_extend: 757 cleanup_extend:
@@ -764,6 +766,7 @@ static void __exit nf_nat_cleanup(void)
764 nf_ct_extend_unregister(&nat_extend); 766 nf_ct_extend_unregister(&nat_extend);
765 rcu_assign_pointer(nf_nat_seq_adjust_hook, NULL); 767 rcu_assign_pointer(nf_nat_seq_adjust_hook, NULL);
766 rcu_assign_pointer(nfnetlink_parse_nat_setup_hook, NULL); 768 rcu_assign_pointer(nfnetlink_parse_nat_setup_hook, NULL);
769 rcu_assign_pointer(nf_ct_nat_offset, NULL);
767 synchronize_net(); 770 synchronize_net();
768} 771}
769 772
diff --git a/net/ipv4/netfilter/nf_nat_helper.c b/net/ipv4/netfilter/nf_nat_helper.c
index 09172a65d9b6..f9520fa3aba9 100644
--- a/net/ipv4/netfilter/nf_nat_helper.c
+++ b/net/ipv4/netfilter/nf_nat_helper.c
@@ -73,6 +73,28 @@ adjust_tcp_sequence(u32 seq,
73 DUMP_OFFSET(this_way); 73 DUMP_OFFSET(this_way);
74} 74}
75 75
76/* Get the offset value, for conntrack */
77s16 nf_nat_get_offset(const struct nf_conn *ct,
78 enum ip_conntrack_dir dir,
79 u32 seq)
80{
81 struct nf_conn_nat *nat = nfct_nat(ct);
82 struct nf_nat_seq *this_way;
83 s16 offset;
84
85 if (!nat)
86 return 0;
87
88 this_way = &nat->seq[dir];
89 spin_lock_bh(&nf_nat_seqofs_lock);
90 offset = after(seq, this_way->correction_pos)
91 ? this_way->offset_after : this_way->offset_before;
92 spin_unlock_bh(&nf_nat_seqofs_lock);
93
94 return offset;
95}
96EXPORT_SYMBOL_GPL(nf_nat_get_offset);
97
76/* Frobs data inside this packet, which is linear. */ 98/* Frobs data inside this packet, which is linear. */
77static void mangle_contents(struct sk_buff *skb, 99static void mangle_contents(struct sk_buff *skb,
78 unsigned int dataoff, 100 unsigned int dataoff,
@@ -189,11 +211,6 @@ nf_nat_mangle_tcp_packet(struct sk_buff *skb,
189 adjust_tcp_sequence(ntohl(tcph->seq), 211 adjust_tcp_sequence(ntohl(tcph->seq),
190 (int)rep_len - (int)match_len, 212 (int)rep_len - (int)match_len,
191 ct, ctinfo); 213 ct, ctinfo);
192 /* Tell TCP window tracking about seq change */
193 nf_conntrack_tcp_update(skb, ip_hdrlen(skb),
194 ct, CTINFO2DIR(ctinfo),
195 (int)rep_len - (int)match_len);
196
197 nf_conntrack_event_cache(IPCT_NATSEQADJ, ct); 214 nf_conntrack_event_cache(IPCT_NATSEQADJ, ct);
198 } 215 }
199 return 1; 216 return 1;
@@ -415,12 +432,7 @@ nf_nat_seq_adjust(struct sk_buff *skb,
415 tcph->seq = newseq; 432 tcph->seq = newseq;
416 tcph->ack_seq = newack; 433 tcph->ack_seq = newack;
417 434
418 if (!nf_nat_sack_adjust(skb, tcph, ct, ctinfo)) 435 return nf_nat_sack_adjust(skb, tcph, ct, ctinfo);
419 return 0;
420
421 nf_conntrack_tcp_update(skb, ip_hdrlen(skb), ct, dir, seqoff);
422
423 return 1;
424} 436}
425 437
426/* Setup NAT on this expected conntrack so it follows master. */ 438/* Setup NAT on this expected conntrack so it follows master. */
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
index 757c9171e7c2..ab996f9c0fe0 100644
--- a/net/ipv4/raw.c
+++ b/net/ipv4/raw.c
@@ -352,13 +352,24 @@ static int raw_send_hdrinc(struct sock *sk, void *from, size_t length,
352 skb->ip_summed = CHECKSUM_NONE; 352 skb->ip_summed = CHECKSUM_NONE;
353 353
354 skb->transport_header = skb->network_header; 354 skb->transport_header = skb->network_header;
355 err = memcpy_fromiovecend((void *)iph, from, 0, length); 355 err = -EFAULT;
356 if (err) 356 if (memcpy_fromiovecend((void *)iph, from, 0, length))
357 goto error_fault; 357 goto error_free;
358 358
359 /* We don't modify invalid header */
360 iphlen = iph->ihl * 4; 359 iphlen = iph->ihl * 4;
361 if (iphlen >= sizeof(*iph) && iphlen <= length) { 360
361 /*
362 * We don't want to modify the ip header, but we do need to
363 * be sure that it won't cause problems later along the network
364 * stack. Specifically we want to make sure that iph->ihl is a
365 * sane value. If ihl points beyond the length of the buffer passed
366 * in, reject the frame as invalid
367 */
368 err = -EINVAL;
369 if (iphlen > length)
370 goto error_free;
371
372 if (iphlen >= sizeof(*iph)) {
362 if (!iph->saddr) 373 if (!iph->saddr)
363 iph->saddr = rt->rt_src; 374 iph->saddr = rt->rt_src;
364 iph->check = 0; 375 iph->check = 0;
@@ -381,8 +392,7 @@ static int raw_send_hdrinc(struct sock *sk, void *from, size_t length,
381out: 392out:
382 return 0; 393 return 0;
383 394
384error_fault: 395error_free:
385 err = -EFAULT;
386 kfree_skb(skb); 396 kfree_skb(skb);
387error: 397error:
388 IP_INC_STATS(net, IPSTATS_MIB_OUTDISCARDS); 398 IP_INC_STATS(net, IPSTATS_MIB_OUTDISCARDS);
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index bb4199252026..5b1050a5d874 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -1854,7 +1854,7 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr,
1854 goto e_inval; 1854 goto e_inval;
1855 spec_dst = inet_select_addr(dev, 0, RT_SCOPE_LINK); 1855 spec_dst = inet_select_addr(dev, 0, RT_SCOPE_LINK);
1856 } else if (fib_validate_source(saddr, 0, tos, 0, 1856 } else if (fib_validate_source(saddr, 0, tos, 0,
1857 dev, &spec_dst, &itag) < 0) 1857 dev, &spec_dst, &itag, 0) < 0)
1858 goto e_inval; 1858 goto e_inval;
1859 1859
1860 rth = dst_alloc(&ipv4_dst_ops); 1860 rth = dst_alloc(&ipv4_dst_ops);
@@ -1967,7 +1967,7 @@ static int __mkroute_input(struct sk_buff *skb,
1967 1967
1968 1968
1969 err = fib_validate_source(saddr, daddr, tos, FIB_RES_OIF(*res), 1969 err = fib_validate_source(saddr, daddr, tos, FIB_RES_OIF(*res),
1970 in_dev->dev, &spec_dst, &itag); 1970 in_dev->dev, &spec_dst, &itag, skb->mark);
1971 if (err < 0) { 1971 if (err < 0) {
1972 ip_handle_martian_source(in_dev->dev, in_dev, skb, daddr, 1972 ip_handle_martian_source(in_dev->dev, in_dev, skb, daddr,
1973 saddr); 1973 saddr);
@@ -2141,7 +2141,7 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
2141 int result; 2141 int result;
2142 result = fib_validate_source(saddr, daddr, tos, 2142 result = fib_validate_source(saddr, daddr, tos,
2143 net->loopback_dev->ifindex, 2143 net->loopback_dev->ifindex,
2144 dev, &spec_dst, &itag); 2144 dev, &spec_dst, &itag, skb->mark);
2145 if (result < 0) 2145 if (result < 0)
2146 goto martian_source; 2146 goto martian_source;
2147 if (result) 2147 if (result)
@@ -2170,7 +2170,7 @@ brd_input:
2170 spec_dst = inet_select_addr(dev, 0, RT_SCOPE_LINK); 2170 spec_dst = inet_select_addr(dev, 0, RT_SCOPE_LINK);
2171 else { 2171 else {
2172 err = fib_validate_source(saddr, 0, tos, 0, dev, &spec_dst, 2172 err = fib_validate_source(saddr, 0, tos, 0, dev, &spec_dst,
2173 &itag); 2173 &itag, skb->mark);
2174 if (err < 0) 2174 if (err < 0)
2175 goto martian_source; 2175 goto martian_source;
2176 if (err) 2176 if (err)
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 90b2e0649bfb..f1813bc71088 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -1183,7 +1183,9 @@ void tcp_cleanup_rbuf(struct sock *sk, int copied)
1183#if TCP_DEBUG 1183#if TCP_DEBUG
1184 struct sk_buff *skb = skb_peek(&sk->sk_receive_queue); 1184 struct sk_buff *skb = skb_peek(&sk->sk_receive_queue);
1185 1185
1186 WARN_ON(skb && !before(tp->copied_seq, TCP_SKB_CB(skb)->end_seq)); 1186 WARN(skb && !before(tp->copied_seq, TCP_SKB_CB(skb)->end_seq),
1187 KERN_INFO "cleanup rbuf bug: copied %X seq %X rcvnxt %X\n",
1188 tp->copied_seq, TCP_SKB_CB(skb)->end_seq, tp->rcv_nxt);
1187#endif 1189#endif
1188 1190
1189 if (inet_csk_ack_scheduled(sk)) { 1191 if (inet_csk_ack_scheduled(sk)) {
@@ -1430,11 +1432,13 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
1430 /* Now that we have two receive queues this 1432 /* Now that we have two receive queues this
1431 * shouldn't happen. 1433 * shouldn't happen.
1432 */ 1434 */
1433 if (before(*seq, TCP_SKB_CB(skb)->seq)) { 1435 if (WARN(before(*seq, TCP_SKB_CB(skb)->seq),
1434 printk(KERN_INFO "recvmsg bug: copied %X " 1436 KERN_INFO "recvmsg bug: copied %X "
1435 "seq %X\n", *seq, TCP_SKB_CB(skb)->seq); 1437 "seq %X rcvnxt %X fl %X\n", *seq,
1438 TCP_SKB_CB(skb)->seq, tp->rcv_nxt,
1439 flags))
1436 break; 1440 break;
1437 } 1441
1438 offset = *seq - TCP_SKB_CB(skb)->seq; 1442 offset = *seq - TCP_SKB_CB(skb)->seq;
1439 if (tcp_hdr(skb)->syn) 1443 if (tcp_hdr(skb)->syn)
1440 offset--; 1444 offset--;
@@ -1442,9 +1446,10 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
1442 goto found_ok_skb; 1446 goto found_ok_skb;
1443 if (tcp_hdr(skb)->fin) 1447 if (tcp_hdr(skb)->fin)
1444 goto found_fin_ok; 1448 goto found_fin_ok;
1445 if (WARN_ON(!(flags & MSG_PEEK))) 1449 WARN(!(flags & MSG_PEEK), KERN_INFO "recvmsg bug 2: "
1446 printk(KERN_INFO "recvmsg bug 2: copied %X " 1450 "copied %X seq %X rcvnxt %X fl %X\n",
1447 "seq %X\n", *seq, TCP_SKB_CB(skb)->seq); 1451 *seq, TCP_SKB_CB(skb)->seq,
1452 tp->rcv_nxt, flags);
1448 } 1453 }
1449 1454
1450 /* Well, if we have backlog, try to process it now yet. */ 1455 /* Well, if we have backlog, try to process it now yet. */
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index d0d436d6216c..0fa9f70e4b19 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -999,9 +999,7 @@ try_again:
999 err = ulen; 999 err = ulen;
1000 1000
1001out_free: 1001out_free:
1002 lock_sock(sk); 1002 skb_free_datagram_locked(sk, skb);
1003 skb_free_datagram(sk, skb);
1004 release_sock(sk);
1005out: 1003out:
1006 return err; 1004 return err;
1007 1005
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index 3a60f12b34ed..cf538ed5ef6a 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -288,9 +288,7 @@ try_again:
288 err = ulen; 288 err = ulen;
289 289
290out_free: 290out_free:
291 lock_sock(sk); 291 skb_free_datagram_locked(sk, skb);
292 skb_free_datagram(sk, skb);
293 release_sock(sk);
294out: 292out:
295 return err; 293 return err;
296 294
diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c
index bc064d7933ff..ce8e0e772bab 100644
--- a/net/mac80211/agg-rx.c
+++ b/net/mac80211/agg-rx.c
@@ -85,10 +85,6 @@ void ieee80211_sta_stop_rx_ba_session(struct ieee80211_sub_if_data *sdata, u8 *r
85 struct ieee80211_local *local = sdata->local; 85 struct ieee80211_local *local = sdata->local;
86 struct sta_info *sta; 86 struct sta_info *sta;
87 87
88 /* stop HW Rx aggregation. ampdu_action existence
89 * already verified in session init so we add the BUG_ON */
90 BUG_ON(!local->ops->ampdu_action);
91
92 rcu_read_lock(); 88 rcu_read_lock();
93 89
94 sta = sta_info_get(local, ra); 90 sta = sta_info_get(local, ra);
diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c
index bd765f30dba2..89e238b001de 100644
--- a/net/mac80211/agg-tx.c
+++ b/net/mac80211/agg-tx.c
@@ -123,13 +123,18 @@ void ieee80211_send_bar(struct ieee80211_sub_if_data *sdata, u8 *ra, u16 tid, u1
123 ieee80211_tx_skb(sdata, skb, 0); 123 ieee80211_tx_skb(sdata, skb, 0);
124} 124}
125 125
126static int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid, 126int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
127 enum ieee80211_back_parties initiator) 127 enum ieee80211_back_parties initiator)
128{ 128{
129 struct ieee80211_local *local = sta->local; 129 struct ieee80211_local *local = sta->local;
130 int ret; 130 int ret;
131 u8 *state; 131 u8 *state;
132 132
133#ifdef CONFIG_MAC80211_HT_DEBUG
134 printk(KERN_DEBUG "Tx BA session stop requested for %pM tid %u\n",
135 sta->sta.addr, tid);
136#endif /* CONFIG_MAC80211_HT_DEBUG */
137
133 state = &sta->ampdu_mlme.tid_state_tx[tid]; 138 state = &sta->ampdu_mlme.tid_state_tx[tid];
134 139
135 if (*state == HT_AGG_STATE_OPERATIONAL) 140 if (*state == HT_AGG_STATE_OPERATIONAL)
@@ -143,7 +148,6 @@ static int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
143 148
144 /* HW shall not deny going back to legacy */ 149 /* HW shall not deny going back to legacy */
145 if (WARN_ON(ret)) { 150 if (WARN_ON(ret)) {
146 *state = HT_AGG_STATE_OPERATIONAL;
147 /* 151 /*
148 * We may have pending packets get stuck in this case... 152 * We may have pending packets get stuck in this case...
149 * Not bothering with a workaround for now. 153 * Not bothering with a workaround for now.
@@ -173,12 +177,14 @@ static void sta_addba_resp_timer_expired(unsigned long data)
173 177
174 /* check if the TID waits for addBA response */ 178 /* check if the TID waits for addBA response */
175 spin_lock_bh(&sta->lock); 179 spin_lock_bh(&sta->lock);
176 if (!(*state & HT_ADDBA_REQUESTED_MSK)) { 180 if ((*state & (HT_ADDBA_REQUESTED_MSK | HT_ADDBA_RECEIVED_MSK)) !=
181 HT_ADDBA_REQUESTED_MSK) {
177 spin_unlock_bh(&sta->lock); 182 spin_unlock_bh(&sta->lock);
178 *state = HT_AGG_STATE_IDLE; 183 *state = HT_AGG_STATE_IDLE;
179#ifdef CONFIG_MAC80211_HT_DEBUG 184#ifdef CONFIG_MAC80211_HT_DEBUG
180 printk(KERN_DEBUG "timer expired on tid %d but we are not " 185 printk(KERN_DEBUG "timer expired on tid %d but we are not "
181 "expecting addBA response there", tid); 186 "(or no longer) expecting addBA response there",
187 tid);
182#endif 188#endif
183 return; 189 return;
184 } 190 }
@@ -523,11 +529,6 @@ int __ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
523 goto unlock; 529 goto unlock;
524 } 530 }
525 531
526#ifdef CONFIG_MAC80211_HT_DEBUG
527 printk(KERN_DEBUG "Tx BA session stop requested for %pM tid %u\n",
528 sta->sta.addr, tid);
529#endif /* CONFIG_MAC80211_HT_DEBUG */
530
531 ret = ___ieee80211_stop_tx_ba_session(sta, tid, initiator); 532 ret = ___ieee80211_stop_tx_ba_session(sta, tid, initiator);
532 533
533 unlock: 534 unlock:
@@ -543,7 +544,7 @@ int ieee80211_stop_tx_ba_session(struct ieee80211_hw *hw,
543 struct sta_info *sta; 544 struct sta_info *sta;
544 int ret = 0; 545 int ret = 0;
545 546
546 if (WARN_ON(!local->ops->ampdu_action)) 547 if (!local->ops->ampdu_action)
547 return -EINVAL; 548 return -EINVAL;
548 549
549 if (tid >= STA_TID_NUM) 550 if (tid >= STA_TID_NUM)
@@ -668,24 +669,23 @@ void ieee80211_process_addba_resp(struct ieee80211_local *local,
668 669
669 spin_lock_bh(&sta->lock); 670 spin_lock_bh(&sta->lock);
670 671
671 if (!(*state & HT_ADDBA_REQUESTED_MSK)) { 672 if (!(*state & HT_ADDBA_REQUESTED_MSK))
672 spin_unlock_bh(&sta->lock); 673 goto out;
673 return;
674 }
675 674
676 if (mgmt->u.action.u.addba_resp.dialog_token != 675 if (mgmt->u.action.u.addba_resp.dialog_token !=
677 sta->ampdu_mlme.tid_tx[tid]->dialog_token) { 676 sta->ampdu_mlme.tid_tx[tid]->dialog_token) {
678 spin_unlock_bh(&sta->lock);
679#ifdef CONFIG_MAC80211_HT_DEBUG 677#ifdef CONFIG_MAC80211_HT_DEBUG
680 printk(KERN_DEBUG "wrong addBA response token, tid %d\n", tid); 678 printk(KERN_DEBUG "wrong addBA response token, tid %d\n", tid);
681#endif /* CONFIG_MAC80211_HT_DEBUG */ 679#endif /* CONFIG_MAC80211_HT_DEBUG */
682 return; 680 goto out;
683 } 681 }
684 682
685 del_timer_sync(&sta->ampdu_mlme.tid_tx[tid]->addba_resp_timer); 683 del_timer(&sta->ampdu_mlme.tid_tx[tid]->addba_resp_timer);
684
686#ifdef CONFIG_MAC80211_HT_DEBUG 685#ifdef CONFIG_MAC80211_HT_DEBUG
687 printk(KERN_DEBUG "switched off addBA timer for tid %d \n", tid); 686 printk(KERN_DEBUG "switched off addBA timer for tid %d \n", tid);
688#endif /* CONFIG_MAC80211_HT_DEBUG */ 687#endif /* CONFIG_MAC80211_HT_DEBUG */
688
689 if (le16_to_cpu(mgmt->u.action.u.addba_resp.status) 689 if (le16_to_cpu(mgmt->u.action.u.addba_resp.status)
690 == WLAN_STATUS_SUCCESS) { 690 == WLAN_STATUS_SUCCESS) {
691 u8 curstate = *state; 691 u8 curstate = *state;
@@ -699,5 +699,7 @@ void ieee80211_process_addba_resp(struct ieee80211_local *local,
699 } else { 699 } else {
700 ___ieee80211_stop_tx_ba_session(sta, tid, WLAN_BACK_INITIATOR); 700 ___ieee80211_stop_tx_ba_session(sta, tid, WLAN_BACK_INITIATOR);
701 } 701 }
702
703 out:
702 spin_unlock_bh(&sta->lock); 704 spin_unlock_bh(&sta->lock);
703} 705}
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index 5608f6c68413..7b5131bd6fa1 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -72,6 +72,9 @@ static int ieee80211_change_iface(struct wiphy *wiphy,
72 struct ieee80211_sub_if_data *sdata; 72 struct ieee80211_sub_if_data *sdata;
73 int ret; 73 int ret;
74 74
75 if (netif_running(dev))
76 return -EBUSY;
77
75 if (!nl80211_type_check(type)) 78 if (!nl80211_type_check(type))
76 return -EINVAL; 79 return -EINVAL;
77 80
@@ -81,9 +84,6 @@ static int ieee80211_change_iface(struct wiphy *wiphy,
81 if (ret) 84 if (ret)
82 return ret; 85 return ret;
83 86
84 if (netif_running(sdata->dev))
85 return -EBUSY;
86
87 if (ieee80211_vif_is_mesh(&sdata->vif) && params->mesh_id_len) 87 if (ieee80211_vif_is_mesh(&sdata->vif) && params->mesh_id_len)
88 ieee80211_sdata_set_mesh_id(sdata, 88 ieee80211_sdata_set_mesh_id(sdata,
89 params->mesh_id_len, 89 params->mesh_id_len,
diff --git a/net/mac80211/ht.c b/net/mac80211/ht.c
index 0891bfb06996..cdc58e61d921 100644
--- a/net/mac80211/ht.c
+++ b/net/mac80211/ht.c
@@ -141,7 +141,6 @@ void ieee80211_process_delba(struct ieee80211_sub_if_data *sdata,
141 struct sta_info *sta, 141 struct sta_info *sta,
142 struct ieee80211_mgmt *mgmt, size_t len) 142 struct ieee80211_mgmt *mgmt, size_t len)
143{ 143{
144 struct ieee80211_local *local = sdata->local;
145 u16 tid, params; 144 u16 tid, params;
146 u16 initiator; 145 u16 initiator;
147 146
@@ -153,7 +152,7 @@ void ieee80211_process_delba(struct ieee80211_sub_if_data *sdata,
153 if (net_ratelimit()) 152 if (net_ratelimit())
154 printk(KERN_DEBUG "delba from %pM (%s) tid %d reason code %d\n", 153 printk(KERN_DEBUG "delba from %pM (%s) tid %d reason code %d\n",
155 mgmt->sa, initiator ? "initiator" : "recipient", tid, 154 mgmt->sa, initiator ? "initiator" : "recipient", tid,
156 mgmt->u.action.u.delba.reason_code); 155 le16_to_cpu(mgmt->u.action.u.delba.reason_code));
157#endif /* CONFIG_MAC80211_HT_DEBUG */ 156#endif /* CONFIG_MAC80211_HT_DEBUG */
158 157
159 if (initiator == WLAN_BACK_INITIATOR) 158 if (initiator == WLAN_BACK_INITIATOR)
@@ -161,10 +160,9 @@ void ieee80211_process_delba(struct ieee80211_sub_if_data *sdata,
161 WLAN_BACK_INITIATOR, 0); 160 WLAN_BACK_INITIATOR, 0);
162 else { /* WLAN_BACK_RECIPIENT */ 161 else { /* WLAN_BACK_RECIPIENT */
163 spin_lock_bh(&sta->lock); 162 spin_lock_bh(&sta->lock);
164 sta->ampdu_mlme.tid_state_tx[tid] = 163 if (sta->ampdu_mlme.tid_state_tx[tid] & HT_ADDBA_REQUESTED_MSK)
165 HT_AGG_STATE_OPERATIONAL; 164 ___ieee80211_stop_tx_ba_session(sta, tid,
165 WLAN_BACK_RECIPIENT);
166 spin_unlock_bh(&sta->lock); 166 spin_unlock_bh(&sta->lock);
167 ieee80211_stop_tx_ba_session(&local->hw, sta->sta.addr, tid,
168 WLAN_BACK_RECIPIENT);
169 } 167 }
170} 168}
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index 6eaf69823439..f1362f32c17d 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -73,6 +73,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
73 struct ieee80211_mgmt *mgmt; 73 struct ieee80211_mgmt *mgmt;
74 u8 *pos; 74 u8 *pos;
75 struct ieee80211_supported_band *sband; 75 struct ieee80211_supported_band *sband;
76 struct cfg80211_bss *bss;
76 u32 bss_change; 77 u32 bss_change;
77 u8 supp_rates[IEEE80211_MAX_SUPP_RATES]; 78 u8 supp_rates[IEEE80211_MAX_SUPP_RATES];
78 79
@@ -177,8 +178,9 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
177 mod_timer(&ifibss->timer, 178 mod_timer(&ifibss->timer,
178 round_jiffies(jiffies + IEEE80211_IBSS_MERGE_INTERVAL)); 179 round_jiffies(jiffies + IEEE80211_IBSS_MERGE_INTERVAL));
179 180
180 cfg80211_inform_bss_frame(local->hw.wiphy, local->hw.conf.channel, 181 bss = cfg80211_inform_bss_frame(local->hw.wiphy, local->hw.conf.channel,
181 mgmt, skb->len, 0, GFP_KERNEL); 182 mgmt, skb->len, 0, GFP_KERNEL);
183 cfg80211_put_bss(bss);
182 cfg80211_ibss_joined(sdata->dev, ifibss->bssid, GFP_KERNEL); 184 cfg80211_ibss_joined(sdata->dev, ifibss->bssid, GFP_KERNEL);
183} 185}
184 186
@@ -538,13 +540,12 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata)
538 WLAN_CAPABILITY_PRIVACY, 540 WLAN_CAPABILITY_PRIVACY,
539 capability); 541 capability);
540 542
543 if (bss) {
541#ifdef CONFIG_MAC80211_IBSS_DEBUG 544#ifdef CONFIG_MAC80211_IBSS_DEBUG
542 if (bss)
543 printk(KERN_DEBUG " sta_find_ibss: selected %pM current " 545 printk(KERN_DEBUG " sta_find_ibss: selected %pM current "
544 "%pM\n", bss->cbss.bssid, ifibss->bssid); 546 "%pM\n", bss->cbss.bssid, ifibss->bssid);
545#endif /* CONFIG_MAC80211_IBSS_DEBUG */ 547#endif /* CONFIG_MAC80211_IBSS_DEBUG */
546 548
547 if (bss && !memcmp(ifibss->bssid, bss->cbss.bssid, ETH_ALEN)) {
548 printk(KERN_DEBUG "%s: Selected IBSS BSSID %pM" 549 printk(KERN_DEBUG "%s: Selected IBSS BSSID %pM"
549 " based on configured SSID\n", 550 " based on configured SSID\n",
550 sdata->dev->name, bss->cbss.bssid); 551 sdata->dev->name, bss->cbss.bssid);
@@ -552,8 +553,7 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata)
552 ieee80211_sta_join_ibss(sdata, bss); 553 ieee80211_sta_join_ibss(sdata, bss);
553 ieee80211_rx_bss_put(local, bss); 554 ieee80211_rx_bss_put(local, bss);
554 return; 555 return;
555 } else if (bss) 556 }
556 ieee80211_rx_bss_put(local, bss);
557 557
558#ifdef CONFIG_MAC80211_IBSS_DEBUG 558#ifdef CONFIG_MAC80211_IBSS_DEBUG
559 printk(KERN_DEBUG " did not try to join ibss\n"); 559 printk(KERN_DEBUG " did not try to join ibss\n");
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 588005c84a6d..10d316e455de 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -662,6 +662,14 @@ struct ieee80211_local {
662 bool suspended; 662 bool suspended;
663 663
664 /* 664 /*
665 * Resuming is true while suspended, but when we're reprogramming the
666 * hardware -- at that time it's allowed to use ieee80211_queue_work()
667 * again even though some other parts of the stack are still suspended
668 * and we still drop received frames to avoid waking the stack.
669 */
670 bool resuming;
671
672 /*
665 * quiescing is true during the suspend process _only_ to 673 * quiescing is true during the suspend process _only_ to
666 * ease timer cancelling etc. 674 * ease timer cancelling etc.
667 */ 675 */
@@ -1083,6 +1091,8 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,
1083 1091
1084int __ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid, 1092int __ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
1085 enum ieee80211_back_parties initiator); 1093 enum ieee80211_back_parties initiator);
1094int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
1095 enum ieee80211_back_parties initiator);
1086 1096
1087/* Spectrum management */ 1097/* Spectrum management */
1088void ieee80211_process_measurement_req(struct ieee80211_sub_if_data *sdata, 1098void ieee80211_process_measurement_req(struct ieee80211_sub_if_data *sdata,
diff --git a/net/mac80211/mesh_hwmp.c b/net/mac80211/mesh_hwmp.c
index e12a786e26b8..29b82e98effa 100644
--- a/net/mac80211/mesh_hwmp.c
+++ b/net/mac80211/mesh_hwmp.c
@@ -259,7 +259,7 @@ static u32 airtime_link_metric_get(struct ieee80211_local *local,
259 * @hwmp_ie: hwmp information element (PREP or PREQ) 259 * @hwmp_ie: hwmp information element (PREP or PREQ)
260 * 260 *
261 * This function updates the path routing information to the originator and the 261 * This function updates the path routing information to the originator and the
262 * transmitter of a HWMP PREQ or PREP fram. 262 * transmitter of a HWMP PREQ or PREP frame.
263 * 263 *
264 * Returns: metric to frame originator or 0 if the frame should not be further 264 * Returns: metric to frame originator or 0 if the frame should not be further
265 * processed 265 * processed
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 8d26e9bf8964..dc5049d58c51 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -1457,8 +1457,7 @@ ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,
1457 if (status_code != WLAN_STATUS_SUCCESS) { 1457 if (status_code != WLAN_STATUS_SUCCESS) {
1458 printk(KERN_DEBUG "%s: AP denied association (code=%d)\n", 1458 printk(KERN_DEBUG "%s: AP denied association (code=%d)\n",
1459 sdata->dev->name, status_code); 1459 sdata->dev->name, status_code);
1460 list_del(&wk->list); 1460 wk->state = IEEE80211_MGD_STATE_IDLE;
1461 kfree(wk);
1462 return RX_MGMT_CFG80211_ASSOC; 1461 return RX_MGMT_CFG80211_ASSOC;
1463 } 1462 }
1464 1463
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index db4bda681ec9..eaa4118de988 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1445,7 +1445,7 @@ static void ieee80211_xmit(struct ieee80211_sub_if_data *sdata,
1445 if (tmp_sdata->vif.type != NL80211_IFTYPE_AP) 1445 if (tmp_sdata->vif.type != NL80211_IFTYPE_AP)
1446 continue; 1446 continue;
1447 if (compare_ether_addr(tmp_sdata->dev->dev_addr, 1447 if (compare_ether_addr(tmp_sdata->dev->dev_addr,
1448 hdr->addr2)) { 1448 hdr->addr2) == 0) {
1449 dev_hold(tmp_sdata->dev); 1449 dev_hold(tmp_sdata->dev);
1450 dev_put(sdata->dev); 1450 dev_put(sdata->dev);
1451 sdata = tmp_sdata; 1451 sdata = tmp_sdata;
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index aeb65b3d2295..e6c08da8da26 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -520,9 +520,9 @@ EXPORT_SYMBOL_GPL(ieee80211_iterate_active_interfaces_atomic);
520 */ 520 */
521static bool ieee80211_can_queue_work(struct ieee80211_local *local) 521static bool ieee80211_can_queue_work(struct ieee80211_local *local)
522{ 522{
523 if (WARN(local->suspended, "queueing ieee80211 work while " 523 if (WARN(local->suspended && !local->resuming,
524 "going to suspend\n")) 524 "queueing ieee80211 work while going to suspend\n"))
525 return false; 525 return false;
526 526
527 return true; 527 return true;
528} 528}
@@ -1025,13 +1025,9 @@ int ieee80211_reconfig(struct ieee80211_local *local)
1025 struct sta_info *sta; 1025 struct sta_info *sta;
1026 unsigned long flags; 1026 unsigned long flags;
1027 int res; 1027 int res;
1028 bool from_suspend = local->suspended;
1029 1028
1030 /* 1029 if (local->suspended)
1031 * We're going to start the hardware, at that point 1030 local->resuming = true;
1032 * we are no longer suspended and can RX frames.
1033 */
1034 local->suspended = false;
1035 1031
1036 /* restart hardware */ 1032 /* restart hardware */
1037 if (local->open_count) { 1033 if (local->open_count) {
@@ -1129,11 +1125,14 @@ int ieee80211_reconfig(struct ieee80211_local *local)
1129 * If this is for hw restart things are still running. 1125 * If this is for hw restart things are still running.
1130 * We may want to change that later, however. 1126 * We may want to change that later, however.
1131 */ 1127 */
1132 if (!from_suspend) 1128 if (!local->suspended)
1133 return 0; 1129 return 0;
1134 1130
1135#ifdef CONFIG_PM 1131#ifdef CONFIG_PM
1132 /* first set suspended false, then resuming */
1136 local->suspended = false; 1133 local->suspended = false;
1134 mb();
1135 local->resuming = false;
1137 1136
1138 list_for_each_entry(sdata, &local->interfaces, list) { 1137 list_for_each_entry(sdata, &local->interfaces, list) {
1139 switch(sdata->vif.type) { 1138 switch(sdata->vif.type) {
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
index ca6e68dcd8a8..b9168c1864ca 100644
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -1351,6 +1351,11 @@ err_stat:
1351 return ret; 1351 return ret;
1352} 1352}
1353 1353
1354s16 (*nf_ct_nat_offset)(const struct nf_conn *ct,
1355 enum ip_conntrack_dir dir,
1356 u32 seq);
1357EXPORT_SYMBOL_GPL(nf_ct_nat_offset);
1358
1354int nf_conntrack_init(struct net *net) 1359int nf_conntrack_init(struct net *net)
1355{ 1360{
1356 int ret; 1361 int ret;
@@ -1368,6 +1373,9 @@ int nf_conntrack_init(struct net *net)
1368 /* For use by REJECT target */ 1373 /* For use by REJECT target */
1369 rcu_assign_pointer(ip_ct_attach, nf_conntrack_attach); 1374 rcu_assign_pointer(ip_ct_attach, nf_conntrack_attach);
1370 rcu_assign_pointer(nf_ct_destroy, destroy_conntrack); 1375 rcu_assign_pointer(nf_ct_destroy, destroy_conntrack);
1376
1377 /* Howto get NAT offsets */
1378 rcu_assign_pointer(nf_ct_nat_offset, NULL);
1371 } 1379 }
1372 return 0; 1380 return 0;
1373 1381
diff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c
index 97a82ba75376..ba2b76937283 100644
--- a/net/netfilter/nf_conntrack_proto_tcp.c
+++ b/net/netfilter/nf_conntrack_proto_tcp.c
@@ -492,6 +492,21 @@ static void tcp_sack(const struct sk_buff *skb, unsigned int dataoff,
492 } 492 }
493} 493}
494 494
495#ifdef CONFIG_NF_NAT_NEEDED
496static inline s16 nat_offset(const struct nf_conn *ct,
497 enum ip_conntrack_dir dir,
498 u32 seq)
499{
500 typeof(nf_ct_nat_offset) get_offset = rcu_dereference(nf_ct_nat_offset);
501
502 return get_offset != NULL ? get_offset(ct, dir, seq) : 0;
503}
504#define NAT_OFFSET(pf, ct, dir, seq) \
505 (pf == NFPROTO_IPV4 ? nat_offset(ct, dir, seq) : 0)
506#else
507#define NAT_OFFSET(pf, ct, dir, seq) 0
508#endif
509
495static bool tcp_in_window(const struct nf_conn *ct, 510static bool tcp_in_window(const struct nf_conn *ct,
496 struct ip_ct_tcp *state, 511 struct ip_ct_tcp *state,
497 enum ip_conntrack_dir dir, 512 enum ip_conntrack_dir dir,
@@ -506,6 +521,7 @@ static bool tcp_in_window(const struct nf_conn *ct,
506 struct ip_ct_tcp_state *receiver = &state->seen[!dir]; 521 struct ip_ct_tcp_state *receiver = &state->seen[!dir];
507 const struct nf_conntrack_tuple *tuple = &ct->tuplehash[dir].tuple; 522 const struct nf_conntrack_tuple *tuple = &ct->tuplehash[dir].tuple;
508 __u32 seq, ack, sack, end, win, swin; 523 __u32 seq, ack, sack, end, win, swin;
524 s16 receiver_offset;
509 bool res; 525 bool res;
510 526
511 /* 527 /*
@@ -519,11 +535,16 @@ static bool tcp_in_window(const struct nf_conn *ct,
519 if (receiver->flags & IP_CT_TCP_FLAG_SACK_PERM) 535 if (receiver->flags & IP_CT_TCP_FLAG_SACK_PERM)
520 tcp_sack(skb, dataoff, tcph, &sack); 536 tcp_sack(skb, dataoff, tcph, &sack);
521 537
538 /* Take into account NAT sequence number mangling */
539 receiver_offset = NAT_OFFSET(pf, ct, !dir, ack - 1);
540 ack -= receiver_offset;
541 sack -= receiver_offset;
542
522 pr_debug("tcp_in_window: START\n"); 543 pr_debug("tcp_in_window: START\n");
523 pr_debug("tcp_in_window: "); 544 pr_debug("tcp_in_window: ");
524 nf_ct_dump_tuple(tuple); 545 nf_ct_dump_tuple(tuple);
525 pr_debug("seq=%u ack=%u sack=%u win=%u end=%u\n", 546 pr_debug("seq=%u ack=%u+(%d) sack=%u+(%d) win=%u end=%u\n",
526 seq, ack, sack, win, end); 547 seq, ack, receiver_offset, sack, receiver_offset, win, end);
527 pr_debug("tcp_in_window: sender end=%u maxend=%u maxwin=%u scale=%i " 548 pr_debug("tcp_in_window: sender end=%u maxend=%u maxwin=%u scale=%i "
528 "receiver end=%u maxend=%u maxwin=%u scale=%i\n", 549 "receiver end=%u maxend=%u maxwin=%u scale=%i\n",
529 sender->td_end, sender->td_maxend, sender->td_maxwin, 550 sender->td_end, sender->td_maxend, sender->td_maxwin,
@@ -613,8 +634,8 @@ static bool tcp_in_window(const struct nf_conn *ct,
613 634
614 pr_debug("tcp_in_window: "); 635 pr_debug("tcp_in_window: ");
615 nf_ct_dump_tuple(tuple); 636 nf_ct_dump_tuple(tuple);
616 pr_debug("seq=%u ack=%u sack =%u win=%u end=%u\n", 637 pr_debug("seq=%u ack=%u+(%d) sack=%u+(%d) win=%u end=%u\n",
617 seq, ack, sack, win, end); 638 seq, ack, receiver_offset, sack, receiver_offset, win, end);
618 pr_debug("tcp_in_window: sender end=%u maxend=%u maxwin=%u scale=%i " 639 pr_debug("tcp_in_window: sender end=%u maxend=%u maxwin=%u scale=%i "
619 "receiver end=%u maxend=%u maxwin=%u scale=%i\n", 640 "receiver end=%u maxend=%u maxwin=%u scale=%i\n",
620 sender->td_end, sender->td_maxend, sender->td_maxwin, 641 sender->td_end, sender->td_maxend, sender->td_maxwin,
@@ -700,7 +721,7 @@ static bool tcp_in_window(const struct nf_conn *ct,
700 before(seq, sender->td_maxend + 1) ? 721 before(seq, sender->td_maxend + 1) ?
701 after(end, sender->td_end - receiver->td_maxwin - 1) ? 722 after(end, sender->td_end - receiver->td_maxwin - 1) ?
702 before(sack, receiver->td_end + 1) ? 723 before(sack, receiver->td_end + 1) ?
703 after(ack, receiver->td_end - MAXACKWINDOW(sender)) ? "BUG" 724 after(sack, receiver->td_end - MAXACKWINDOW(sender) - 1) ? "BUG"
704 : "ACK is under the lower bound (possible overly delayed ACK)" 725 : "ACK is under the lower bound (possible overly delayed ACK)"
705 : "ACK is over the upper bound (ACKed data not seen yet)" 726 : "ACK is over the upper bound (ACKed data not seen yet)"
706 : "SEQ is under the lower bound (already ACKed data retransmitted)" 727 : "SEQ is under the lower bound (already ACKed data retransmitted)"
@@ -715,39 +736,6 @@ static bool tcp_in_window(const struct nf_conn *ct,
715 return res; 736 return res;
716} 737}
717 738
718#ifdef CONFIG_NF_NAT_NEEDED
719/* Update sender->td_end after NAT successfully mangled the packet */
720/* Caller must linearize skb at tcp header. */
721void nf_conntrack_tcp_update(const struct sk_buff *skb,
722 unsigned int dataoff,
723 struct nf_conn *ct, int dir,
724 s16 offset)
725{
726 const struct tcphdr *tcph = (const void *)skb->data + dataoff;
727 const struct ip_ct_tcp_state *sender = &ct->proto.tcp.seen[dir];
728 const struct ip_ct_tcp_state *receiver = &ct->proto.tcp.seen[!dir];
729 __u32 end;
730
731 end = segment_seq_plus_len(ntohl(tcph->seq), skb->len, dataoff, tcph);
732
733 spin_lock_bh(&ct->lock);
734 /*
735 * We have to worry for the ack in the reply packet only...
736 */
737 if (ct->proto.tcp.seen[dir].td_end + offset == end)
738 ct->proto.tcp.seen[dir].td_end = end;
739 ct->proto.tcp.last_end = end;
740 spin_unlock_bh(&ct->lock);
741 pr_debug("tcp_update: sender end=%u maxend=%u maxwin=%u scale=%i "
742 "receiver end=%u maxend=%u maxwin=%u scale=%i\n",
743 sender->td_end, sender->td_maxend, sender->td_maxwin,
744 sender->td_scale,
745 receiver->td_end, receiver->td_maxend, receiver->td_maxwin,
746 receiver->td_scale);
747}
748EXPORT_SYMBOL_GPL(nf_conntrack_tcp_update);
749#endif
750
751#define TH_FIN 0x01 739#define TH_FIN 0x01
752#define TH_SYN 0x02 740#define TH_SYN 0x02
753#define TH_RST 0x04 741#define TH_RST 0x04
diff --git a/net/netfilter/nf_log.c b/net/netfilter/nf_log.c
index c93494fef8ef..d65d3481919c 100644
--- a/net/netfilter/nf_log.c
+++ b/net/netfilter/nf_log.c
@@ -128,9 +128,8 @@ EXPORT_SYMBOL(nf_log_packet);
128 128
129#ifdef CONFIG_PROC_FS 129#ifdef CONFIG_PROC_FS
130static void *seq_start(struct seq_file *seq, loff_t *pos) 130static void *seq_start(struct seq_file *seq, loff_t *pos)
131 __acquires(RCU)
132{ 131{
133 rcu_read_lock(); 132 mutex_lock(&nf_log_mutex);
134 133
135 if (*pos >= ARRAY_SIZE(nf_loggers)) 134 if (*pos >= ARRAY_SIZE(nf_loggers))
136 return NULL; 135 return NULL;
@@ -149,9 +148,8 @@ static void *seq_next(struct seq_file *s, void *v, loff_t *pos)
149} 148}
150 149
151static void seq_stop(struct seq_file *s, void *v) 150static void seq_stop(struct seq_file *s, void *v)
152 __releases(RCU)
153{ 151{
154 rcu_read_unlock(); 152 mutex_unlock(&nf_log_mutex);
155} 153}
156 154
157static int seq_show(struct seq_file *s, void *v) 155static int seq_show(struct seq_file *s, void *v)
@@ -161,7 +159,7 @@ static int seq_show(struct seq_file *s, void *v)
161 struct nf_logger *t; 159 struct nf_logger *t;
162 int ret; 160 int ret;
163 161
164 logger = rcu_dereference(nf_loggers[*pos]); 162 logger = nf_loggers[*pos];
165 163
166 if (!logger) 164 if (!logger)
167 ret = seq_printf(s, "%2lld NONE (", *pos); 165 ret = seq_printf(s, "%2lld NONE (", *pos);
@@ -171,22 +169,16 @@ static int seq_show(struct seq_file *s, void *v)
171 if (ret < 0) 169 if (ret < 0)
172 return ret; 170 return ret;
173 171
174 mutex_lock(&nf_log_mutex);
175 list_for_each_entry(t, &nf_loggers_l[*pos], list[*pos]) { 172 list_for_each_entry(t, &nf_loggers_l[*pos], list[*pos]) {
176 ret = seq_printf(s, "%s", t->name); 173 ret = seq_printf(s, "%s", t->name);
177 if (ret < 0) { 174 if (ret < 0)
178 mutex_unlock(&nf_log_mutex);
179 return ret; 175 return ret;
180 }
181 if (&t->list[*pos] != nf_loggers_l[*pos].prev) { 176 if (&t->list[*pos] != nf_loggers_l[*pos].prev) {
182 ret = seq_printf(s, ","); 177 ret = seq_printf(s, ",");
183 if (ret < 0) { 178 if (ret < 0)
184 mutex_unlock(&nf_log_mutex);
185 return ret; 179 return ret;
186 }
187 } 180 }
188 } 181 }
189 mutex_unlock(&nf_log_mutex);
190 182
191 return seq_printf(s, ")\n"); 183 return seq_printf(s, ")\n");
192} 184}
diff --git a/net/netfilter/xt_connlimit.c b/net/netfilter/xt_connlimit.c
index 680980954395..38f03f75a636 100644
--- a/net/netfilter/xt_connlimit.c
+++ b/net/netfilter/xt_connlimit.c
@@ -103,7 +103,7 @@ static int count_them(struct xt_connlimit_data *data,
103 const struct nf_conntrack_tuple *tuple, 103 const struct nf_conntrack_tuple *tuple,
104 const union nf_inet_addr *addr, 104 const union nf_inet_addr *addr,
105 const union nf_inet_addr *mask, 105 const union nf_inet_addr *mask,
106 const struct xt_match *match) 106 u_int8_t family)
107{ 107{
108 const struct nf_conntrack_tuple_hash *found; 108 const struct nf_conntrack_tuple_hash *found;
109 struct xt_connlimit_conn *conn; 109 struct xt_connlimit_conn *conn;
@@ -113,8 +113,7 @@ static int count_them(struct xt_connlimit_data *data,
113 bool addit = true; 113 bool addit = true;
114 int matches = 0; 114 int matches = 0;
115 115
116 116 if (family == NFPROTO_IPV6)
117 if (match->family == NFPROTO_IPV6)
118 hash = &data->iphash[connlimit_iphash6(addr, mask)]; 117 hash = &data->iphash[connlimit_iphash6(addr, mask)];
119 else 118 else
120 hash = &data->iphash[connlimit_iphash(addr->ip & mask->ip)]; 119 hash = &data->iphash[connlimit_iphash(addr->ip & mask->ip)];
@@ -157,8 +156,7 @@ static int count_them(struct xt_connlimit_data *data,
157 continue; 156 continue;
158 } 157 }
159 158
160 if (same_source_net(addr, mask, &conn->tuple.src.u3, 159 if (same_source_net(addr, mask, &conn->tuple.src.u3, family))
161 match->family))
162 /* same source network -> be counted! */ 160 /* same source network -> be counted! */
163 ++matches; 161 ++matches;
164 nf_ct_put(found_ct); 162 nf_ct_put(found_ct);
@@ -207,7 +205,7 @@ connlimit_mt(const struct sk_buff *skb, const struct xt_match_param *par)
207 205
208 spin_lock_bh(&info->data->lock); 206 spin_lock_bh(&info->data->lock);
209 connections = count_them(info->data, tuple_ptr, &addr, 207 connections = count_them(info->data, tuple_ptr, &addr,
210 &info->mask, par->match); 208 &info->mask, par->family);
211 spin_unlock_bh(&info->data->lock); 209 spin_unlock_bh(&info->data->lock);
212 210
213 if (connections < 0) { 211 if (connections < 0) {
diff --git a/net/netfilter/xt_limit.c b/net/netfilter/xt_limit.c
index 2e8089ecd0af..2773be6a71dd 100644
--- a/net/netfilter/xt_limit.c
+++ b/net/netfilter/xt_limit.c
@@ -112,7 +112,7 @@ static bool limit_mt_check(const struct xt_mtchk_param *par)
112 112
113 priv = kmalloc(sizeof(*priv), GFP_KERNEL); 113 priv = kmalloc(sizeof(*priv), GFP_KERNEL);
114 if (priv == NULL) 114 if (priv == NULL)
115 return -ENOMEM; 115 return false;
116 116
117 /* For SMP, we only want to use one set of state. */ 117 /* For SMP, we only want to use one set of state. */
118 r->master = priv; 118 r->master = priv;
diff --git a/net/netfilter/xt_osf.c b/net/netfilter/xt_osf.c
index 63e190504656..4d1a41bbd5d7 100644
--- a/net/netfilter/xt_osf.c
+++ b/net/netfilter/xt_osf.c
@@ -118,7 +118,7 @@ static int xt_osf_remove_callback(struct sock *ctnl, struct sk_buff *skb,
118{ 118{
119 struct xt_osf_user_finger *f; 119 struct xt_osf_user_finger *f;
120 struct xt_osf_finger *sf; 120 struct xt_osf_finger *sf;
121 int err = ENOENT; 121 int err = -ENOENT;
122 122
123 if (!osf_attrs[OSF_ATTR_FINGER]) 123 if (!osf_attrs[OSF_ATTR_FINGER])
124 return -EINVAL; 124 return -EINVAL;
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index d7ecca0a0c07..f2d116a5cb35 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -982,10 +982,7 @@ static int tpacket_snd(struct packet_sock *po, struct msghdr *msg)
982 goto out_put; 982 goto out_put;
983 983
984 size_max = po->tx_ring.frame_size 984 size_max = po->tx_ring.frame_size
985 - sizeof(struct skb_shared_info) 985 - (po->tp_hdrlen - sizeof(struct sockaddr_ll));
986 - po->tp_hdrlen
987 - LL_ALLOCATED_SPACE(dev)
988 - sizeof(struct sockaddr_ll);
989 986
990 if (size_max > dev->mtu + reserve) 987 if (size_max > dev->mtu + reserve)
991 size_max = dev->mtu + reserve; 988 size_max = dev->mtu + reserve;
diff --git a/net/rfkill/core.c b/net/rfkill/core.c
index ba2efb960c60..a001f7c1f711 100644
--- a/net/rfkill/core.c
+++ b/net/rfkill/core.c
@@ -1189,6 +1189,7 @@ static long rfkill_fop_ioctl(struct file *file, unsigned int cmd,
1189#endif 1189#endif
1190 1190
1191static const struct file_operations rfkill_fops = { 1191static const struct file_operations rfkill_fops = {
1192 .owner = THIS_MODULE,
1192 .open = rfkill_fop_open, 1193 .open = rfkill_fop_open,
1193 .read = rfkill_fop_read, 1194 .read = rfkill_fop_read,
1194 .write = rfkill_fop_write, 1195 .write = rfkill_fop_write,
diff --git a/net/rose/rose_route.c b/net/rose/rose_route.c
index 9478d9b3d977..f3e21989b88c 100644
--- a/net/rose/rose_route.c
+++ b/net/rose/rose_route.c
@@ -578,18 +578,18 @@ static int rose_clear_routes(void)
578 578
579/* 579/*
580 * Check that the device given is a valid AX.25 interface that is "up". 580 * Check that the device given is a valid AX.25 interface that is "up".
581 * called whith RTNL
581 */ 582 */
582static struct net_device *rose_ax25_dev_get(char *devname) 583static struct net_device *rose_ax25_dev_find(char *devname)
583{ 584{
584 struct net_device *dev; 585 struct net_device *dev;
585 586
586 if ((dev = dev_get_by_name(&init_net, devname)) == NULL) 587 if ((dev = __dev_get_by_name(&init_net, devname)) == NULL)
587 return NULL; 588 return NULL;
588 589
589 if ((dev->flags & IFF_UP) && dev->type == ARPHRD_AX25) 590 if ((dev->flags & IFF_UP) && dev->type == ARPHRD_AX25)
590 return dev; 591 return dev;
591 592
592 dev_put(dev);
593 return NULL; 593 return NULL;
594} 594}
595 595
@@ -720,27 +720,23 @@ int rose_rt_ioctl(unsigned int cmd, void __user *arg)
720 case SIOCADDRT: 720 case SIOCADDRT:
721 if (copy_from_user(&rose_route, arg, sizeof(struct rose_route_struct))) 721 if (copy_from_user(&rose_route, arg, sizeof(struct rose_route_struct)))
722 return -EFAULT; 722 return -EFAULT;
723 if ((dev = rose_ax25_dev_get(rose_route.device)) == NULL) 723 if ((dev = rose_ax25_dev_find(rose_route.device)) == NULL)
724 return -EINVAL; 724 return -EINVAL;
725 if (rose_dev_exists(&rose_route.address)) { /* Can't add routes to ourself */ 725 if (rose_dev_exists(&rose_route.address)) /* Can't add routes to ourself */
726 dev_put(dev);
727 return -EINVAL; 726 return -EINVAL;
728 }
729 if (rose_route.mask > 10) /* Mask can't be more than 10 digits */ 727 if (rose_route.mask > 10) /* Mask can't be more than 10 digits */
730 return -EINVAL; 728 return -EINVAL;
731 if (rose_route.ndigis > AX25_MAX_DIGIS) 729 if (rose_route.ndigis > AX25_MAX_DIGIS)
732 return -EINVAL; 730 return -EINVAL;
733 err = rose_add_node(&rose_route, dev); 731 err = rose_add_node(&rose_route, dev);
734 dev_put(dev);
735 return err; 732 return err;
736 733
737 case SIOCDELRT: 734 case SIOCDELRT:
738 if (copy_from_user(&rose_route, arg, sizeof(struct rose_route_struct))) 735 if (copy_from_user(&rose_route, arg, sizeof(struct rose_route_struct)))
739 return -EFAULT; 736 return -EFAULT;
740 if ((dev = rose_ax25_dev_get(rose_route.device)) == NULL) 737 if ((dev = rose_ax25_dev_find(rose_route.device)) == NULL)
741 return -EINVAL; 738 return -EINVAL;
742 err = rose_del_node(&rose_route, dev); 739 err = rose_del_node(&rose_route, dev);
743 dev_put(dev);
744 return err; 740 return err;
745 741
746 case SIOCRSCLRRT: 742 case SIOCRSCLRRT:
diff --git a/net/sctp/associola.c b/net/sctp/associola.c
index 8450960df24f..7eed77a39d0d 100644
--- a/net/sctp/associola.c
+++ b/net/sctp/associola.c
@@ -1485,15 +1485,13 @@ void sctp_assoc_rwnd_decrease(struct sctp_association *asoc, unsigned len)
1485 * local endpoint and the remote peer. 1485 * local endpoint and the remote peer.
1486 */ 1486 */
1487int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *asoc, 1487int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *asoc,
1488 gfp_t gfp) 1488 sctp_scope_t scope, gfp_t gfp)
1489{ 1489{
1490 sctp_scope_t scope;
1491 int flags; 1490 int flags;
1492 1491
1493 /* Use scoping rules to determine the subset of addresses from 1492 /* Use scoping rules to determine the subset of addresses from
1494 * the endpoint. 1493 * the endpoint.
1495 */ 1494 */
1496 scope = sctp_scope(&asoc->peer.active_path->ipaddr);
1497 flags = (PF_INET6 == asoc->base.sk->sk_family) ? SCTP_ADDR6_ALLOWED : 0; 1495 flags = (PF_INET6 == asoc->base.sk->sk_family) ? SCTP_ADDR6_ALLOWED : 0;
1498 if (asoc->peer.ipv4_address) 1496 if (asoc->peer.ipv4_address)
1499 flags |= SCTP_ADDR4_PEERSUPP; 1497 flags |= SCTP_ADDR4_PEERSUPP;
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c
index c9f20e28521b..23e5e97aa617 100644
--- a/net/sctp/outqueue.c
+++ b/net/sctp/outqueue.c
@@ -423,16 +423,6 @@ void sctp_retransmit_mark(struct sctp_outq *q,
423 if ((reason == SCTP_RTXR_FAST_RTX && 423 if ((reason == SCTP_RTXR_FAST_RTX &&
424 (chunk->fast_retransmit == SCTP_NEED_FRTX)) || 424 (chunk->fast_retransmit == SCTP_NEED_FRTX)) ||
425 (reason != SCTP_RTXR_FAST_RTX && !chunk->tsn_gap_acked)) { 425 (reason != SCTP_RTXR_FAST_RTX && !chunk->tsn_gap_acked)) {
426 /* If this chunk was sent less then 1 rto ago, do not
427 * retransmit this chunk, but give the peer time
428 * to acknowlege it. Do this only when
429 * retransmitting due to T3 timeout.
430 */
431 if (reason == SCTP_RTXR_T3_RTX &&
432 time_before(jiffies, chunk->sent_at +
433 transport->last_rto))
434 continue;
435
436 /* RFC 2960 6.2.1 Processing a Received SACK 426 /* RFC 2960 6.2.1 Processing a Received SACK
437 * 427 *
438 * C) Any time a DATA chunk is marked for 428 * C) Any time a DATA chunk is marked for
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
index 8674d4919556..efa516b47e81 100644
--- a/net/sctp/sm_sideeffect.c
+++ b/net/sctp/sm_sideeffect.c
@@ -480,7 +480,6 @@ static void sctp_do_8_2_transport_strike(struct sctp_association *asoc,
480 * that indicates that we have an outstanding HB. 480 * that indicates that we have an outstanding HB.
481 */ 481 */
482 if (!is_hb || transport->hb_sent) { 482 if (!is_hb || transport->hb_sent) {
483 transport->last_rto = transport->rto;
484 transport->rto = min((transport->rto * 2), transport->asoc->rto_max); 483 transport->rto = min((transport->rto * 2), transport->asoc->rto_max);
485 } 484 }
486} 485}
diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c
index c8fae1983dd1..d4df45022ffa 100644
--- a/net/sctp/sm_statefuns.c
+++ b/net/sctp/sm_statefuns.c
@@ -384,6 +384,11 @@ sctp_disposition_t sctp_sf_do_5_1B_init(const struct sctp_endpoint *ep,
384 if (!new_asoc) 384 if (!new_asoc)
385 goto nomem; 385 goto nomem;
386 386
387 if (sctp_assoc_set_bind_addr_from_ep(new_asoc,
388 sctp_scope(sctp_source(chunk)),
389 GFP_ATOMIC) < 0)
390 goto nomem_init;
391
387 /* The call, sctp_process_init(), can fail on memory allocation. */ 392 /* The call, sctp_process_init(), can fail on memory allocation. */
388 if (!sctp_process_init(new_asoc, chunk->chunk_hdr->type, 393 if (!sctp_process_init(new_asoc, chunk->chunk_hdr->type,
389 sctp_source(chunk), 394 sctp_source(chunk),
@@ -401,9 +406,6 @@ sctp_disposition_t sctp_sf_do_5_1B_init(const struct sctp_endpoint *ep,
401 len = ntohs(err_chunk->chunk_hdr->length) - 406 len = ntohs(err_chunk->chunk_hdr->length) -
402 sizeof(sctp_chunkhdr_t); 407 sizeof(sctp_chunkhdr_t);
403 408
404 if (sctp_assoc_set_bind_addr_from_ep(new_asoc, GFP_ATOMIC) < 0)
405 goto nomem_init;
406
407 repl = sctp_make_init_ack(new_asoc, chunk, GFP_ATOMIC, len); 409 repl = sctp_make_init_ack(new_asoc, chunk, GFP_ATOMIC, len);
408 if (!repl) 410 if (!repl)
409 goto nomem_init; 411 goto nomem_init;
@@ -1452,6 +1454,10 @@ static sctp_disposition_t sctp_sf_do_unexpected_init(
1452 if (!new_asoc) 1454 if (!new_asoc)
1453 goto nomem; 1455 goto nomem;
1454 1456
1457 if (sctp_assoc_set_bind_addr_from_ep(new_asoc,
1458 sctp_scope(sctp_source(chunk)), GFP_ATOMIC) < 0)
1459 goto nomem;
1460
1455 /* In the outbound INIT ACK the endpoint MUST copy its current 1461 /* In the outbound INIT ACK the endpoint MUST copy its current
1456 * Verification Tag and Peers Verification tag into a reserved 1462 * Verification Tag and Peers Verification tag into a reserved
1457 * place (local tie-tag and per tie-tag) within the state cookie. 1463 * place (local tie-tag and per tie-tag) within the state cookie.
@@ -1488,9 +1494,6 @@ static sctp_disposition_t sctp_sf_do_unexpected_init(
1488 sizeof(sctp_chunkhdr_t); 1494 sizeof(sctp_chunkhdr_t);
1489 } 1495 }
1490 1496
1491 if (sctp_assoc_set_bind_addr_from_ep(new_asoc, GFP_ATOMIC) < 0)
1492 goto nomem;
1493
1494 repl = sctp_make_init_ack(new_asoc, chunk, GFP_ATOMIC, len); 1497 repl = sctp_make_init_ack(new_asoc, chunk, GFP_ATOMIC, len);
1495 if (!repl) 1498 if (!repl)
1496 goto nomem; 1499 goto nomem;
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index c8d05758661d..3a95fcb17a9e 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -1080,6 +1080,13 @@ static int __sctp_connect(struct sock* sk,
1080 err = -ENOMEM; 1080 err = -ENOMEM;
1081 goto out_free; 1081 goto out_free;
1082 } 1082 }
1083
1084 err = sctp_assoc_set_bind_addr_from_ep(asoc, scope,
1085 GFP_KERNEL);
1086 if (err < 0) {
1087 goto out_free;
1088 }
1089
1083 } 1090 }
1084 1091
1085 /* Prime the peer's transport structures. */ 1092 /* Prime the peer's transport structures. */
@@ -1095,11 +1102,6 @@ static int __sctp_connect(struct sock* sk,
1095 walk_size += af->sockaddr_len; 1102 walk_size += af->sockaddr_len;
1096 } 1103 }
1097 1104
1098 err = sctp_assoc_set_bind_addr_from_ep(asoc, GFP_KERNEL);
1099 if (err < 0) {
1100 goto out_free;
1101 }
1102
1103 /* In case the user of sctp_connectx() wants an association 1105 /* In case the user of sctp_connectx() wants an association
1104 * id back, assign one now. 1106 * id back, assign one now.
1105 */ 1107 */
@@ -1274,22 +1276,30 @@ SCTP_STATIC int sctp_setsockopt_connectx(struct sock* sk,
1274} 1276}
1275 1277
1276/* 1278/*
1277 * New (hopefully final) interface for the API. The option buffer is used 1279 * New (hopefully final) interface for the API.
1278 * both for the returned association id and the addresses. 1280 * We use the sctp_getaddrs_old structure so that use-space library
1281 * can avoid any unnecessary allocations. The only defferent part
1282 * is that we store the actual length of the address buffer into the
1283 * addrs_num structure member. That way we can re-use the existing
1284 * code.
1279 */ 1285 */
1280SCTP_STATIC int sctp_getsockopt_connectx3(struct sock* sk, int len, 1286SCTP_STATIC int sctp_getsockopt_connectx3(struct sock* sk, int len,
1281 char __user *optval, 1287 char __user *optval,
1282 int __user *optlen) 1288 int __user *optlen)
1283{ 1289{
1290 struct sctp_getaddrs_old param;
1284 sctp_assoc_t assoc_id = 0; 1291 sctp_assoc_t assoc_id = 0;
1285 int err = 0; 1292 int err = 0;
1286 1293
1287 if (len < sizeof(assoc_id)) 1294 if (len < sizeof(param))
1288 return -EINVAL; 1295 return -EINVAL;
1289 1296
1297 if (copy_from_user(&param, optval, sizeof(param)))
1298 return -EFAULT;
1299
1290 err = __sctp_setsockopt_connectx(sk, 1300 err = __sctp_setsockopt_connectx(sk,
1291 (struct sockaddr __user *)(optval + sizeof(assoc_id)), 1301 (struct sockaddr __user *)param.addrs,
1292 len - sizeof(assoc_id), &assoc_id); 1302 param.addr_num, &assoc_id);
1293 1303
1294 if (err == 0 || err == -EINPROGRESS) { 1304 if (err == 0 || err == -EINPROGRESS) {
1295 if (copy_to_user(optval, &assoc_id, sizeof(assoc_id))) 1305 if (copy_to_user(optval, &assoc_id, sizeof(assoc_id)))
@@ -1689,6 +1699,11 @@ SCTP_STATIC int sctp_sendmsg(struct kiocb *iocb, struct sock *sk,
1689 goto out_unlock; 1699 goto out_unlock;
1690 } 1700 }
1691 asoc = new_asoc; 1701 asoc = new_asoc;
1702 err = sctp_assoc_set_bind_addr_from_ep(asoc, scope, GFP_KERNEL);
1703 if (err < 0) {
1704 err = -ENOMEM;
1705 goto out_free;
1706 }
1692 1707
1693 /* If the SCTP_INIT ancillary data is specified, set all 1708 /* If the SCTP_INIT ancillary data is specified, set all
1694 * the association init values accordingly. 1709 * the association init values accordingly.
@@ -1718,11 +1733,6 @@ SCTP_STATIC int sctp_sendmsg(struct kiocb *iocb, struct sock *sk,
1718 err = -ENOMEM; 1733 err = -ENOMEM;
1719 goto out_free; 1734 goto out_free;
1720 } 1735 }
1721 err = sctp_assoc_set_bind_addr_from_ep(asoc, GFP_KERNEL);
1722 if (err < 0) {
1723 err = -ENOMEM;
1724 goto out_free;
1725 }
1726 } 1736 }
1727 1737
1728 /* ASSERT: we have a valid association at this point. */ 1738 /* ASSERT: we have a valid association at this point. */
diff --git a/net/sctp/transport.c b/net/sctp/transport.c
index c256e4839316..37a1184d789f 100644
--- a/net/sctp/transport.c
+++ b/net/sctp/transport.c
@@ -74,7 +74,7 @@ static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer,
74 * given destination transport address, set RTO to the protocol 74 * given destination transport address, set RTO to the protocol
75 * parameter 'RTO.Initial'. 75 * parameter 'RTO.Initial'.
76 */ 76 */
77 peer->last_rto = peer->rto = msecs_to_jiffies(sctp_rto_initial); 77 peer->rto = msecs_to_jiffies(sctp_rto_initial);
78 peer->rtt = 0; 78 peer->rtt = 0;
79 peer->rttvar = 0; 79 peer->rttvar = 0;
80 peer->srtt = 0; 80 peer->srtt = 0;
@@ -308,7 +308,8 @@ void sctp_transport_route(struct sctp_transport *transport,
308 /* Initialize sk->sk_rcv_saddr, if the transport is the 308 /* Initialize sk->sk_rcv_saddr, if the transport is the
309 * association's active path for getsockname(). 309 * association's active path for getsockname().
310 */ 310 */
311 if (asoc && (transport == asoc->peer.active_path)) 311 if (asoc && (!asoc->peer.primary_path ||
312 (transport == asoc->peer.active_path)))
312 opt->pf->af->to_sk_saddr(&transport->saddr, 313 opt->pf->af->to_sk_saddr(&transport->saddr,
313 asoc->base.sk); 314 asoc->base.sk);
314 } else 315 } else
@@ -385,7 +386,6 @@ void sctp_transport_update_rto(struct sctp_transport *tp, __u32 rtt)
385 tp->rto = tp->asoc->rto_max; 386 tp->rto = tp->asoc->rto_max;
386 387
387 tp->rtt = rtt; 388 tp->rtt = rtt;
388 tp->last_rto = tp->rto;
389 389
390 /* Reset rto_pending so that a new RTT measurement is started when a 390 /* Reset rto_pending so that a new RTT measurement is started when a
391 * new data chunk is sent. 391 * new data chunk is sent.
@@ -601,7 +601,7 @@ void sctp_transport_reset(struct sctp_transport *t)
601 */ 601 */
602 t->cwnd = min(4*asoc->pathmtu, max_t(__u32, 2*asoc->pathmtu, 4380)); 602 t->cwnd = min(4*asoc->pathmtu, max_t(__u32, 2*asoc->pathmtu, 4380));
603 t->ssthresh = asoc->peer.i.a_rwnd; 603 t->ssthresh = asoc->peer.i.a_rwnd;
604 t->last_rto = t->rto = asoc->rto_initial; 604 t->rto = asoc->rto_initial;
605 t->rtt = 0; 605 t->rtt = 0;
606 t->srtt = 0; 606 t->srtt = 0;
607 t->rttvar = 0; 607 t->rttvar = 0;
diff --git a/net/sunrpc/addr.c b/net/sunrpc/addr.c
index 22e8fd89477f..c7450c8f0a7c 100644
--- a/net/sunrpc/addr.c
+++ b/net/sunrpc/addr.c
@@ -306,24 +306,25 @@ EXPORT_SYMBOL_GPL(rpc_sockaddr2uaddr);
306 * @sap: buffer into which to plant socket address 306 * @sap: buffer into which to plant socket address
307 * @salen: size of buffer 307 * @salen: size of buffer
308 * 308 *
309 * @uaddr does not have to be '\0'-terminated, but strict_strtoul() and
310 * rpc_pton() require proper string termination to be successful.
311 *
309 * Returns the size of the socket address if successful; otherwise 312 * Returns the size of the socket address if successful; otherwise
310 * zero is returned. 313 * zero is returned.
311 */ 314 */
312size_t rpc_uaddr2sockaddr(const char *uaddr, const size_t uaddr_len, 315size_t rpc_uaddr2sockaddr(const char *uaddr, const size_t uaddr_len,
313 struct sockaddr *sap, const size_t salen) 316 struct sockaddr *sap, const size_t salen)
314{ 317{
315 char *c, buf[RPCBIND_MAXUADDRLEN]; 318 char *c, buf[RPCBIND_MAXUADDRLEN + sizeof('\0')];
316 unsigned long portlo, porthi; 319 unsigned long portlo, porthi;
317 unsigned short port; 320 unsigned short port;
318 321
319 if (uaddr_len > sizeof(buf)) 322 if (uaddr_len > RPCBIND_MAXUADDRLEN)
320 return 0; 323 return 0;
321 324
322 memcpy(buf, uaddr, uaddr_len); 325 memcpy(buf, uaddr, uaddr_len);
323 326
324 buf[uaddr_len] = '\n'; 327 buf[uaddr_len] = '\0';
325 buf[uaddr_len + 1] = '\0';
326
327 c = strrchr(buf, '.'); 328 c = strrchr(buf, '.');
328 if (unlikely(c == NULL)) 329 if (unlikely(c == NULL))
329 return 0; 330 return 0;
@@ -332,9 +333,7 @@ size_t rpc_uaddr2sockaddr(const char *uaddr, const size_t uaddr_len,
332 if (unlikely(portlo > 255)) 333 if (unlikely(portlo > 255))
333 return 0; 334 return 0;
334 335
335 c[0] = '\n'; 336 *c = '\0';
336 c[1] = '\0';
337
338 c = strrchr(buf, '.'); 337 c = strrchr(buf, '.');
339 if (unlikely(c == NULL)) 338 if (unlikely(c == NULL))
340 return 0; 339 return 0;
@@ -345,8 +344,7 @@ size_t rpc_uaddr2sockaddr(const char *uaddr, const size_t uaddr_len,
345 344
346 port = (unsigned short)((porthi << 8) | portlo); 345 port = (unsigned short)((porthi << 8) | portlo);
347 346
348 c[0] = '\0'; 347 *c = '\0';
349
350 if (rpc_pton(buf, strlen(buf), sap, salen) == 0) 348 if (rpc_pton(buf, strlen(buf), sap, salen) == 0)
351 return 0; 349 return 0;
352 350
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index ccc5e83cae5d..1c246a4f491e 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -111,7 +111,7 @@ static void svc_release_skb(struct svc_rqst *rqstp)
111 rqstp->rq_xprt_ctxt = NULL; 111 rqstp->rq_xprt_ctxt = NULL;
112 112
113 dprintk("svc: service %p, releasing skb %p\n", rqstp, skb); 113 dprintk("svc: service %p, releasing skb %p\n", rqstp, skb);
114 skb_free_datagram(svsk->sk_sk, skb); 114 skb_free_datagram_locked(svsk->sk_sk, skb);
115 } 115 }
116} 116}
117 117
@@ -578,7 +578,7 @@ static int svc_udp_recvfrom(struct svc_rqst *rqstp)
578 "svc: received unknown control message %d/%d; " 578 "svc: received unknown control message %d/%d; "
579 "dropping RPC reply datagram\n", 579 "dropping RPC reply datagram\n",
580 cmh->cmsg_level, cmh->cmsg_type); 580 cmh->cmsg_level, cmh->cmsg_type);
581 skb_free_datagram(svsk->sk_sk, skb); 581 skb_free_datagram_locked(svsk->sk_sk, skb);
582 return 0; 582 return 0;
583 } 583 }
584 584
@@ -588,18 +588,18 @@ static int svc_udp_recvfrom(struct svc_rqst *rqstp)
588 if (csum_partial_copy_to_xdr(&rqstp->rq_arg, skb)) { 588 if (csum_partial_copy_to_xdr(&rqstp->rq_arg, skb)) {
589 local_bh_enable(); 589 local_bh_enable();
590 /* checksum error */ 590 /* checksum error */
591 skb_free_datagram(svsk->sk_sk, skb); 591 skb_free_datagram_locked(svsk->sk_sk, skb);
592 return 0; 592 return 0;
593 } 593 }
594 local_bh_enable(); 594 local_bh_enable();
595 skb_free_datagram(svsk->sk_sk, skb); 595 skb_free_datagram_locked(svsk->sk_sk, skb);
596 } else { 596 } else {
597 /* we can use it in-place */ 597 /* we can use it in-place */
598 rqstp->rq_arg.head[0].iov_base = skb->data + 598 rqstp->rq_arg.head[0].iov_base = skb->data +
599 sizeof(struct udphdr); 599 sizeof(struct udphdr);
600 rqstp->rq_arg.head[0].iov_len = len; 600 rqstp->rq_arg.head[0].iov_len = len;
601 if (skb_checksum_complete(skb)) { 601 if (skb_checksum_complete(skb)) {
602 skb_free_datagram(svsk->sk_sk, skb); 602 skb_free_datagram_locked(svsk->sk_sk, skb);
603 return 0; 603 return 0;
604 } 604 }
605 rqstp->rq_xprt_ctxt = skb; 605 rqstp->rq_xprt_ctxt = skb;
diff --git a/net/wireless/core.h b/net/wireless/core.h
index 2a33d8bc886b..68b321997d4c 100644
--- a/net/wireless/core.h
+++ b/net/wireless/core.h
@@ -358,6 +358,7 @@ int cfg80211_mgd_wext_connect(struct cfg80211_registered_device *rdev,
358 struct wireless_dev *wdev); 358 struct wireless_dev *wdev);
359 359
360void cfg80211_conn_work(struct work_struct *work); 360void cfg80211_conn_work(struct work_struct *work);
361void cfg80211_sme_failed_assoc(struct wireless_dev *wdev);
361bool cfg80211_sme_failed_reassoc(struct wireless_dev *wdev); 362bool cfg80211_sme_failed_reassoc(struct wireless_dev *wdev);
362 363
363/* internal helpers */ 364/* internal helpers */
diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c
index 79d2eec54cec..0a6b7a0eca6b 100644
--- a/net/wireless/mlme.c
+++ b/net/wireless/mlme.c
@@ -62,6 +62,7 @@ void cfg80211_send_rx_assoc(struct net_device *dev, const u8 *buf, size_t len)
62 u8 *ie = mgmt->u.assoc_resp.variable; 62 u8 *ie = mgmt->u.assoc_resp.variable;
63 int i, ieoffs = offsetof(struct ieee80211_mgmt, u.assoc_resp.variable); 63 int i, ieoffs = offsetof(struct ieee80211_mgmt, u.assoc_resp.variable);
64 struct cfg80211_internal_bss *bss = NULL; 64 struct cfg80211_internal_bss *bss = NULL;
65 bool need_connect_result = true;
65 66
66 wdev_lock(wdev); 67 wdev_lock(wdev);
67 68
@@ -94,6 +95,14 @@ void cfg80211_send_rx_assoc(struct net_device *dev, const u8 *buf, size_t len)
94 } 95 }
95 96
96 WARN_ON(!bss); 97 WARN_ON(!bss);
98 } else if (wdev->conn) {
99 cfg80211_sme_failed_assoc(wdev);
100 need_connect_result = false;
101 /*
102 * do not call connect_result() now because the
103 * sme will schedule work that does it later.
104 */
105 goto out;
97 } 106 }
98 107
99 if (!wdev->conn && wdev->sme_state == CFG80211_SME_IDLE) { 108 if (!wdev->conn && wdev->sme_state == CFG80211_SME_IDLE) {
diff --git a/net/wireless/sme.c b/net/wireless/sme.c
index 93c3ed329204..9f0b2800a9d7 100644
--- a/net/wireless/sme.c
+++ b/net/wireless/sme.c
@@ -26,6 +26,7 @@ struct cfg80211_conn {
26 CFG80211_CONN_AUTHENTICATING, 26 CFG80211_CONN_AUTHENTICATING,
27 CFG80211_CONN_ASSOCIATE_NEXT, 27 CFG80211_CONN_ASSOCIATE_NEXT,
28 CFG80211_CONN_ASSOCIATING, 28 CFG80211_CONN_ASSOCIATING,
29 CFG80211_CONN_DEAUTH_ASSOC_FAIL,
29 } state; 30 } state;
30 u8 bssid[ETH_ALEN], prev_bssid[ETH_ALEN]; 31 u8 bssid[ETH_ALEN], prev_bssid[ETH_ALEN];
31 u8 *ie; 32 u8 *ie;
@@ -148,6 +149,12 @@ static int cfg80211_conn_do_work(struct wireless_dev *wdev)
148 NULL, 0, 149 NULL, 0,
149 WLAN_REASON_DEAUTH_LEAVING); 150 WLAN_REASON_DEAUTH_LEAVING);
150 return err; 151 return err;
152 case CFG80211_CONN_DEAUTH_ASSOC_FAIL:
153 __cfg80211_mlme_deauth(rdev, wdev->netdev, params->bssid,
154 NULL, 0,
155 WLAN_REASON_DEAUTH_LEAVING);
156 /* return an error so that we call __cfg80211_connect_result() */
157 return -EINVAL;
151 default: 158 default:
152 return 0; 159 return 0;
153 } 160 }
@@ -158,6 +165,7 @@ void cfg80211_conn_work(struct work_struct *work)
158 struct cfg80211_registered_device *rdev = 165 struct cfg80211_registered_device *rdev =
159 container_of(work, struct cfg80211_registered_device, conn_work); 166 container_of(work, struct cfg80211_registered_device, conn_work);
160 struct wireless_dev *wdev; 167 struct wireless_dev *wdev;
168 u8 bssid_buf[ETH_ALEN], *bssid = NULL;
161 169
162 rtnl_lock(); 170 rtnl_lock();
163 cfg80211_lock_rdev(rdev); 171 cfg80211_lock_rdev(rdev);
@@ -173,10 +181,13 @@ void cfg80211_conn_work(struct work_struct *work)
173 wdev_unlock(wdev); 181 wdev_unlock(wdev);
174 continue; 182 continue;
175 } 183 }
184 if (wdev->conn->params.bssid) {
185 memcpy(bssid_buf, wdev->conn->params.bssid, ETH_ALEN);
186 bssid = bssid_buf;
187 }
176 if (cfg80211_conn_do_work(wdev)) 188 if (cfg80211_conn_do_work(wdev))
177 __cfg80211_connect_result( 189 __cfg80211_connect_result(
178 wdev->netdev, 190 wdev->netdev, bssid,
179 wdev->conn->params.bssid,
180 NULL, 0, NULL, 0, 191 NULL, 0, NULL, 0,
181 WLAN_STATUS_UNSPECIFIED_FAILURE, 192 WLAN_STATUS_UNSPECIFIED_FAILURE,
182 false, NULL); 193 false, NULL);
@@ -337,6 +348,15 @@ bool cfg80211_sme_failed_reassoc(struct wireless_dev *wdev)
337 return true; 348 return true;
338} 349}
339 350
351void cfg80211_sme_failed_assoc(struct wireless_dev *wdev)
352{
353 struct wiphy *wiphy = wdev->wiphy;
354 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy);
355
356 wdev->conn->state = CFG80211_CONN_DEAUTH_ASSOC_FAIL;
357 schedule_work(&rdev->conn_work);
358}
359
340void __cfg80211_connect_result(struct net_device *dev, const u8 *bssid, 360void __cfg80211_connect_result(struct net_device *dev, const u8 *bssid,
341 const u8 *req_ie, size_t req_ie_len, 361 const u8 *req_ie, size_t req_ie_len,
342 const u8 *resp_ie, size_t resp_ie_len, 362 const u8 *resp_ie, size_t resp_ie_len,
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 87bbb8bce9bf..bc4114f1ab30 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2,7 +2,7 @@
2# (c) 2001, Dave Jones. <davej@redhat.com> (the file handling bit) 2# (c) 2001, Dave Jones. <davej@redhat.com> (the file handling bit)
3# (c) 2005, Joel Schopp <jschopp@austin.ibm.com> (the ugly bit) 3# (c) 2005, Joel Schopp <jschopp@austin.ibm.com> (the ugly bit)
4# (c) 2007,2008, Andy Whitcroft <apw@uk.ibm.com> (new conditions, test suite) 4# (c) 2007,2008, Andy Whitcroft <apw@uk.ibm.com> (new conditions, test suite)
5# (c) 2008, Andy Whitcroft <apw@canonical.com> 5# (c) 2008,2009, Andy Whitcroft <apw@canonical.com>
6# Licensed under the terms of the GNU GPL License version 2 6# Licensed under the terms of the GNU GPL License version 2
7 7
8use strict; 8use strict;
@@ -10,7 +10,7 @@ use strict;
10my $P = $0; 10my $P = $0;
11$P =~ s@.*/@@g; 11$P =~ s@.*/@@g;
12 12
13my $V = '0.29'; 13my $V = '0.30';
14 14
15use Getopt::Long qw(:config no_auto_abbrev); 15use Getopt::Long qw(:config no_auto_abbrev);
16 16
@@ -130,7 +130,10 @@ if ($tree) {
130 130
131my $emitted_corrupt = 0; 131my $emitted_corrupt = 0;
132 132
133our $Ident = qr{[A-Za-z_][A-Za-z\d_]*}; 133our $Ident = qr{
134 [A-Za-z_][A-Za-z\d_]*
135 (?:\s*\#\#\s*[A-Za-z_][A-Za-z\d_]*)*
136 }x;
134our $Storage = qr{extern|static|asmlinkage}; 137our $Storage = qr{extern|static|asmlinkage};
135our $Sparse = qr{ 138our $Sparse = qr{
136 __user| 139 __user|
@@ -997,23 +1000,25 @@ sub annotate_values {
997 1000
998sub possible { 1001sub possible {
999 my ($possible, $line) = @_; 1002 my ($possible, $line) = @_;
1000 1003 my $notPermitted = qr{(?:
1001 print "CHECK<$possible> ($line)\n" if ($dbg_possible > 2);
1002 if ($possible !~ /(?:
1003 ^(?: 1004 ^(?:
1004 $Modifier| 1005 $Modifier|
1005 $Storage| 1006 $Storage|
1006 $Type| 1007 $Type|
1007 DEFINE_\S+| 1008 DEFINE_\S+
1009 )$|
1010 ^(?:
1008 goto| 1011 goto|
1009 return| 1012 return|
1010 case| 1013 case|
1011 else| 1014 else|
1012 asm|__asm__| 1015 asm|__asm__|
1013 do 1016 do
1014 )$| 1017 )(?:\s|$)|
1015 ^(?:typedef|struct|enum)\b 1018 ^(?:typedef|struct|enum)\b
1016 )/x) { 1019 )}x;
1020 warn "CHECK<$possible> ($line)\n" if ($dbg_possible > 2);
1021 if ($possible !~ $notPermitted) {
1017 # Check for modifiers. 1022 # Check for modifiers.
1018 $possible =~ s/\s*$Storage\s*//g; 1023 $possible =~ s/\s*$Storage\s*//g;
1019 $possible =~ s/\s*$Sparse\s*//g; 1024 $possible =~ s/\s*$Sparse\s*//g;
@@ -1022,8 +1027,10 @@ sub possible {
1022 } elsif ($possible =~ /\s/) { 1027 } elsif ($possible =~ /\s/) {
1023 $possible =~ s/\s*$Type\s*//g; 1028 $possible =~ s/\s*$Type\s*//g;
1024 for my $modifier (split(' ', $possible)) { 1029 for my $modifier (split(' ', $possible)) {
1025 warn "MODIFIER: $modifier ($possible) ($line)\n" if ($dbg_possible); 1030 if ($modifier !~ $notPermitted) {
1026 push(@modifierList, $modifier); 1031 warn "MODIFIER: $modifier ($possible) ($line)\n" if ($dbg_possible);
1032 push(@modifierList, $modifier);
1033 }
1027 } 1034 }
1028 1035
1029 } else { 1036 } else {
@@ -1138,6 +1145,7 @@ sub process {
1138 # suppression flags 1145 # suppression flags
1139 my %suppress_ifbraces; 1146 my %suppress_ifbraces;
1140 my %suppress_whiletrailers; 1147 my %suppress_whiletrailers;
1148 my %suppress_export;
1141 1149
1142 # Pre-scan the patch sanitizing the lines. 1150 # Pre-scan the patch sanitizing the lines.
1143 # Pre-scan the patch looking for any __setup documentation. 1151 # Pre-scan the patch looking for any __setup documentation.
@@ -1230,7 +1238,6 @@ sub process {
1230 $linenr++; 1238 $linenr++;
1231 1239
1232 my $rawline = $rawlines[$linenr - 1]; 1240 my $rawline = $rawlines[$linenr - 1];
1233 my $hunk_line = ($realcnt != 0);
1234 1241
1235#extract the line range in the file after the patch is applied 1242#extract the line range in the file after the patch is applied
1236 if ($line=~/^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) { 1243 if ($line=~/^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) {
@@ -1247,6 +1254,7 @@ sub process {
1247 1254
1248 %suppress_ifbraces = (); 1255 %suppress_ifbraces = ();
1249 %suppress_whiletrailers = (); 1256 %suppress_whiletrailers = ();
1257 %suppress_export = ();
1250 next; 1258 next;
1251 1259
1252# track the line number as we move through the hunk, note that 1260# track the line number as we move through the hunk, note that
@@ -1270,6 +1278,8 @@ sub process {
1270 $realcnt--; 1278 $realcnt--;
1271 } 1279 }
1272 1280
1281 my $hunk_line = ($realcnt != 0);
1282
1273#make up the handle for any error we report on this line 1283#make up the handle for any error we report on this line
1274 $prefix = "$filename:$realline: " if ($emacs && $file); 1284 $prefix = "$filename:$realline: " if ($emacs && $file);
1275 $prefix = "$filename:$linenr: " if ($emacs && !$file); 1285 $prefix = "$filename:$linenr: " if ($emacs && !$file);
@@ -1420,13 +1430,22 @@ sub process {
1420 } 1430 }
1421 1431
1422# Check for potential 'bare' types 1432# Check for potential 'bare' types
1423 my ($stat, $cond, $line_nr_next, $remain_next, $off_next); 1433 my ($stat, $cond, $line_nr_next, $remain_next, $off_next,
1434 $realline_next);
1424 if ($realcnt && $line =~ /.\s*\S/) { 1435 if ($realcnt && $line =~ /.\s*\S/) {
1425 ($stat, $cond, $line_nr_next, $remain_next, $off_next) = 1436 ($stat, $cond, $line_nr_next, $remain_next, $off_next) =
1426 ctx_statement_block($linenr, $realcnt, 0); 1437 ctx_statement_block($linenr, $realcnt, 0);
1427 $stat =~ s/\n./\n /g; 1438 $stat =~ s/\n./\n /g;
1428 $cond =~ s/\n./\n /g; 1439 $cond =~ s/\n./\n /g;
1429 1440
1441 # Find the real next line.
1442 $realline_next = $line_nr_next;
1443 if (defined $realline_next &&
1444 (!defined $lines[$realline_next - 1] ||
1445 substr($lines[$realline_next - 1], $off_next) =~ /^\s*$/)) {
1446 $realline_next++;
1447 }
1448
1430 my $s = $stat; 1449 my $s = $stat;
1431 $s =~ s/{.*$//s; 1450 $s =~ s/{.*$//s;
1432 1451
@@ -1661,8 +1680,8 @@ sub process {
1661 } 1680 }
1662 1681
1663# check for initialisation to aggregates open brace on the next line 1682# check for initialisation to aggregates open brace on the next line
1664 if ($prevline =~ /$Declare\s*$Ident\s*=\s*$/ && 1683 if ($line =~ /^.\s*{/ &&
1665 $line =~ /^.\s*{/) { 1684 $prevline =~ /(?:^|[^=])=\s*$/) {
1666 ERROR("that open brace { should be on the previous line\n" . $hereprev); 1685 ERROR("that open brace { should be on the previous line\n" . $hereprev);
1667 } 1686 }
1668 1687
@@ -1687,21 +1706,40 @@ sub process {
1687 $line =~ s@//.*@@; 1706 $line =~ s@//.*@@;
1688 $opline =~ s@//.*@@; 1707 $opline =~ s@//.*@@;
1689 1708
1690#EXPORT_SYMBOL should immediately follow its function closing }. 1709# EXPORT_SYMBOL should immediately follow the thing it is exporting, consider
1691 if (($line =~ /EXPORT_SYMBOL.*\((.*)\)/) || 1710# the whole statement.
1692 ($line =~ /EXPORT_UNUSED_SYMBOL.*\((.*)\)/)) { 1711#print "APW <$lines[$realline_next - 1]>\n";
1712 if (defined $realline_next &&
1713 exists $lines[$realline_next - 1] &&
1714 !defined $suppress_export{$realline_next} &&
1715 ($lines[$realline_next - 1] =~ /EXPORT_SYMBOL.*\((.*)\)/ ||
1716 $lines[$realline_next - 1] =~ /EXPORT_UNUSED_SYMBOL.*\((.*)\)/)) {
1693 my $name = $1; 1717 my $name = $1;
1694 if ($prevline !~ /(?: 1718 if ($stat !~ /(?:
1695 ^.}| 1719 \n.}\s*$|
1696 ^.DEFINE_$Ident\(\Q$name\E\)| 1720 ^.DEFINE_$Ident\(\Q$name\E\)|
1697 ^.DECLARE_$Ident\(\Q$name\E\)| 1721 ^.DECLARE_$Ident\(\Q$name\E\)|
1698 ^.LIST_HEAD\(\Q$name\E\)| 1722 ^.LIST_HEAD\(\Q$name\E\)|
1699 ^.$Type\s*\(\s*\*\s*\Q$name\E\s*\)\s*\(| 1723 ^.(?:$Storage\s+)?$Type\s*\(\s*\*\s*\Q$name\E\s*\)\s*\(|
1700 \b\Q$name\E(?:\s+$Attribute)?\s*(?:;|=|\[) 1724 \b\Q$name\E(?:\s+$Attribute)*\s*(?:;|=|\[|\()
1701 )/x) { 1725 )/x) {
1702 WARN("EXPORT_SYMBOL(foo); should immediately follow its function/variable\n" . $herecurr); 1726#print "FOO A<$lines[$realline_next - 1]> stat<$stat> name<$name>\n";
1727 $suppress_export{$realline_next} = 2;
1728 } else {
1729 $suppress_export{$realline_next} = 1;
1703 } 1730 }
1704 } 1731 }
1732 if (!defined $suppress_export{$linenr} &&
1733 $prevline =~ /^.\s*$/ &&
1734 ($line =~ /EXPORT_SYMBOL.*\((.*)\)/ ||
1735 $line =~ /EXPORT_UNUSED_SYMBOL.*\((.*)\)/)) {
1736#print "FOO B <$lines[$linenr - 1]>\n";
1737 $suppress_export{$linenr} = 2;
1738 }
1739 if (defined $suppress_export{$linenr} &&
1740 $suppress_export{$linenr} == 2) {
1741 WARN("EXPORT_SYMBOL(foo); should immediately follow its function/variable\n" . $herecurr);
1742 }
1705 1743
1706# check for external initialisers. 1744# check for external initialisers.
1707 if ($line =~ /^.$Type\s*$Ident\s*(?:\s+$Modifier)*\s*=\s*(0|NULL|false)\s*;/) { 1745 if ($line =~ /^.$Type\s*$Ident\s*(?:\s+$Modifier)*\s*=\s*(0|NULL|false)\s*;/) {
diff --git a/scripts/dtc/data.c b/scripts/dtc/data.c
index dd2e3d39d4c1..fe555e819bf8 100644
--- a/scripts/dtc/data.c
+++ b/scripts/dtc/data.c
@@ -217,7 +217,7 @@ struct data data_insert_at_marker(struct data d, struct marker *m,
217 return d; 217 return d;
218} 218}
219 219
220struct data data_append_markers(struct data d, struct marker *m) 220static struct data data_append_markers(struct data d, struct marker *m)
221{ 221{
222 struct marker **mp = &d.markers; 222 struct marker **mp = &d.markers;
223 223
diff --git a/scripts/dtc/dtc-lexer.l b/scripts/dtc/dtc-lexer.l
index 44dbfd3f0976..a627bbee91d4 100644
--- a/scripts/dtc/dtc-lexer.l
+++ b/scripts/dtc/dtc-lexer.l
@@ -18,7 +18,7 @@
18 * USA 18 * USA
19 */ 19 */
20 20
21%option noyywrap nounput yylineno 21%option noyywrap noinput nounput yylineno
22 22
23%x INCLUDE 23%x INCLUDE
24%x BYTESTRING 24%x BYTESTRING
diff --git a/scripts/dtc/dtc-lexer.lex.c_shipped b/scripts/dtc/dtc-lexer.lex.c_shipped
index ac392cb040f6..e27cc636e326 100644
--- a/scripts/dtc/dtc-lexer.lex.c_shipped
+++ b/scripts/dtc/dtc-lexer.lex.c_shipped
@@ -9,7 +9,7 @@
9#define FLEX_SCANNER 9#define FLEX_SCANNER
10#define YY_FLEX_MAJOR_VERSION 2 10#define YY_FLEX_MAJOR_VERSION 2
11#define YY_FLEX_MINOR_VERSION 5 11#define YY_FLEX_MINOR_VERSION 5
12#define YY_FLEX_SUBMINOR_VERSION 34 12#define YY_FLEX_SUBMINOR_VERSION 35
13#if YY_FLEX_SUBMINOR_VERSION > 0 13#if YY_FLEX_SUBMINOR_VERSION > 0
14#define FLEX_BETA 14#define FLEX_BETA
15#endif 15#endif
@@ -54,7 +54,6 @@ typedef int flex_int32_t;
54typedef unsigned char flex_uint8_t; 54typedef unsigned char flex_uint8_t;
55typedef unsigned short int flex_uint16_t; 55typedef unsigned short int flex_uint16_t;
56typedef unsigned int flex_uint32_t; 56typedef unsigned int flex_uint32_t;
57#endif /* ! C99 */
58 57
59/* Limits of integral types. */ 58/* Limits of integral types. */
60#ifndef INT8_MIN 59#ifndef INT8_MIN
@@ -85,6 +84,8 @@ typedef unsigned int flex_uint32_t;
85#define UINT32_MAX (4294967295U) 84#define UINT32_MAX (4294967295U)
86#endif 85#endif
87 86
87#endif /* ! C99 */
88
88#endif /* ! FLEXINT_H */ 89#endif /* ! FLEXINT_H */
89 90
90#ifdef __cplusplus 91#ifdef __cplusplus
@@ -141,7 +142,15 @@ typedef unsigned int flex_uint32_t;
141 142
142/* Size of default input buffer. */ 143/* Size of default input buffer. */
143#ifndef YY_BUF_SIZE 144#ifndef YY_BUF_SIZE
145#ifdef __ia64__
146/* On IA-64, the buffer size is 16k, not 8k.
147 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
148 * Ditto for the __ia64__ case accordingly.
149 */
150#define YY_BUF_SIZE 32768
151#else
144#define YY_BUF_SIZE 16384 152#define YY_BUF_SIZE 16384
153#endif /* __ia64__ */
145#endif 154#endif
146 155
147/* The state buf must be large enough to hold one state per character in the main buffer. 156/* The state buf must be large enough to hold one state per character in the main buffer.
@@ -192,13 +201,6 @@ extern FILE *yyin, *yyout;
192 201
193#define unput(c) yyunput( c, (yytext_ptr) ) 202#define unput(c) yyunput( c, (yytext_ptr) )
194 203
195/* The following is because we cannot portably get our hands on size_t
196 * (without autoconf's help, which isn't available because we want
197 * flex-generated scanners to compile on their own).
198 * Given that the standard has decreed that size_t exists since 1989,
199 * I guess we can afford to depend on it. Manoj.
200 */
201
202#ifndef YY_TYPEDEF_YY_SIZE_T 204#ifndef YY_TYPEDEF_YY_SIZE_T
203#define YY_TYPEDEF_YY_SIZE_T 205#define YY_TYPEDEF_YY_SIZE_T
204typedef size_t yy_size_t; 206typedef size_t yy_size_t;
@@ -604,6 +606,7 @@ char *yytext;
604 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 606 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
605 * USA 607 * USA
606 */ 608 */
609#define YY_NO_INPUT 1
607 610
608 611
609 612
@@ -634,7 +637,7 @@ static int dts_version; /* = 0 */
634 637
635static void push_input_file(const char *filename); 638static void push_input_file(const char *filename);
636static int pop_input_file(void); 639static int pop_input_file(void);
637#line 638 "dtc-lexer.lex.c" 640#line 641 "dtc-lexer.lex.c"
638 641
639#define INITIAL 0 642#define INITIAL 0
640#define INCLUDE 1 643#define INCLUDE 1
@@ -656,6 +659,35 @@ static int pop_input_file(void);
656 659
657static int yy_init_globals (void ); 660static int yy_init_globals (void );
658 661
662/* Accessor methods to globals.
663 These are made visible to non-reentrant scanners for convenience. */
664
665int yylex_destroy (void );
666
667int yyget_debug (void );
668
669void yyset_debug (int debug_flag );
670
671YY_EXTRA_TYPE yyget_extra (void );
672
673void yyset_extra (YY_EXTRA_TYPE user_defined );
674
675FILE *yyget_in (void );
676
677void yyset_in (FILE * in_str );
678
679FILE *yyget_out (void );
680
681void yyset_out (FILE * out_str );
682
683int yyget_leng (void );
684
685char *yyget_text (void );
686
687int yyget_lineno (void );
688
689void yyset_lineno (int line_number );
690
659/* Macros after this point can all be overridden by user definitions in 691/* Macros after this point can all be overridden by user definitions in
660 * section 1. 692 * section 1.
661 */ 693 */
@@ -688,7 +720,12 @@ static int input (void );
688 720
689/* Amount of stuff to slurp up with each read. */ 721/* Amount of stuff to slurp up with each read. */
690#ifndef YY_READ_BUF_SIZE 722#ifndef YY_READ_BUF_SIZE
723#ifdef __ia64__
724/* On IA-64, the buffer size is 16k, not 8k */
725#define YY_READ_BUF_SIZE 16384
726#else
691#define YY_READ_BUF_SIZE 8192 727#define YY_READ_BUF_SIZE 8192
728#endif /* __ia64__ */
692#endif 729#endif
693 730
694/* Copy whatever the last rule matched to the standard output. */ 731/* Copy whatever the last rule matched to the standard output. */
@@ -696,7 +733,7 @@ static int input (void );
696/* This used to be an fputs(), but since the string might contain NUL's, 733/* This used to be an fputs(), but since the string might contain NUL's,
697 * we now use fwrite(). 734 * we now use fwrite().
698 */ 735 */
699#define ECHO fwrite( yytext, yyleng, 1, yyout ) 736#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
700#endif 737#endif
701 738
702/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 739/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
@@ -707,7 +744,7 @@ static int input (void );
707 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ 744 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
708 { \ 745 { \
709 int c = '*'; \ 746 int c = '*'; \
710 int n; \ 747 size_t n; \
711 for ( n = 0; n < max_size && \ 748 for ( n = 0; n < max_size && \
712 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ 749 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
713 buf[n] = (char) c; \ 750 buf[n] = (char) c; \
@@ -791,7 +828,7 @@ YY_DECL
791 828
792#line 64 "dtc-lexer.l" 829#line 64 "dtc-lexer.l"
793 830
794#line 795 "dtc-lexer.lex.c" 831#line 832 "dtc-lexer.lex.c"
795 832
796 if ( !(yy_init) ) 833 if ( !(yy_init) )
797 { 834 {
@@ -1116,7 +1153,7 @@ YY_RULE_SETUP
1116#line 222 "dtc-lexer.l" 1153#line 222 "dtc-lexer.l"
1117ECHO; 1154ECHO;
1118 YY_BREAK 1155 YY_BREAK
1119#line 1120 "dtc-lexer.lex.c" 1156#line 1157 "dtc-lexer.lex.c"
1120 1157
1121 case YY_END_OF_BUFFER: 1158 case YY_END_OF_BUFFER:
1122 { 1159 {
@@ -1840,8 +1877,8 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
1840 1877
1841/** Setup the input buffer state to scan the given bytes. The next call to yylex() will 1878/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
1842 * scan from a @e copy of @a bytes. 1879 * scan from a @e copy of @a bytes.
1843 * @param bytes the byte buffer to scan 1880 * @param yybytes the byte buffer to scan
1844 * @param len the number of bytes in the buffer pointed to by @a bytes. 1881 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
1845 * 1882 *
1846 * @return the newly allocated buffer state object. 1883 * @return the newly allocated buffer state object.
1847 */ 1884 */
diff --git a/scripts/dtc/libfdt/fdt_ro.c b/scripts/dtc/libfdt/fdt_ro.c
index fbbba44fcd0d..22e692919ff9 100644
--- a/scripts/dtc/libfdt/fdt_ro.c
+++ b/scripts/dtc/libfdt/fdt_ro.c
@@ -411,7 +411,7 @@ int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle)
411 &phandle, sizeof(phandle)); 411 &phandle, sizeof(phandle));
412} 412}
413 413
414int _stringlist_contains(const char *strlist, int listlen, const char *str) 414static int _stringlist_contains(const char *strlist, int listlen, const char *str)
415{ 415{
416 int len = strlen(str); 416 int len = strlen(str);
417 const char *p; 417 const char *p;
diff --git a/scripts/dtc/treesource.c b/scripts/dtc/treesource.c
index ebeb6eb27907..1521ff11bb97 100644
--- a/scripts/dtc/treesource.c
+++ b/scripts/dtc/treesource.c
@@ -52,7 +52,7 @@ static void write_prefix(FILE *f, int level)
52 fputc('\t', f); 52 fputc('\t', f);
53} 53}
54 54
55int isstring(char c) 55static int isstring(char c)
56{ 56{
57 return (isprint(c) 57 return (isprint(c)
58 || (c == '\0') 58 || (c == '\0')
diff --git a/scripts/genksyms/keywords.c_shipped b/scripts/genksyms/keywords.c_shipped
index 971e0113ae7a..287467a2e8c7 100644
--- a/scripts/genksyms/keywords.c_shipped
+++ b/scripts/genksyms/keywords.c_shipped
@@ -1,4 +1,4 @@
1/* ANSI-C code produced by gperf version 3.0.2 */ 1/* ANSI-C code produced by gperf version 3.0.3 */
2/* Command-line: gperf -L ANSI-C -a -C -E -g -H is_reserved_hash -k '1,3,$' -N is_reserved_word -p -t scripts/genksyms/keywords.gperf */ 2/* Command-line: gperf -L ANSI-C -a -C -E -g -H is_reserved_hash -k '1,3,$' -N is_reserved_word -p -t scripts/genksyms/keywords.gperf */
3 3
4#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ 4#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -30,7 +30,9 @@
30 30
31#line 1 "scripts/genksyms/keywords.gperf" 31#line 1 "scripts/genksyms/keywords.gperf"
32 32
33#line 3 "scripts/genksyms/keywords.gperf" 33struct resword;
34static const struct resword *is_reserved_word(register const char *str, register unsigned int len);
35#line 5 "scripts/genksyms/keywords.gperf"
34struct resword { const char *name; int token; }; 36struct resword { const char *name; int token; };
35/* maximum key range = 62, duplicates = 0 */ 37/* maximum key range = 62, duplicates = 0 */
36 38
@@ -78,6 +80,9 @@ is_reserved_hash (register const char *str, register unsigned int len)
78 80
79#ifdef __GNUC__ 81#ifdef __GNUC__
80__inline 82__inline
83#ifdef __GNUC_STDC_INLINE__
84__attribute__ ((__gnu_inline__))
85#endif
81#endif 86#endif
82const struct resword * 87const struct resword *
83is_reserved_word (register const char *str, register unsigned int len) 88is_reserved_word (register const char *str, register unsigned int len)
@@ -94,105 +99,105 @@ is_reserved_word (register const char *str, register unsigned int len)
94 static const struct resword wordlist[] = 99 static const struct resword wordlist[] =
95 { 100 {
96 {""}, {""}, {""}, 101 {""}, {""}, {""},
97#line 26 "scripts/genksyms/keywords.gperf" 102#line 28 "scripts/genksyms/keywords.gperf"
98 {"asm", ASM_KEYW}, 103 {"asm", ASM_KEYW},
99 {""}, 104 {""},
100#line 8 "scripts/genksyms/keywords.gperf" 105#line 10 "scripts/genksyms/keywords.gperf"
101 {"__asm", ASM_KEYW}, 106 {"__asm", ASM_KEYW},
102 {""}, 107 {""},
103#line 9 "scripts/genksyms/keywords.gperf" 108#line 11 "scripts/genksyms/keywords.gperf"
104 {"__asm__", ASM_KEYW}, 109 {"__asm__", ASM_KEYW},
105 {""}, {""}, 110 {""}, {""},
106#line 52 "scripts/genksyms/keywords.gperf" 111#line 54 "scripts/genksyms/keywords.gperf"
107 {"__typeof__", TYPEOF_KEYW}, 112 {"__typeof__", TYPEOF_KEYW},
108 {""}, 113 {""},
109#line 12 "scripts/genksyms/keywords.gperf" 114#line 14 "scripts/genksyms/keywords.gperf"
110 {"__const", CONST_KEYW}, 115 {"__const", CONST_KEYW},
111#line 11 "scripts/genksyms/keywords.gperf"
112 {"__attribute__", ATTRIBUTE_KEYW},
113#line 13 "scripts/genksyms/keywords.gperf" 116#line 13 "scripts/genksyms/keywords.gperf"
117 {"__attribute__", ATTRIBUTE_KEYW},
118#line 15 "scripts/genksyms/keywords.gperf"
114 {"__const__", CONST_KEYW}, 119 {"__const__", CONST_KEYW},
115#line 18 "scripts/genksyms/keywords.gperf" 120#line 20 "scripts/genksyms/keywords.gperf"
116 {"__signed__", SIGNED_KEYW}, 121 {"__signed__", SIGNED_KEYW},
117#line 44 "scripts/genksyms/keywords.gperf" 122#line 46 "scripts/genksyms/keywords.gperf"
118 {"static", STATIC_KEYW}, 123 {"static", STATIC_KEYW},
119#line 20 "scripts/genksyms/keywords.gperf" 124#line 22 "scripts/genksyms/keywords.gperf"
120 {"__volatile__", VOLATILE_KEYW}, 125 {"__volatile__", VOLATILE_KEYW},
121#line 39 "scripts/genksyms/keywords.gperf" 126#line 41 "scripts/genksyms/keywords.gperf"
122 {"int", INT_KEYW}, 127 {"int", INT_KEYW},
123#line 32 "scripts/genksyms/keywords.gperf" 128#line 34 "scripts/genksyms/keywords.gperf"
124 {"char", CHAR_KEYW}, 129 {"char", CHAR_KEYW},
125#line 33 "scripts/genksyms/keywords.gperf" 130#line 35 "scripts/genksyms/keywords.gperf"
126 {"const", CONST_KEYW}, 131 {"const", CONST_KEYW},
127#line 45 "scripts/genksyms/keywords.gperf" 132#line 47 "scripts/genksyms/keywords.gperf"
128 {"struct", STRUCT_KEYW}, 133 {"struct", STRUCT_KEYW},
129#line 24 "scripts/genksyms/keywords.gperf" 134#line 26 "scripts/genksyms/keywords.gperf"
130 {"__restrict__", RESTRICT_KEYW}, 135 {"__restrict__", RESTRICT_KEYW},
131#line 25 "scripts/genksyms/keywords.gperf" 136#line 27 "scripts/genksyms/keywords.gperf"
132 {"restrict", RESTRICT_KEYW}, 137 {"restrict", RESTRICT_KEYW},
133#line 23 "scripts/genksyms/keywords.gperf" 138#line 25 "scripts/genksyms/keywords.gperf"
134 {"_restrict", RESTRICT_KEYW}, 139 {"_restrict", RESTRICT_KEYW},
135#line 16 "scripts/genksyms/keywords.gperf" 140#line 18 "scripts/genksyms/keywords.gperf"
136 {"__inline__", INLINE_KEYW}, 141 {"__inline__", INLINE_KEYW},
137#line 10 "scripts/genksyms/keywords.gperf" 142#line 12 "scripts/genksyms/keywords.gperf"
138 {"__attribute", ATTRIBUTE_KEYW}, 143 {"__attribute", ATTRIBUTE_KEYW},
139 {""}, 144 {""},
140#line 14 "scripts/genksyms/keywords.gperf" 145#line 16 "scripts/genksyms/keywords.gperf"
141 {"__extension__", EXTENSION_KEYW}, 146 {"__extension__", EXTENSION_KEYW},
142#line 35 "scripts/genksyms/keywords.gperf" 147#line 37 "scripts/genksyms/keywords.gperf"
143 {"enum", ENUM_KEYW}, 148 {"enum", ENUM_KEYW},
144#line 19 "scripts/genksyms/keywords.gperf" 149#line 21 "scripts/genksyms/keywords.gperf"
145 {"__volatile", VOLATILE_KEYW}, 150 {"__volatile", VOLATILE_KEYW},
146#line 36 "scripts/genksyms/keywords.gperf" 151#line 38 "scripts/genksyms/keywords.gperf"
147 {"extern", EXTERN_KEYW}, 152 {"extern", EXTERN_KEYW},
148 {""}, 153 {""},
149#line 17 "scripts/genksyms/keywords.gperf" 154#line 19 "scripts/genksyms/keywords.gperf"
150 {"__signed", SIGNED_KEYW}, 155 {"__signed", SIGNED_KEYW},
151#line 7 "scripts/genksyms/keywords.gperf" 156#line 9 "scripts/genksyms/keywords.gperf"
152 {"EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW}, 157 {"EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW},
153 {""}, 158 {""},
154#line 51 "scripts/genksyms/keywords.gperf" 159#line 53 "scripts/genksyms/keywords.gperf"
155 {"typeof", TYPEOF_KEYW}, 160 {"typeof", TYPEOF_KEYW},
156#line 46 "scripts/genksyms/keywords.gperf" 161#line 48 "scripts/genksyms/keywords.gperf"
157 {"typedef", TYPEDEF_KEYW}, 162 {"typedef", TYPEDEF_KEYW},
158#line 15 "scripts/genksyms/keywords.gperf" 163#line 17 "scripts/genksyms/keywords.gperf"
159 {"__inline", INLINE_KEYW}, 164 {"__inline", INLINE_KEYW},
160#line 31 "scripts/genksyms/keywords.gperf" 165#line 33 "scripts/genksyms/keywords.gperf"
161 {"auto", AUTO_KEYW}, 166 {"auto", AUTO_KEYW},
162#line 47 "scripts/genksyms/keywords.gperf" 167#line 49 "scripts/genksyms/keywords.gperf"
163 {"union", UNION_KEYW}, 168 {"union", UNION_KEYW},
164 {""}, {""}, 169 {""}, {""},
165#line 48 "scripts/genksyms/keywords.gperf" 170#line 50 "scripts/genksyms/keywords.gperf"
166 {"unsigned", UNSIGNED_KEYW}, 171 {"unsigned", UNSIGNED_KEYW},
167#line 49 "scripts/genksyms/keywords.gperf" 172#line 51 "scripts/genksyms/keywords.gperf"
168 {"void", VOID_KEYW}, 173 {"void", VOID_KEYW},
169#line 42 "scripts/genksyms/keywords.gperf" 174#line 44 "scripts/genksyms/keywords.gperf"
170 {"short", SHORT_KEYW}, 175 {"short", SHORT_KEYW},
171 {""}, {""}, 176 {""}, {""},
172#line 50 "scripts/genksyms/keywords.gperf" 177#line 52 "scripts/genksyms/keywords.gperf"
173 {"volatile", VOLATILE_KEYW}, 178 {"volatile", VOLATILE_KEYW},
174 {""}, 179 {""},
175#line 37 "scripts/genksyms/keywords.gperf" 180#line 39 "scripts/genksyms/keywords.gperf"
176 {"float", FLOAT_KEYW}, 181 {"float", FLOAT_KEYW},
177#line 34 "scripts/genksyms/keywords.gperf" 182#line 36 "scripts/genksyms/keywords.gperf"
178 {"double", DOUBLE_KEYW}, 183 {"double", DOUBLE_KEYW},
179 {""}, 184 {""},
180#line 5 "scripts/genksyms/keywords.gperf" 185#line 7 "scripts/genksyms/keywords.gperf"
181 {"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW}, 186 {"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW},
182 {""}, {""}, 187 {""}, {""},
183#line 38 "scripts/genksyms/keywords.gperf" 188#line 40 "scripts/genksyms/keywords.gperf"
184 {"inline", INLINE_KEYW}, 189 {"inline", INLINE_KEYW},
185#line 6 "scripts/genksyms/keywords.gperf" 190#line 8 "scripts/genksyms/keywords.gperf"
186 {"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW}, 191 {"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW},
187#line 41 "scripts/genksyms/keywords.gperf" 192#line 43 "scripts/genksyms/keywords.gperf"
188 {"register", REGISTER_KEYW}, 193 {"register", REGISTER_KEYW},
189 {""}, 194 {""},
190#line 22 "scripts/genksyms/keywords.gperf" 195#line 24 "scripts/genksyms/keywords.gperf"
191 {"_Bool", BOOL_KEYW}, 196 {"_Bool", BOOL_KEYW},
192#line 43 "scripts/genksyms/keywords.gperf" 197#line 45 "scripts/genksyms/keywords.gperf"
193 {"signed", SIGNED_KEYW}, 198 {"signed", SIGNED_KEYW},
194 {""}, {""}, 199 {""}, {""},
195#line 40 "scripts/genksyms/keywords.gperf" 200#line 42 "scripts/genksyms/keywords.gperf"
196 {"long", LONG_KEYW} 201 {"long", LONG_KEYW}
197 }; 202 };
198 203
diff --git a/scripts/genksyms/keywords.gperf b/scripts/genksyms/keywords.gperf
index 5ef3733225fb..8fe977a4d57b 100644
--- a/scripts/genksyms/keywords.gperf
+++ b/scripts/genksyms/keywords.gperf
@@ -1,4 +1,6 @@
1%{ 1%{
2struct resword;
3static const struct resword *is_reserved_word(register const char *str, register unsigned int len);
2%} 4%}
3struct resword { const char *name; int token; } 5struct resword { const char *name; int token; }
4%% 6%%
diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
index cdb44b63342e..81a67a458e78 100755
--- a/scripts/get_maintainer.pl
+++ b/scripts/get_maintainer.pl
@@ -5,15 +5,15 @@
5# Print selected MAINTAINERS information for 5# Print selected MAINTAINERS information for
6# the files modified in a patch or for a file 6# the files modified in a patch or for a file
7# 7#
8# usage: perl scripts/get_maintainers.pl [OPTIONS] <patch> 8# usage: perl scripts/get_maintainer.pl [OPTIONS] <patch>
9# perl scripts/get_maintainers.pl [OPTIONS] -f <file> 9# perl scripts/get_maintainer.pl [OPTIONS] -f <file>
10# 10#
11# Licensed under the terms of the GNU GPL License version 2 11# Licensed under the terms of the GNU GPL License version 2
12 12
13use strict; 13use strict;
14 14
15my $P = $0; 15my $P = $0;
16my $V = '0.20'; 16my $V = '0.21';
17 17
18use Getopt::Long qw(:config no_auto_abbrev); 18use Getopt::Long qw(:config no_auto_abbrev);
19 19
@@ -37,6 +37,7 @@ my $scm = 0;
37my $web = 0; 37my $web = 0;
38my $subsystem = 0; 38my $subsystem = 0;
39my $status = 0; 39my $status = 0;
40my $keywords = 1;
40my $from_filename = 0; 41my $from_filename = 0;
41my $pattern_depth = 0; 42my $pattern_depth = 0;
42my $version = 0; 43my $version = 0;
@@ -84,6 +85,7 @@ if (!GetOptions(
84 'scm!' => \$scm, 85 'scm!' => \$scm,
85 'web!' => \$web, 86 'web!' => \$web,
86 'pattern-depth=i' => \$pattern_depth, 87 'pattern-depth=i' => \$pattern_depth,
88 'k|keywords!' => \$keywords,
87 'f|file' => \$from_filename, 89 'f|file' => \$from_filename,
88 'v|version' => \$version, 90 'v|version' => \$version,
89 'h|help' => \$help, 91 'h|help' => \$help,
@@ -132,6 +134,8 @@ if (!top_of_kernel_tree($lk_path)) {
132## Read MAINTAINERS for type/value pairs 134## Read MAINTAINERS for type/value pairs
133 135
134my @typevalue = (); 136my @typevalue = ();
137my %keyword_hash;
138
135open(MAINT, "<${lk_path}MAINTAINERS") || die "$P: Can't open MAINTAINERS\n"; 139open(MAINT, "<${lk_path}MAINTAINERS") || die "$P: Can't open MAINTAINERS\n";
136while (<MAINT>) { 140while (<MAINT>) {
137 my $line = $_; 141 my $line = $_;
@@ -149,6 +153,8 @@ while (<MAINT>) {
149 if ((-d $value)) { 153 if ((-d $value)) {
150 $value =~ s@([^/])$@$1/@; 154 $value =~ s@([^/])$@$1/@;
151 } 155 }
156 } elsif ($type eq "K") {
157 $keyword_hash{@typevalue} = $value;
152 } 158 }
153 push(@typevalue, "$type:$value"); 159 push(@typevalue, "$type:$value");
154 } elsif (!/^(\s)*$/) { 160 } elsif (!/^(\s)*$/) {
@@ -188,6 +194,7 @@ if ($email_remove_duplicates) {
188 194
189my @files = (); 195my @files = ();
190my @range = (); 196my @range = ();
197my @keyword_tvi = ();
191 198
192foreach my $file (@ARGV) { 199foreach my $file (@ARGV) {
193 ##if $file is a directory and it lacks a trailing slash, add one 200 ##if $file is a directory and it lacks a trailing slash, add one
@@ -198,11 +205,24 @@ foreach my $file (@ARGV) {
198 } 205 }
199 if ($from_filename) { 206 if ($from_filename) {
200 push(@files, $file); 207 push(@files, $file);
208 if (-f $file && $keywords) {
209 open(FILE, "<$file") or die "$P: Can't open ${file}\n";
210 while (<FILE>) {
211 my $patch_line = $_;
212 foreach my $line (keys %keyword_hash) {
213 if ($patch_line =~ m/^.*$keyword_hash{$line}/x) {
214 push(@keyword_tvi, $line);
215 }
216 }
217 }
218 close(FILE);
219 }
201 } else { 220 } else {
202 my $file_cnt = @files; 221 my $file_cnt = @files;
203 my $lastfile; 222 my $lastfile;
204 open(PATCH, "<$file") or die "$P: Can't open ${file}\n"; 223 open(PATCH, "<$file") or die "$P: Can't open ${file}\n";
205 while (<PATCH>) { 224 while (<PATCH>) {
225 my $patch_line = $_;
206 if (m/^\+\+\+\s+(\S+)/) { 226 if (m/^\+\+\+\s+(\S+)/) {
207 my $filename = $1; 227 my $filename = $1;
208 $filename =~ s@^[^/]*/@@; 228 $filename =~ s@^[^/]*/@@;
@@ -213,6 +233,12 @@ foreach my $file (@ARGV) {
213 if ($email_git_blame) { 233 if ($email_git_blame) {
214 push(@range, "$lastfile:$1:$2"); 234 push(@range, "$lastfile:$1:$2");
215 } 235 }
236 } elsif ($keywords) {
237 foreach my $line (keys %keyword_hash) {
238 if ($patch_line =~ m/^[+-].*$keyword_hash{$line}/x) {
239 push(@keyword_tvi, $line);
240 }
241 }
216 } 242 }
217 } 243 }
218 close(PATCH); 244 close(PATCH);
@@ -286,6 +312,13 @@ foreach my $file (@files) {
286 } 312 }
287} 313}
288 314
315if ($keywords) {
316 @keyword_tvi = sort_and_uniq(@keyword_tvi);
317 foreach my $line (@keyword_tvi) {
318 add_categories($line);
319 }
320}
321
289if ($email) { 322if ($email) {
290 foreach my $chief (@penguin_chief) { 323 foreach my $chief (@penguin_chief) {
291 if ($chief =~ m/^(.*):(.*)/) { 324 if ($chief =~ m/^(.*):(.*)/) {
@@ -384,6 +417,7 @@ Output type options:
384 417
385Other options: 418Other options:
386 --pattern-depth => Number of pattern directory traversals (default: 0 (all)) 419 --pattern-depth => Number of pattern directory traversals (default: 0 (all))
420 --keywords => scan patch for keywords (default: 1 (on))
387 --version => show version 421 --version => show version
388 --help => show this help information 422 --help => show this help information
389 423
@@ -486,7 +520,6 @@ sub format_email {
486} 520}
487 521
488sub find_starting_index { 522sub find_starting_index {
489
490 my ($index) = @_; 523 my ($index) = @_;
491 524
492 while ($index > 0) { 525 while ($index > 0) {
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
index 6d69c7ccdcc7..80599e3a7994 100644
--- a/scripts/kconfig/Makefile
+++ b/scripts/kconfig/Makefile
@@ -30,7 +30,7 @@ silentoldconfig: $(obj)/conf
30 $< -s $(Kconfig) 30 $< -s $(Kconfig)
31 31
32localmodconfig: $(obj)/streamline_config.pl $(obj)/conf 32localmodconfig: $(obj)/streamline_config.pl $(obj)/conf
33 $(Q)perl $< $(Kconfig) > .tmp.config 33 $(Q)perl $< $(srctree) $(Kconfig) > .tmp.config
34 $(Q)if [ -f .config ]; then \ 34 $(Q)if [ -f .config ]; then \
35 cmp -s .tmp.config .config || \ 35 cmp -s .tmp.config .config || \
36 (mv -f .config .config.old.1; \ 36 (mv -f .config .config.old.1; \
@@ -44,7 +44,7 @@ localmodconfig: $(obj)/streamline_config.pl $(obj)/conf
44 $(Q)rm -f .tmp.config 44 $(Q)rm -f .tmp.config
45 45
46localyesconfig: $(obj)/streamline_config.pl $(obj)/conf 46localyesconfig: $(obj)/streamline_config.pl $(obj)/conf
47 $(Q)perl $< $(Kconfig) > .tmp.config 47 $(Q)perl $< $(srctree) $(Kconfig) > .tmp.config
48 $(Q)sed -i s/=m/=y/ .tmp.config 48 $(Q)sed -i s/=m/=y/ .tmp.config
49 $(Q)if [ -f .config ]; then \ 49 $(Q)if [ -f .config ]; then \
50 cmp -s .tmp.config .config || \ 50 cmp -s .tmp.config .config || \
diff --git a/scripts/kconfig/lex.zconf.c_shipped b/scripts/kconfig/lex.zconf.c_shipped
index dc3e81807d13..fdc7113b08d1 100644
--- a/scripts/kconfig/lex.zconf.c_shipped
+++ b/scripts/kconfig/lex.zconf.c_shipped
@@ -160,7 +160,15 @@ typedef unsigned int flex_uint32_t;
160 160
161/* Size of default input buffer. */ 161/* Size of default input buffer. */
162#ifndef YY_BUF_SIZE 162#ifndef YY_BUF_SIZE
163#ifdef __ia64__
164/* On IA-64, the buffer size is 16k, not 8k.
165 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
166 * Ditto for the __ia64__ case accordingly.
167 */
168#define YY_BUF_SIZE 32768
169#else
163#define YY_BUF_SIZE 16384 170#define YY_BUF_SIZE 16384
171#endif /* __ia64__ */
164#endif 172#endif
165 173
166/* The state buf must be large enough to hold one state per character in the main buffer. 174/* The state buf must be large enough to hold one state per character in the main buffer.
@@ -802,7 +810,7 @@ static int last_ts, first_ts;
802static void zconf_endhelp(void); 810static void zconf_endhelp(void);
803static void zconf_endfile(void); 811static void zconf_endfile(void);
804 812
805void new_string(void) 813static void new_string(void)
806{ 814{
807 text = malloc(START_STRSIZE); 815 text = malloc(START_STRSIZE);
808 text_asize = START_STRSIZE; 816 text_asize = START_STRSIZE;
@@ -810,7 +818,7 @@ void new_string(void)
810 *text = 0; 818 *text = 0;
811} 819}
812 820
813void append_string(const char *str, int size) 821static void append_string(const char *str, int size)
814{ 822{
815 int new_size = text_size + size + 1; 823 int new_size = text_size + size + 1;
816 if (new_size > text_asize) { 824 if (new_size > text_asize) {
@@ -824,7 +832,7 @@ void append_string(const char *str, int size)
824 text[text_size] = 0; 832 text[text_size] = 0;
825} 833}
826 834
827void alloc_string(const char *str, int size) 835static void alloc_string(const char *str, int size)
828{ 836{
829 text = malloc(size + 1); 837 text = malloc(size + 1);
830 memcpy(text, str, size); 838 memcpy(text, str, size);
@@ -914,7 +922,12 @@ static int input (void );
914 922
915/* Amount of stuff to slurp up with each read. */ 923/* Amount of stuff to slurp up with each read. */
916#ifndef YY_READ_BUF_SIZE 924#ifndef YY_READ_BUF_SIZE
925#ifdef __ia64__
926/* On IA-64, the buffer size is 16k, not 8k */
927#define YY_READ_BUF_SIZE 16384
928#else
917#define YY_READ_BUF_SIZE 8192 929#define YY_READ_BUF_SIZE 8192
930#endif /* __ia64__ */
918#endif 931#endif
919 932
920/* Copy whatever the last rule matched to the standard output. */ 933/* Copy whatever the last rule matched to the standard output. */
@@ -922,7 +935,7 @@ static int input (void );
922/* This used to be an fputs(), but since the string might contain NUL's, 935/* This used to be an fputs(), but since the string might contain NUL's,
923 * we now use fwrite(). 936 * we now use fwrite().
924 */ 937 */
925#define ECHO fwrite( zconftext, zconfleng, 1, zconfout ) 938#define ECHO do { if (fwrite( zconftext, zconfleng, 1, zconfout )) {} } while (0)
926#endif 939#endif
927 940
928/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 941/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
@@ -2060,8 +2073,8 @@ YY_BUFFER_STATE zconf_scan_string (yyconst char * yystr )
2060 2073
2061/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will 2074/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will
2062 * scan from a @e copy of @a bytes. 2075 * scan from a @e copy of @a bytes.
2063 * @param bytes the byte buffer to scan 2076 * @param yybytes the byte buffer to scan
2064 * @param len the number of bytes in the buffer pointed to by @a bytes. 2077 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
2065 * 2078 *
2066 * @return the newly allocated buffer state object. 2079 * @return the newly allocated buffer state object.
2067 */ 2080 */
diff --git a/scripts/kconfig/streamline_config.pl b/scripts/kconfig/streamline_config.pl
index 95984db8e1e0..0d800820c3cd 100644
--- a/scripts/kconfig/streamline_config.pl
+++ b/scripts/kconfig/streamline_config.pl
@@ -43,7 +43,6 @@
43# make oldconfig 43# make oldconfig
44# 44#
45my $config = ".config"; 45my $config = ".config";
46my $linuxpath = ".";
47 46
48my $uname = `uname -r`; 47my $uname = `uname -r`;
49chomp $uname; 48chomp $uname;
@@ -111,7 +110,11 @@ sub find_config {
111 110
112find_config; 111find_config;
113 112
114my @makefiles = `find $linuxpath -name Makefile`; 113# Get the build source and top level Kconfig file (passed in)
114my $ksource = $ARGV[0];
115my $kconfig = $ARGV[1];
116
117my @makefiles = `find $ksource -name Makefile`;
115my %depends; 118my %depends;
116my %selects; 119my %selects;
117my %prompts; 120my %prompts;
@@ -119,9 +122,6 @@ my %objects;
119my $var; 122my $var;
120my $cont = 0; 123my $cont = 0;
121 124
122# Get the top level Kconfig file (passed in)
123my $kconfig = $ARGV[0];
124
125# prevent recursion 125# prevent recursion
126my %read_kconfigs; 126my %read_kconfigs;
127 127
@@ -132,7 +132,7 @@ sub read_kconfig {
132 my $config; 132 my $config;
133 my @kconfigs; 133 my @kconfigs;
134 134
135 open(KIN, $kconfig) || die "Can't open $kconfig"; 135 open(KIN, "$ksource/$kconfig") || die "Can't open $kconfig";
136 while (<KIN>) { 136 while (<KIN>) {
137 chomp; 137 chomp;
138 138
diff --git a/scripts/kconfig/zconf.gperf b/scripts/kconfig/zconf.gperf
index 25ef5d01c0af..d8bc74249622 100644
--- a/scripts/kconfig/zconf.gperf
+++ b/scripts/kconfig/zconf.gperf
@@ -9,6 +9,8 @@
9 9
10struct kconf_id; 10struct kconf_id;
11 11
12static struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len);
13
12%% 14%%
13mainmenu, T_MAINMENU, TF_COMMAND 15mainmenu, T_MAINMENU, TF_COMMAND
14menu, T_MENU, TF_COMMAND 16menu, T_MENU, TF_COMMAND
diff --git a/scripts/kconfig/zconf.hash.c_shipped b/scripts/kconfig/zconf.hash.c_shipped
index 5c73d51339d8..c1748faf4634 100644
--- a/scripts/kconfig/zconf.hash.c_shipped
+++ b/scripts/kconfig/zconf.hash.c_shipped
@@ -30,6 +30,8 @@
30#endif 30#endif
31 31
32struct kconf_id; 32struct kconf_id;
33
34static struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len);
33/* maximum key range = 47, duplicates = 0 */ 35/* maximum key range = 47, duplicates = 0 */
34 36
35#ifdef __GNUC__ 37#ifdef __GNUC__
diff --git a/scripts/kconfig/zconf.l b/scripts/kconfig/zconf.l
index 21ff69c9ad4e..d8f7236cb0a3 100644
--- a/scripts/kconfig/zconf.l
+++ b/scripts/kconfig/zconf.l
@@ -39,7 +39,7 @@ static int last_ts, first_ts;
39static void zconf_endhelp(void); 39static void zconf_endhelp(void);
40static void zconf_endfile(void); 40static void zconf_endfile(void);
41 41
42void new_string(void) 42static void new_string(void)
43{ 43{
44 text = malloc(START_STRSIZE); 44 text = malloc(START_STRSIZE);
45 text_asize = START_STRSIZE; 45 text_asize = START_STRSIZE;
@@ -47,7 +47,7 @@ void new_string(void)
47 *text = 0; 47 *text = 0;
48} 48}
49 49
50void append_string(const char *str, int size) 50static void append_string(const char *str, int size)
51{ 51{
52 int new_size = text_size + size + 1; 52 int new_size = text_size + size + 1;
53 if (new_size > text_asize) { 53 if (new_size > text_asize) {
@@ -61,7 +61,7 @@ void append_string(const char *str, int size)
61 text[text_size] = 0; 61 text[text_size] = 0;
62} 62}
63 63
64void alloc_string(const char *str, int size) 64static void alloc_string(const char *str, int size)
65{ 65{
66 text = malloc(size + 1); 66 text = malloc(size + 1);
67 memcpy(text, str, size); 67 memcpy(text, str, size);
diff --git a/scripts/kconfig/zconf.tab.c_shipped b/scripts/kconfig/zconf.tab.c_shipped
index 95df833b5a9d..6e9dcd59aa87 100644
--- a/scripts/kconfig/zconf.tab.c_shipped
+++ b/scripts/kconfig/zconf.tab.c_shipped
@@ -1,24 +1,23 @@
1/* A Bison parser, made by GNU Bison 2.3. */
2 1
3/* Skeleton implementation for Bison's Yacc-like parsers in C 2/* A Bison parser, made by GNU Bison 2.4.1. */
4 3
5 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 4/* Skeleton implementation for Bison's Yacc-like parsers in C
5
6 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6 Free Software Foundation, Inc. 7 Free Software Foundation, Inc.
7 8
8 This program is free software; you can redistribute it and/or modify 9 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by 10 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2, or (at your option) 11 the Free Software Foundation, either version 3 of the License, or
11 any later version. 12 (at your option) any later version.
12 13
13 This program is distributed in the hope that it will be useful, 14 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details. 17 GNU General Public License for more details.
17 18
18 You should have received a copy of the GNU General Public License 19 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
20 Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 Boston, MA 02110-1301, USA. */
22 21
23/* As a special exception, you may create a larger work that contains 22/* As a special exception, you may create a larger work that contains
24 part or all of the Bison parser skeleton and distribute that work 23 part or all of the Bison parser skeleton and distribute that work
@@ -29,7 +28,7 @@
29 special exception, which will cause the skeleton and the resulting 28 special exception, which will cause the skeleton and the resulting
30 Bison output files to be licensed under the GNU General Public 29 Bison output files to be licensed under the GNU General Public
31 License without this special exception. 30 License without this special exception.
32 31
33 This special exception was added by the Free Software Foundation in 32 This special exception was added by the Free Software Foundation in
34 version 2.2 of Bison. */ 33 version 2.2 of Bison. */
35 34
@@ -47,7 +46,7 @@
47#define YYBISON 1 46#define YYBISON 1
48 47
49/* Bison version. */ 48/* Bison version. */
50#define YYBISON_VERSION "2.3" 49#define YYBISON_VERSION "2.4.1"
51 50
52/* Skeleton name. */ 51/* Skeleton name. */
53#define YYSKELETON_NAME "yacc.c" 52#define YYSKELETON_NAME "yacc.c"
@@ -55,94 +54,23 @@
55/* Pure parsers. */ 54/* Pure parsers. */
56#define YYPURE 0 55#define YYPURE 0
57 56
57/* Push parsers. */
58#define YYPUSH 0
59
60/* Pull parsers. */
61#define YYPULL 1
62
58/* Using locations. */ 63/* Using locations. */
59#define YYLSP_NEEDED 0 64#define YYLSP_NEEDED 0
60 65
61/* Substitute the variable and function names. */ 66/* Substitute the variable and function names. */
62#define yyparse zconfparse 67#define yyparse zconfparse
63#define yylex zconflex 68#define yylex zconflex
64#define yyerror zconferror 69#define yyerror zconferror
65#define yylval zconflval 70#define yylval zconflval
66#define yychar zconfchar 71#define yychar zconfchar
67#define yydebug zconfdebug 72#define yydebug zconfdebug
68#define yynerrs zconfnerrs 73#define yynerrs zconfnerrs
69
70
71/* Tokens. */
72#ifndef YYTOKENTYPE
73# define YYTOKENTYPE
74 /* Put the tokens into the symbol table, so that GDB and other debuggers
75 know about them. */
76 enum yytokentype {
77 T_MAINMENU = 258,
78 T_MENU = 259,
79 T_ENDMENU = 260,
80 T_SOURCE = 261,
81 T_CHOICE = 262,
82 T_ENDCHOICE = 263,
83 T_COMMENT = 264,
84 T_CONFIG = 265,
85 T_MENUCONFIG = 266,
86 T_HELP = 267,
87 T_HELPTEXT = 268,
88 T_IF = 269,
89 T_ENDIF = 270,
90 T_DEPENDS = 271,
91 T_OPTIONAL = 272,
92 T_PROMPT = 273,
93 T_TYPE = 274,
94 T_DEFAULT = 275,
95 T_SELECT = 276,
96 T_RANGE = 277,
97 T_OPTION = 278,
98 T_ON = 279,
99 T_WORD = 280,
100 T_WORD_QUOTE = 281,
101 T_UNEQUAL = 282,
102 T_CLOSE_PAREN = 283,
103 T_OPEN_PAREN = 284,
104 T_EOL = 285,
105 T_OR = 286,
106 T_AND = 287,
107 T_EQUAL = 288,
108 T_NOT = 289
109 };
110#endif
111/* Tokens. */
112#define T_MAINMENU 258
113#define T_MENU 259
114#define T_ENDMENU 260
115#define T_SOURCE 261
116#define T_CHOICE 262
117#define T_ENDCHOICE 263
118#define T_COMMENT 264
119#define T_CONFIG 265
120#define T_MENUCONFIG 266
121#define T_HELP 267
122#define T_HELPTEXT 268
123#define T_IF 269
124#define T_ENDIF 270
125#define T_DEPENDS 271
126#define T_OPTIONAL 272
127#define T_PROMPT 273
128#define T_TYPE 274
129#define T_DEFAULT 275
130#define T_SELECT 276
131#define T_RANGE 277
132#define T_OPTION 278
133#define T_ON 279
134#define T_WORD 280
135#define T_WORD_QUOTE 281
136#define T_UNEQUAL 282
137#define T_CLOSE_PAREN 283
138#define T_OPEN_PAREN 284
139#define T_EOL 285
140#define T_OR 286
141#define T_AND 287
142#define T_EQUAL 288
143#define T_NOT 289
144
145
146 74
147 75
148/* Copy the first part of user declarations. */ 76/* Copy the first part of user declarations. */
@@ -163,8 +91,6 @@
163#define LKC_DIRECT_LINK 91#define LKC_DIRECT_LINK
164#include "lkc.h" 92#include "lkc.h"
165 93
166#include "zconf.hash.c"
167
168#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) 94#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
169 95
170#define PRINTD 0x0001 96#define PRINTD 0x0001
@@ -188,6 +114,7 @@ static struct menu *current_menu, *current_entry;
188#endif 114#endif
189 115
190 116
117
191/* Enabling traces. */ 118/* Enabling traces. */
192#ifndef YYDEBUG 119#ifndef YYDEBUG
193# define YYDEBUG 0 120# define YYDEBUG 0
@@ -206,31 +133,77 @@ static struct menu *current_menu, *current_entry;
206# define YYTOKEN_TABLE 0 133# define YYTOKEN_TABLE 0
207#endif 134#endif
208 135
136
137/* Tokens. */
138#ifndef YYTOKENTYPE
139# define YYTOKENTYPE
140 /* Put the tokens into the symbol table, so that GDB and other debuggers
141 know about them. */
142 enum yytokentype {
143 T_MAINMENU = 258,
144 T_MENU = 259,
145 T_ENDMENU = 260,
146 T_SOURCE = 261,
147 T_CHOICE = 262,
148 T_ENDCHOICE = 263,
149 T_COMMENT = 264,
150 T_CONFIG = 265,
151 T_MENUCONFIG = 266,
152 T_HELP = 267,
153 T_HELPTEXT = 268,
154 T_IF = 269,
155 T_ENDIF = 270,
156 T_DEPENDS = 271,
157 T_OPTIONAL = 272,
158 T_PROMPT = 273,
159 T_TYPE = 274,
160 T_DEFAULT = 275,
161 T_SELECT = 276,
162 T_RANGE = 277,
163 T_OPTION = 278,
164 T_ON = 279,
165 T_WORD = 280,
166 T_WORD_QUOTE = 281,
167 T_UNEQUAL = 282,
168 T_CLOSE_PAREN = 283,
169 T_OPEN_PAREN = 284,
170 T_EOL = 285,
171 T_OR = 286,
172 T_AND = 287,
173 T_EQUAL = 288,
174 T_NOT = 289
175 };
176#endif
177
178
179
209#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 180#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
210typedef union YYSTYPE 181typedef union YYSTYPE
211
212{ 182{
183
184
213 char *string; 185 char *string;
214 struct file *file; 186 struct file *file;
215 struct symbol *symbol; 187 struct symbol *symbol;
216 struct expr *expr; 188 struct expr *expr;
217 struct menu *menu; 189 struct menu *menu;
218 struct kconf_id *id; 190 struct kconf_id *id;
219}
220/* Line 187 of yacc.c. */
221 191
222 YYSTYPE; 192
193
194} YYSTYPE;
195# define YYSTYPE_IS_TRIVIAL 1
223# define yystype YYSTYPE /* obsolescent; will be withdrawn */ 196# define yystype YYSTYPE /* obsolescent; will be withdrawn */
224# define YYSTYPE_IS_DECLARED 1 197# define YYSTYPE_IS_DECLARED 1
225# define YYSTYPE_IS_TRIVIAL 1
226#endif 198#endif
227 199
228 200
229
230/* Copy the second part of user declarations. */ 201/* Copy the second part of user declarations. */
231 202
232 203
233/* Line 216 of yacc.c. */ 204/* Include zconf.hash.c here so it can see the token constants. */
205#include "zconf.hash.c"
206
234 207
235 208
236#ifdef short 209#ifdef short
@@ -306,14 +279,14 @@ typedef short int yytype_int16;
306#if (defined __STDC__ || defined __C99__FUNC__ \ 279#if (defined __STDC__ || defined __C99__FUNC__ \
307 || defined __cplusplus || defined _MSC_VER) 280 || defined __cplusplus || defined _MSC_VER)
308static int 281static int
309YYID (int i) 282YYID (int yyi)
310#else 283#else
311static int 284static int
312YYID (i) 285YYID (yyi)
313 int i; 286 int yyi;
314#endif 287#endif
315{ 288{
316 return i; 289 return yyi;
317} 290}
318#endif 291#endif
319 292
@@ -394,9 +367,9 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
394/* A type that is properly aligned for any stack member. */ 367/* A type that is properly aligned for any stack member. */
395union yyalloc 368union yyalloc
396{ 369{
397 yytype_int16 yyss; 370 yytype_int16 yyss_alloc;
398 YYSTYPE yyvs; 371 YYSTYPE yyvs_alloc;
399 }; 372};
400 373
401/* The size of the maximum gap between one aligned stack and the next. */ 374/* The size of the maximum gap between one aligned stack and the next. */
402# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 375# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
@@ -430,12 +403,12 @@ union yyalloc
430 elements in the stack, and YYPTR gives the new location of the 403 elements in the stack, and YYPTR gives the new location of the
431 stack. Advance YYPTR to a properly aligned location for the next 404 stack. Advance YYPTR to a properly aligned location for the next
432 stack. */ 405 stack. */
433# define YYSTACK_RELOCATE(Stack) \ 406# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
434 do \ 407 do \
435 { \ 408 { \
436 YYSIZE_T yynewbytes; \ 409 YYSIZE_T yynewbytes; \
437 YYCOPY (&yyptr->Stack, Stack, yysize); \ 410 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
438 Stack = &yyptr->Stack; \ 411 Stack = &yyptr->Stack_alloc; \
439 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 412 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
440 yyptr += yynewbytes / sizeof (*yyptr); \ 413 yyptr += yynewbytes / sizeof (*yyptr); \
441 } \ 414 } \
@@ -558,18 +531,18 @@ static const yytype_int8 yyrhs[] =
558/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 531/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
559static const yytype_uint16 yyrline[] = 532static const yytype_uint16 yyrline[] =
560{ 533{
561 0, 104, 104, 106, 108, 109, 110, 111, 112, 113, 534 0, 107, 107, 109, 111, 112, 113, 114, 115, 116,
562 114, 118, 122, 122, 122, 122, 122, 122, 122, 126, 535 117, 121, 125, 125, 125, 125, 125, 125, 125, 129,
563 127, 128, 129, 130, 131, 135, 136, 142, 150, 156, 536 130, 131, 132, 133, 134, 138, 139, 145, 153, 159,
564 164, 174, 176, 177, 178, 179, 180, 181, 184, 192, 537 167, 177, 179, 180, 181, 182, 183, 184, 187, 195,
565 198, 208, 214, 220, 223, 225, 236, 237, 242, 251, 538 201, 211, 217, 223, 226, 228, 239, 240, 245, 254,
566 256, 264, 267, 269, 270, 271, 272, 273, 276, 282, 539 259, 267, 270, 272, 273, 274, 275, 276, 279, 285,
567 293, 299, 309, 311, 316, 324, 332, 335, 337, 338, 540 296, 302, 312, 314, 319, 327, 335, 338, 340, 341,
568 339, 344, 351, 356, 364, 367, 369, 370, 371, 374, 541 342, 347, 354, 359, 367, 370, 372, 373, 374, 377,
569 382, 389, 396, 402, 409, 411, 412, 413, 416, 424, 542 385, 392, 399, 405, 412, 414, 415, 416, 419, 427,
570 426, 431, 432, 435, 436, 437, 441, 442, 445, 446, 543 429, 434, 435, 438, 439, 440, 444, 445, 448, 449,
571 449, 450, 451, 452, 453, 454, 455, 458, 459, 462, 544 452, 453, 454, 455, 456, 457, 458, 461, 462, 465,
572 463 545 466
573}; 546};
574#endif 547#endif
575 548
@@ -985,17 +958,20 @@ yy_symbol_print (yyoutput, yytype, yyvaluep)
985#if (defined __STDC__ || defined __C99__FUNC__ \ 958#if (defined __STDC__ || defined __C99__FUNC__ \
986 || defined __cplusplus || defined _MSC_VER) 959 || defined __cplusplus || defined _MSC_VER)
987static void 960static void
988yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) 961yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
989#else 962#else
990static void 963static void
991yy_stack_print (bottom, top) 964yy_stack_print (yybottom, yytop)
992 yytype_int16 *bottom; 965 yytype_int16 *yybottom;
993 yytype_int16 *top; 966 yytype_int16 *yytop;
994#endif 967#endif
995{ 968{
996 YYFPRINTF (stderr, "Stack now"); 969 YYFPRINTF (stderr, "Stack now");
997 for (; bottom <= top; ++bottom) 970 for (; yybottom <= yytop; yybottom++)
998 YYFPRINTF (stderr, " %d", *bottom); 971 {
972 int yybot = *yybottom;
973 YYFPRINTF (stderr, " %d", yybot);
974 }
999 YYFPRINTF (stderr, "\n"); 975 YYFPRINTF (stderr, "\n");
1000} 976}
1001 977
@@ -1029,11 +1005,11 @@ yy_reduce_print (yyvsp, yyrule)
1029 /* The symbols being reduced. */ 1005 /* The symbols being reduced. */
1030 for (yyi = 0; yyi < yynrhs; yyi++) 1006 for (yyi = 0; yyi < yynrhs; yyi++)
1031 { 1007 {
1032 fprintf (stderr, " $%d = ", yyi + 1); 1008 YYFPRINTF (stderr, " $%d = ", yyi + 1);
1033 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 1009 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1034 &(yyvsp[(yyi + 1) - (yynrhs)]) 1010 &(yyvsp[(yyi + 1) - (yynrhs)])
1035 ); 1011 );
1036 fprintf (stderr, "\n"); 1012 YYFPRINTF (stderr, "\n");
1037 } 1013 }
1038} 1014}
1039 1015
@@ -1343,10 +1319,8 @@ yydestruct (yymsg, yytype, yyvaluep)
1343 break; 1319 break;
1344 } 1320 }
1345} 1321}
1346
1347 1322
1348/* Prevent warnings from -Wmissing-prototypes. */ 1323/* Prevent warnings from -Wmissing-prototypes. */
1349
1350#ifdef YYPARSE_PARAM 1324#ifdef YYPARSE_PARAM
1351#if defined __STDC__ || defined __cplusplus 1325#if defined __STDC__ || defined __cplusplus
1352int yyparse (void *YYPARSE_PARAM); 1326int yyparse (void *YYPARSE_PARAM);
@@ -1362,11 +1336,10 @@ int yyparse ();
1362#endif /* ! YYPARSE_PARAM */ 1336#endif /* ! YYPARSE_PARAM */
1363 1337
1364 1338
1365 1339/* The lookahead symbol. */
1366/* The look-ahead symbol. */
1367int yychar; 1340int yychar;
1368 1341
1369/* The semantic value of the look-ahead symbol. */ 1342/* The semantic value of the lookahead symbol. */
1370YYSTYPE yylval; 1343YYSTYPE yylval;
1371 1344
1372/* Number of syntax errors so far. */ 1345/* Number of syntax errors so far. */
@@ -1374,9 +1347,9 @@ int yynerrs;
1374 1347
1375 1348
1376 1349
1377/*----------. 1350/*-------------------------.
1378| yyparse. | 1351| yyparse or yypush_parse. |
1379`----------*/ 1352`-------------------------*/
1380 1353
1381#ifdef YYPARSE_PARAM 1354#ifdef YYPARSE_PARAM
1382#if (defined __STDC__ || defined __C99__FUNC__ \ 1355#if (defined __STDC__ || defined __C99__FUNC__ \
@@ -1400,66 +1373,68 @@ yyparse ()
1400#endif 1373#endif
1401#endif 1374#endif
1402{ 1375{
1403
1404 int yystate;
1405 int yyn;
1406 int yyresult;
1407 /* Number of tokens to shift before error messages enabled. */
1408 int yyerrstatus;
1409 /* Look-ahead token as an internal (translated) token number. */
1410 int yytoken = 0;
1411#if YYERROR_VERBOSE
1412 /* Buffer for error messages, and its allocated size. */
1413 char yymsgbuf[128];
1414 char *yymsg = yymsgbuf;
1415 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1416#endif
1417
1418 /* Three stacks and their tools:
1419 `yyss': related to states,
1420 `yyvs': related to semantic values,
1421 `yyls': related to locations.
1422 1376
1423 Refer to the stacks thru separate pointers, to allow yyoverflow
1424 to reallocate them elsewhere. */
1425 1377
1426 /* The state stack. */ 1378 int yystate;
1427 yytype_int16 yyssa[YYINITDEPTH]; 1379 /* Number of tokens to shift before error messages enabled. */
1428 yytype_int16 *yyss = yyssa; 1380 int yyerrstatus;
1429 yytype_int16 *yyssp;
1430 1381
1431 /* The semantic value stack. */ 1382 /* The stacks and their tools:
1432 YYSTYPE yyvsa[YYINITDEPTH]; 1383 `yyss': related to states.
1433 YYSTYPE *yyvs = yyvsa; 1384 `yyvs': related to semantic values.
1434 YYSTYPE *yyvsp;
1435 1385
1386 Refer to the stacks thru separate pointers, to allow yyoverflow
1387 to reallocate them elsewhere. */
1436 1388
1389 /* The state stack. */
1390 yytype_int16 yyssa[YYINITDEPTH];
1391 yytype_int16 *yyss;
1392 yytype_int16 *yyssp;
1437 1393
1438#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) 1394 /* The semantic value stack. */
1395 YYSTYPE yyvsa[YYINITDEPTH];
1396 YYSTYPE *yyvs;
1397 YYSTYPE *yyvsp;
1439 1398
1440 YYSIZE_T yystacksize = YYINITDEPTH; 1399 YYSIZE_T yystacksize;
1441 1400
1401 int yyn;
1402 int yyresult;
1403 /* Lookahead token as an internal (translated) token number. */
1404 int yytoken;
1442 /* The variables used to return semantic value and location from the 1405 /* The variables used to return semantic value and location from the
1443 action routines. */ 1406 action routines. */
1444 YYSTYPE yyval; 1407 YYSTYPE yyval;
1445 1408
1409#if YYERROR_VERBOSE
1410 /* Buffer for error messages, and its allocated size. */
1411 char yymsgbuf[128];
1412 char *yymsg = yymsgbuf;
1413 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1414#endif
1415
1416#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1446 1417
1447 /* The number of symbols on the RHS of the reduced rule. 1418 /* The number of symbols on the RHS of the reduced rule.
1448 Keep to zero when no symbol should be popped. */ 1419 Keep to zero when no symbol should be popped. */
1449 int yylen = 0; 1420 int yylen = 0;
1450 1421
1422 yytoken = 0;
1423 yyss = yyssa;
1424 yyvs = yyvsa;
1425 yystacksize = YYINITDEPTH;
1426
1451 YYDPRINTF ((stderr, "Starting parse\n")); 1427 YYDPRINTF ((stderr, "Starting parse\n"));
1452 1428
1453 yystate = 0; 1429 yystate = 0;
1454 yyerrstatus = 0; 1430 yyerrstatus = 0;
1455 yynerrs = 0; 1431 yynerrs = 0;
1456 yychar = YYEMPTY; /* Cause a token to be read. */ 1432 yychar = YYEMPTY; /* Cause a token to be read. */
1457 1433
1458 /* Initialize stack pointers. 1434 /* Initialize stack pointers.
1459 Waste one element of value and location stack 1435 Waste one element of value and location stack
1460 so that they stay on the same level as the state stack. 1436 so that they stay on the same level as the state stack.
1461 The wasted elements are never initialized. */ 1437 The wasted elements are never initialized. */
1462
1463 yyssp = yyss; 1438 yyssp = yyss;
1464 yyvsp = yyvs; 1439 yyvsp = yyvs;
1465 1440
@@ -1489,7 +1464,6 @@ yyparse ()
1489 YYSTYPE *yyvs1 = yyvs; 1464 YYSTYPE *yyvs1 = yyvs;
1490 yytype_int16 *yyss1 = yyss; 1465 yytype_int16 *yyss1 = yyss;
1491 1466
1492
1493 /* Each stack pointer address is followed by the size of the 1467 /* Each stack pointer address is followed by the size of the
1494 data in use in that stack, in bytes. This used to be a 1468 data in use in that stack, in bytes. This used to be a
1495 conditional around just the two extra args, but that might 1469 conditional around just the two extra args, but that might
@@ -1497,7 +1471,6 @@ yyparse ()
1497 yyoverflow (YY_("memory exhausted"), 1471 yyoverflow (YY_("memory exhausted"),
1498 &yyss1, yysize * sizeof (*yyssp), 1472 &yyss1, yysize * sizeof (*yyssp),
1499 &yyvs1, yysize * sizeof (*yyvsp), 1473 &yyvs1, yysize * sizeof (*yyvsp),
1500
1501 &yystacksize); 1474 &yystacksize);
1502 1475
1503 yyss = yyss1; 1476 yyss = yyss1;
@@ -1520,9 +1493,8 @@ yyparse ()
1520 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 1493 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1521 if (! yyptr) 1494 if (! yyptr)
1522 goto yyexhaustedlab; 1495 goto yyexhaustedlab;
1523 YYSTACK_RELOCATE (yyss); 1496 YYSTACK_RELOCATE (yyss_alloc, yyss);
1524 YYSTACK_RELOCATE (yyvs); 1497 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1525
1526# undef YYSTACK_RELOCATE 1498# undef YYSTACK_RELOCATE
1527 if (yyss1 != yyssa) 1499 if (yyss1 != yyssa)
1528 YYSTACK_FREE (yyss1); 1500 YYSTACK_FREE (yyss1);
@@ -1533,7 +1505,6 @@ yyparse ()
1533 yyssp = yyss + yysize - 1; 1505 yyssp = yyss + yysize - 1;
1534 yyvsp = yyvs + yysize - 1; 1506 yyvsp = yyvs + yysize - 1;
1535 1507
1536
1537 YYDPRINTF ((stderr, "Stack size increased to %lu\n", 1508 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1538 (unsigned long int) yystacksize)); 1509 (unsigned long int) yystacksize));
1539 1510
@@ -1543,6 +1514,9 @@ yyparse ()
1543 1514
1544 YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 1515 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1545 1516
1517 if (yystate == YYFINAL)
1518 YYACCEPT;
1519
1546 goto yybackup; 1520 goto yybackup;
1547 1521
1548/*-----------. 1522/*-----------.
@@ -1551,16 +1525,16 @@ yyparse ()
1551yybackup: 1525yybackup:
1552 1526
1553 /* Do appropriate processing given the current state. Read a 1527 /* Do appropriate processing given the current state. Read a
1554 look-ahead token if we need one and don't already have one. */ 1528 lookahead token if we need one and don't already have one. */
1555 1529
1556 /* First try to decide what to do without reference to look-ahead token. */ 1530 /* First try to decide what to do without reference to lookahead token. */
1557 yyn = yypact[yystate]; 1531 yyn = yypact[yystate];
1558 if (yyn == YYPACT_NINF) 1532 if (yyn == YYPACT_NINF)
1559 goto yydefault; 1533 goto yydefault;
1560 1534
1561 /* Not known => get a look-ahead token if don't already have one. */ 1535 /* Not known => get a lookahead token if don't already have one. */
1562 1536
1563 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ 1537 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1564 if (yychar == YYEMPTY) 1538 if (yychar == YYEMPTY)
1565 { 1539 {
1566 YYDPRINTF ((stderr, "Reading a token: ")); 1540 YYDPRINTF ((stderr, "Reading a token: "));
@@ -1592,20 +1566,16 @@ yybackup:
1592 goto yyreduce; 1566 goto yyreduce;
1593 } 1567 }
1594 1568
1595 if (yyn == YYFINAL)
1596 YYACCEPT;
1597
1598 /* Count tokens shifted since error; after three, turn off error 1569 /* Count tokens shifted since error; after three, turn off error
1599 status. */ 1570 status. */
1600 if (yyerrstatus) 1571 if (yyerrstatus)
1601 yyerrstatus--; 1572 yyerrstatus--;
1602 1573
1603 /* Shift the look-ahead token. */ 1574 /* Shift the lookahead token. */
1604 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 1575 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1605 1576
1606 /* Discard the shifted token unless it is eof. */ 1577 /* Discard the shifted token. */
1607 if (yychar != YYEOF) 1578 yychar = YYEMPTY;
1608 yychar = YYEMPTY;
1609 1579
1610 yystate = yyn; 1580 yystate = yyn;
1611 *++yyvsp = yylval; 1581 *++yyvsp = yylval;
@@ -2029,7 +1999,6 @@ yyreduce:
2029 break; 1999 break;
2030 2000
2031 2001
2032/* Line 1267 of yacc.c. */
2033 2002
2034 default: break; 2003 default: break;
2035 } 2004 }
@@ -2041,7 +2010,6 @@ yyreduce:
2041 2010
2042 *++yyvsp = yyval; 2011 *++yyvsp = yyval;
2043 2012
2044
2045 /* Now `shift' the result of the reduction. Determine what state 2013 /* Now `shift' the result of the reduction. Determine what state
2046 that goes to, based on the state we popped back to and the rule 2014 that goes to, based on the state we popped back to and the rule
2047 number reduced by. */ 2015 number reduced by. */
@@ -2106,7 +2074,7 @@ yyerrlab:
2106 2074
2107 if (yyerrstatus == 3) 2075 if (yyerrstatus == 3)
2108 { 2076 {
2109 /* If just tried and failed to reuse look-ahead token after an 2077 /* If just tried and failed to reuse lookahead token after an
2110 error, discard it. */ 2078 error, discard it. */
2111 2079
2112 if (yychar <= YYEOF) 2080 if (yychar <= YYEOF)
@@ -2123,7 +2091,7 @@ yyerrlab:
2123 } 2091 }
2124 } 2092 }
2125 2093
2126 /* Else will try to reuse look-ahead token after shifting the error 2094 /* Else will try to reuse lookahead token after shifting the error
2127 token. */ 2095 token. */
2128 goto yyerrlab1; 2096 goto yyerrlab1;
2129 2097
@@ -2180,9 +2148,6 @@ yyerrlab1:
2180 YY_STACK_PRINT (yyss, yyssp); 2148 YY_STACK_PRINT (yyss, yyssp);
2181 } 2149 }
2182 2150
2183 if (yyn == YYFINAL)
2184 YYACCEPT;
2185
2186 *++yyvsp = yylval; 2151 *++yyvsp = yylval;
2187 2152
2188 2153
@@ -2207,7 +2172,7 @@ yyabortlab:
2207 yyresult = 1; 2172 yyresult = 1;
2208 goto yyreturn; 2173 goto yyreturn;
2209 2174
2210#ifndef yyoverflow 2175#if !defined(yyoverflow) || YYERROR_VERBOSE
2211/*-------------------------------------------------. 2176/*-------------------------------------------------.
2212| yyexhaustedlab -- memory exhaustion comes here. | 2177| yyexhaustedlab -- memory exhaustion comes here. |
2213`-------------------------------------------------*/ 2178`-------------------------------------------------*/
@@ -2218,7 +2183,7 @@ yyexhaustedlab:
2218#endif 2183#endif
2219 2184
2220yyreturn: 2185yyreturn:
2221 if (yychar != YYEOF && yychar != YYEMPTY) 2186 if (yychar != YYEMPTY)
2222 yydestruct ("Cleanup: discarding lookahead", 2187 yydestruct ("Cleanup: discarding lookahead",
2223 yytoken, &yylval); 2188 yytoken, &yylval);
2224 /* Do not reclaim the symbols of the rule which action triggered 2189 /* Do not reclaim the symbols of the rule which action triggered
@@ -2284,7 +2249,7 @@ void conf_parse(const char *name)
2284 sym_set_change_count(1); 2249 sym_set_change_count(1);
2285} 2250}
2286 2251
2287const char *zconf_tokenname(int token) 2252static const char *zconf_tokenname(int token)
2288{ 2253{
2289 switch (token) { 2254 switch (token) {
2290 case T_MENU: return "menu"; 2255 case T_MENU: return "menu";
@@ -2348,7 +2313,7 @@ static void zconferror(const char *err)
2348#endif 2313#endif
2349} 2314}
2350 2315
2351void print_quoted_string(FILE *out, const char *str) 2316static void print_quoted_string(FILE *out, const char *str)
2352{ 2317{
2353 const char *p; 2318 const char *p;
2354 int len; 2319 int len;
@@ -2365,7 +2330,7 @@ void print_quoted_string(FILE *out, const char *str)
2365 putc('"', out); 2330 putc('"', out);
2366} 2331}
2367 2332
2368void print_symbol(FILE *out, struct menu *menu) 2333static void print_symbol(FILE *out, struct menu *menu)
2369{ 2334{
2370 struct symbol *sym = menu->sym; 2335 struct symbol *sym = menu->sym;
2371 struct property *prop; 2336 struct property *prop;
diff --git a/scripts/kconfig/zconf.y b/scripts/kconfig/zconf.y
index 9710b82466f2..8c43491f8cc9 100644
--- a/scripts/kconfig/zconf.y
+++ b/scripts/kconfig/zconf.y
@@ -14,8 +14,6 @@
14#define LKC_DIRECT_LINK 14#define LKC_DIRECT_LINK
15#include "lkc.h" 15#include "lkc.h"
16 16
17#include "zconf.hash.c"
18
19#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) 17#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
20 18
21#define PRINTD 0x0001 19#define PRINTD 0x0001
@@ -100,6 +98,11 @@ static struct menu *current_menu, *current_entry;
100 menu_end_menu(); 98 menu_end_menu();
101} if_entry menu_entry choice_entry 99} if_entry menu_entry choice_entry
102 100
101%{
102/* Include zconf.hash.c here so it can see the token constants. */
103#include "zconf.hash.c"
104%}
105
103%% 106%%
104input: stmt_list; 107input: stmt_list;
105 108
@@ -501,7 +504,7 @@ void conf_parse(const char *name)
501 sym_set_change_count(1); 504 sym_set_change_count(1);
502} 505}
503 506
504const char *zconf_tokenname(int token) 507static const char *zconf_tokenname(int token)
505{ 508{
506 switch (token) { 509 switch (token) {
507 case T_MENU: return "menu"; 510 case T_MENU: return "menu";
@@ -565,7 +568,7 @@ static void zconferror(const char *err)
565#endif 568#endif
566} 569}
567 570
568void print_quoted_string(FILE *out, const char *str) 571static void print_quoted_string(FILE *out, const char *str)
569{ 572{
570 const char *p; 573 const char *p;
571 int len; 574 int len;
@@ -582,7 +585,7 @@ void print_quoted_string(FILE *out, const char *str)
582 putc('"', out); 585 putc('"', out);
583} 586}
584 587
585void print_symbol(FILE *out, struct menu *menu) 588static void print_symbol(FILE *out, struct menu *menu)
586{ 589{
587 struct symbol *sym = menu->sym; 590 struct symbol *sym = menu->sym;
588 struct property *prop; 591 struct property *prop;
diff --git a/security/integrity/ima/ima_iint.c b/security/integrity/ima/ima_iint.c
index b8dd693f8790..a4e2b1dac943 100644
--- a/security/integrity/ima/ima_iint.c
+++ b/security/integrity/ima/ima_iint.c
@@ -58,11 +58,11 @@ struct ima_iint_cache *ima_iint_insert(struct inode *inode)
58 58
59 if (!ima_initialized) 59 if (!ima_initialized)
60 return iint; 60 return iint;
61 iint = kmem_cache_alloc(iint_cache, GFP_KERNEL); 61 iint = kmem_cache_alloc(iint_cache, GFP_NOFS);
62 if (!iint) 62 if (!iint)
63 return iint; 63 return iint;
64 64
65 rc = radix_tree_preload(GFP_KERNEL); 65 rc = radix_tree_preload(GFP_NOFS);
66 if (rc < 0) 66 if (rc < 0)
67 goto out; 67 goto out;
68 68
diff --git a/sound/arm/aaci.c b/sound/arm/aaci.c
index 1f0f8213e2d5..6c160a038b23 100644
--- a/sound/arm/aaci.c
+++ b/sound/arm/aaci.c
@@ -504,6 +504,10 @@ static int aaci_pcm_hw_params(struct snd_pcm_substream *substream,
504 int err; 504 int err;
505 505
506 aaci_pcm_hw_free(substream); 506 aaci_pcm_hw_free(substream);
507 if (aacirun->pcm_open) {
508 snd_ac97_pcm_close(aacirun->pcm);
509 aacirun->pcm_open = 0;
510 }
507 511
508 err = devdma_hw_alloc(NULL, substream, 512 err = devdma_hw_alloc(NULL, substream,
509 params_buffer_bytes(params)); 513 params_buffer_bytes(params));
@@ -517,7 +521,7 @@ static int aaci_pcm_hw_params(struct snd_pcm_substream *substream,
517 else 521 else
518 err = snd_ac97_pcm_open(aacirun->pcm, params_rate(params), 522 err = snd_ac97_pcm_open(aacirun->pcm, params_rate(params),
519 params_channels(params), 523 params_channels(params),
520 aacirun->pcm->r[1].slots); 524 aacirun->pcm->r[0].slots);
521 525
522 if (err) 526 if (err)
523 goto out; 527 goto out;
diff --git a/sound/core/pcm.c b/sound/core/pcm.c
index 0c1440121c22..c69c60b2a48a 100644
--- a/sound/core/pcm.c
+++ b/sound/core/pcm.c
@@ -953,11 +953,12 @@ static int snd_pcm_dev_register(struct snd_device *device)
953 struct snd_pcm_substream *substream; 953 struct snd_pcm_substream *substream;
954 struct snd_pcm_notify *notify; 954 struct snd_pcm_notify *notify;
955 char str[16]; 955 char str[16];
956 struct snd_pcm *pcm = device->device_data; 956 struct snd_pcm *pcm;
957 struct device *dev; 957 struct device *dev;
958 958
959 if (snd_BUG_ON(!pcm || !device)) 959 if (snd_BUG_ON(!device || !device->device_data))
960 return -ENXIO; 960 return -ENXIO;
961 pcm = device->device_data;
961 mutex_lock(&register_mutex); 962 mutex_lock(&register_mutex);
962 err = snd_pcm_add(pcm); 963 err = snd_pcm_add(pcm);
963 if (err) { 964 if (err) {
diff --git a/sound/core/rawmidi.c b/sound/core/rawmidi.c
index c0adc14c91f0..70d6f25ba526 100644
--- a/sound/core/rawmidi.c
+++ b/sound/core/rawmidi.c
@@ -248,7 +248,8 @@ static int assign_substream(struct snd_rawmidi *rmidi, int subdevice,
248 list_for_each_entry(substream, &s->substreams, list) { 248 list_for_each_entry(substream, &s->substreams, list) {
249 if (substream->opened) { 249 if (substream->opened) {
250 if (stream == SNDRV_RAWMIDI_STREAM_INPUT || 250 if (stream == SNDRV_RAWMIDI_STREAM_INPUT ||
251 !(mode & SNDRV_RAWMIDI_LFLG_APPEND)) 251 !(mode & SNDRV_RAWMIDI_LFLG_APPEND) ||
252 !substream->append)
252 continue; 253 continue;
253 } 254 }
254 if (subdevice < 0 || subdevice == substream->number) { 255 if (subdevice < 0 || subdevice == substream->number) {
@@ -266,17 +267,21 @@ static int open_substream(struct snd_rawmidi *rmidi,
266{ 267{
267 int err; 268 int err;
268 269
269 err = snd_rawmidi_runtime_create(substream); 270 if (substream->use_count == 0) {
270 if (err < 0) 271 err = snd_rawmidi_runtime_create(substream);
271 return err; 272 if (err < 0)
272 err = substream->ops->open(substream); 273 return err;
273 if (err < 0) 274 err = substream->ops->open(substream);
274 return err; 275 if (err < 0) {
275 substream->opened = 1; 276 snd_rawmidi_runtime_free(substream);
276 if (substream->use_count++ == 0) 277 return err;
278 }
279 substream->opened = 1;
277 substream->active_sensing = 0; 280 substream->active_sensing = 0;
278 if (mode & SNDRV_RAWMIDI_LFLG_APPEND) 281 if (mode & SNDRV_RAWMIDI_LFLG_APPEND)
279 substream->append = 1; 282 substream->append = 1;
283 }
284 substream->use_count++;
280 rmidi->streams[substream->stream].substream_opened++; 285 rmidi->streams[substream->stream].substream_opened++;
281 return 0; 286 return 0;
282} 287}
@@ -297,27 +302,27 @@ static int rawmidi_open_priv(struct snd_rawmidi *rmidi, int subdevice, int mode,
297 SNDRV_RAWMIDI_STREAM_INPUT, 302 SNDRV_RAWMIDI_STREAM_INPUT,
298 mode, &sinput); 303 mode, &sinput);
299 if (err < 0) 304 if (err < 0)
300 goto __error; 305 return err;
301 } 306 }
302 if (mode & SNDRV_RAWMIDI_LFLG_OUTPUT) { 307 if (mode & SNDRV_RAWMIDI_LFLG_OUTPUT) {
303 err = assign_substream(rmidi, subdevice, 308 err = assign_substream(rmidi, subdevice,
304 SNDRV_RAWMIDI_STREAM_OUTPUT, 309 SNDRV_RAWMIDI_STREAM_OUTPUT,
305 mode, &soutput); 310 mode, &soutput);
306 if (err < 0) 311 if (err < 0)
307 goto __error; 312 return err;
308 } 313 }
309 314
310 if (sinput) { 315 if (sinput) {
311 err = open_substream(rmidi, sinput, mode); 316 err = open_substream(rmidi, sinput, mode);
312 if (err < 0) 317 if (err < 0)
313 goto __error; 318 return err;
314 } 319 }
315 if (soutput) { 320 if (soutput) {
316 err = open_substream(rmidi, soutput, mode); 321 err = open_substream(rmidi, soutput, mode);
317 if (err < 0) { 322 if (err < 0) {
318 if (sinput) 323 if (sinput)
319 close_substream(rmidi, sinput, 0); 324 close_substream(rmidi, sinput, 0);
320 goto __error; 325 return err;
321 } 326 }
322 } 327 }
323 328
@@ -325,13 +330,6 @@ static int rawmidi_open_priv(struct snd_rawmidi *rmidi, int subdevice, int mode,
325 rfile->input = sinput; 330 rfile->input = sinput;
326 rfile->output = soutput; 331 rfile->output = soutput;
327 return 0; 332 return 0;
328
329 __error:
330 if (sinput && sinput->runtime)
331 snd_rawmidi_runtime_free(sinput);
332 if (soutput && soutput->runtime)
333 snd_rawmidi_runtime_free(soutput);
334 return err;
335} 333}
336 334
337/* called from sound/core/seq/seq_midi.c */ 335/* called from sound/core/seq/seq_midi.c */
diff --git a/sound/drivers/dummy.c b/sound/drivers/dummy.c
index 6ba066c41d2e..252e04ce602f 100644
--- a/sound/drivers/dummy.c
+++ b/sound/drivers/dummy.c
@@ -165,7 +165,7 @@ MODULE_PARM_DESC(enable, "Enable this dummy soundcard.");
165module_param_array(pcm_devs, int, NULL, 0444); 165module_param_array(pcm_devs, int, NULL, 0444);
166MODULE_PARM_DESC(pcm_devs, "PCM devices # (0-4) for dummy driver."); 166MODULE_PARM_DESC(pcm_devs, "PCM devices # (0-4) for dummy driver.");
167module_param_array(pcm_substreams, int, NULL, 0444); 167module_param_array(pcm_substreams, int, NULL, 0444);
168MODULE_PARM_DESC(pcm_substreams, "PCM substreams # (1-16) for dummy driver."); 168MODULE_PARM_DESC(pcm_substreams, "PCM substreams # (1-128) for dummy driver.");
169//module_param_array(midi_devs, int, NULL, 0444); 169//module_param_array(midi_devs, int, NULL, 0444);
170//MODULE_PARM_DESC(midi_devs, "MIDI devices # (0-2) for dummy driver."); 170//MODULE_PARM_DESC(midi_devs, "MIDI devices # (0-2) for dummy driver.");
171module_param(fake_buffer, bool, 0444); 171module_param(fake_buffer, bool, 0444);
@@ -808,8 +808,6 @@ static int __devinit snd_card_dummy_new_mixer(struct snd_dummy *dummy)
808 unsigned int idx; 808 unsigned int idx;
809 int err; 809 int err;
810 810
811 if (snd_BUG_ON(!dummy))
812 return -EINVAL;
813 spin_lock_init(&dummy->mixer_lock); 811 spin_lock_init(&dummy->mixer_lock);
814 strcpy(card->mixername, "Dummy Mixer"); 812 strcpy(card->mixername, "Dummy Mixer");
815 813
diff --git a/sound/drivers/pcsp/pcsp_lib.c b/sound/drivers/pcsp/pcsp_lib.c
index 84cc2658c05b..e1145ac6e908 100644
--- a/sound/drivers/pcsp/pcsp_lib.c
+++ b/sound/drivers/pcsp/pcsp_lib.c
@@ -39,25 +39,20 @@ static DECLARE_TASKLET(pcsp_pcm_tasklet, pcsp_call_pcm_elapsed, 0);
39/* write the port and returns the next expire time in ns; 39/* write the port and returns the next expire time in ns;
40 * called at the trigger-start and in hrtimer callback 40 * called at the trigger-start and in hrtimer callback
41 */ 41 */
42static unsigned long pcsp_timer_update(struct hrtimer *handle) 42static u64 pcsp_timer_update(struct snd_pcsp *chip)
43{ 43{
44 unsigned char timer_cnt, val; 44 unsigned char timer_cnt, val;
45 u64 ns; 45 u64 ns;
46 struct snd_pcm_substream *substream; 46 struct snd_pcm_substream *substream;
47 struct snd_pcm_runtime *runtime; 47 struct snd_pcm_runtime *runtime;
48 struct snd_pcsp *chip = container_of(handle, struct snd_pcsp, timer);
49 unsigned long flags; 48 unsigned long flags;
50 49
51 if (chip->thalf) { 50 if (chip->thalf) {
52 outb(chip->val61, 0x61); 51 outb(chip->val61, 0x61);
53 chip->thalf = 0; 52 chip->thalf = 0;
54 if (!atomic_read(&chip->timer_active))
55 return 0;
56 return chip->ns_rem; 53 return chip->ns_rem;
57 } 54 }
58 55
59 if (!atomic_read(&chip->timer_active))
60 return 0;
61 substream = chip->playback_substream; 56 substream = chip->playback_substream;
62 if (!substream) 57 if (!substream)
63 return 0; 58 return 0;
@@ -88,24 +83,17 @@ static unsigned long pcsp_timer_update(struct hrtimer *handle)
88 return ns; 83 return ns;
89} 84}
90 85
91enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle) 86static void pcsp_pointer_update(struct snd_pcsp *chip)
92{ 87{
93 struct snd_pcsp *chip = container_of(handle, struct snd_pcsp, timer);
94 struct snd_pcm_substream *substream; 88 struct snd_pcm_substream *substream;
95 int periods_elapsed, pointer_update;
96 size_t period_bytes, buffer_bytes; 89 size_t period_bytes, buffer_bytes;
97 unsigned long ns; 90 int periods_elapsed;
98 unsigned long flags; 91 unsigned long flags;
99 92
100 pointer_update = !chip->thalf;
101 ns = pcsp_timer_update(handle);
102 if (!ns)
103 return HRTIMER_NORESTART;
104
105 /* update the playback position */ 93 /* update the playback position */
106 substream = chip->playback_substream; 94 substream = chip->playback_substream;
107 if (!substream) 95 if (!substream)
108 return HRTIMER_NORESTART; 96 return;
109 97
110 period_bytes = snd_pcm_lib_period_bytes(substream); 98 period_bytes = snd_pcm_lib_period_bytes(substream);
111 buffer_bytes = snd_pcm_lib_buffer_bytes(substream); 99 buffer_bytes = snd_pcm_lib_buffer_bytes(substream);
@@ -134,6 +122,26 @@ enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle)
134 122
135 if (periods_elapsed) 123 if (periods_elapsed)
136 tasklet_schedule(&pcsp_pcm_tasklet); 124 tasklet_schedule(&pcsp_pcm_tasklet);
125}
126
127enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle)
128{
129 struct snd_pcsp *chip = container_of(handle, struct snd_pcsp, timer);
130 int pointer_update;
131 u64 ns;
132
133 if (!atomic_read(&chip->timer_active) || !chip->playback_substream)
134 return HRTIMER_NORESTART;
135
136 pointer_update = !chip->thalf;
137 ns = pcsp_timer_update(chip);
138 if (!ns) {
139 printk(KERN_WARNING "PCSP: unexpected stop\n");
140 return HRTIMER_NORESTART;
141 }
142
143 if (pointer_update)
144 pcsp_pointer_update(chip);
137 145
138 hrtimer_forward(handle, hrtimer_get_expires(handle), ns_to_ktime(ns)); 146 hrtimer_forward(handle, hrtimer_get_expires(handle), ns_to_ktime(ns));
139 147
@@ -142,8 +150,6 @@ enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle)
142 150
143static int pcsp_start_playing(struct snd_pcsp *chip) 151static int pcsp_start_playing(struct snd_pcsp *chip)
144{ 152{
145 unsigned long ns;
146
147#if PCSP_DEBUG 153#if PCSP_DEBUG
148 printk(KERN_INFO "PCSP: start_playing called\n"); 154 printk(KERN_INFO "PCSP: start_playing called\n");
149#endif 155#endif
@@ -159,11 +165,7 @@ static int pcsp_start_playing(struct snd_pcsp *chip)
159 atomic_set(&chip->timer_active, 1); 165 atomic_set(&chip->timer_active, 1);
160 chip->thalf = 0; 166 chip->thalf = 0;
161 167
162 ns = pcsp_timer_update(&pcsp_chip.timer); 168 hrtimer_start(&pcsp_chip.timer, ktime_set(0, 0), HRTIMER_MODE_REL);
163 if (!ns)
164 return -EIO;
165
166 hrtimer_start(&pcsp_chip.timer, ktime_set(0, ns), HRTIMER_MODE_REL);
167 return 0; 169 return 0;
168} 170}
169 171
@@ -232,21 +234,22 @@ static int snd_pcsp_playback_hw_free(struct snd_pcm_substream *substream)
232static int snd_pcsp_playback_prepare(struct snd_pcm_substream *substream) 234static int snd_pcsp_playback_prepare(struct snd_pcm_substream *substream)
233{ 235{
234 struct snd_pcsp *chip = snd_pcm_substream_chip(substream); 236 struct snd_pcsp *chip = snd_pcm_substream_chip(substream);
237 pcsp_sync_stop(chip);
238 chip->playback_ptr = 0;
239 chip->period_ptr = 0;
240 chip->fmt_size =
241 snd_pcm_format_physical_width(substream->runtime->format) >> 3;
242 chip->is_signed = snd_pcm_format_signed(substream->runtime->format);
235#if PCSP_DEBUG 243#if PCSP_DEBUG
236 printk(KERN_INFO "PCSP: prepare called, " 244 printk(KERN_INFO "PCSP: prepare called, "
237 "size=%zi psize=%zi f=%zi f1=%i\n", 245 "size=%zi psize=%zi f=%zi f1=%i fsize=%i\n",
238 snd_pcm_lib_buffer_bytes(substream), 246 snd_pcm_lib_buffer_bytes(substream),
239 snd_pcm_lib_period_bytes(substream), 247 snd_pcm_lib_period_bytes(substream),
240 snd_pcm_lib_buffer_bytes(substream) / 248 snd_pcm_lib_buffer_bytes(substream) /
241 snd_pcm_lib_period_bytes(substream), 249 snd_pcm_lib_period_bytes(substream),
242 substream->runtime->periods); 250 substream->runtime->periods,
251 chip->fmt_size);
243#endif 252#endif
244 pcsp_sync_stop(chip);
245 chip->playback_ptr = 0;
246 chip->period_ptr = 0;
247 chip->fmt_size =
248 snd_pcm_format_physical_width(substream->runtime->format) >> 3;
249 chip->is_signed = snd_pcm_format_signed(substream->runtime->format);
250 return 0; 253 return 0;
251} 254}
252 255
diff --git a/sound/drivers/pcsp/pcsp_mixer.c b/sound/drivers/pcsp/pcsp_mixer.c
index 199b03377142..903bc846763f 100644
--- a/sound/drivers/pcsp/pcsp_mixer.c
+++ b/sound/drivers/pcsp/pcsp_mixer.c
@@ -72,7 +72,7 @@ static int pcsp_treble_put(struct snd_kcontrol *kcontrol,
72 if (treble != chip->treble) { 72 if (treble != chip->treble) {
73 chip->treble = treble; 73 chip->treble = treble;
74#if PCSP_DEBUG 74#if PCSP_DEBUG
75 printk(KERN_INFO "PCSP: rate set to %i\n", PCSP_RATE()); 75 printk(KERN_INFO "PCSP: rate set to %li\n", PCSP_RATE());
76#endif 76#endif
77 changed = 1; 77 changed = 1;
78 } 78 }
diff --git a/sound/oss/dmasound/dmasound_core.c b/sound/oss/dmasound/dmasound_core.c
index 793b7f478433..3f3c3f71db4b 100644
--- a/sound/oss/dmasound/dmasound_core.c
+++ b/sound/oss/dmasound/dmasound_core.c
@@ -219,7 +219,9 @@ static int shared_resources_initialised;
219 * Mid level stuff 219 * Mid level stuff
220 */ 220 */
221 221
222struct sound_settings dmasound = { .lock = SPIN_LOCK_UNLOCKED }; 222struct sound_settings dmasound = {
223 .lock = __SPIN_LOCK_UNLOCKED(dmasound.lock)
224};
223 225
224static inline void sound_silence(void) 226static inline void sound_silence(void)
225{ 227{
diff --git a/sound/oss/hex2hex.c b/sound/oss/hex2hex.c
index 5460faae98c9..041ef5c52bc2 100644
--- a/sound/oss/hex2hex.c
+++ b/sound/oss/hex2hex.c
@@ -12,7 +12,7 @@
12#define MAX_SIZE (256*1024) 12#define MAX_SIZE (256*1024)
13unsigned char buf[MAX_SIZE]; 13unsigned char buf[MAX_SIZE];
14 14
15int loadhex(FILE *inf, unsigned char *buf) 15static int loadhex(FILE *inf, unsigned char *buf)
16{ 16{
17 int l=0, c, i; 17 int l=0, c, i;
18 18
diff --git a/sound/oss/sb_common.c b/sound/oss/sb_common.c
index 77d0e5efda76..ce4db49291f7 100644
--- a/sound/oss/sb_common.c
+++ b/sound/oss/sb_common.c
@@ -157,7 +157,7 @@ static void sb_intr (sb_devc *devc)
157 break; 157 break;
158 158
159 default: 159 default:
160 /* printk(KERN_WARN "Sound Blaster: Unexpected interrupt\n"); */ 160 /* printk(KERN_WARNING "Sound Blaster: Unexpected interrupt\n"); */
161 ; 161 ;
162 } 162 }
163 } 163 }
@@ -177,7 +177,7 @@ static void sb_intr (sb_devc *devc)
177 break; 177 break;
178 178
179 default: 179 default:
180 /* printk(KERN_WARN "Sound Blaster: Unexpected interrupt\n"); */ 180 /* printk(KERN_WARNING "Sound Blaster: Unexpected interrupt\n"); */
181 ; 181 ;
182 } 182 }
183 } 183 }
diff --git a/sound/oss/sb_ess.c b/sound/oss/sb_ess.c
index 180e95c87e3e..51a3d381a59e 100644
--- a/sound/oss/sb_ess.c
+++ b/sound/oss/sb_ess.c
@@ -782,7 +782,7 @@ printk(KERN_INFO "FKS: ess_handle_channel %s irq_mode=%d\n", channel, irq_mode);
782 break; 782 break;
783 783
784 default:; 784 default:;
785 /* printk(KERN_WARN "ESS: Unexpected interrupt\n"); */ 785 /* printk(KERN_WARNING "ESS: Unexpected interrupt\n"); */
786 } 786 }
787} 787}
788 788
diff --git a/sound/parisc/harmony.c b/sound/parisc/harmony.c
index e924492df21d..f47f9e226b08 100644
--- a/sound/parisc/harmony.c
+++ b/sound/parisc/harmony.c
@@ -624,6 +624,9 @@ snd_harmony_pcm_init(struct snd_harmony *h)
624 struct snd_pcm *pcm; 624 struct snd_pcm *pcm;
625 int err; 625 int err;
626 626
627 if (snd_BUG_ON(!h))
628 return -EINVAL;
629
627 harmony_disable_interrupts(h); 630 harmony_disable_interrupts(h);
628 631
629 err = snd_pcm_new(h->card, "harmony", 0, 1, 1, &pcm); 632 err = snd_pcm_new(h->card, "harmony", 0, 1, 1, &pcm);
@@ -865,11 +868,12 @@ snd_harmony_mixer_reset(struct snd_harmony *h)
865static int __devinit 868static int __devinit
866snd_harmony_mixer_init(struct snd_harmony *h) 869snd_harmony_mixer_init(struct snd_harmony *h)
867{ 870{
868 struct snd_card *card = h->card; 871 struct snd_card *card;
869 int idx, err; 872 int idx, err;
870 873
871 if (snd_BUG_ON(!h)) 874 if (snd_BUG_ON(!h))
872 return -EINVAL; 875 return -EINVAL;
876 card = h->card;
873 strcpy(card->mixername, "Harmony Gain control interface"); 877 strcpy(card->mixername, "Harmony Gain control interface");
874 878
875 for (idx = 0; idx < HARMONY_CONTROLS; idx++) { 879 for (idx = 0; idx < HARMONY_CONTROLS; idx++) {
diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig
index fb5ee3cc3968..75c602b5b132 100644
--- a/sound/pci/Kconfig
+++ b/sound/pci/Kconfig
@@ -259,7 +259,6 @@ config SND_CS5530
259 259
260config SND_CS5535AUDIO 260config SND_CS5535AUDIO
261 tristate "CS5535/CS5536 Audio" 261 tristate "CS5535/CS5536 Audio"
262 depends on X86 && !X86_64
263 select SND_PCM 262 select SND_PCM
264 select SND_AC97_CODEC 263 select SND_AC97_CODEC
265 help 264 help
diff --git a/sound/pci/ali5451/ali5451.c b/sound/pci/ali5451/ali5451.c
index b458d208720b..aaf4da68969c 100644
--- a/sound/pci/ali5451/ali5451.c
+++ b/sound/pci/ali5451/ali5451.c
@@ -973,7 +973,7 @@ static void snd_ali_free_voice(struct snd_ali * codec,
973 void *private_data; 973 void *private_data;
974 974
975 snd_ali_printk("free_voice: channel=%d\n",pvoice->number); 975 snd_ali_printk("free_voice: channel=%d\n",pvoice->number);
976 if (pvoice == NULL || !pvoice->use) 976 if (!pvoice->use)
977 return; 977 return;
978 snd_ali_clear_voices(codec, pvoice->number, pvoice->number); 978 snd_ali_clear_voices(codec, pvoice->number, pvoice->number);
979 spin_lock_irq(&codec->voice_alloc); 979 spin_lock_irq(&codec->voice_alloc);
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index c9ad182e1b4b..6517f589d01d 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -722,9 +722,10 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus,
722 chip->last_cmd[addr]); 722 chip->last_cmd[addr]);
723 chip->single_cmd = 1; 723 chip->single_cmd = 1;
724 bus->response_reset = 0; 724 bus->response_reset = 0;
725 /* re-initialize CORB/RIRB */ 725 /* release CORB/RIRB */
726 azx_free_cmd_io(chip); 726 azx_free_cmd_io(chip);
727 azx_init_cmd_io(chip); 727 /* disable unsolicited responses */
728 azx_writel(chip, GCTL, azx_readl(chip, GCTL) & ~ICH6_GCTL_UNSOL);
728 return -1; 729 return -1;
729} 730}
730 731
@@ -865,7 +866,9 @@ static int azx_reset(struct azx *chip)
865 } 866 }
866 867
867 /* Accept unsolicited responses */ 868 /* Accept unsolicited responses */
868 azx_writel(chip, GCTL, azx_readl(chip, GCTL) | ICH6_GCTL_UNSOL); 869 if (!chip->single_cmd)
870 azx_writel(chip, GCTL, azx_readl(chip, GCTL) |
871 ICH6_GCTL_UNSOL);
869 872
870 /* detect codecs */ 873 /* detect codecs */
871 if (!chip->codec_mask) { 874 if (!chip->codec_mask) {
@@ -980,7 +983,8 @@ static void azx_init_chip(struct azx *chip)
980 azx_int_enable(chip); 983 azx_int_enable(chip);
981 984
982 /* initialize the codec command I/O */ 985 /* initialize the codec command I/O */
983 azx_init_cmd_io(chip); 986 if (!chip->single_cmd)
987 azx_init_cmd_io(chip);
984 988
985 /* program the position buffer */ 989 /* program the position buffer */
986 azx_writel(chip, DPLBASE, (u32)chip->posbuf.addr); 990 azx_writel(chip, DPLBASE, (u32)chip->posbuf.addr);
@@ -2674,6 +2678,7 @@ static struct pci_device_id azx_ids[] = {
2674 { PCI_DEVICE(0x10de, 0x044b), .driver_data = AZX_DRIVER_NVIDIA }, 2678 { PCI_DEVICE(0x10de, 0x044b), .driver_data = AZX_DRIVER_NVIDIA },
2675 { PCI_DEVICE(0x10de, 0x055c), .driver_data = AZX_DRIVER_NVIDIA }, 2679 { PCI_DEVICE(0x10de, 0x055c), .driver_data = AZX_DRIVER_NVIDIA },
2676 { PCI_DEVICE(0x10de, 0x055d), .driver_data = AZX_DRIVER_NVIDIA }, 2680 { PCI_DEVICE(0x10de, 0x055d), .driver_data = AZX_DRIVER_NVIDIA },
2681 { PCI_DEVICE(0x10de, 0x0590), .driver_data = AZX_DRIVER_NVIDIA },
2677 { PCI_DEVICE(0x10de, 0x0774), .driver_data = AZX_DRIVER_NVIDIA }, 2682 { PCI_DEVICE(0x10de, 0x0774), .driver_data = AZX_DRIVER_NVIDIA },
2678 { PCI_DEVICE(0x10de, 0x0775), .driver_data = AZX_DRIVER_NVIDIA }, 2683 { PCI_DEVICE(0x10de, 0x0775), .driver_data = AZX_DRIVER_NVIDIA },
2679 { PCI_DEVICE(0x10de, 0x0776), .driver_data = AZX_DRIVER_NVIDIA }, 2684 { PCI_DEVICE(0x10de, 0x0776), .driver_data = AZX_DRIVER_NVIDIA },
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
index 3fbbc8c01e70..905859d4f4df 100644
--- a/sound/pci/hda/patch_conexant.c
+++ b/sound/pci/hda/patch_conexant.c
@@ -110,6 +110,7 @@ struct conexant_spec {
110 110
111 unsigned int dell_automute; 111 unsigned int dell_automute;
112 unsigned int port_d_mode; 112 unsigned int port_d_mode;
113 unsigned char ext_mic_bias;
113}; 114};
114 115
115static int conexant_playback_pcm_open(struct hda_pcm_stream *hinfo, 116static int conexant_playback_pcm_open(struct hda_pcm_stream *hinfo,
@@ -1927,6 +1928,11 @@ static hda_nid_t cxt5066_adc_nids[3] = { 0x14, 0x15, 0x16 };
1927static hda_nid_t cxt5066_capsrc_nids[1] = { 0x17 }; 1928static hda_nid_t cxt5066_capsrc_nids[1] = { 0x17 };
1928#define CXT5066_SPDIF_OUT 0x21 1929#define CXT5066_SPDIF_OUT 0x21
1929 1930
1931/* OLPC's microphone port is DC coupled for use with external sensors,
1932 * therefore we use a 50% mic bias in order to center the input signal with
1933 * the DC input range of the codec. */
1934#define CXT5066_OLPC_EXT_MIC_BIAS PIN_VREF50
1935
1930static struct hda_channel_mode cxt5066_modes[1] = { 1936static struct hda_channel_mode cxt5066_modes[1] = {
1931 { 2, NULL }, 1937 { 2, NULL },
1932}; 1938};
@@ -1980,9 +1986,10 @@ static int cxt5066_hp_master_sw_put(struct snd_kcontrol *kcontrol,
1980/* toggle input of built-in and mic jack appropriately */ 1986/* toggle input of built-in and mic jack appropriately */
1981static void cxt5066_automic(struct hda_codec *codec) 1987static void cxt5066_automic(struct hda_codec *codec)
1982{ 1988{
1983 static struct hda_verb ext_mic_present[] = { 1989 struct conexant_spec *spec = codec->spec;
1990 struct hda_verb ext_mic_present[] = {
1984 /* enable external mic, port B */ 1991 /* enable external mic, port B */
1985 {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, 1992 {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, spec->ext_mic_bias},
1986 1993
1987 /* switch to external mic input */ 1994 /* switch to external mic input */
1988 {0x17, AC_VERB_SET_CONNECT_SEL, 0}, 1995 {0x17, AC_VERB_SET_CONNECT_SEL, 0},
@@ -2235,7 +2242,7 @@ static struct hda_verb cxt5066_init_verbs_olpc[] = {
2235 {0x19, AC_VERB_SET_CONNECT_SEL, 0x00}, /* DAC1 */ 2242 {0x19, AC_VERB_SET_CONNECT_SEL, 0x00}, /* DAC1 */
2236 2243
2237 /* Port B: external microphone */ 2244 /* Port B: external microphone */
2238 {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, 2245 {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, CXT5066_OLPC_EXT_MIC_BIAS},
2239 2246
2240 /* Port C: internal microphone */ 2247 /* Port C: internal microphone */
2241 {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, 2248 {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80},
@@ -2325,6 +2332,7 @@ static struct snd_pci_quirk cxt5066_cfg_tbl[] = {
2325 CXT5066_LAPTOP), 2332 CXT5066_LAPTOP),
2326 SND_PCI_QUIRK(0x1028, 0x02f5, "Dell", 2333 SND_PCI_QUIRK(0x1028, 0x02f5, "Dell",
2327 CXT5066_DELL_LAPTOP), 2334 CXT5066_DELL_LAPTOP),
2335 SND_PCI_QUIRK(0x152d, 0x0833, "OLPC XO-1.5", CXT5066_OLPC_XO_1_5),
2328 {} 2336 {}
2329}; 2337};
2330 2338
@@ -2352,6 +2360,7 @@ static int patch_cxt5066(struct hda_codec *codec)
2352 spec->input_mux = &cxt5066_capture_source; 2360 spec->input_mux = &cxt5066_capture_source;
2353 2361
2354 spec->port_d_mode = PIN_HP; 2362 spec->port_d_mode = PIN_HP;
2363 spec->ext_mic_bias = PIN_VREF80;
2355 2364
2356 spec->num_init_verbs = 1; 2365 spec->num_init_verbs = 1;
2357 spec->init_verbs[0] = cxt5066_init_verbs; 2366 spec->init_verbs[0] = cxt5066_init_verbs;
@@ -2383,6 +2392,7 @@ static int patch_cxt5066(struct hda_codec *codec)
2383 spec->mixers[spec->num_mixers++] = cxt5066_mixer_master_olpc; 2392 spec->mixers[spec->num_mixers++] = cxt5066_mixer_master_olpc;
2384 spec->mixers[spec->num_mixers++] = cxt5066_mixers; 2393 spec->mixers[spec->num_mixers++] = cxt5066_mixers;
2385 spec->port_d_mode = 0; 2394 spec->port_d_mode = 0;
2395 spec->ext_mic_bias = CXT5066_OLPC_EXT_MIC_BIAS;
2386 2396
2387 /* no S/PDIF out */ 2397 /* no S/PDIF out */
2388 spec->multiout.dig_out_nid = 0; 2398 spec->multiout.dig_out_nid = 0;
diff --git a/sound/pci/hda/patch_nvhdmi.c b/sound/pci/hda/patch_nvhdmi.c
index 9fb60276f5c9..6afdab09bab7 100644
--- a/sound/pci/hda/patch_nvhdmi.c
+++ b/sound/pci/hda/patch_nvhdmi.c
@@ -397,6 +397,7 @@ static int patch_nvhdmi_2ch(struct hda_codec *codec)
397static struct hda_codec_preset snd_hda_preset_nvhdmi[] = { 397static struct hda_codec_preset snd_hda_preset_nvhdmi[] = {
398 { .id = 0x10de0002, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, 398 { .id = 0x10de0002, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch },
399 { .id = 0x10de0003, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, 399 { .id = 0x10de0003, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch },
400 { .id = 0x10de0005, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch },
400 { .id = 0x10de0006, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, 401 { .id = 0x10de0006, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch },
401 { .id = 0x10de0007, .name = "MCP7A HDMI", .patch = patch_nvhdmi_8ch }, 402 { .id = 0x10de0007, .name = "MCP7A HDMI", .patch = patch_nvhdmi_8ch },
402 { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi_2ch }, 403 { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi_2ch },
@@ -406,6 +407,7 @@ static struct hda_codec_preset snd_hda_preset_nvhdmi[] = {
406 407
407MODULE_ALIAS("snd-hda-codec-id:10de0002"); 408MODULE_ALIAS("snd-hda-codec-id:10de0002");
408MODULE_ALIAS("snd-hda-codec-id:10de0003"); 409MODULE_ALIAS("snd-hda-codec-id:10de0003");
410MODULE_ALIAS("snd-hda-codec-id:10de0005");
409MODULE_ALIAS("snd-hda-codec-id:10de0006"); 411MODULE_ALIAS("snd-hda-codec-id:10de0006");
410MODULE_ALIAS("snd-hda-codec-id:10de0007"); 412MODULE_ALIAS("snd-hda-codec-id:10de0007");
411MODULE_ALIAS("snd-hda-codec-id:10de0067"); 413MODULE_ALIAS("snd-hda-codec-id:10de0067");
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index c08ca660daba..70583719282b 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -965,6 +965,8 @@ static void alc_automute_pin(struct hda_codec *codec)
965 unsigned int nid = spec->autocfg.hp_pins[0]; 965 unsigned int nid = spec->autocfg.hp_pins[0];
966 int i; 966 int i;
967 967
968 if (!nid)
969 return;
968 pincap = snd_hda_query_pin_caps(codec, nid); 970 pincap = snd_hda_query_pin_caps(codec, nid);
969 if (pincap & AC_PINCAP_TRIG_REQ) /* need trigger? */ 971 if (pincap & AC_PINCAP_TRIG_REQ) /* need trigger? */
970 snd_hda_codec_read(codec, nid, 0, AC_VERB_SET_PIN_SENSE, 0); 972 snd_hda_codec_read(codec, nid, 0, AC_VERB_SET_PIN_SENSE, 0);
@@ -4682,9 +4684,9 @@ static int alc880_parse_auto_config(struct hda_codec *codec)
4682 spec->multiout.dig_out_nid = dig_nid; 4684 spec->multiout.dig_out_nid = dig_nid;
4683 else { 4685 else {
4684 spec->multiout.slave_dig_outs = spec->slave_dig_outs; 4686 spec->multiout.slave_dig_outs = spec->slave_dig_outs;
4685 spec->slave_dig_outs[i - 1] = dig_nid; 4687 if (i >= ARRAY_SIZE(spec->slave_dig_outs) - 1)
4686 if (i == ARRAY_SIZE(spec->slave_dig_outs) - 1)
4687 break; 4688 break;
4689 spec->slave_dig_outs[i - 1] = dig_nid;
4688 } 4690 }
4689 } 4691 }
4690 if (spec->autocfg.dig_in_pin) 4692 if (spec->autocfg.dig_in_pin)
@@ -6247,7 +6249,7 @@ static struct snd_pci_quirk alc260_cfg_tbl[] = {
6247 SND_PCI_QUIRK(0x1025, 0x008f, "Acer", ALC260_ACER), 6249 SND_PCI_QUIRK(0x1025, 0x008f, "Acer", ALC260_ACER),
6248 SND_PCI_QUIRK(0x1509, 0x4540, "Favorit 100XS", ALC260_FAVORIT100), 6250 SND_PCI_QUIRK(0x1509, 0x4540, "Favorit 100XS", ALC260_FAVORIT100),
6249 SND_PCI_QUIRK(0x103c, 0x2808, "HP d5700", ALC260_HP_3013), 6251 SND_PCI_QUIRK(0x103c, 0x2808, "HP d5700", ALC260_HP_3013),
6250 SND_PCI_QUIRK(0x103c, 0x280a, "HP d5750", ALC260_HP_3013), 6252 SND_PCI_QUIRK(0x103c, 0x280a, "HP d5750", ALC260_AUTO), /* no quirk */
6251 SND_PCI_QUIRK(0x103c, 0x3010, "HP", ALC260_HP_3013), 6253 SND_PCI_QUIRK(0x103c, 0x3010, "HP", ALC260_HP_3013),
6252 SND_PCI_QUIRK(0x103c, 0x3011, "HP", ALC260_HP_3013), 6254 SND_PCI_QUIRK(0x103c, 0x3011, "HP", ALC260_HP_3013),
6253 SND_PCI_QUIRK(0x103c, 0x3012, "HP", ALC260_HP_DC7600), 6255 SND_PCI_QUIRK(0x103c, 0x3012, "HP", ALC260_HP_DC7600),
@@ -8909,10 +8911,11 @@ static struct snd_pci_quirk alc882_ssid_cfg_tbl[] = {
8909 SND_PCI_QUIRK(0x106b, 0x3800, "MacbookPro 4,1", ALC885_MBP3), 8911 SND_PCI_QUIRK(0x106b, 0x3800, "MacbookPro 4,1", ALC885_MBP3),
8910 SND_PCI_QUIRK(0x106b, 0x3e00, "iMac 24 Aluminum", ALC885_IMAC24), 8912 SND_PCI_QUIRK(0x106b, 0x3e00, "iMac 24 Aluminum", ALC885_IMAC24),
8911 SND_PCI_QUIRK(0x106b, 0x3f00, "Macbook 5,1", ALC885_MB5), 8913 SND_PCI_QUIRK(0x106b, 0x3f00, "Macbook 5,1", ALC885_MB5),
8912 /* FIXME: HP jack sense seems not working for MBP 5,1, so apparently 8914 /* FIXME: HP jack sense seems not working for MBP 5,1 or 5,2,
8913 * no perfect solution yet 8915 * so apparently no perfect solution yet
8914 */ 8916 */
8915 SND_PCI_QUIRK(0x106b, 0x4000, "MacbookPro 5,1", ALC885_MB5), 8917 SND_PCI_QUIRK(0x106b, 0x4000, "MacbookPro 5,1", ALC885_MB5),
8918 SND_PCI_QUIRK(0x106b, 0x4600, "MacbookPro 5,2", ALC885_MB5),
8916 {} /* terminator */ 8919 {} /* terminator */
8917}; 8920};
8918 8921
@@ -9811,9 +9814,9 @@ static int alc882_parse_auto_config(struct hda_codec *codec)
9811 spec->multiout.dig_out_nid = dig_nid; 9814 spec->multiout.dig_out_nid = dig_nid;
9812 else { 9815 else {
9813 spec->multiout.slave_dig_outs = spec->slave_dig_outs; 9816 spec->multiout.slave_dig_outs = spec->slave_dig_outs;
9814 spec->slave_dig_outs[i - 1] = dig_nid; 9817 if (i >= ARRAY_SIZE(spec->slave_dig_outs) - 1)
9815 if (i == ARRAY_SIZE(spec->slave_dig_outs) - 1)
9816 break; 9818 break;
9819 spec->slave_dig_outs[i - 1] = dig_nid;
9817 } 9820 }
9818 } 9821 }
9819 if (spec->autocfg.dig_in_pin) 9822 if (spec->autocfg.dig_in_pin)
@@ -11458,6 +11461,8 @@ static struct snd_pci_quirk alc262_cfg_tbl[] = {
11458 SND_PCI_QUIRK(0x104d, 0x820f, "Sony ASSAMD", ALC262_SONY_ASSAMD), 11461 SND_PCI_QUIRK(0x104d, 0x820f, "Sony ASSAMD", ALC262_SONY_ASSAMD),
11459 SND_PCI_QUIRK(0x104d, 0x9016, "Sony VAIO", ALC262_AUTO), /* dig-only */ 11462 SND_PCI_QUIRK(0x104d, 0x9016, "Sony VAIO", ALC262_AUTO), /* dig-only */
11460 SND_PCI_QUIRK(0x104d, 0x9025, "Sony VAIO Z21MN", ALC262_TOSHIBA_S06), 11463 SND_PCI_QUIRK(0x104d, 0x9025, "Sony VAIO Z21MN", ALC262_TOSHIBA_S06),
11464 SND_PCI_QUIRK(0x104d, 0x9035, "Sony VAIO VGN-FW170J", ALC262_AUTO),
11465 SND_PCI_QUIRK(0x104d, 0x9047, "Sony VAIO Type G", ALC262_AUTO),
11461 SND_PCI_QUIRK_MASK(0x104d, 0xff00, 0x9000, "Sony VAIO", 11466 SND_PCI_QUIRK_MASK(0x104d, 0xff00, 0x9000, "Sony VAIO",
11462 ALC262_SONY_ASSAMD), 11467 ALC262_SONY_ASSAMD),
11463 SND_PCI_QUIRK(0x1179, 0x0001, "Toshiba dynabook SS RX1", 11468 SND_PCI_QUIRK(0x1179, 0x0001, "Toshiba dynabook SS RX1",
@@ -12602,7 +12607,8 @@ static struct snd_pci_quirk alc268_cfg_tbl[] = {
12602 SND_PCI_QUIRK(0x1025, 0x015b, "Acer Aspire One", 12607 SND_PCI_QUIRK(0x1025, 0x015b, "Acer Aspire One",
12603 ALC268_ACER_ASPIRE_ONE), 12608 ALC268_ACER_ASPIRE_ONE),
12604 SND_PCI_QUIRK(0x1028, 0x0253, "Dell OEM", ALC268_DELL), 12609 SND_PCI_QUIRK(0x1028, 0x0253, "Dell OEM", ALC268_DELL),
12605 SND_PCI_QUIRK(0x1028, 0x02b0, "Dell Inspiron Mini9", ALC268_DELL), 12610 SND_PCI_QUIRK_MASK(0x1028, 0xfff0, 0x02b0,
12611 "Dell Inspiron Mini9/Vostro A90", ALC268_DELL),
12606 /* almost compatible with toshiba but with optional digital outs; 12612 /* almost compatible with toshiba but with optional digital outs;
12607 * auto-probing seems working fine 12613 * auto-probing seems working fine
12608 */ 12614 */
@@ -17374,7 +17380,7 @@ static int alc662_auto_create_extra_out(struct hda_codec *codec, hda_nid_t pin,
17374 17380
17375/* create playback/capture controls for input pins */ 17381/* create playback/capture controls for input pins */
17376#define alc662_auto_create_input_ctls \ 17382#define alc662_auto_create_input_ctls \
17377 alc880_auto_create_input_ctls 17383 alc882_auto_create_input_ctls
17378 17384
17379static void alc662_auto_set_output_and_unmute(struct hda_codec *codec, 17385static void alc662_auto_set_output_and_unmute(struct hda_codec *codec,
17380 hda_nid_t nid, int pin_type, 17386 hda_nid_t nid, int pin_type,
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index 66c0876bf734..86de305fc9f2 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -28,6 +28,7 @@
28#include <linux/delay.h> 28#include <linux/delay.h>
29#include <linux/slab.h> 29#include <linux/slab.h>
30#include <linux/pci.h> 30#include <linux/pci.h>
31#include <linux/dmi.h>
31#include <sound/core.h> 32#include <sound/core.h>
32#include <sound/asoundef.h> 33#include <sound/asoundef.h>
33#include <sound/jack.h> 34#include <sound/jack.h>
@@ -1589,6 +1590,8 @@ static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = {
1589 "Dell Studio 17", STAC_DELL_M6_DMIC), 1590 "Dell Studio 17", STAC_DELL_M6_DMIC),
1590 SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02be, 1591 SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02be,
1591 "Dell Studio 1555", STAC_DELL_M6_DMIC), 1592 "Dell Studio 1555", STAC_DELL_M6_DMIC),
1593 SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02bd,
1594 "Dell Studio 1557", STAC_DELL_M6_DMIC),
1592 {} /* terminator */ 1595 {} /* terminator */
1593}; 1596};
1594 1597
@@ -1693,6 +1696,8 @@ static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = {
1693 "DFI LanParty", STAC_92HD71BXX_REF), 1696 "DFI LanParty", STAC_92HD71BXX_REF),
1694 SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30fb, 1697 SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30fb,
1695 "HP dv4-1222nr", STAC_HP_DV4_1222NR), 1698 "HP dv4-1222nr", STAC_HP_DV4_1222NR),
1699 SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x1720,
1700 "HP", STAC_HP_DV5),
1696 SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x3080, 1701 SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x3080,
1697 "HP", STAC_HP_DV5), 1702 "HP", STAC_HP_DV5),
1698 SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x30f0, 1703 SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x30f0,
@@ -4665,6 +4670,26 @@ static void stac92xx_unsol_event(struct hda_codec *codec, unsigned int res)
4665 } 4670 }
4666} 4671}
4667 4672
4673static int hp_bseries_system(u32 subsystem_id)
4674{
4675 switch (subsystem_id) {
4676 case 0x103c307e:
4677 case 0x103c307f:
4678 case 0x103c3080:
4679 case 0x103c3081:
4680 case 0x103c1722:
4681 case 0x103c1723:
4682 case 0x103c1724:
4683 case 0x103c1725:
4684 case 0x103c1726:
4685 case 0x103c1727:
4686 case 0x103c1728:
4687 case 0x103c1729:
4688 return 1;
4689 }
4690 return 0;
4691}
4692
4668#ifdef CONFIG_PROC_FS 4693#ifdef CONFIG_PROC_FS
4669static void stac92hd_proc_hook(struct snd_info_buffer *buffer, 4694static void stac92hd_proc_hook(struct snd_info_buffer *buffer,
4670 struct hda_codec *codec, hda_nid_t nid) 4695 struct hda_codec *codec, hda_nid_t nid)
@@ -4754,6 +4779,11 @@ static int stac92xx_hp_check_power_status(struct hda_codec *codec,
4754 else 4779 else
4755 spec->gpio_data |= spec->gpio_led; /* white */ 4780 spec->gpio_data |= spec->gpio_led; /* white */
4756 4781
4782 if (hp_bseries_system(codec->subsystem_id)) {
4783 /* LED state is inverted on these systems */
4784 spec->gpio_data ^= spec->gpio_led;
4785 }
4786
4757 stac_gpio_set(codec, spec->gpio_mask, 4787 stac_gpio_set(codec, spec->gpio_mask,
4758 spec->gpio_dir, 4788 spec->gpio_dir,
4759 spec->gpio_data); 4789 spec->gpio_data);
@@ -5243,6 +5273,7 @@ static int patch_stac92hd71bxx(struct hda_codec *codec)
5243{ 5273{
5244 struct sigmatel_spec *spec; 5274 struct sigmatel_spec *spec;
5245 struct hda_verb *unmute_init = stac92hd71bxx_unmute_core_init; 5275 struct hda_verb *unmute_init = stac92hd71bxx_unmute_core_init;
5276 unsigned int pin_cfg;
5246 int err = 0; 5277 int err = 0;
5247 5278
5248 spec = kzalloc(sizeof(*spec), GFP_KERNEL); 5279 spec = kzalloc(sizeof(*spec), GFP_KERNEL);
@@ -5426,6 +5457,45 @@ again:
5426 break; 5457 break;
5427 } 5458 }
5428 5459
5460 if (hp_bseries_system(codec->subsystem_id)) {
5461 pin_cfg = snd_hda_codec_get_pincfg(codec, 0x0f);
5462 if (get_defcfg_device(pin_cfg) == AC_JACK_LINE_OUT ||
5463 get_defcfg_device(pin_cfg) == AC_JACK_SPEAKER ||
5464 get_defcfg_device(pin_cfg) == AC_JACK_HP_OUT) {
5465 /* It was changed in the BIOS to just satisfy MS DTM.
5466 * Lets turn it back into slaved HP
5467 */
5468 pin_cfg = (pin_cfg & (~AC_DEFCFG_DEVICE))
5469 | (AC_JACK_HP_OUT <<
5470 AC_DEFCFG_DEVICE_SHIFT);
5471 pin_cfg = (pin_cfg & (~(AC_DEFCFG_DEF_ASSOC
5472 | AC_DEFCFG_SEQUENCE)))
5473 | 0x1f;
5474 snd_hda_codec_set_pincfg(codec, 0x0f, pin_cfg);
5475 }
5476 }
5477
5478 if ((codec->subsystem_id >> 16) == PCI_VENDOR_ID_HP) {
5479 const struct dmi_device *dev = NULL;
5480 while ((dev = dmi_find_device(DMI_DEV_TYPE_OEM_STRING,
5481 NULL, dev))) {
5482 if (strcmp(dev->name, "HP_Mute_LED_1")) {
5483 switch (codec->vendor_id) {
5484 case 0x111d7608:
5485 spec->gpio_led = 0x01;
5486 break;
5487 case 0x111d7600:
5488 case 0x111d7601:
5489 case 0x111d7602:
5490 case 0x111d7603:
5491 spec->gpio_led = 0x08;
5492 break;
5493 }
5494 break;
5495 }
5496 }
5497 }
5498
5429#ifdef CONFIG_SND_HDA_POWER_SAVE 5499#ifdef CONFIG_SND_HDA_POWER_SAVE
5430 if (spec->gpio_led) { 5500 if (spec->gpio_led) {
5431 spec->gpio_mask |= spec->gpio_led; 5501 spec->gpio_mask |= spec->gpio_led;
diff --git a/sound/pci/ice1712/ice1712.h b/sound/pci/ice1712/ice1712.h
index 9da2dae64c5b..d063149e7047 100644
--- a/sound/pci/ice1712/ice1712.h
+++ b/sound/pci/ice1712/ice1712.h
@@ -382,8 +382,8 @@ struct snd_ice1712 {
382#ifdef CONFIG_PM 382#ifdef CONFIG_PM
383 int (*pm_suspend)(struct snd_ice1712 *); 383 int (*pm_suspend)(struct snd_ice1712 *);
384 int (*pm_resume)(struct snd_ice1712 *); 384 int (*pm_resume)(struct snd_ice1712 *);
385 int pm_suspend_enabled:1; 385 unsigned int pm_suspend_enabled:1;
386 int pm_saved_is_spdif_master:1; 386 unsigned int pm_saved_is_spdif_master:1;
387 unsigned int pm_saved_spdif_ctrl; 387 unsigned int pm_saved_spdif_ctrl;
388 unsigned char pm_saved_spdif_cfg; 388 unsigned char pm_saved_spdif_cfg;
389 unsigned int pm_saved_route; 389 unsigned int pm_saved_route;
diff --git a/sound/pci/ice1712/prodigy_hifi.c b/sound/pci/ice1712/prodigy_hifi.c
index c75515f5be6f..6a9fee3ee78f 100644
--- a/sound/pci/ice1712/prodigy_hifi.c
+++ b/sound/pci/ice1712/prodigy_hifi.c
@@ -1100,7 +1100,7 @@ static void ak4396_init(struct snd_ice1712 *ice)
1100} 1100}
1101 1101
1102#ifdef CONFIG_PM 1102#ifdef CONFIG_PM
1103static int __devinit prodigy_hd2_resume(struct snd_ice1712 *ice) 1103static int prodigy_hd2_resume(struct snd_ice1712 *ice)
1104{ 1104{
1105 /* initialize ak4396 codec and restore previous mixer volumes */ 1105 /* initialize ak4396 codec and restore previous mixer volumes */
1106 struct prodigy_hifi_spec *spec = ice->spec; 1106 struct prodigy_hifi_spec *spec = ice->spec;
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c
index 754867ed4785..aac20fb4aad2 100644
--- a/sound/pci/intel8x0.c
+++ b/sound/pci/intel8x0.c
@@ -1950,6 +1950,12 @@ static struct ac97_quirk ac97_quirks[] __devinitdata = {
1950 }, 1950 },
1951 { 1951 {
1952 .subvendor = 0x104d, 1952 .subvendor = 0x104d,
1953 .subdevice = 0x8144,
1954 .name = "Sony",
1955 .type = AC97_TUNE_INV_EAPD
1956 },
1957 {
1958 .subvendor = 0x104d,
1953 .subdevice = 0x8197, 1959 .subdevice = 0x8197,
1954 .name = "Sony S1XP", 1960 .name = "Sony S1XP",
1955 .type = AC97_TUNE_INV_EAPD 1961 .type = AC97_TUNE_INV_EAPD
diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c
index 91683a349035..8a332d2f615c 100644
--- a/sound/pci/via82xx.c
+++ b/sound/pci/via82xx.c
@@ -386,6 +386,7 @@ struct via82xx {
386 386
387 struct snd_pcm *pcms[2]; 387 struct snd_pcm *pcms[2];
388 struct snd_rawmidi *rmidi; 388 struct snd_rawmidi *rmidi;
389 struct snd_kcontrol *dxs_controls[4];
389 390
390 struct snd_ac97_bus *ac97_bus; 391 struct snd_ac97_bus *ac97_bus;
391 struct snd_ac97 *ac97; 392 struct snd_ac97 *ac97;
@@ -1216,9 +1217,9 @@ static int snd_via82xx_pcm_open(struct via82xx *chip, struct viadev *viadev,
1216 1217
1217 1218
1218/* 1219/*
1219 * open callback for playback on via686 and via823x DSX 1220 * open callback for playback on via686
1220 */ 1221 */
1221static int snd_via82xx_playback_open(struct snd_pcm_substream *substream) 1222static int snd_via686_playback_open(struct snd_pcm_substream *substream)
1222{ 1223{
1223 struct via82xx *chip = snd_pcm_substream_chip(substream); 1224 struct via82xx *chip = snd_pcm_substream_chip(substream);
1224 struct viadev *viadev = &chip->devs[chip->playback_devno + substream->number]; 1225 struct viadev *viadev = &chip->devs[chip->playback_devno + substream->number];
@@ -1230,6 +1231,32 @@ static int snd_via82xx_playback_open(struct snd_pcm_substream *substream)
1230} 1231}
1231 1232
1232/* 1233/*
1234 * open callback for playback on via823x DXS
1235 */
1236static int snd_via8233_playback_open(struct snd_pcm_substream *substream)
1237{
1238 struct via82xx *chip = snd_pcm_substream_chip(substream);
1239 struct viadev *viadev;
1240 unsigned int stream;
1241 int err;
1242
1243 viadev = &chip->devs[chip->playback_devno + substream->number];
1244 if ((err = snd_via82xx_pcm_open(chip, viadev, substream)) < 0)
1245 return err;
1246 stream = viadev->reg_offset / 0x10;
1247 if (chip->dxs_controls[stream]) {
1248 chip->playback_volume[stream][0] = 0;
1249 chip->playback_volume[stream][1] = 0;
1250 chip->dxs_controls[stream]->vd[0].access &=
1251 ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
1252 snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE |
1253 SNDRV_CTL_EVENT_MASK_INFO,
1254 &chip->dxs_controls[stream]->id);
1255 }
1256 return 0;
1257}
1258
1259/*
1233 * open callback for playback on via823x multi-channel 1260 * open callback for playback on via823x multi-channel
1234 */ 1261 */
1235static int snd_via8233_multi_open(struct snd_pcm_substream *substream) 1262static int snd_via8233_multi_open(struct snd_pcm_substream *substream)
@@ -1302,10 +1329,26 @@ static int snd_via82xx_pcm_close(struct snd_pcm_substream *substream)
1302 return 0; 1329 return 0;
1303} 1330}
1304 1331
1332static int snd_via8233_playback_close(struct snd_pcm_substream *substream)
1333{
1334 struct via82xx *chip = snd_pcm_substream_chip(substream);
1335 struct viadev *viadev = substream->runtime->private_data;
1336 unsigned int stream;
1337
1338 stream = viadev->reg_offset / 0x10;
1339 if (chip->dxs_controls[stream]) {
1340 chip->dxs_controls[stream]->vd[0].access |=
1341 SNDRV_CTL_ELEM_ACCESS_INACTIVE;
1342 snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_INFO,
1343 &chip->dxs_controls[stream]->id);
1344 }
1345 return snd_via82xx_pcm_close(substream);
1346}
1347
1305 1348
1306/* via686 playback callbacks */ 1349/* via686 playback callbacks */
1307static struct snd_pcm_ops snd_via686_playback_ops = { 1350static struct snd_pcm_ops snd_via686_playback_ops = {
1308 .open = snd_via82xx_playback_open, 1351 .open = snd_via686_playback_open,
1309 .close = snd_via82xx_pcm_close, 1352 .close = snd_via82xx_pcm_close,
1310 .ioctl = snd_pcm_lib_ioctl, 1353 .ioctl = snd_pcm_lib_ioctl,
1311 .hw_params = snd_via82xx_hw_params, 1354 .hw_params = snd_via82xx_hw_params,
@@ -1331,8 +1374,8 @@ static struct snd_pcm_ops snd_via686_capture_ops = {
1331 1374
1332/* via823x DSX playback callbacks */ 1375/* via823x DSX playback callbacks */
1333static struct snd_pcm_ops snd_via8233_playback_ops = { 1376static struct snd_pcm_ops snd_via8233_playback_ops = {
1334 .open = snd_via82xx_playback_open, 1377 .open = snd_via8233_playback_open,
1335 .close = snd_via82xx_pcm_close, 1378 .close = snd_via8233_playback_close,
1336 .ioctl = snd_pcm_lib_ioctl, 1379 .ioctl = snd_pcm_lib_ioctl,
1337 .hw_params = snd_via82xx_hw_params, 1380 .hw_params = snd_via82xx_hw_params,
1338 .hw_free = snd_via82xx_hw_free, 1381 .hw_free = snd_via82xx_hw_free,
@@ -1709,8 +1752,9 @@ static struct snd_kcontrol_new snd_via8233_dxs_volume_control __devinitdata = {
1709 .device = 0, 1752 .device = 0,
1710 /* .subdevice set later */ 1753 /* .subdevice set later */
1711 .name = "PCM Playback Volume", 1754 .name = "PCM Playback Volume",
1712 .access = (SNDRV_CTL_ELEM_ACCESS_READWRITE | 1755 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE |
1713 SNDRV_CTL_ELEM_ACCESS_TLV_READ), 1756 SNDRV_CTL_ELEM_ACCESS_TLV_READ |
1757 SNDRV_CTL_ELEM_ACCESS_INACTIVE,
1714 .info = snd_via8233_dxs_volume_info, 1758 .info = snd_via8233_dxs_volume_info,
1715 .get = snd_via8233_dxs_volume_get, 1759 .get = snd_via8233_dxs_volume_get,
1716 .put = snd_via8233_dxs_volume_put, 1760 .put = snd_via8233_dxs_volume_put,
@@ -1948,6 +1992,7 @@ static int __devinit snd_via8233_init_misc(struct via82xx *chip)
1948 err = snd_ctl_add(chip->card, kctl); 1992 err = snd_ctl_add(chip->card, kctl);
1949 if (err < 0) 1993 if (err < 0)
1950 return err; 1994 return err;
1995 chip->dxs_controls[i] = kctl;
1951 } 1996 }
1952 } 1997 }
1953 } 1998 }
diff --git a/sound/pcmcia/pdaudiocf/pdaudiocf.c b/sound/pcmcia/pdaudiocf/pdaudiocf.c
index 7dea74b71cf1..64b859925c0b 100644
--- a/sound/pcmcia/pdaudiocf/pdaudiocf.c
+++ b/sound/pcmcia/pdaudiocf/pdaudiocf.c
@@ -217,20 +217,25 @@ static void snd_pdacf_detach(struct pcmcia_device *link)
217 * configuration callback 217 * configuration callback
218 */ 218 */
219 219
220#define CS_CHECK(fn, ret) \
221do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0)
222
223static int pdacf_config(struct pcmcia_device *link) 220static int pdacf_config(struct pcmcia_device *link)
224{ 221{
225 struct snd_pdacf *pdacf = link->priv; 222 struct snd_pdacf *pdacf = link->priv;
226 int last_fn, last_ret; 223 int ret;
227 224
228 snd_printdd(KERN_DEBUG "pdacf_config called\n"); 225 snd_printdd(KERN_DEBUG "pdacf_config called\n");
229 link->conf.ConfigIndex = 0x5; 226 link->conf.ConfigIndex = 0x5;
230 227
231 CS_CHECK(RequestIO, pcmcia_request_io(link, &link->io)); 228 ret = pcmcia_request_io(link, &link->io);
232 CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); 229 if (ret)
233 CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); 230 goto failed;
231
232 ret = pcmcia_request_irq(link, &link->irq);
233 if (ret)
234 goto failed;
235
236 ret = pcmcia_request_configuration(link, &link->conf);
237 if (ret)
238 goto failed;
234 239
235 if (snd_pdacf_assign_resources(pdacf, link->io.BasePort1, link->irq.AssignedIRQ) < 0) 240 if (snd_pdacf_assign_resources(pdacf, link->io.BasePort1, link->irq.AssignedIRQ) < 0)
236 goto failed; 241 goto failed;
@@ -238,8 +243,6 @@ static int pdacf_config(struct pcmcia_device *link)
238 link->dev_node = &pdacf->node; 243 link->dev_node = &pdacf->node;
239 return 0; 244 return 0;
240 245
241cs_failed:
242 cs_error(link, last_fn, last_ret);
243failed: 246failed:
244 pcmcia_disable_device(link); 247 pcmcia_disable_device(link);
245 return -ENODEV; 248 return -ENODEV;
diff --git a/sound/pcmcia/vx/vxpocket.c b/sound/pcmcia/vx/vxpocket.c
index 7445cc8a47d3..1492744ad67f 100644
--- a/sound/pcmcia/vx/vxpocket.c
+++ b/sound/pcmcia/vx/vxpocket.c
@@ -213,14 +213,11 @@ static int snd_vxpocket_assign_resources(struct vx_core *chip, int port, int irq
213 * configuration callback 213 * configuration callback
214 */ 214 */
215 215
216#define CS_CHECK(fn, ret) \
217do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0)
218
219static int vxpocket_config(struct pcmcia_device *link) 216static int vxpocket_config(struct pcmcia_device *link)
220{ 217{
221 struct vx_core *chip = link->priv; 218 struct vx_core *chip = link->priv;
222 struct snd_vxpocket *vxp = (struct snd_vxpocket *)chip; 219 struct snd_vxpocket *vxp = (struct snd_vxpocket *)chip;
223 int last_fn, last_ret; 220 int ret;
224 221
225 snd_printdd(KERN_DEBUG "vxpocket_config called\n"); 222 snd_printdd(KERN_DEBUG "vxpocket_config called\n");
226 223
@@ -235,9 +232,17 @@ static int vxpocket_config(struct pcmcia_device *link)
235 strcpy(chip->card->driver, vxp440_hw.name); 232 strcpy(chip->card->driver, vxp440_hw.name);
236 } 233 }
237 234
238 CS_CHECK(RequestIO, pcmcia_request_io(link, &link->io)); 235 ret = pcmcia_request_io(link, &link->io);
239 CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); 236 if (ret)
240 CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); 237 goto failed;
238
239 ret = pcmcia_request_irq(link, &link->irq);
240 if (ret)
241 goto failed;
242
243 ret = pcmcia_request_configuration(link, &link->conf);
244 if (ret)
245 goto failed;
241 246
242 chip->dev = &handle_to_dev(link); 247 chip->dev = &handle_to_dev(link);
243 snd_card_set_dev(chip->card, chip->dev); 248 snd_card_set_dev(chip->card, chip->dev);
@@ -248,8 +253,6 @@ static int vxpocket_config(struct pcmcia_device *link)
248 link->dev_node = &vxp->node; 253 link->dev_node = &vxp->node;
249 return 0; 254 return 0;
250 255
251cs_failed:
252 cs_error(link, last_fn, last_ret);
253failed: 256failed:
254 pcmcia_disable_device(link); 257 pcmcia_disable_device(link);
255 return -ENODEV; 258 return -ENODEV;
diff --git a/sound/ppc/Kconfig b/sound/ppc/Kconfig
index bd2338ab2ced..0519c60f5be1 100644
--- a/sound/ppc/Kconfig
+++ b/sound/ppc/Kconfig
@@ -2,7 +2,7 @@
2 2
3menuconfig SND_PPC 3menuconfig SND_PPC
4 bool "PowerPC sound devices" 4 bool "PowerPC sound devices"
5 depends on PPC64 || PPC32 5 depends on PPC
6 default y 6 default y
7 help 7 help
8 Support for sound devices specific to PowerPC architectures. 8 Support for sound devices specific to PowerPC architectures.
diff --git a/sound/sh/aica.c b/sound/sh/aica.c
index 583a3693df75..a0df401ebb9f 100644
--- a/sound/sh/aica.c
+++ b/sound/sh/aica.c
@@ -49,6 +49,7 @@ MODULE_AUTHOR("Adrian McMenamin <adrian@mcmen.demon.co.uk>");
49MODULE_DESCRIPTION("Dreamcast AICA sound (pcm) driver"); 49MODULE_DESCRIPTION("Dreamcast AICA sound (pcm) driver");
50MODULE_LICENSE("GPL"); 50MODULE_LICENSE("GPL");
51MODULE_SUPPORTED_DEVICE("{{Yamaha/SEGA, AICA}}"); 51MODULE_SUPPORTED_DEVICE("{{Yamaha/SEGA, AICA}}");
52MODULE_FIRMWARE("aica_firmware.bin");
52 53
53/* module parameters */ 54/* module parameters */
54#define CARD_NAME "AICA" 55#define CARD_NAME "AICA"
diff --git a/sound/soc/codecs/tlv320aic23.c b/sound/soc/codecs/tlv320aic23.c
index 0b8dcb5cd729..90a0264f7538 100644
--- a/sound/soc/codecs/tlv320aic23.c
+++ b/sound/soc/codecs/tlv320aic23.c
@@ -265,8 +265,8 @@ static const int bosr_usb_divisor_table[] = {
265#define UPPER_GROUP ((1<<8) | (1<<9) | (1<<10) | (1<<11) | (1<<15)) 265#define UPPER_GROUP ((1<<8) | (1<<9) | (1<<10) | (1<<11) | (1<<15))
266static const unsigned short sr_valid_mask[] = { 266static const unsigned short sr_valid_mask[] = {
267 LOWER_GROUP|UPPER_GROUP, /* Normal, bosr - 0*/ 267 LOWER_GROUP|UPPER_GROUP, /* Normal, bosr - 0*/
268 LOWER_GROUP|UPPER_GROUP, /* Normal, bosr - 1*/
269 LOWER_GROUP, /* Usb, bosr - 0*/ 268 LOWER_GROUP, /* Usb, bosr - 0*/
269 LOWER_GROUP|UPPER_GROUP, /* Normal, bosr - 1*/
270 UPPER_GROUP, /* Usb, bosr - 1*/ 270 UPPER_GROUP, /* Usb, bosr - 1*/
271}; 271};
272/* 272/*
@@ -625,11 +625,10 @@ static int tlv320aic23_resume(struct platform_device *pdev)
625{ 625{
626 struct snd_soc_device *socdev = platform_get_drvdata(pdev); 626 struct snd_soc_device *socdev = platform_get_drvdata(pdev);
627 struct snd_soc_codec *codec = socdev->card->codec; 627 struct snd_soc_codec *codec = socdev->card->codec;
628 int i;
629 u16 reg; 628 u16 reg;
630 629
631 /* Sync reg_cache with the hardware */ 630 /* Sync reg_cache with the hardware */
632 for (reg = 0; reg < ARRAY_SIZE(tlv320aic23_reg); i++) { 631 for (reg = 0; reg < TLV320AIC23_RESET; reg++) {
633 u16 val = tlv320aic23_read_reg_cache(codec, reg); 632 u16 val = tlv320aic23_read_reg_cache(codec, reg);
634 tlv320aic23_write(codec, reg, val); 633 tlv320aic23_write(codec, reg, val);
635 } 634 }
diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig
index 2dee9839be86..653a362425df 100644
--- a/sound/soc/omap/Kconfig
+++ b/sound/soc/omap/Kconfig
@@ -21,7 +21,18 @@ config SND_OMAP_SOC_AMS_DELTA
21 select SND_OMAP_SOC_MCBSP 21 select SND_OMAP_SOC_MCBSP
22 select SND_SOC_CX20442 22 select SND_SOC_CX20442
23 help 23 help
24 Say Y if you want to add support for SoC audio on Amstrad Delta. 24 Say Y if you want to add support for SoC audio device connected to
25 a handset and a speakerphone found on Amstrad E3 (Delta) videophone.
26
27 Note that in order to get those devices fully supported, you have to
28 build the kernel with standard serial port driver included and
29 configured for at least 4 ports. Then, from userspace, you must load
30 a line discipline #19 on the modem (ttyS3) serial line. The simplest
31 way to achieve this is to install util-linux-ng and use the included
32 ldattach utility. This can be started automatically from udev,
33 a simple rule like this one should do the trick (it does for me):
34 ACTION=="add", KERNEL=="controlC0", \
35 RUN+="/usr/sbin/ldattach 19 /dev/ttyS3"
25 36
26config SND_OMAP_SOC_OSK5912 37config SND_OMAP_SOC_OSK5912
27 tristate "SoC Audio support for omap osk5912" 38 tristate "SoC Audio support for omap osk5912"
diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c
index 5735945788bf..6a829eef2a4f 100644
--- a/sound/soc/omap/omap-pcm.c
+++ b/sound/soc/omap/omap-pcm.c
@@ -195,8 +195,12 @@ static int omap_pcm_prepare(struct snd_pcm_substream *substream)
195 else 195 else
196 omap_enable_dma_irq(prtd->dma_ch, OMAP_DMA_FRAME_IRQ); 196 omap_enable_dma_irq(prtd->dma_ch, OMAP_DMA_FRAME_IRQ);
197 197
198 omap_set_dma_src_burst_mode(prtd->dma_ch, OMAP_DMA_DATA_BURST_16); 198 if (!(cpu_class_is_omap1())) {
199 omap_set_dma_dest_burst_mode(prtd->dma_ch, OMAP_DMA_DATA_BURST_16); 199 omap_set_dma_src_burst_mode(prtd->dma_ch,
200 OMAP_DMA_DATA_BURST_16);
201 omap_set_dma_dest_burst_mode(prtd->dma_ch,
202 OMAP_DMA_DATA_BURST_16);
203 }
200 204
201 return 0; 205 return 0;
202} 206}
diff --git a/sound/soc/omap/omap3evm.c b/sound/soc/omap/omap3evm.c
index 9114c263077b..13aa380de162 100644
--- a/sound/soc/omap/omap3evm.c
+++ b/sound/soc/omap/omap3evm.c
@@ -144,4 +144,4 @@ module_exit(omap3evm_soc_exit);
144 144
145MODULE_AUTHOR("Anuj Aggarwal <anuj.aggarwal@ti.com>"); 145MODULE_AUTHOR("Anuj Aggarwal <anuj.aggarwal@ti.com>");
146MODULE_DESCRIPTION("ALSA SoC OMAP3 EVM"); 146MODULE_DESCRIPTION("ALSA SoC OMAP3 EVM");
147MODULE_LICENSE("GPLv2"); 147MODULE_LICENSE("GPL v2");
diff --git a/sound/soc/omap/omap3pandora.c b/sound/soc/omap/omap3pandora.c
index ad219aaf7cb8..0cd06f5dd356 100644
--- a/sound/soc/omap/omap3pandora.c
+++ b/sound/soc/omap/omap3pandora.c
@@ -134,7 +134,7 @@ static int omap3pandora_hp_event(struct snd_soc_dapm_widget *w,
134 * |P| <--- TWL4030 <--------- Line In and MICs 134 * |P| <--- TWL4030 <--------- Line In and MICs
135 */ 135 */
136static const struct snd_soc_dapm_widget omap3pandora_out_dapm_widgets[] = { 136static const struct snd_soc_dapm_widget omap3pandora_out_dapm_widgets[] = {
137 SND_SOC_DAPM_DAC("PCM DAC", "Playback", SND_SOC_NOPM, 0, 0), 137 SND_SOC_DAPM_DAC("PCM DAC", "HiFi Playback", SND_SOC_NOPM, 0, 0),
138 SND_SOC_DAPM_PGA_E("Headphone Amplifier", SND_SOC_NOPM, 138 SND_SOC_DAPM_PGA_E("Headphone Amplifier", SND_SOC_NOPM,
139 0, 0, NULL, 0, omap3pandora_hp_event, 139 0, 0, NULL, 0, omap3pandora_hp_event,
140 SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), 140 SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
@@ -181,6 +181,7 @@ static int omap3pandora_out_init(struct snd_soc_codec *codec)
181 snd_soc_dapm_nc_pin(codec, "CARKITR"); 181 snd_soc_dapm_nc_pin(codec, "CARKITR");
182 snd_soc_dapm_nc_pin(codec, "HFL"); 182 snd_soc_dapm_nc_pin(codec, "HFL");
183 snd_soc_dapm_nc_pin(codec, "HFR"); 183 snd_soc_dapm_nc_pin(codec, "HFR");
184 snd_soc_dapm_nc_pin(codec, "VIBRA");
184 185
185 ret = snd_soc_dapm_new_controls(codec, omap3pandora_out_dapm_widgets, 186 ret = snd_soc_dapm_new_controls(codec, omap3pandora_out_dapm_widgets,
186 ARRAY_SIZE(omap3pandora_out_dapm_widgets)); 187 ARRAY_SIZE(omap3pandora_out_dapm_widgets));
diff --git a/sound/soc/s3c24xx/s3c24xx-pcm.c b/sound/soc/s3c24xx/s3c24xx-pcm.c
index 5cbbdc80fde3..1f35c6fcf5fd 100644
--- a/sound/soc/s3c24xx/s3c24xx-pcm.c
+++ b/sound/soc/s3c24xx/s3c24xx-pcm.c
@@ -75,11 +75,19 @@ static void s3c24xx_pcm_enqueue(struct snd_pcm_substream *substream)
75{ 75{
76 struct s3c24xx_runtime_data *prtd = substream->runtime->private_data; 76 struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;
77 dma_addr_t pos = prtd->dma_pos; 77 dma_addr_t pos = prtd->dma_pos;
78 unsigned int limit;
78 int ret; 79 int ret;
79 80
80 pr_debug("Entered %s\n", __func__); 81 pr_debug("Entered %s\n", __func__);
81 82
82 while (prtd->dma_loaded < prtd->dma_limit) { 83 if (s3c_dma_has_circular()) {
84 limit = (prtd->dma_end - prtd->dma_start) / prtd->dma_period;
85 } else
86 limit = prtd->dma_limit;
87
88 pr_debug("%s: loaded %d, limit %d\n", __func__, prtd->dma_loaded, limit);
89
90 while (prtd->dma_loaded < limit) {
83 unsigned long len = prtd->dma_period; 91 unsigned long len = prtd->dma_period;
84 92
85 pr_debug("dma_loaded: %d\n", prtd->dma_loaded); 93 pr_debug("dma_loaded: %d\n", prtd->dma_loaded);
@@ -123,7 +131,7 @@ static void s3c24xx_audio_buffdone(struct s3c2410_dma_chan *channel,
123 snd_pcm_period_elapsed(substream); 131 snd_pcm_period_elapsed(substream);
124 132
125 spin_lock(&prtd->lock); 133 spin_lock(&prtd->lock);
126 if (prtd->state & ST_RUNNING) { 134 if (prtd->state & ST_RUNNING && !s3c_dma_has_circular()) {
127 prtd->dma_loaded--; 135 prtd->dma_loaded--;
128 s3c24xx_pcm_enqueue(substream); 136 s3c24xx_pcm_enqueue(substream);
129 } 137 }
@@ -164,6 +172,11 @@ static int s3c24xx_pcm_hw_params(struct snd_pcm_substream *substream,
164 printk(KERN_ERR "failed to get dma channel\n"); 172 printk(KERN_ERR "failed to get dma channel\n");
165 return ret; 173 return ret;
166 } 174 }
175
176 /* use the circular buffering if we have it available. */
177 if (s3c_dma_has_circular())
178 s3c2410_dma_setflags(prtd->params->channel,
179 S3C2410_DMAF_CIRCULAR);
167 } 180 }
168 181
169 s3c2410_dma_set_buffdone_fn(prtd->params->channel, 182 s3c2410_dma_set_buffdone_fn(prtd->params->channel,
diff --git a/sound/soc/s3c24xx/s3c64xx-i2s.c b/sound/soc/s3c24xx/s3c64xx-i2s.c
index 3c06c401d0fb..105a77eeded0 100644
--- a/sound/soc/s3c24xx/s3c64xx-i2s.c
+++ b/sound/soc/s3c24xx/s3c64xx-i2s.c
@@ -220,6 +220,8 @@ static __devinit int s3c64xx_iis_dev_probe(struct platform_device *pdev)
220 goto err; 220 goto err;
221 } 221 }
222 222
223 clk_enable(i2s->iis_cclk);
224
223 ret = s3c_i2sv2_probe(pdev, dai, i2s, 0); 225 ret = s3c_i2sv2_probe(pdev, dai, i2s, 0);
224 if (ret) 226 if (ret)
225 goto err_clk; 227 goto err_clk;
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 7ff04ad2a97e..0a1b2f64bbee 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -834,6 +834,9 @@ EXPORT_SYMBOL_GPL(snd_soc_resume_device);
834#define soc_resume NULL 834#define soc_resume NULL
835#endif 835#endif
836 836
837static struct snd_soc_dai_ops null_dai_ops = {
838};
839
837static void snd_soc_instantiate_card(struct snd_soc_card *card) 840static void snd_soc_instantiate_card(struct snd_soc_card *card)
838{ 841{
839 struct platform_device *pdev = container_of(card->dev, 842 struct platform_device *pdev = container_of(card->dev,
@@ -877,6 +880,11 @@ static void snd_soc_instantiate_card(struct snd_soc_card *card)
877 ac97 = 1; 880 ac97 = 1;
878 } 881 }
879 882
883 for (i = 0; i < card->num_links; i++) {
884 if (!card->dai_link[i].codec_dai->ops)
885 card->dai_link[i].codec_dai->ops = &null_dai_ops;
886 }
887
880 /* If we have AC97 in the system then don't wait for the 888 /* If we have AC97 in the system then don't wait for the
881 * codec. This will need revisiting if we have to handle 889 * codec. This will need revisiting if we have to handle
882 * systems with mixed AC97 and non-AC97 parts. Only check for 890 * systems with mixed AC97 and non-AC97 parts. Only check for
@@ -2329,9 +2337,6 @@ static int snd_soc_unregister_card(struct snd_soc_card *card)
2329 return 0; 2337 return 0;
2330} 2338}
2331 2339
2332static struct snd_soc_dai_ops null_dai_ops = {
2333};
2334
2335/** 2340/**
2336 * snd_soc_register_dai - Register a DAI with the ASoC core 2341 * snd_soc_register_dai - Register a DAI with the ASoC core
2337 * 2342 *
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 8de6f9dec4a2..66d4c165f99b 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -973,9 +973,19 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
973 if (!w->power_check) 973 if (!w->power_check)
974 continue; 974 continue;
975 975
976 power = w->power_check(w); 976 /* If we're suspending then pull down all the
977 if (power) 977 * power. */
978 sys_power = 1; 978 switch (event) {
979 case SND_SOC_DAPM_STREAM_SUSPEND:
980 power = 0;
981 break;
982
983 default:
984 power = w->power_check(w);
985 if (power)
986 sys_power = 1;
987 break;
988 }
979 989
980 if (w->power == power) 990 if (w->power == power)
981 continue; 991 continue;
@@ -999,8 +1009,12 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
999 case SND_SOC_DAPM_STREAM_RESUME: 1009 case SND_SOC_DAPM_STREAM_RESUME:
1000 sys_power = 1; 1010 sys_power = 1;
1001 break; 1011 break;
1012 case SND_SOC_DAPM_STREAM_SUSPEND:
1013 sys_power = 0;
1014 break;
1002 case SND_SOC_DAPM_STREAM_NOP: 1015 case SND_SOC_DAPM_STREAM_NOP:
1003 sys_power = codec->bias_level != SND_SOC_BIAS_STANDBY; 1016 sys_power = codec->bias_level != SND_SOC_BIAS_STANDBY;
1017 break;
1004 default: 1018 default:
1005 break; 1019 break;
1006 } 1020 }
@@ -2072,9 +2086,9 @@ int snd_soc_dapm_stream_event(struct snd_soc_codec *codec,
2072 } 2086 }
2073 } 2087 }
2074 } 2088 }
2075 mutex_unlock(&codec->mutex);
2076 2089
2077 dapm_power_widgets(codec, event); 2090 dapm_power_widgets(codec, event);
2091 mutex_unlock(&codec->mutex);
2078 dump_dapm(codec, __func__); 2092 dump_dapm(codec, __func__);
2079 return 0; 2093 return 0;
2080} 2094}
diff --git a/sound/usb/caiaq/audio.c b/sound/usb/caiaq/audio.c
index 121af0644fd9..86b2c3b92df5 100644
--- a/sound/usb/caiaq/audio.c
+++ b/sound/usb/caiaq/audio.c
@@ -62,10 +62,14 @@ static void
62activate_substream(struct snd_usb_caiaqdev *dev, 62activate_substream(struct snd_usb_caiaqdev *dev,
63 struct snd_pcm_substream *sub) 63 struct snd_pcm_substream *sub)
64{ 64{
65 spin_lock(&dev->spinlock);
66
65 if (sub->stream == SNDRV_PCM_STREAM_PLAYBACK) 67 if (sub->stream == SNDRV_PCM_STREAM_PLAYBACK)
66 dev->sub_playback[sub->number] = sub; 68 dev->sub_playback[sub->number] = sub;
67 else 69 else
68 dev->sub_capture[sub->number] = sub; 70 dev->sub_capture[sub->number] = sub;
71
72 spin_unlock(&dev->spinlock);
69} 73}
70 74
71static void 75static void
@@ -269,16 +273,22 @@ snd_usb_caiaq_pcm_pointer(struct snd_pcm_substream *sub)
269{ 273{
270 int index = sub->number; 274 int index = sub->number;
271 struct snd_usb_caiaqdev *dev = snd_pcm_substream_chip(sub); 275 struct snd_usb_caiaqdev *dev = snd_pcm_substream_chip(sub);
276 snd_pcm_uframes_t ptr;
277
278 spin_lock(&dev->spinlock);
272 279
273 if (dev->input_panic || dev->output_panic) 280 if (dev->input_panic || dev->output_panic)
274 return SNDRV_PCM_POS_XRUN; 281 ptr = SNDRV_PCM_POS_XRUN;
275 282
276 if (sub->stream == SNDRV_PCM_STREAM_PLAYBACK) 283 if (sub->stream == SNDRV_PCM_STREAM_PLAYBACK)
277 return bytes_to_frames(sub->runtime, 284 ptr = bytes_to_frames(sub->runtime,
278 dev->audio_out_buf_pos[index]); 285 dev->audio_out_buf_pos[index]);
279 else 286 else
280 return bytes_to_frames(sub->runtime, 287 ptr = bytes_to_frames(sub->runtime,
281 dev->audio_in_buf_pos[index]); 288 dev->audio_in_buf_pos[index]);
289
290 spin_unlock(&dev->spinlock);
291 return ptr;
282} 292}
283 293
284/* operators for both playback and capture */ 294/* operators for both playback and capture */
diff --git a/sound/usb/caiaq/device.c b/sound/usb/caiaq/device.c
index 83e6c1312d47..a3f02dd97440 100644
--- a/sound/usb/caiaq/device.c
+++ b/sound/usb/caiaq/device.c
@@ -35,7 +35,7 @@
35#include "input.h" 35#include "input.h"
36 36
37MODULE_AUTHOR("Daniel Mack <daniel@caiaq.de>"); 37MODULE_AUTHOR("Daniel Mack <daniel@caiaq.de>");
38MODULE_DESCRIPTION("caiaq USB audio, version 1.3.19"); 38MODULE_DESCRIPTION("caiaq USB audio, version 1.3.20");
39MODULE_LICENSE("GPL"); 39MODULE_LICENSE("GPL");
40MODULE_SUPPORTED_DEVICE("{{Native Instruments, RigKontrol2}," 40MODULE_SUPPORTED_DEVICE("{{Native Instruments, RigKontrol2},"
41 "{Native Instruments, RigKontrol3}," 41 "{Native Instruments, RigKontrol3},"
diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h
index 8e7f78941ba6..e9a3a9dca15c 100644
--- a/sound/usb/usbaudio.h
+++ b/sound/usb/usbaudio.h
@@ -210,7 +210,7 @@ struct snd_usb_midi_endpoint_info {
210/* 210/*
211 */ 211 */
212 212
213#define combine_word(s) ((*s) | ((unsigned int)(s)[1] << 8)) 213#define combine_word(s) ((*(s)) | ((unsigned int)(s)[1] << 8))
214#define combine_triple(s) (combine_word(s) | ((unsigned int)(s)[2] << 16)) 214#define combine_triple(s) (combine_word(s) | ((unsigned int)(s)[2] << 16))
215#define combine_quad(s) (combine_triple(s) | ((unsigned int)(s)[3] << 24)) 215#define combine_quad(s) (combine_triple(s) | ((unsigned int)(s)[3] << 24))
216 216
diff --git a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c
index 9efcfd08d747..c998220b99c6 100644
--- a/sound/usb/usbmixer.c
+++ b/sound/usb/usbmixer.c
@@ -1071,6 +1071,15 @@ static int parse_audio_feature_unit(struct mixer_build *state, int unitid, unsig
1071 channels = (ftr[0] - 7) / csize - 1; 1071 channels = (ftr[0] - 7) / csize - 1;
1072 1072
1073 master_bits = snd_usb_combine_bytes(ftr + 6, csize); 1073 master_bits = snd_usb_combine_bytes(ftr + 6, csize);
1074 /* master configuration quirks */
1075 switch (state->chip->usb_id) {
1076 case USB_ID(0x08bb, 0x2702):
1077 snd_printk(KERN_INFO
1078 "usbmixer: master volume quirk for PCM2702 chip\n");
1079 /* disable non-functional volume control */
1080 master_bits &= ~(1 << (USB_FEATURE_VOLUME - 1));
1081 break;
1082 }
1074 if (channels > 0) 1083 if (channels > 0)
1075 first_ch_bits = snd_usb_combine_bytes(ftr + 6 + csize, csize); 1084 first_ch_bits = snd_usb_combine_bytes(ftr + 6 + csize, csize);
1076 else 1085 else
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 742a32eee8fc..7e190d522cd5 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -177,8 +177,7 @@ endif
177# Include saner warnings here, which can catch bugs: 177# Include saner warnings here, which can catch bugs:
178# 178#
179 179
180EXTRA_WARNINGS := -Wcast-align 180EXTRA_WARNINGS := -Wformat
181EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat
182EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-security 181EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-security
183EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-y2k 182EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-y2k
184EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wshadow 183EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wshadow
@@ -422,7 +421,11 @@ ifeq ($(uname_S),Darwin)
422 PTHREAD_LIBS = 421 PTHREAD_LIBS =
423endif 422endif
424 423
425ifneq ($(shell sh -c "(echo '\#include <libelf.h>'; echo 'int main(void) { Elf * elf = elf_begin(0, ELF_C_READ_MMAP, 0); return (long)elf; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o /dev/null $(ALL_LDFLAGS) > /dev/null 2>&1 && echo y"), y) 424ifeq ($(shell sh -c "(echo '\#include <libelf.h>'; echo 'int main(void) { Elf * elf = elf_begin(0, ELF_C_READ, 0); return (long)elf; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o /dev/null $(ALL_LDFLAGS) > /dev/null 2>&1 && echo y"), y)
425 ifneq ($(shell sh -c "(echo '\#include <libelf.h>'; echo 'int main(void) { Elf * elf = elf_begin(0, ELF_C_READ_MMAP, 0); return (long)elf; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o /dev/null $(ALL_LDFLAGS) > /dev/null 2>&1 && echo y"), y)
426 BASIC_CFLAGS += -DLIBELF_NO_MMAP
427 endif
428else
426 msg := $(error No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel and glibc-dev[el]); 429 msg := $(error No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel and glibc-dev[el]);
427endif 430endif
428 431
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 3eeef339c787..a4be453fc8a9 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -426,7 +426,7 @@ try_again:
426 if (fd[nr_cpu][counter] < 0) { 426 if (fd[nr_cpu][counter] < 0) {
427 int err = errno; 427 int err = errno;
428 428
429 if (err == EPERM) 429 if (err == EPERM || err == EACCES)
430 die("Permission error - are you root?\n"); 430 die("Permission error - are you root?\n");
431 else if (err == ENODEV && profile_cpu != -1) 431 else if (err == ENODEV && profile_cpu != -1)
432 die("No such device - did you specify an out-of-range profile CPU?\n"); 432 die("No such device - did you specify an out-of-range profile CPU?\n");
diff --git a/tools/perf/builtin-timechart.c b/tools/perf/builtin-timechart.c
index 702d8fe58fbc..e8a510d935e5 100644
--- a/tools/perf/builtin-timechart.c
+++ b/tools/perf/builtin-timechart.c
@@ -765,19 +765,40 @@ static void draw_wakeups(void)
765 if (c->Y && c->start_time <= we->time && c->end_time >= we->time) { 765 if (c->Y && c->start_time <= we->time && c->end_time >= we->time) {
766 if (p->pid == we->waker) { 766 if (p->pid == we->waker) {
767 from = c->Y; 767 from = c->Y;
768 task_from = c->comm; 768 task_from = strdup(c->comm);
769 } 769 }
770 if (p->pid == we->wakee) { 770 if (p->pid == we->wakee) {
771 to = c->Y; 771 to = c->Y;
772 task_to = c->comm; 772 task_to = strdup(c->comm);
773 } 773 }
774 } 774 }
775 c = c->next; 775 c = c->next;
776 } 776 }
777 c = p->all;
778 while (c) {
779 if (p->pid == we->waker && !from) {
780 from = c->Y;
781 task_from = strdup(c->comm);
782 }
783 if (p->pid == we->wakee && !to) {
784 to = c->Y;
785 task_to = strdup(c->comm);
786 }
787 c = c->next;
788 }
777 } 789 }
778 p = p->next; 790 p = p->next;
779 } 791 }
780 792
793 if (!task_from) {
794 task_from = malloc(40);
795 sprintf(task_from, "[%i]", we->waker);
796 }
797 if (!task_to) {
798 task_to = malloc(40);
799 sprintf(task_to, "[%i]", we->wakee);
800 }
801
781 if (we->waker == -1) 802 if (we->waker == -1)
782 svg_interrupt(we->time, to); 803 svg_interrupt(we->time, to);
783 else if (from && to && abs(from - to) == 1) 804 else if (from && to && abs(from - to) == 1)
@@ -785,6 +806,9 @@ static void draw_wakeups(void)
785 else 806 else
786 svg_partial_wakeline(we->time, from, task_from, to, task_to); 807 svg_partial_wakeline(we->time, from, task_from, to, task_to);
787 we = we->next; 808 we = we->next;
809
810 free(task_from);
811 free(task_to);
788 } 812 }
789} 813}
790 814
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 37512e936235..e23bc74e734f 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -686,6 +686,8 @@ static void handle_keypress(int c)
686 switch (c) { 686 switch (c) {
687 case 'd': 687 case 'd':
688 prompt_integer(&delay_secs, "Enter display delay"); 688 prompt_integer(&delay_secs, "Enter display delay");
689 if (delay_secs < 1)
690 delay_secs = 1;
689 break; 691 break;
690 case 'e': 692 case 'e':
691 prompt_integer(&print_entries, "Enter display entries (lines)"); 693 prompt_integer(&print_entries, "Enter display entries (lines)");
@@ -1025,7 +1027,7 @@ try_again:
1025 if (fd[i][counter] < 0) { 1027 if (fd[i][counter] < 0) {
1026 int err = errno; 1028 int err = errno;
1027 1029
1028 if (err == EPERM) 1030 if (err == EPERM || err == EACCES)
1029 die("No permission - are you root?\n"); 1031 die("No permission - are you root?\n");
1030 /* 1032 /*
1031 * If it's cycles then fall back to hrtimer 1033 * If it's cycles then fall back to hrtimer
diff --git a/tools/perf/util/PERF-VERSION-GEN b/tools/perf/util/PERF-VERSION-GEN
index c561d1538c03..54552a00a117 100755
--- a/tools/perf/util/PERF-VERSION-GEN
+++ b/tools/perf/util/PERF-VERSION-GEN
@@ -1,7 +1,7 @@
1#!/bin/sh 1#!/bin/sh
2 2
3GVF=PERF-VERSION-FILE 3GVF=PERF-VERSION-FILE
4DEF_VER=v0.0.1.PERF 4DEF_VER=v0.0.2.PERF
5 5
6LF=' 6LF='
7' 7'
diff --git a/tools/perf/util/svghelper.c b/tools/perf/util/svghelper.c
index 856655d8b0b8..b3637db025a2 100644
--- a/tools/perf/util/svghelper.c
+++ b/tools/perf/util/svghelper.c
@@ -103,7 +103,7 @@ void open_svg(const char *filename, int cpus, int rows, u64 start, u64 end)
103 fprintf(svgfile, " rect.process2 { fill:rgb(180,180,180); fill-opacity:0.9; stroke-width:0; stroke:rgb( 0, 0, 0); } \n"); 103 fprintf(svgfile, " rect.process2 { fill:rgb(180,180,180); fill-opacity:0.9; stroke-width:0; stroke:rgb( 0, 0, 0); } \n");
104 fprintf(svgfile, " rect.sample { fill:rgb( 0, 0,255); fill-opacity:0.8; stroke-width:0; stroke:rgb( 0, 0, 0); } \n"); 104 fprintf(svgfile, " rect.sample { fill:rgb( 0, 0,255); fill-opacity:0.8; stroke-width:0; stroke:rgb( 0, 0, 0); } \n");
105 fprintf(svgfile, " rect.blocked { fill:rgb(255, 0, 0); fill-opacity:0.5; stroke-width:0; stroke:rgb( 0, 0, 0); } \n"); 105 fprintf(svgfile, " rect.blocked { fill:rgb(255, 0, 0); fill-opacity:0.5; stroke-width:0; stroke:rgb( 0, 0, 0); } \n");
106 fprintf(svgfile, " rect.waiting { fill:rgb(214,214, 0); fill-opacity:0.3; stroke-width:0; stroke:rgb( 0, 0, 0); } \n"); 106 fprintf(svgfile, " rect.waiting { fill:rgb(224,214, 0); fill-opacity:0.8; stroke-width:0; stroke:rgb( 0, 0, 0); } \n");
107 fprintf(svgfile, " rect.WAITING { fill:rgb(255,214, 48); fill-opacity:0.6; stroke-width:0; stroke:rgb( 0, 0, 0); } \n"); 107 fprintf(svgfile, " rect.WAITING { fill:rgb(255,214, 48); fill-opacity:0.6; stroke-width:0; stroke:rgb( 0, 0, 0); } \n");
108 fprintf(svgfile, " rect.cpu { fill:rgb(192,192,192); fill-opacity:0.2; stroke-width:0.5; stroke:rgb(128,128,128); } \n"); 108 fprintf(svgfile, " rect.cpu { fill:rgb(192,192,192); fill-opacity:0.2; stroke-width:0.5; stroke:rgb(128,128,128); } \n");
109 fprintf(svgfile, " rect.pstate { fill:rgb(128,128,128); fill-opacity:0.8; stroke-width:0; } \n"); 109 fprintf(svgfile, " rect.pstate { fill:rgb(128,128,128); fill-opacity:0.8; stroke-width:0; } \n");
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index 47ea0609a760..226f44a2357d 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -413,7 +413,7 @@ static int dso__synthesize_plt_symbols(struct dso *self, int v)
413 if (fd < 0) 413 if (fd < 0)
414 goto out; 414 goto out;
415 415
416 elf = elf_begin(fd, ELF_C_READ_MMAP, NULL); 416 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
417 if (elf == NULL) 417 if (elf == NULL)
418 goto out_close; 418 goto out_close;
419 419
@@ -533,7 +533,7 @@ static int dso__load_sym(struct dso *self, int fd, const char *name,
533 Elf *elf; 533 Elf *elf;
534 int nr = 0, kernel = !strcmp("[kernel]", self->name); 534 int nr = 0, kernel = !strcmp("[kernel]", self->name);
535 535
536 elf = elf_begin(fd, ELF_C_READ_MMAP, NULL); 536 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
537 if (elf == NULL) { 537 if (elf == NULL) {
538 if (v) 538 if (v)
539 fprintf(stderr, "%s: cannot read %s ELF file.\n", 539 fprintf(stderr, "%s: cannot read %s ELF file.\n",
@@ -675,7 +675,7 @@ static char *dso__read_build_id(struct dso *self, int v)
675 if (fd < 0) 675 if (fd < 0)
676 goto out; 676 goto out;
677 677
678 elf = elf_begin(fd, ELF_C_READ_MMAP, NULL); 678 elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
679 if (elf == NULL) { 679 if (elf == NULL) {
680 if (v) 680 if (v)
681 fprintf(stderr, "%s: cannot read %s ELF file.\n", 681 fprintf(stderr, "%s: cannot read %s ELF file.\n",
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
index 6e8490716408..829da9edba64 100644
--- a/tools/perf/util/symbol.h
+++ b/tools/perf/util/symbol.h
@@ -27,6 +27,16 @@ static inline char *bfd_demangle(void __used *v, const char __used *c,
27#endif 27#endif
28#endif 28#endif
29 29
30/*
31 * libelf 0.8.x and earlier do not support ELF_C_READ_MMAP;
32 * for newer versions we can use mmap to reduce memory usage:
33 */
34#ifdef LIBELF_NO_MMAP
35# define PERF_ELF_C_READ_MMAP ELF_C_READ
36#else
37# define PERF_ELF_C_READ_MMAP ELF_C_READ_MMAP
38#endif
39
30#ifndef DMGL_PARAMS 40#ifndef DMGL_PARAMS
31#define DMGL_PARAMS (1 << 0) /* Include function args */ 41#define DMGL_PARAMS (1 << 0) /* Include function args */
32#define DMGL_ANSI (1 << 1) /* Include const, volatile, etc */ 42#define DMGL_ANSI (1 << 1) /* Include const, volatile, etc */